Considere um algoritmo que decide aceitar ou rejeitar itens conforme uma política configurável (ex.: regras de…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Reconhecer o conceito de metaprogramação como uma forma de generalização na construção de programas, permitindo que algoritmos sejam entrada ou saída para outros algoritmos.
Fonte: Base Nacional Comum Curricular (MEC).Questão
Considere um algoritmo que decide aceitar ou rejeitar itens conforme uma política configurável (ex.: regras de validação). Para generalizar o algoritmo a múltiplas políticas sem alterar seu corpo, qual técnica deve ser aplicada?
- A) Usar uma condição if para cada regra diretamente no algoritmo.
- B) Implementar as regras diretamente no corpo da função.
- C) Aplicar uma estrutura de controle fixa que não permite alterações.
- D) Receber a política como parâmetro função (callback) ou aplicar o padrão Strategy.
- E) Criar uma nova versão do algoritmo para cada política.
✅ Resposta correta: alternativa D
Resolução passo a passo
- O enunciado pede uma forma de generalizar um algoritmo de aceitação ou rejeição de itens para várias políticas, sem precisar alterar seu corpo. Isso significa separar a parte que muda (a regra de validação) da parte que permanece igual (o fluxo do algoritmo).
- A solução é tornar a política um parâmetro. Ela pode ser passada como função (callback), que é uma função recebida como argumento e chamada pelo algoritmo, ou encapsulada em um objeto com interface comum, como no padrão Strategy. Assim, trocar a política não exige mexer no código do algoritmo, apenas fornecer outra implementação.
- A alternativa A está errada porque colocar um if para cada regra dentro do algoritmo obriga a modificar o corpo sempre que surgir uma nova política.
- A alternativa B está errada porque implementar as regras diretamente no corpo da função mistura lógica fixa com lógica variável, o que impede a generalização.
- A alternativa C está errada porque uma estrutura de controle fixa que não permite alterações é justamente o oposto da flexibilidade pedida.
- A alternativa E está errada porque criar uma nova versão do algoritmo para cada política duplica código e não generaliza nada.
- Portanto, a alternativa D é a correta, pois a injeção da política como parâmetro (callback) ou via Strategy é a técnica que permite múltiplas políticas sem alterar o corpo do algoritmo. O gabarito oficial está correto.
💡 Dica: Pense em como aplicar o princípio de design para permitir extensibilidade.
Alternativa por alternativa
O aluno acredita que basta acrescentar uma condição para cada regra dentro do próprio algoritmo, sem perceber que cada nova política exigiria alterar o corpo do código.
O aluno imagina que deixar as regras escritas diretamente na função é uma forma organizada de implementar políticas, sem notar que isso prende o algoritmo a uma única política.
Por que engana: Escolher a alternativa que sugere implementar regras diretamente no corpo do algoritmo, ignorando a flexibilidade necessária para múltiplas políticas.
O aluno interpreta 'estrutura de controle' como algo rígido e confunde a ideia de estabilidade do código com a impossibilidade de configurá-lo, contrariando o objetivo de generalização.
Passar a regra como função desacopla comportamento da lógica de iteração, permitindo trocar políticas sem modificar o algoritmo central.
O aluno entende que cada política deve gerar um algoritmo separado, o que resolve a diferença de regras, mas gera duplicação de código e não cumpre a exigência de generalização.
Raio-X da questão
políticas de validação
avaliacao
estruturas de controle · funções e parâmetros
Revisar técnicas de design de algoritmos e extensibilidade.
Escolher a alternativa que sugere implementar regras diretamente no corpo do algoritmo, ignorando a flexibilidade necessária para múltiplas políticas.
ciencia_tecnologia
pensamento_critico
abstrato
Questões parecidas com resolução
- Ao generalizar um algoritmo de filtragem para aceitar diferentes critérios sem alterar seu corpo, que tipo de parâmetro…
- Ao generalizar um algoritmo para aplicar operações distintas a elementos de uma coleção heterogênea, que tipo de…
- Um algoritmo de faturamento usa a variável 'taxa_desconto' com valor fixo. Qual alteração simples no algoritmo aumenta…
- Na construção de um algoritmo, o que deve ser feito para reutilizar um componente já existente?
- Qual das opções a seguir exemplifica uma boa prática ao generalizar uma solução de programação?
- Qual das seguintes estratégias pode ser usada para reutilizar código em uma solução de programaçã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
