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

Analise um algoritmo decomposto em muitas funções pequenas: como essa decomposição pode impactar o desempenho…

Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva

Habilidade BNCC EM13CO03

Identificar o comportamento dos algoritmos no que diz respeito ao consumo de recursos como tempo de execução, espaço de memória e energia, entre outros.

Fonte: Base Nacional Comum Curricular (MEC).

Questão

Analise um algoritmo decomposto em muitas funções pequenas: como essa decomposição pode impactar o desempenho em termos de tempo de execução e uso de memória?

  1. A) Separar funções pequenas automática e instantaneamente melhora o desempenho do algoritmo sem custo.
  2. B) Uma única função grande é sempre mais eficiente em termos de uso de memória e tempo de execução.
  3. C) Pode aumentar overhead de chamadas e uso de pilha, elevando tempo de execução e memória temporária; porém melhora legibilidade e possibilita otimizações locais.
  4. D) Decompor funções pequenas elimina qualquer possibilidade de overhead na execução do algoritmo.
  5. E) Todas as funções pequenas resultarão em maior uso de memória, mesmo em sistemas modernos com alto desempenho.

✅ Resposta correta: alternativa C

Resolução passo a passo

  1. Resolvi a questão antes de olhar o gabarito. O enunciado pergunta como a decomposição de um algoritmo em muitas funções pequenas pode afetar o tempo de execução e o uso de memória. Cada chamada de função tem um custo: o programa precisa empilhar um registro de ativação (endereço de retorno, parâmetros, variáveis locais), desviar o fluxo de execução e depois retornar. Isso é o overhead de chamadas e gera uso de pilha. Passo 2: Por outro lado, a decomposição traz benefícios: o código fica mais legível, mais fácil de testar e de manter, e permite otimizações locais, como reescrever ou acelerar apenas uma função específica. Por isso a alternativa C descreve corretamente o trade-off: aumento possível de overhead e de memória temporária, compensado por legibilidade e otimizações locais. Passo 3: Por que as outras estão erradas. A: separar funções não melhora o desempenho automaticamente nem sem custo, pois cada chamada tem algum custo. B: uma função grande não é sempre mais eficiente, já que pode ser menos legível e menos otimizável, e o compilador pode até alinhar funções pequenas (inlining), eliminando o overhead. D: a decomposição não elimina overhead, apenas pode reduzi-lo com otimizações do compilador. E: é exagero dizer que todas as funções pequenas aumentam o uso de memória, pois compiladores modernos fazem inlining e o impacto costuma ser pequeno. Passo 4: Conclusão: a alternativa correta é a C, de acordo com o gabarito oficial.

💡 Dica: Considere os prós e contras da decomposição de funções.

Alternativa por alternativa

A Erradaerro: Conceituala que mais engana

Acredita que dividir o código em funções pequenas é uma otimização automática que melhora o desempenho sem nenhum custo, ignorando o custo real das chamadas.

Por que engana: Confundir a ideia de que funções pequenas sempre melhoram o desempenho, sem considerar o overhead que pode ser introduzido pelas chamadas de função.

B Erradaerro: Conceitual

Supõe que menos chamadas de função sempre significam mais eficiência, sem considerar que funções grandes podem ser menos legíveis, mais difíceis de otimizar e não garantem menor uso de memória.

C Correta

Cada chamada de função implica empilhar parâmetros/retorno e overhead do ambiente de execução; em sistemas restritos isso pode degradar desempenho, embora a modularização favoreça manutenção e profiling.

D Erradaerro: Senso comum

Interpreta que a decomposição é uma solução absoluta que elimina qualquer custo, esquecendo que chamadas de função sempre envolvem empilhamento e desvio de fluxo, ainda que possam ser reduzidas pelo compilador.

E Erradaerro: Interpretação

Generaliza que qualquer função pequena sempre aumenta o uso de memória, sem considerar que compiladores modernos podem fazer inlining e que o impacto costuma ser desprezível em sistemas atuais.

Raio-X da questão

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

decomposição de algoritmos

📌 Objetivo

diagnostico

🧱 Pré-requisitos

decomposição de algoritmos · análise de desempenho

📚 Reveja

Revisar os conceitos de algoritmos e suas funções.

⚠️ Erro mais comum

Confundir a ideia de que funções pequenas sempre melhoram o desempenho, sem considerar o overhead que pode ser introduzido pelas chamadas de função.

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