A lógica do semáforo: ensinar máquinas de estados a crianças de 10 anos

Um semáforo é a primeira máquina de estados perfeita: cada cor é um estado, cada mudança uma transição, e o tempo decide quando avançar. Construa o ciclo fixo e depois acrescente um botão.
Um semáforo é a melhor primeira máquina de estados que uma criança pode construir, porque uma criança de dez anos já sabe todas as regras de cor. Cada cor é um estado, cada mudança é uma transição, e o tempo é apenas quanto a máquina espera antes de avançar. Nomeie estas três partes em voz alta e a maior parte do código escreve-se sozinha.
As três palavras que desbloqueiam tudo
Uma máquina de estados é uma forma de descrever algo que só pode estar numa situação de cada vez. Um semáforo está vermelho, ou verde, ou amarelo. Nunca está em dois ao mesmo tempo e segue sempre o mesmo caminho. É essa única regra que faz dele uma ferramenta de ensino tão limpa.
Desenhe-o no quadro como três círculos com setas entre eles. Os círculos são os estados. As setas são as transições. Pergunte à turma quando é que cada seta deve disparar e já descreveu o programa inteiro antes de escrever uma única linha.
Construa primeiro o ciclo fixo
Comece pela versão mais simples: vermelho durante cinco segundos, verde durante cinco segundos, amarelo durante dois, e depois de volta ao vermelho, para sempre. Só uma luz está acesa em cada momento. Essa restrição é a lição. Se duas luzes acenderem ao mesmo tempo, a máquina está num estado impossível, e as crianças detetam esse erro depressa.
Pode construir isto com três LED numa breadboard, com as luzes integradas da placa sheenbot∞, ou inteiramente no browser com o editor de blocos quando não há hardware na sala. A cablagem muda; o diagrama de estados não.
Acrescente o botão para peões
Agora torne isto interessante. Um botão para peões é um evento, e os eventos são a razão pela qual as máquinas de estados batem um simples ciclo temporizado. Quando alguém carrega no botão durante o verde, a luz não deve saltar logo para vermelho. Deve terminar a sua vez, passar a amarelo, depois a vermelho, e aguentar um pouco mais para que uma pessoa possa atravessar.
Isto ensina duas ideias ao mesmo tempo. Primeiro, uma transição pode ser desencadeada tanto por um evento como por um temporizador. Segundo, algumas transições têm guardas: carregar no botão só conta enquanto a luz está verde. Uma máquina de estados para crianças construída à volta de um semáforo é, na verdade, uma lição sobre quando uma regra se aplica, e não apenas sobre qual é a regra.
Porque é que este padrão está em toda a parte
Assim que uma criança consegue ver estados e transições num semáforo, começa a encontrá-los por todo o lado. Um micro-ondas está inativo, a cozinhar ou em pausa. Uma personagem de jogo está parada, a correr ou a saltar, e não pode fazer duas coisas ao mesmo tempo. Máquinas de venda automática, portas de elevadores e as mensagens que os dispositivos trocam entre si funcionam todos com a mesma forma. É uma das poucas ideias da informática que uma criança de dez anos e um engenheiro no ativo desenham exatamente da mesma maneira.
Um plano de aula de 40 minutos
- Desenhem juntos o diagrama de três estados antes de tocar em código, cerca de cinco minutos.
- Programem o ciclo fixo vermelho-verde-amarelo e corram-no até os tempos ficarem certos.
- Acendam de propósito duas luzes ao mesmo tempo para que a turma veja um estado impossível.
- Acrescentem o botão para peões e decidam, em grupo, exatamente quando é que carregar deve contar.
- Terminem nomeando três máquinas lá de casa que funcionam da mesma maneira.
O projeto inteiro cabe numa sessão e quase não exige vocabulário novo. Se quiser uma versão pronta a usar com fichas de trabalho, ela faz parte do nosso currículo de robótica, e pode experimentar primeiro uma aula através de uma aula experimental gratuita.



