Por que avisos sobre a subida de um rio chegam tarde a alguns moradores? Para responder a esse problema, a…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Construir soluções de problemas usando a técnica de decomposição e automatizar tais soluções usando uma linguagem de programação.
Fonte: Base Nacional Comum Curricular (MEC).Questão
Por que avisos sobre a subida de um rio chegam tarde a alguns moradores? Para responder a esse problema, a Defesa Civil de um município planejou um programa que funcione a cada hora. O sistema deve receber as medições de três réguas eletrônicas, decidir se o nível exige atenção, alerta ou emergência, enviar a mensagem correspondente aos bairros próximos e guardar cada medição para consulta posterior. A mesma leitura será usada tanto na decisão do aviso quanto em um gráfico histórico. Além disso, as regras que definem os níveis de risco podem ser alteradas sem mudar o envio das mensagens. A equipe pretende organizar o código para corrigir ou atualizar uma parte sem precisar refazer todo o programa. Analise as tarefas previstas no texto e identifique a organização do programa que melhor permite automatizá-las e alterá-las separadamente.
- A) Criar uma rotina principal que leia os dados, decida o risco, envie mensagens e grave o histórico em um único bloco.
- B) Criar uma rotina para cada bairro, repetindo leitura, decisão de risco, envio de aviso e gravação do histórico.
- C) Criar uma rotina que envie todos os avisos antes de receber as medições e decidir o nível de risco.
- D) Criar uma rotina que mostre as medições na tela, deixando a decisão de risco e o registro para ação manual.
- E) Criar rotinas para ler medições, definir o risco, enviar avisos e gravar histórico, chamadas por uma rotina principal.
✅ Resposta correta: alternativa E
Resolução passo a passo
- O enunciado descreve quatro tarefas distintas que o programa precisa realizar a cada hora: receber as medições das réguas, decidir o nível de risco (atenção, alerta ou emergência), enviar as mensagens aos bairros e guardar as medições para consulta e gráfico. Além disso, as regras de risco devem poder mudar sem alterar o envio das mensagens, e a equipe quer corrigir ou atualizar partes separadamente.
- Para isso, a melhor organização é separar cada tarefa em uma rotina própria (leitura, decisão de risco, envio de avisos e gravação do histórico) e fazer uma rotina principal que apenas chama essas partes na ordem certa a cada hora. Assim, trocar a regra de decisão não exige mexer no envio de mensagens, e a mesma leitura pode ser usada tanto pelo aviso quanto pelo gráfico.
- Por que as outras estão erradas:
- A) Coloca tudo em um único bloco, o que dificulta alterar uma parte sem mexer nas demais.
- B) Repete a mesma lógica para cada bairro, duplicando código e tornando a manutenção mais trabalhosa, sem separar as tarefas.
- C) Envia avisos antes de ler as medições e decidir o risco, o que não faz sentido, pois não há informação para o aviso.
- D) Exige ação manual, contrariando a exigência de automação das tarefas.
- Conclusão: a alternativa E é a que melhor atende à automatização e à alteração independente de cada parte, por modularizar as tarefas e centralizar a coordenação em uma rotina principal.
💡 Dica: Identifique os módulos do programa e como eles podem ser organizados para facilitar alterações.
Alternativa por alternativa
O aluno acredita que concentrar todas as tarefas em um único bloco simplifica o programa, sem perceber que isso impede alterar as regras de risco separadamente do envio de mensagens.
O aluno entende que criar uma rotina por bairro organiza o sistema, sem notar que isso repete a mesma lógica várias vezes e não separa as tarefas pedidas.
O aluno inverte a ordem lógica do processo, supondo que o aviso possa ser enviado antes de existir uma medição e uma decisão de risco.
O aluno lê o enunciado como se a Defesa Civil quisesse apenas visualizar dados, ignorando que o texto pede envio automático de mensagens e decisão automática de risco.
A solução decompõe o problema em tarefas relacionadas e automatiza seu encadeamento. A leitura pode alimentar risco e histórico.
Raio-X da questão
organização modular de programas
diagnostico
conceitos básicos de programação · modularização de código
estude modularização e separação de responsabilidades em programação
Confundir organização modular com programação linear, dificultando alterações futuras.
ciencia_tecnologia
pensamento_critico
cotidiano
Questões parecidas com resolução
- Uma associação de moradores envia, todo sábado, um aviso aos voluntários que participam da coleta de roupas. Ela quer…
- — Se a embalagem estiver suja, ela pode seguir para o mesmo coletor? — perguntou uma estudante durante a criação de um…
- Por que uma mesma rua pode aparecer com 12 reclamacoes de poste apagado em um dia e, no fim, serem apenas 7 postes…
- Um programa repetia o mesmo cálculo de média em 3 trechos diferentes. Depois da refatoração, esse cálculo foi colocado…
- Qual técnica facilita testar isoladamente cada função decomposta de um algoritmo que processa arquivos de dados e…
- Projete a decomposição de alto nível de um algoritmo que alimenta um chatbot escolar a partir de múltiplos arquivos de…
Todas as questões de Estratégias de solução de problemas - Decomposição
🔎 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
