---
title: Semáforo
sidebar_position: 5
---

# Semáforo

<div style={{ display: "flex", alignItems: "flex-start", gap: "16px", flexWrap: "wrap" }}>
	<img
		src={require("@site/static/images/atividades/programacao/semaforo-thumbnail.png").default}
		alt="Thumbnail da atividade Semáforo"
		style={{ width: "280px", height: "280px", objectFit: "contain", flexShrink: 0 }}
	/>
	<div style={{ flex: 1, minWidth: "260px" }}>
		<p>O Semáforo é uma atividade especialmente valiosa para introduzir programação orientada a eventos e coordenação entre regras simultâneas. Seu contexto é socialmente reconhecível: carros e pedestres precisam compartilhar o espaço com segurança. Isso faz com que o estudante compreenda rapidamente que programar, nesse caso, não é apenas acionar cores, mas sincronizar comportamentos para evitar conflito.</p>
		<p>Ao contrário de atividades baseadas apenas em deslocamento, aqui a lógica temporal ganha protagonismo. O estudante precisa respeitar ordem, intervalos de espera, dependência entre dois sistemas e, em fases posteriores, sinais adicionais como luz piscante e som. É um contexto muito fértil para discutir estados, transições e regras de segurança.</p>
	</div>
</div>

## O que esta atividade ensina sobre programação

O Semáforo ajuda a entender que muitos programas controlam sistemas que mudam de estado ao longo do tempo. A cada comando, o sistema assume uma nova condição: verde, amarelo, vermelho, pedestre liberado, pedestre em alerta, som ativo ou inativo. Isso aproxima o estudante da lógica de máquinas de estado, mesmo sem usar esse vocabulário logo de início.

Além disso, a atividade reforça a importância da ordem e da sincronização. Se um comando está correto, mas fora da sequência, o resultado ainda pode ser perigoso ou inválido. Essa percepção é pedagogicamente importante porque mostra que, em programação, não basta saber quais ações usar; é preciso também saber quando e em que relação elas devem ocorrer.

## Mediação pedagógica

Uma abordagem produtiva é pedir que a turma descreva o comportamento do sistema antes de montá-lo em blocos: quando o carro passa, quando o pedestre espera, quando o pedestre atravessa e quando recebe aviso de encerramento. Essa verbalização ajuda a transformar uma rotina do cotidiano em algoritmo.

Também é interessante explorar a ideia de segurança lógica. Perguntas como “o que acontece se os dois estiverem verdes ao mesmo tempo?” ou “por que o amarelo existe?” ajudam a mostrar que regras intermediárias fazem parte da confiabilidade de um sistema programado.

## Progressão das fases

| Fase | Nome | O que o estudante pratica |
| --- | --- | --- |
| 1 | Controle básico do semáforo de carros | ordenar corretamente as cores do semáforo principal |
| 2 | Controle básico com tempo | associar mudança de estado a intervalos temporais explícitos |
| 3 | Controle do semáforo de pedestres | sincronizar dois subsistemas dependentes entre si |
| 4 | Semáforo de pedestres com luz piscante | acrescentar estado intermediário de alerta antes do fechamento |
| 5 | Semáforo com sons | integrar sinal visual e sonoro em uma sequência coordenada |

## Quando usar

Esta atividade é muito adequada quando o objetivo é discutir ordem temporal, eventos e coordenação entre múltiplas regras. Ela também funciona bem em aulas que queiram aproximar programação de problemas de cidadania, mobilidade urbana e sistemas automatizados do cotidiano.

## Referências

- Máquina de estados finitos: https://pt.wikipedia.org/wiki/M%C3%A1quina_de_estados_finitos
- Fluxo de controle: https://pt.wikipedia.org/wiki/Fluxo_de_controle
- Semáforo (sinalização): https://pt.wikipedia.org/wiki/Sem%C3%A1foro