Dados ilustrativos: em um jardim sensorial, três bancos equipados com sensores de pressão registram quando…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Usar autômatos para descrever comportamentos de forma abstrata automatizando-os através de uma linguagem de programação baseada em eventos.
Fonte: Base Nacional Comum Curricular (MEC).Questão
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); });
- B) on("banco_ocupado",()=>{ if(estado<3) estado++; }); on("banco_desocupado",()=>{ if(estado>0) estado--; updateSound(estado); });
- C) on("banco_ocupado",()=>{ estado++; updateSound(estado); }); on("banco_desocupado",()=>{ estado--; updateSound(estado); });
- D) on("banco_ocupado",()=>{ estado = min(estado+1,3); updateSound(estado); }); on("banco_desocupado",()=>{ estado = max(estado-1,1); updateSound(estado); });
- E) on("banco_ocupado",()=>{ estado = min(estado+1,3); updateSound(estado); }); on("banco_desocupado",()=>{ if(estado>1) estado--; updateSound(estado); });
✅ Resposta correta: alternativa A
Resolução passo a passo
- O contador de bancos ocupados deve variar de 0 a 3, pois são três bancos. Ao ocupar um banco, o contador sobe 1, sem passar de 3. Ao desocupar, ele desce 1, sem ficar abaixo de 0. Em cada evento, o modo sonoro precisa ser atualizado imediatamente.
- Na alternativa A, o tratador de banco_ocupado faz estado = min(estado+1,3), que limita o valor máximo em 3, e em seguida chama updateSound(estado). O tratador de banco_desocupado faz estado = max(estado-1,0), que limita o valor mínimo em 0, e também chama updateSound(estado). Assim, todas as transições do autômato são cobertas, com os estados limitados ao intervalo 0 a 3 e o som atualizado a cada evento.
- Comparando com o gabarito oficial, A é a alternativa correta e coincide com a resolução feita de forma independente.
- Por que as outras estão erradas:
- B: o tratador de banco_ocupado não chama updateSound, então o som não muda quando um banco é ocupado, o que viola a exigência de acionar a reprodução imediatamente.
- C: não há limites, então o contador pode chegar a 4 ou a valores negativos, estados que não existem no autômato.
- D: o limite inferior do desocupado é 1 em vez de 0, então o sistema nunca volta ao estado Silencioso (0 ocupações).
- E: o desocupado só decrementa quando o estado é maior que 1, o que impede a transição de 1 para 0 e, portanto, o retorno ao modo Silencioso.
💡 Dica: Analise como cada evento altera o estado e atualiza o som conforme as regras do autômato.
Alternativa por alternativa
Usa min e max para manter limites entre 0 e 3 e chama updateSound após cada evento, conforme o autômato descrito.
O aluno acredita que basta atualizar o contador e que o som pode ser ignorado no evento de ocupação, ou que updateSound pode ficar fora do bloco correto. Ele não percebe que cada evento deve acionar a reprodução do padrão.
Por que engana: Confundir limites do estado ao incrementar ou decrementar, causando estados inválidos.
O aluno esquece que o contador é limitado entre 0 e 3 e trata o contador como um número sem limites, como se pudesse ficar negativo ou passar de 3.
O aluno aplica o limite inferior 1 ao desocupar, achando que o sistema nunca deve chegar a zero. Não percebe que 0 ocupações corresponde ao modo Silencioso, que precisa ser alcançável.
O aluno impõe a condição de só decrementar quando o estado é maior que 1, o que impede a passagem de 1 para 0. Assim, o modo Silencioso nunca é restabelecido após a última desocupação.
Raio-X da questão
autômato finito, eventos, transições
avaliacao
eventos em programação · controle de estado
Estude autômatos finitos e manipulação de eventos em programação.
Confundir limites do estado ao incrementar ou decrementar, causando estados inválidos.
ciencia_tecnologia
pensamento_critico
cotidiano
Questões parecidas com resolução
- Projete um autômato baseado em eventos que detecta três toques rápidos (evento 'toque') em um sensor e aciona uma saída…
- Pesquisadores testam modelo de semáforo que responde a eventos para estudar fluxo de veículos. Para controlar o…
- 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…
- Projete um autômato baseado em eventos para tocar o sinal de entrada e saída das aulas numa escola: descreva estados…
- Ao retirar livros reservados, uma biblioteca municipal passou a usar um armário eletrônico. Para evitar filas, o armário…
- — Por que a tela do totem volta sozinha para o começo? — perguntou um usuário no terminal rodoviário, ao tentar…
Todas as questões de Programação - Autômatos e linguagens baseadas em eventos
🔎 Procurar outra questão
Procure no banco do GeraProva pelo tema ou por um trecho do enunciado. Cada questão já vem com resolução comentada e a análise de cada alternativa.
Professor: monte a prova com questões como esta, com gabarito e folha de respostas, em 30 segundos. Ver planos · Blog
