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
- Em um centro cultural municipal, um elevador acessível possui botões em braile, avisos sonoros e uma tela que informa…
- Em uma feira municipal de coleta seletiva, uma máquina recebe embalagens e registra pontos para as pessoas…
- Por que um botão apertado várias vezes pode alterar o funcionamento de um sinal de travessia? Em uma avenida…
- 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…
- — Se o nível do córrego diminuir, isso não significa que a área já foi vistoriada — alertou a agente da Defesa Civil…
- Cerca de 180 bicicletas de um sistema comunitário de empréstimo passaram a usar uma trava eletrônica com LED. Um…
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
