Quando comecei a desenvolver uma ferramenta para automatizar a geração de relatórios, implementei um programa…
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
Quando comecei a desenvolver uma ferramenta para automatizar a geração de relatórios, implementei um programa que lê descrições em alto nível de transformações de dados e produz funções em Python para cada etapa. O utilitário analisa arquivos de texto onde o usuário define operações como “filtrar por data” ou “agrupar vendas”. Sempre que as descrições de entrada mudam, o programa regenera automaticamente o código-fonte atualizado. Essa solução permite à equipe concentrar-se em especificar o que precisa ser feito e confiar no gerador para criar as implementações detalhadas. Outras partes do sistema, como interfaces gráficas e arquivos de configuração, continuam sendo codificadas manualmente. Analise o texto-base e identifique a prática que exemplifica metaprogramação no contexto apresentado.
- A) Aplicar um padrão de design que define interfaces fixas para comunicação entre classes
- B) Empregar um gerador de arquivos de configuração baseado em modelos predefinidos sem gerar código fonte
- C) Reutilizar funções de autenticação em vários módulos do sistema
- D) Utilizar um script que recebe uma descrição de tarefas em texto e gera funções de código correspondentes
- E) Usar uma biblioteca que permite inspecionar tipos de dados de objetos durante a execução
✅ Resposta correta: alternativa D
Resolução passo a passo
- O texto descreve um programa que lê descrições de alto nível (por exemplo, 'filtrar por data' ou 'agrupar vendas') e produz automaticamente código-fonte em Python para cada etapa, regenerando esse código sempre que a entrada muda.
- Metaprogramação é a prática em que um programa escreve, transforma ou gera outro programa (código como dado). O caso apresentado é exatamente esse: o gerador toma uma especificação textual e produz funções executáveis, sem que a equipe escreva a implementação detalhada.
- Analisando a alternativa D, ela descreve um script que recebe descrição de tarefas em texto e gera funções de código correspondentes, o que coincide com o funcionamento descrito. Portanto, D é a resposta correta, e o gabarito oficial está correto.
- Por que as outras estão erradas:
- A) Padrões de design que definem interfaces fixas são uma técnica de organização de classes, não geração de código a partir de descrições.
- B) O texto diz que o gerador produz código-fonte, e não apenas arquivos de configuração; além disso, as configurações são codificadas manualmente.
- C) Reutilizar funções de autenticação é reuso de código comum, sem qualquer geração automática de programas.
- E) Inspecionar tipos em tempo de execução (reflexão) é uma capacidade de análise, mas não cria código novo a partir de uma descrição, que é o ponto central do texto.
💡 Dica: Identifique a prática que envolve geração automática de código a partir de descrições.
Alternativa por alternativa
O aluno associa a ideia de 'padrão' e 'interfaces' ao conceito de organização arquitetural do sistema, confundindo estrutura de classes com geração de código.
O aluno lê 'gerador' e foca apenas na palavra 'configuração', sem perceber que o texto diz que o gerador produz código-fonte e que as configurações são feitas manualmente.
Por que engana: Confundir geração automática de código com uso de bibliotecas ou padrões de design sem geração dinâmica.
O aluno entende metaprogramação como qualquer reaproveitamento de código, sem distinguir reuso de funções de geração automática de programas.
Esse procedimento exemplifica metaprogramação ao usar algoritmos de entrada para produzir código-fonte automaticamente.
O aluno confunde reflexão (inspecionar tipos durante a execução) com metaprogramação, que envolve gerar ou modificar código, e não apenas examiná-lo.
Raio-X da questão
metaprogramação geração automática código
diagnostico
programação básica em Python
Estude o conceito de metaprogramação e geração dinâmica de código.
Confundir geração automática de código com uso de bibliotecas ou padrões de design sem geração dinâmica.
ciencia_tecnologia
pensamento_critico
cotidiano
Questões parecidas com resolução
- Em um projeto de monitoramento de rios, uma boia computacional organiza leituras de sensores antes de enviá-las por…
- Uma biblioteca escolar recebeu caixas de livros doados para uma feira de troca. Para registrar os exemplares, a equipe…
- Um centro cultural público oferece inscrições on-line para atividades com critérios variados. Na oficina de teatro…
- Uma escola está testando dois protótipos de aplicativo para que estudantes consultem mudanças de sala, horários e…
- Uma secretaria municipal de educação está digitalizando pedidos de transporte escolar e de atendimento em contraturno…
- — O cartaz não pode sair duas vezes, pois a feira começa em uma hora — alertou a coordenadora do centro cultural. No…
🔎 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
