GeraProva GeraProva Provas com IA para professores do Brasil
Computação8º anoBNCC EF08CO01Difícil⏱ medio

— Achou a gravação de 1998? — perguntou a técnica da rádio comunitária, enquanto organizava o acervo no…

Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva

Habilidade BNCC EF08CO01

Construir soluções de problemas usando a técnica de recursão e automatizar tais soluções usando uma linguagem de programação.

Fonte: Base Nacional Comum Curricular (MEC).

Questão

— Achou a gravação de 1998? — perguntou a técnica da rádio comunitária, enquanto organizava o acervo no computador. O estagiário explicou que os áudios estão guardados em pastas e subpastas: na pasta “Raiz” há o arquivo “abertura.mp3” (3 min) e a pasta “Entrevistas”, que contém o arquivo “saude.wav” (5 min) e a pasta “Festas”, com “junina.mp3” (2 min) e “aniversario.mp3” (4 min). Ele tentou somar as durações com um laço, mas percebeu que só funcionava no primeiro nível e esquecia os arquivos que estavam mais “fundos”. Para automatizar a soma em qualquer profundidade, ele escreveu a função abaixo, mas deixou uma lacuna: func somaDuracao(pasta): total = 0 para cada item em pasta: se item é arquivo: total = total + item.duracao se item é pasta: total = total + ??? retorna total Analise a função do texto e identifique a substituição de ??? que permite somar a duração total dos áudios, mesmo quando há subpastas dentro de subpastas.

  1. A) somaDuracao(Raiz)
  2. B) total = somaDuracao(item)
  3. C) somaDuracao(pasta)
  4. D) somaDuracao(item)
  5. E) item.duracao

✅ Resposta correta: alternativa D

Resolução passo a passo

  1. A função percorre os itens de uma pasta. Se o item é arquivo, soma sua duração diretamente. Se o item é pasta, a duração total dessa subpasta ainda não é conhecida, pois ela contém outros arquivos e pastas, possivelmente em vários níveis. Passo 2: A solução é usar a própria função para calcular o total da subpasta. Isso é recursão: a função se chama com um dado menor (a subpasta), e a cada nível a soma fica mais profunda, até chegar a pastas que contêm somente arquivos. Passo 3: Portanto, a substituição correta é somaDuracao(item), alternativa D. Ela recebe a subpasta atual (item) e devolve a soma de todos os áudios dentro dela, em qualquer profundidade, que é somada ao total. Passo 4: Verificando com o exemplo: somaDuracao(Raiz) soma abertura.mp3 (3) e, ao chegar em Entrevistas, chama somaDuracao(Entrevistas), que soma saude.wav (5) e chama somaDuracao(Festas), obtendo 2 + 4 = 6. O total é 3 + 5 + 6 = 14 minutos. Passo 5: Por que as outras estão erradas: A) somaDuracao(Raiz) chama a função sobre a pasta raiz, o que reinicia o cálculo do início e gera recursão infinita. B) total = somaDuracao(item) é uma atribuição, não uma expressão que devolve valor para somar, e sobrescreveria o total acumulado. C) somaDuracao(pasta) repete a chamada sobre a mesma pasta, gerando recursão infinita sem descer nos níveis. E) item.duracao só serve para arquivos; pastas não têm duração própria a ser somada, então isso ignora as subpastas.

💡 Dica: Entenda a recursividade para somar durações em subpastas.

Alternativa por alternativa

A Erradaerro: Conceitual

Acredita que basta chamar a função novamente sobre a pasta raiz para acumular os valores das subpastas. Não percebe que isso reinicia o cálculo sobre o mesmo ponto e não desce para o item atual.

B Erradaerro: Procedimentala que mais engana

Entende que a chamada recursiva deve ser atribuída a total, sem perceber que isso substitui o acumulado em vez de somá-lo ao total. A soma com o valor anterior se perde.

Por que engana: Confundir chamada recursiva com soma direta, não aplicando recursão para subpastas.

C Erradaerro: Conceitual

Acredita que chamar a função com a própria pasta atual resolve o problema. Isso faz a função processar a mesma pasta indefinidamente, sem avançar para as subpastas.

D Correta

Chama a própria função para a subpasta e acumula o retorno, percorrendo todos os níveis (recursão com redução do problema).

E Erradaerro: Conceitual

Supõe que item.duracao funciona para qualquer item, inclusive pastas, e não percebe que a pasta não possui uma duração já calculada. Assim, as subpastas e seus arquivos são ignorados.

Raio-X da questão

Dificuldade Difícil
Bloom Analisar
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

recursividade em funções

📌 Objetivo

avaliacao

🧱 Pré-requisitos

funções e estruturas de dados · controle de fluxo e laços

📚 Reveja

Estude funções recursivas e estruturas de dados em árvore.

⚠️ Erro mais comum

Confundir chamada recursiva com soma direta, não aplicando recursão para subpastas.

🌎 Tema transversal

ciencia_tecnologia

🤝 Socioemocional

pensamento_critico

🏫 Contexto

cotidiano

Questões parecidas com resolução

Todas as questões de Programação - Programação com listas e recursão

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