Módulo 12 - Máquinas de estado: estados, transições e eventos
Modelar um semáforo: estado atual mais evento
8 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 12/07/2026
O que você vai aprender
- Modelar o semáforo como um ciclo de três estados.
- Montar a tabela de transições estado atual, evento e próximo estado.
- Aplicar a regra de que o próximo estado depende do atual mais o evento.
- Prever o próximo estado percorrendo as transições.
Ouvir o resumo desta aula
Um recap de cerca de 2 minutos na voz do Valim, para ouvir no trânsito ou na academia.
Ler a transcrição do resumo
Resumo da aula: Modelar um semáforo: estado atual mais evento.
Os objetivos desta aula. Modelar o semáforo como um ciclo de três estados. Montar a tabela de transições estado atual, evento e próximo estado. Aplicar a regra de que o próximo estado depende do atual mais o evento. Prever o próximo estado percorrendo as transições.
Veja o essencial, parte por parte.
O semáforo em três estados. O semáforo tem três estados: verde, amarelo e vermelho.
A tabela de transições. Desenhar setas ajuda a ver, mas na hora de programar é mais prático escrever a mesma coisa como uma tabela de transições: para cada par de estado atual e evento, qual é o próximo estado.
Quando o semáforo cresce. Um evento que não tem transição no estado atual deve ser ignorado, não causar troca.
Esse foi o resumo do essencial. Para se aprofundar, leia a aula completa e responda os exercícios.
O semáforo em três estados
O semáforo é o exemplo perfeito porque ninguém tem dúvida sobre como ele funciona. Ele fica verde por um tempo, passa para amarelo, depois para vermelho e volta ao verde. Três estados, uma ordem fixa, um ciclo que se repete. O evento que empurra a máquina é simples: o tempo daquela cor acabou. Repare que o mesmo evento, tempo esgotado, causa efeitos diferentes conforme o estado atual. No verde, o tempo esgotado leva ao amarelo. No amarelo, leva ao vermelho. No vermelho, leva ao verde. Não é o evento sozinho que decide o destino; é a dupla estado atual mais evento.
Essa dupla é o coração de qualquer máquina de estado, e o semáforo deixa isso escancarado. Se alguém pergunta para onde a máquina vai quando o tempo acaba, a resposta certa é uma pergunta de volta: depende, ela está em qual cor agora? Sem saber o estado atual, o evento é ambíguo. Com o estado atual em mãos, o destino é único e previsível. Guardar o estado atual não é um detalhe de implementação; é a memória que dá sentido ao próximo passo. Uma máquina sem memória do estado atual não seria uma máquina de estado, seria só uma reação cega ao evento.
A tabela de transições
Desenhar setas ajuda a ver, mas na hora de programar é mais prático escrever a mesma coisa como uma tabela de transições: para cada par de estado atual e evento, qual é o próximo estado. Do semáforo, a tabela é curta e completa. Verde mais tempo esgotado leva a amarelo. Amarelo mais tempo esgotado leva a vermelho. Vermelho mais tempo esgotado leva a verde. Se uma combinação não aparece na tabela, a máquina não se move, e isso é uma proteção, não uma falha. A tabela vira a fonte única de verdade: mudou a regra, muda-se a tabela, e o resto do código continua igual, só consultando.
| Estado atual | Evento | Próximo estado |
|---|---|---|
| Verde | Tempo esgotado | Amarelo |
| Amarelo | Tempo esgotado | Vermelho |
| Vermelho | Tempo esgotado | Verde |
A tabela de transições do semáforo: três regras cobrem o ciclo inteiro.
🎮 Jogo da aula
Para onde vai o semáforo?
O semáforo começa no verde e recebe o evento tempo esgotado três vezes seguidas. Descubra a cor final que o programa mostra.
estado <- 'verde'
// funcao que aplica a transicao do semaforo
função proximo(cor)
se cor = 'verde' então retorne 'amarelo' fim
se cor = 'amarelo' então retorne 'vermelho' fim
se cor = 'vermelho' então retorne 'verde' fim
fim
// tres eventos 'tempo esgotado' em sequencia
estado <- proximo(estado)
estado <- proximo(estado)
estado <- proximo(estado)
escreva(estado)Quando o semáforo cresce
Semáforos de verdade costumam ter mais nuances, e é interessante ver como a máquina de estado absorve isso sem virar bagunça. Muitos têm um estado de amarelo piscante à noite, que entra por um evento diferente (chegou o horário noturno) e sai por outro (voltou o horário normal). Alguns têm um estado de defeito, alcançado por um evento de falha a partir de qualquer cor. Cada novidade é só um estado a mais e algumas transições a mais na tabela. O esqueleto não muda: continua sendo estado atual mais evento decide o próximo estado. É por isso que o modelo escala bem, de uma catraca de dois estados a controles bem mais complexos.
Teste rápido
No semáforo, por que o mesmo evento tempo esgotado leva a cores diferentes?
Perguntas frequentes
- Quantos estados tem um semáforo comum?
- O semáforo básico tem três: verde, amarelo e vermelho, num ciclo fixo. Modelos reais podem ganhar estados extras, como amarelo piscante à noite ou um estado de defeito, mas o núcleo são as três cores. Cada estado a mais entra como um nó novo no diagrama e algumas linhas novas na tabela de transições.
- Por que o mesmo evento causa efeitos diferentes?
- Porque o próximo estado depende do estado atual mais o evento, não do evento isolado. Tempo esgotado no verde manda para o amarelo; no amarelo, para o vermelho; no vermelho, para o verde. Sem saber a cor atual, o evento é ambíguo. Guardar o estado atual é o que torna o próximo passo previsível.
- O que é a tabela de transições?
- É a lista de todas as regras da máquina no formato estado atual, evento e próximo estado. Ela é a fonte única de verdade: o código só consulta a tabela para saber para onde ir. Uma combinação que não está na tabela significa que nada acontece, o que serve de proteção contra eventos fora de hora.
- O semáforo pode pular do verde direto para o vermelho?
- Não deveria, e é aí que a máquina de estado protege. Se a tabela só tem verde para amarelo e amarelo para vermelho, não existe transição de verde para vermelho, então esse pulo é impossível por construção. Modelar as transições certas evita comportamentos perigosos, como um sinal que sumisse com o amarelo.
- Toda máquina de estado é um ciclo como o semáforo?
- Não. O semáforo é cíclico porque volta ao início para sempre, mas muitas máquinas têm um começo e um fim, ou caminhos que se ramificam. A validação de uma senha, por exemplo, tem um estado final de aceito e outro de rejeitado. Ciclo é uma forma comum, não uma regra do modelo.
- Como o semáforo sabe quando trocar de cor?
- Por um evento, normalmente o fim do tempo daquela cor, medido por um relógio ou temporizador. Quando o tempo acaba, o evento tempo esgotado é disparado e a máquina consulta a tabela de transições para achar o próximo estado. O temporizador é a fonte do evento; a máquina de estado cuida da lógica de para onde ir.
Fontes
Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.