Atividades sobre Programação usando grafos e árvores com gabarito — 9º ano (EF09CO03)
Atividades de Computação para o 9º ano sobre autômatos, eventos e transições, alinhadas à EF09CO03. Veja questões com gabarito comentado e caminhos práticos para ensinar e avaliar.
Quando recebi pela primeira vez o código EF09CO03 no planejamento de Computação, confesso que fiquei um pouco perdido. O texto da BNCC fala em autômatos e linguagens baseadas em eventos, e a minha dúvida era como transformar aquilo em uma aula que os alunos do 9º ano realmente entendessem, e depois em uma avaliação justa.
Com o tempo, percebi que o caminho passa por partir de situações concretas do dia a dia, como semáforos, trancas eletrônicas e sensores, e só depois chegar à representação formal. Foi isso que organizei neste texto, junto com seis questões prontas para você usar.
O que a habilidade EF09CO03 pede, de verdade?
Usar autômatos para descrever comportamentos de forma abstrata automatizando-os através de uma linguagem de programação baseada em eventos.
Na prática, a habilidade quer que o aluno consiga descrever um comportamento como uma sequência de estados e transições, e que depois traduza essa descrição para um programa que reage a eventos. Um autômato é, em essência, uma forma organizada de dizer: estou em tal situação, ocorreu tal evento, então passo para outra situação. O aluno precisa identificar os estados possíveis, os eventos que provocam mudanças e as regras que conectam uma coisa à outra. Não se trata de decorar símbolos, mas de enxergar a lógica por trás de um sistema que reage ao mundo, como um botão de travessia que muda o comportamento de um sinal ou um sensor que aciona uma bomba. Quando o aluno domina essa leitura, a programação orientada a eventos deixa de parecer mágica e passa a ser uma consequência natural do raciocínio.
Como trabalhar EF09CO03 em sala?
Estas são as ideias que mais funcionaram comigo, sem exigir equipamento caro:
- Semáforo de papel: desenhe um cruzamento no quadro e peça que os alunos listem os estados (verde, amarelo, vermelho, travessia) e os eventos (tempo esgotado, botão apertado). Depois, eles desenham as setas de transição.
- Teatro do autômato: um aluno faz o papel de sistema, outro lança eventos (“botão apertado”, “tempo de 20 segundos”). A turma precisa dizer em qual estado o sistema está a cada evento.
- Sensor de sala: discuta com a turma como a porta da sala ou o interruptor da luz poderiam ser descritos como autômatos, com estados e eventos bem definidos.
- Pseudocódigo de eventos: depois de entender o diagrama, peça que escrevam trechos do tipo “quando o botão for apertado, faça...”, conectando a lógica ao código.
Como avaliar essa habilidade?
Uma boa questão sobre EF09CO03 precisa cobrar que o aluno raciocine sobre o comportamento, e não apenas memorize um vocabulário. Ela deve apresentar uma situação realista, pedir que o aluno identifique estados, eventos ou transições, e oferecer alternativas em que o erro seja plausível. Um erro comum que observo é a avaliação que pede apenas a definição de “autômato”, sem contexto. Outro erro é criar alternativas absurdas, que o aluno descarta sem pensar. O ideal é que cada distrator represente um equívoco real, como trocar a ordem das transições, esquecer um estado ou confundir o evento que dispara a mudança.
Questões prontas de EF09CO03 (com gabarito comentado)
A seguir estão seis questões alinhadas à habilidade. Leia o enunciado, tente resolver e só depois confira o gabarito e as explicações de cada alternativa.
Questão 1: jardim sensorial e os tratadores de eventos
Dados ilustrativos: em um jardim sensorial, três bancos equipados com sensores de pressão registram quando cada banco é ocupado ou desocupado. O sistema contabiliza o número total de bancos ocupados e gerencia três modos sonoros: Silencioso (0 ocupações), Crescendo (1 ou 2 ocupações) e Ondulante (3 ocupações). A cada evento de banco_ocupado ou banco_desocupado, o sistema atualiza o contador, determina o modo correspondente e aciona imediatamente a reprodução do padrão musical adequado. Essa solução usa um autômato finito para mapear o estado do contador a cada transição de evento, permitindo a programação baseada em eventos sem intervenção manual.
Identifique o conjunto de tratadores de eventos que implementa corretamente as transições do autômato descrito no texto-base.
- ✅ A) on("banco_ocupado",()=>{ estado = min(estado+1,3); updateSound(estado); }); on("banco_desocupado",()=>{ estado = max(estado-1,0); updateSound(estado); }); — Usa min e max para manter limites entre 0 e 3 e chama updateSound após cada evento, conforme o autômato descrito.
- ❌ B) on("banco_ocupado",()=>{ if(estado<3) estado++; }); on("banco_desocupado",()=>{ if(estado>0) estado--; updateSound(estado); }); — Falta a chamada a updateSound no tratador de banco_ocupado, então o modo sonoro não é atualizado naquele evento.
- ❌ C) on("banco_ocupado",()=>{ estado++; updateSound(estado); }); on("banco_desocupado",()=>{ estado--; updateSound(estado); }); — Não há verificação de limites, podendo gerar estado<0 ou >3 e violar o autômato finito.
- ❌ D) on("banco_ocupado",()=>{ estado = min(estado+1,3); updateSound(estado); }); on("banco_desocupado",()=>{ estado = max(estado-1,1); updateSound(estado); }); — Usa max(estado-1,1), impedindo o retorno ao estado 0 e impedindo o modo Silencioso.
- ❌ E) on("banco_ocupado",()=>{ estado = min(estado+1,3); updateSound(estado); }); on("banco_desocupado",()=>{ if(estado>1) estado--; updateSound(estado); }); — Só decrementa se estado>1, logo não consegue retornar ao contador zero e acionar o modo Silencioso.
Questão 2: escopo de variáveis em handlers
Em programação por eventos, o que determina o escopo de uma variável declarada dentro de um manipulador de evento (handler)?
- ✅ A) O escopo é local ao handler; a variável existe apenas durante a execução do evento. — Variáveis declaradas dentro de um handler são locais: alocadas no contexto da chamada do evento e não acessíveis fora dele, evitando colisões com variáveis globais.
- ❌ B) O escopo é fixo; a variável só existe durante a execução de todo o programa. — Variáveis em handlers são locais a eventos, não existem ao longo de toda a execução.
- ❌ C) O escopo é baseado em funções; a variável vive apenas na primeira função que a chama. — O escopo é restrito ao handler, independentemente de outras funções que possam chamá-lo.
- ❌ D) O escopo é global; a variável pode ser acessada de qualquer parte do código. — Variáveis em handlers são locais, não globais; elas não podem ser acessadas fora do seu contexto.
- ❌ E) O escopo é por classe; a variável se torna membro da classe que contém o handler. — Variáveis em handlers não se tornam membros da classe, possuem escopo local e efêmero.
Questão 3: viveiro marinho e o autômato de níveis
Em um viveiro marinho, cientistas testam um sistema de automação capaz de monitorar e regular continuamente o nível de água em tanques destinados ao cultivo de corais. O sistema detecta três condições de volume: “nível baixo”, quando a altura fica abaixo de 20 cm; “nível adequado”, entre 20 cm e 30 cm; e “nível alto”, acima de 30 cm. Detectado nível baixo, a bomba de reposição entra em ação até restabelecer o nível adequado. Se o nível alcançar o ponto alto, a mesma bomba interrompe o fluxo e aguarda a descida até o nível adequado. Adicionalmente, se o nível permanecer adequado sem variações por 10 minutos, o sistema entra em estado de espera e retoma as verificações quando identifica qualquer nova flutuação de volume.
Analise o texto-base e identifique a descrição abstrata do autômato que descreve corretamente os estados e transições do sistema de controle de nível de água.
- ✅ A) Estados NB=Baixo, NA=Adequado, NL=Alto, ME=Espera; transicoes: NB->NA se baixo; NL->NA se alto; NA->ME se 10min; ME->NA se variacao — Representa fielmente o comportamento descrito: reposição em NB e NL leva a NA, transição para ME após 10min e retorno a NA em variações.
- ❌ B) Estados NB=Baixo, NA=Adequado, NL=Alto, ME=Espera; transicoes: NB->ME se baixo; NL->ME se alto; ME->NA se 10min; NA->NB se variacao — Define transições diretas NB->ME e NL->ME, não previstas: o sistema deve passar por NA antes de entrar em Espera.
- ❌ C) Estados NB=Baixo, NA=Adequado, NL=Alto; transicoes: NB->NA se baixo; NL->NA se alto; NA->NL se alto; NA->NB se baixo — Omissão do estado ME e suas transições ignora o período de espera após nível adequado, condição essencial descrita no texto.
- ❌ D) Estados NB=Baixo, NA=Adequado, NL=Alto, ME=Espera; transicoes: NB->NA se baixo; NL->NA se alto; ME->NA se 10min; NA->ME se variacao — Inverte as transições de espera e tempo: coloca ME->NA após 10min, ao contrário do texto que diz NA->ME após 10min.
- ❌ E) Estados NB=Baixo, NA=Adequado, NL=Alto, ME=Espera; transicoes: NB->NA se baixo; NA->NL se alto; NL->NA se alto; NA->ME se 10min — Inclui transição NA->NL se alto, mas no texto a bomba em NA não reabastece; o nível alto só desliga a bomba e volta a NA.
Questão 4: semáforo com botão de travessia
No cruzamento próximo a uma unidade de saúde, um semáforo possui botão para solicitação de travessia e sinal sonoro para pessoas com deficiência visual. O sistema começa com veículos liberados. Ao pressionar o botão, a pessoa não altera imediatamente as luzes: apenas registra um pedido. Depois de os veículos permanecerem liberados por, no mínimo, 40 segundos, o controlador inicia uma luz amarela de 3 segundos. Em seguida, interrompe os veículos, libera a travessia com aviso sonoro por 20 segundos e retorna à situação inicial, apagando o pedido registrado. O controlador reage somente ao pressionamento do botão e ao término dos tempos programados.
Analise o funcionamento descrito e identifique a regra de transição que permite representar o controlador como um autômato orientado a eventos.
- ❌ A) Associar o botão à passagem imediata para travessia, sem considerar o estado dos veículos ou o temporizador. — Erro de antecipação de evento. O pedido não libera a travessia imediatamente, pois há tempo mínimo e etapa amarela.
- ❌ B) Associar a cor exibida pelo semáforo à decisão autônoma sobre a próxima mudança, sem receber eventos. — Erro de atribuição de controle. A cor é resultado de um estado; as mudanças ocorrem pelos eventos de botão e temporizador.
- ❌ C) Associar cada segundo transcorrido à criação de um novo estado, independentemente de haver pedido de travessia. — Erro de granularidade excessiva. Estados representam situações relevantes; os segundos são usados pelo temporizador, não como estados.
- ❌ D) Associar o fim de qualquer temporizador ao retorno inicial, apagando o pedido antes de liberar a travessia. — Erro de ordem de transições. O fim do primeiro tempo deve conduzir à sequência amarela e à travessia, não ao reinício.
- ✅ E) Associar o botão à passagem de espera para pedido pendente e o temporizador à sequência de travessia e retorno. — Correta. O botão produz um evento que muda o estado do pedido, e os tempos concluídos acionam as transições seguintes do autômato.
Questão 5: por que o botão apertado várias vezes altera o sinal
Por que um botão apertado várias vezes pode alterar o funcionamento de um sinal de travessia? Em uma avenida movimentada, o controlador sonoro possui os estados Espera, Alerta e Travessia. Ao receber o evento de pressionar o botão no estado Espera, passa para Alerta, emitindo sons intermitentes por 5 segundos. Ao fim desse tempo, inicia Travessia: os veículos recebem sinal vermelho e o som contínuo dura 20 segundos. Encerrado esse período, o sistema retorna a Espera.
Moradores observaram que, quando o botão era pressionado durante Travessia, o temporizador de 20 segundos recomeçava. Isso prolongava a interrupção dos veículos, embora os novos pedidos de travessia também precisassem ser considerados após o ciclo em andamento. Os técnicos decidiram alterar o comportamento do controlador sem encurtar nem reiniciar a travessia já iniciada.
Analise o comportamento descrito e identifique a regra de transição que atende aos novos pedidos sem alterar a duração da travessia em curso.
- ❌ A) Definir que, em Travessia, o botão conduza diretamente ao estado Alerta e interrompa o som contínuo. — Erro de confundir estados: passar a Alerta durante Travessia modifica o sinal destinado aos pedestres antes de o ciclo terminar.
- ❌ B) Definir que, em Travessia, o botão conduza imediatamente ao estado Espera e descarte o temporizador. — Erro de transição prematura: encerrar Travessia antes do temporizador reduz o tempo previsto para quem já está atravessando.
- ❌ C) Definir que, em Travessia, o botão seja ignorado e o término conduza sempre ao estado Espera. — Erro de perda de evento: essa regra evita o reinício, mas descarta os novos pedidos que deveriam ser atendidos depois.
- ❌ D) Definir que, em Travessia, o botão reinicie o temporizador e mantenha o estado Travessia. — Erro de ignorar a condição do problema: reiniciar o temporizador repete exatamente o comportamento que prolonga a travessia.
- ✅ E) Definir que, em Travessia, o botão leve ao estado Travessia com pedido pendente e o término conduza a Alerta. — A regra registra o evento em outro estado e preserva os 20 segundos. Ao terminar a travessia atual, o autômato inicia um novo aviso.
Questão 6: trava eletrônica de bicicletas compartilhadas
Cerca de 180 bicicletas de um sistema comunitário de empréstimo passaram a usar uma trava eletrônica com LED. Um voluntário programou o controle como um sistema baseado em eventos, com três estados: Aguardando (trava fechada), Destravada (trava aberta esperando a retirada) e EmUso (bicicleta já retirada). Os eventos captados são: cartao_aprovado, sensor_retirada (a roda sai do suporte), botao_cancelar e tempo_15s (15 s após destravar).
Nos testes, quando o cartão é aprovado, a trava abre e o LED fica verde. Se a bicicleta é retirada, o sistema registra o empréstimo e passa para EmUso. Se ninguém retira a bicicleta, a trava fecha sozinha após 15 s. Porém, depois desse fechamento automático, novos cartões aprovados são ignorados até reiniciar o equipamento, como se ele ainda estivesse “no meio” de uma retirada.
Com base no texto, identifique a transição que deve ser incluída no autômato para que o controle volte a aceitar novos cartões após o fechamento automático da trava.
- ✅ A) Adicionar transição de Destravada para Aguardando no evento tempo_15s. — Se o tempo expira sem retirada, o sistema deve encerrar a tentativa e voltar ao estado inicial, permitindo novo cartao_aprovado.
- ❌ B) Adicionar transição de Destravada para Aguardando no evento cartao_aprovado. — Erro de evento: cartao_aprovado deveria iniciar a destrava; usar esse evento para voltar cancela a retirada ao invés de finalizá-la.
- ❌ C) Adicionar transição de Destravada para EmUso no evento tempo_15s. — Erro de inferência: tempo_15s indica ausência de retirada, não confirma empréstimo; levaria a registros indevidos.
- ❌ D) Adicionar transição de EmUso para Aguardando no evento tempo_15s. — Erro de escopo do evento: o temporizador descrito ocorre na tentativa de retirada, não durante o uso da bicicleta.
- ❌ E) Adicionar transição de Aguardando para Destravada no evento tempo_15s. — Erro de estado: o temporizador só faz sentido após destravar; em Aguardando não há contagem iniciada.
Próximos passos
Depois de trabalhar essas questões, vale retomar o diagrama de estados com a turma e pedir que cada aluno proponha um sistema do cotidiano escolar descrito como autômato. Se quiser consultar todas as questões alinhadas a este código, acesse a consulta completa do código EF09CO03. Para montar suas próprias provas em minutos, use o gerador de provas do GeraProva, e se ainda não tem conta, faça o cadastro grátis.
As questões são de apoio ao seu planejamento e não substituem a sua avaliação pedagógica. Ajuste o nível e o contexto à realidade da sua turma.
Encontrou um erro neste conteúdo? Veja nossa política editorial e avise a gente.
O GeraProva busca questões com gabarito comentado e BNCC no acervo e monta a prova pronta para imprimir.
Habilidades BNCC deste artigo
Questões deste artigo com resolução completa
- Dados ilustrativos: em um jardim sensorial, três bancos equipados com sensores de pressão registram quando…
- Em programação por eventos, o que determina o escopo de uma variável declarada dentro de um manipulador de…
- Em um viveiro marinho, cientistas testam um sistema de automação capaz de monitorar e regular continuamente o…
- No cruzamento próximo a uma unidade de saúde, um semáforo possui botão para solicitação de travessia e sinal…
- Por que um botão apertado várias vezes pode alterar o funcionamento de um sinal de travessia? Em uma avenida…
- Cerca de 180 bicicletas de um sistema comunitário de empréstimo passaram a usar uma trava eletrônica com LED…
Fontes
- Base Nacional Comum Curricular (BNCC), Ministério da Educação: basenacionalcomum.mec.gov.br
- Questões do acervo GeraProva sobre Programação - Autômatos e linguagens baseadas em eventos, com resolução comentada e análise de cada alternativa.
