sheen.bot 标志

深度见解

红绿灯逻辑:怎么给 10 岁孩子讲状态机

2026年5月12日·Sheen Robotics
红绿灯逻辑:怎么给 10 岁孩子讲状态机

红绿灯是最合适的第一台状态机:每种颜色是一个状态,每次变化是一次转移,计时决定什么时候往下走。先做固定循环,再加一个按钮。

红绿灯是孩子能做的最好的第一台状态机,因为十岁的孩子早就把它的规则背得滚瓜烂熟。每一种颜色是一个状态,每一次变化是一次转移,而计时不过是这台机器在往下走之前要等多久。把这三个部分大声说出来,大部分代码就会自己写出来。

解锁它的三个词

状态机是一种描述方式,用来描述那些一次只能处在一种情形里的东西。红绿灯要么是红,要么是绿,要么是黄。它绝不会同时是两种,而且永远沿着同一条路径走。正是这一条规则,让它成为一件如此干净的教学工具。

在黑板上把它画成三个圆圈,圆圈之间用箭头连起来。圆圈是状态,箭头是转移。再问问全班每个箭头应该在什么时候触发,你就已经在没写一行代码之前,把整个程序描述完了。

先做固定循环

从最简单的版本开始:红灯五秒,绿灯五秒,黄灯两秒,然后回到红灯,如此往复。任何时刻只有一盏灯亮着。这个约束就是这节课的要点。如果两盏灯同时亮了,机器就处在一个不可能的状态里,而孩子能很快发现这个错误。

你可以用面包板上的三只 LED 来做,可以用sheenbot∞ 主板板载的灯来做,也可以在教室里没有硬件时,完全在浏览器里用积木编辑器来做。接线方式会变,状态图不会。

加上行人按钮

现在让它变得有意思起来。行人按钮是一个事件,而事件正是状态机胜过一个简单定时循环的原因。有人在绿灯时按下按钮,灯不应该一下子跳到红。它应该走完这一轮,转到黄,再到红,并且多停一会儿,好让人过马路。

这一下同时教了两个概念。第一,转移既可以由计时器触发,也可以由事件触发。第二,有些转移是带条件的:只有在绿灯亮着的时候,这一按才算数。围绕红绿灯给孩子讲状态机,讲的其实是一条规则在什么时候适用,而不只是这条规则是什么。

这个模式为什么无处不在

孩子一旦能在红绿灯里看出状态和转移,就会开始到处发现它们。微波炉不是待机,就是加热,或者暂停。游戏角色不是站着,就是跑,或者跳,不可能同时做两样。自动售货机、电梯门,以及设备之间互发的消息,跑的都是同一个形状。在计算机领域里,很少有哪个概念能像它这样,被一个十岁的孩子和一位在职工程师画成一模一样的图。

一份 40 分钟的教案

  • 在碰代码之前先一起画出三状态图,大约五分钟。
  • 把红—绿—黄的固定循环写出来,反复运行,直到时间节奏合适为止。
  • 故意让两盏灯同时亮起来,让全班看看什么叫不可能的状态。
  • 加上行人按钮,全班一起决定,这一按究竟在什么时候才算数。
  • 最后说出家里三台按同样方式工作的机器,作为收尾。

整个项目一节课就能做完,几乎不需要引入新术语。如果你想要一份配好学习单的现成版本,它就在我们的机器人课程体系里,你也可以先通过一节免费试听课来体验。

#状态机#红绿灯项目#少儿编程#机器人教育#教案

更多深度见解