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

Narrativa em primeira pessoa: trabalhei em um projeto interno de automação de APIs que visava reduzir o tempo…

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

Narrativa em primeira pessoa: trabalhei em um projeto interno de automação de APIs que visava reduzir o tempo de desenvolvimento de funções de conversão de objetos para JSON. No início, escrevíamos manualmente cada função de serialização para diversas classes. Depois, criamos um módulo que recebia como entrada a descrição dos atributos de cada classe e gerava automaticamente o código-fonte dessas funções, além de produzir fábricas de deserialização que interpretam JSON e instanciam objetos correspondentes. Com base no texto, identifique a prática que exemplifica o uso de metaprogramação para generalizar a construção de programas.

  1. A) Utilizar funções de ordem superior para iterar sobre atributos de um objeto e montar JSON
  2. B) Criar um programa que receba descrições de classes e gere automaticamente funções de serialização
  3. C) Aplicar funções puras para transformar valores de objetos em pares chave-valor genéricos
  4. D) Usar laços de repetição para concatenar manualmente cada campo de um objeto em uma string JSON
  5. E) Empregar bibliotecas externas para registrar tipos de dados em tempo de execução

✅ Resposta correta: alternativa B

Resolução passo a passo

  1. A questão pede a prática que exemplifica metaprogramação, ou seja, um programa que produz ou manipula outros programas, generalizando a construção de código. Passo 2: No texto, a equipe criou um módulo que recebe a descrição dos atributos de cada classe e gera automaticamente o código-fonte das funções de serialização. Isso é metaprogramação, pois o programa escreve código de outros programas a partir de uma descrição. Passo 3: A alternativa B descreve exatamente essa prática: um programa que recebe descrições de classes e gera automaticamente funções de serialização. Passo 4: A alternativa A está errada porque funções de ordem superior apenas iteram e transformam dados em tempo de execução, sem gerar código novo. Passo 5: A alternativa C está errada porque funções puras são um conceito de programação funcional sobre transformação de valores, não geração de código. Passo 6: A alternativa D está errada porque concatenar campos manualmente é justamente o método antigo, não generalizado, descrito no início do texto. Passo 7: A alternativa E está errada porque registrar tipos em tempo de execução usa bibliotecas para reflexão, mas não descreve a geração automática de código que o texto apresenta. Passo 8: Conclusão: o gabarito oficial B está correto e coincide com a análise feita.

💡 Dica: Identifique a prática que automatiza a geração de código a partir de descrições de classes.

Alternativa por alternativa

A Erradaerro: Conceituala que mais engana

O aluno associa generalização apenas ao uso de funções de ordem superior para percorrer atributos, sem perceber que o texto descreve a geração de código-fonte novo.

Por que engana: Confundir automação de código com manipulação manual ou uso de funções puras sem geração automática.

B Correta

Geração de código a partir de especificações caracteriza metaprogramação, pois algoritmos produzem outros algoritmos.

C Erradaerro: Conceitual

O aluno confunde metaprogramação com programação funcional, supondo que funções puras que transformam valores já generalizam a construção de programas.

D Erradaerro: Interpretação

O aluno interpreta a narrativa como descrição da solução e não percebe que a concatenação manual é justamente o método antigo que o projeto substituiu.

E Erradaerro: Conceitual

O aluno acredita que qualquer uso de registro dinâmico de tipos em tempo de execução seja metaprogramação, sem notar que o texto destaca a geração automática de código.

Raio-X da questão

Dificuldade Difícil
Bloom Aplicar
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 e automação de código

📌 Objetivo

avaliacao

🧱 Pré-requisitos

programação orientada a objetos · funções de ordem superior

📚 Reveja

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

⚠️ Erro mais comum

Confundir automação de código com manipulação manual ou uso de funções puras sem geração automática.

🌎 Tema transversal

ciencia_tecnologia

🤝 Socioemocional

pensamento_critico

🏫 Contexto

cientifico

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.