GeraProva GeraProva Provas com IA para professores do Brasil
Computação3ª sérieBNCC EM13CO04Média⏱ medio

Uma empresa brasileira desenvolve um sistema para produzir relatórios financeiros. Os indicadores são…

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

Uma empresa brasileira desenvolve um sistema para produzir relatórios financeiros. Os indicadores são descritos em arquivos de configuração. Um programa lê essas descrições e gera automaticamente módulos em Python, que depois são executados pelo sistema. A equipe também usa consultas SQL apenas para buscar dados no banco, funções que recebem outras funções como argumentos e plugins instalados como módulos independentes, sem geração automática de código nem alteração do código-fonte principal. Com base no texto, qual prática exemplifica metaprogramação?

  1. A) Carregar plugins independentes para acrescentar funcionalidades ao sistema
  2. B) Ler descrições de algoritmos e gerar automaticamente módulos de código Python
  3. C) Reutilizar funcionalidades por meio de módulos independentes do sistema
  4. D) Executar consultas SQL para buscar dados armazenados no banco
  5. E) Passar uma função como argumento para outra função do sistema

✅ Resposta correta: alternativa B

Resolução passo a passo

  1. Metaprogramação é a prática de escrever programas que tratam código como dado, isto é, que leem, analisam, geram ou modificam outros programas ou módulos de código.
  2. No texto, um programa lê arquivos de configuração que descrevem os indicadores e, a partir disso, gera automaticamente módulos em Python que depois são executados. Ou seja, o programa produz código como saída, o que caracteriza metaprogramação, sobretudo na forma de geração de código.
  3. Por que as outras alternativas estão erradas: A) carregar plugins independentes é extensibilidade modular, não manipulação de código; C) reutilizar módulos independentes é apenas organização e reuso de código comum; D) executar consultas SQL é linguagem de consulta a dados, não programa que manipula código; E) passar função como argumento é programação funcional (funções de ordem superior), que trata funções como valores, mas não gera nem altera código.
  4. Conclusão: o gabarito B está correto, pois a geração automática de módulos Python a partir de descrições é o exemplo central de metaprogramação apresentado no texto.

💡 Dica: Identifique a prática que gera código automaticamente a partir de definições.

Alternativa por alternativa

A Erradaerro: Conceituala que mais engana

Confunde carregar módulos externos para estender o sistema com metaprogramação, achando que qualquer dinamismo no código já é metaprogramação.

Por que engana: Confundir metaprogramação com herança ou uso de funções como argumentos.

B Correta

Metaprogramação ocorre quando um programa manipula código, criando, analisando ou modificando código de forma automática. No texto, o programa transforma descrições presentes em arquivos de configuração em módulos Python, produzindo novo código-fonte antes de sua execução.

C Erradaerro: Interpretação

Acha que reutilizar funcionalidades por módulos independentes é metaprogramação, sem perceber que o texto diz que não há geração nem alteração de código nesses módulos.

D Erradaerro: Senso comum

Associa qualquer código 'automatizado' ou sofisticado à metaprogramação, mas consultas SQL apenas buscam dados e não manipulam programas.

E Erradaerro: Conceitual

Acredita que tratar funções como argumentos seja metaprogramação, confundindo programação funcional (funções de ordem superior) com a manipulação de código.

Raio-X da questão

Dificuldade Média
Bloom Avaliar
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✍️ situacional🧩 consolidacao
🎯 Conceito central

metaprogramação em software

📌 Objetivo

avaliacao

🧱 Pré-requisitos

conceitos básicos de programação · funções e classes em Python

📚 Reveja

Estude conceitos de metaprogramação e geração automática de código.

⚠️ Erro mais comum

Confundir metaprogramação com herança ou uso de funções como argumentos.

🌎 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.