Por que um ajuste simples vira dor de cabeça quando um programa cresce? Em uma feira de bairro, um grupo de…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Criar algoritmos fazendo uso da decomposição e do reúso no processo de solução de forma colaborativa e cooperativa e automatizá-los usando uma linguagem de programação.
Fonte: Base Nacional Comum Curricular (MEC).Questão
Por que um ajuste simples vira dor de cabeça quando um programa cresce? Em uma feira de bairro, um grupo de voluntários usa um app feito por eles para controlar o empréstimo de coletes refletivos. O app tem duas ações: “emprestar” e “devolver”. Em ambas, o celular pede o código do voluntário, confere se ele está cadastrado, registra a hora e salva o movimento em uma lista. Na última atualização, o grupo mudou a regra do cadastro (agora o código precisa ter 6 caracteres). Eles corrigiram essa verificação na tela “emprestar”, mas esqueceram de alterar na tela “devolver”. No sábado, várias devoluções foram recusadas por erro, mesmo com códigos válidos. Para evitar novos esquecimentos, eles querem reorganizar o algoritmo antes de automatizar tudo na linguagem de programação que estão usando. Com base no texto, identifique a forma de organizar o algoritmo que reduz esquecimentos em mudanças futuras, usando decomposição e reúso ao automatizar o app.
- A) Definir apenas um checklist em texto e pedir que a pessoa execute os passos, sem código.
- B) Definir os dois fluxos com blocos repetidos, copiando a validação e o registro em cada um.
- C) Definir um único fluxo gigante que trate emprestar e devolver só com testes no meio.
- D) Definir funções de validação e de registro e reutilizá-las nos fluxos de emprestar e devolver.
- E) Definir funções separadas para cada fluxo, mesmo que cada uma repita a mesma validação e o mesmo registro.
✅ Resposta correta: alternativa D
Resolução passo a passo
- O problema descrito nasce de duplicação. A regra de validação do código do voluntário existe em dois lugares (telas emprestar e devolver), então uma mudança feita em apenas um deles deixa o outro desatualizado.
- A solução indicada pelo próprio conceito de decomposição e reúso é separar o algoritmo em partes menores com responsabilidade única: uma função de validação (confere se o código tem 6 caracteres e se o voluntário está cadastrado) e uma função de registro (marca a hora e salva o movimento na lista).
- Com essas funções, os fluxos de emprestar e devolver apenas as chamam. Assim, a regra existe em um único lugar; ao mudá-la, o efeito vale automaticamente para as duas ações, reduzindo esquecimentos em mudanças futuras.
- Por que as outras estão erradas: A) abandona a automação, que é justamente o objetivo do grupo; B) repete a validação e o registro em cada fluxo, exatamente a causa do erro do sábado; C) um fluxo único e gigante mistura responsabilidades e torna a manutenção mais difícil, mesmo com testes; E) cria funções separadas, mas mantém a repetição da validação e do registro, por isso o problema continuaria.
- Conclusão: a alternativa D é a única que combina decomposição (dividir em funções com papéis claros) e reúso (usar as mesmas funções nos dois fluxos).
💡 Dica: Pense em como organizar o código para evitar repetição e facilitar alterações futuras.
Alternativa por alternativa
Acredita que um checklist escrito em texto resolve o problema de manutenção, ignorando que o grupo quer organizar o algoritmo para automatizar o app.
Entende que copiar o mesmo bloco de validação e registro em cada fluxo é uma forma organizada, sem perceber que a cópia é justamente o que causou a falha ao esquecer a alteração na tela devolver.
Imagina que testes no meio de um único fluxo grande bastam para evitar esquecimentos, sem perceber que a mistura de responsabilidades dificulta a manutenção.
As etapas repetidas viram partes reutilizáveis; ao mudar a validação, altera-se em um só lugar e os dois fluxos usam a mesma regra.
Acredita que separar em funções por tela já é decomposição suficiente, sem notar que repetir a validação e o registro em cada função mantém o mesmo risco de esquecimento.
Raio-X da questão
decomposição e reúso de código
diagnostico
conceitos básicos de programação · funções e modularização
Estude como modularizar e reutilizar funções em programação para evitar erros.
Confundir a importância da reutilização de código e não entender como a falta dela causa erros repetidos.
ciencia_tecnologia
pensamento_critico
cotidiano
Questões parecidas com resolução
- Uma turma quer criar um aplicativo simples para organizar a rotina de estudos. O grupo decidiu separar o trabalho em…
- Na organização de uma feira de troca de livros e brinquedos do bairro, quatro estudantes ficaram responsáveis por…
- Imagine que você está criando um aplicativo que ajuda na organização de tarefas. Como você estruturaria a lógica desse…
- — Moça, minha senha é 14, mas a moça do balcão chamou a 15… — reclamou um cliente na fila do ponto de recarga de água…
- — Toda vez que um sensor dispara, a central da associação de moradores precisa avisar com som e luz — reclamou Davi…
- Pense em um cenário em que você desenvolve um aplicativo para gerenciar tarefas. Quais passos você deve seguir para que…
Todas as questões de Estratégias de solução de problemas - Reúso
🔎 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
