GeraProva GeraProva Provas com IA para professores do Brasil
Computação1ª sérieBNCC EM13CO04Difícil⏱ medio

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

Habilidade BNCC EM13CO04

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.

  1. A) Aplicar um padrão de design que define interfaces fixas para comunicação entre classes
  2. B) Empregar um gerador de arquivos de configuração baseado em modelos predefinidos sem gerar código fonte
  3. C) Reutilizar funções de autenticação em vários módulos do sistema
  4. D) Utilizar um script que recebe uma descrição de tarefas em texto e gera funções de código correspondentes
  5. 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

  1. 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.
  2. 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.
  3. 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.
  4. Por que as outras estão erradas:
  5. 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.
  6. 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.
  7. C) Reutilizar funções de autenticação é reuso de código comum, sem qualquer geração automática de programas.
  8. 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

A Erradaerro: Conceitual

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.

B Erradaerro: Interpretaçãoa que mais engana

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.

C Erradaerro: Conceitual

O aluno entende metaprogramação como qualquer reaproveitamento de código, sem distinguir reuso de funções de geração automática de programas.

D Correta

Esse procedimento exemplifica metaprogramação ao usar algoritmos de entrada para produzir código-fonte automaticamente.

E Erradaerro: Conceitual

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

Dificuldade Difícil
Bloom Entender
Leitura medio
Discriminação alto
Peso pedagógico medio
Autonomia do enunciado completo
Cobertura da habilidade unica
🧪 Simulado🩺 Diagnóstico🧮 Exige cálculo🏠 Cotidiano🔗 Interdisciplinar⭐ Representativa✍️ interpretativa🧩 consolidacao
🎯 Conceito central

metaprogramação geração automática código

📌 Objetivo

diagnostico

🧱 Pré-requisitos

programação básica em Python

📚 Reveja

Estude o conceito de metaprogramação e geração dinâmica de código.

⚠️ Erro mais comum

Confundir geração automática de código com uso de bibliotecas ou padrões de design sem geração dinâmica.

🌎 Tema transversal

ciencia_tecnologia

🤝 Socioemocional

pensamento_critico

🏫 Contexto

cotidiano

Questões parecidas com resolução

Todas as questões de [CONFERIR] Construir soluções baseadas no uso de algoritmos e conceitos da Computação para resolver problemas, avaliando suas qualidades e melhorando-as.

🔎 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

Ocorreu um erro inesperado. Recarregar X

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.