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

— Os relatos gravados pelos moradores estão distribuídos em muitas pastas — observou a responsável pelo acervo…

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

— Os relatos gravados pelos moradores estão distribuídos em muitas pastas — observou a responsável pelo acervo digital de um centro cultural. Algumas pastas guardam arquivos de áudio, enquanto outras contêm novas pastas, formando níveis diferentes de organização. Para reunir os nomes de todos os arquivos, foi criado o procedimento em uma linguagem de programação: def catalogar(pasta): exibir_arquivos(pasta) if CONDICAO: return for subpasta in pasta.subpastas: catalogar(subpasta) O procedimento deve mostrar os arquivos da pasta recebida e continuar a busca em cada pasta interna, sem deixar de registrar conteúdos que estejam em níveis mais profundos. Analise o procedimento e identifique a condição que representa o caso-base para encerrar cada ramo da busca sem impedir o registro dos arquivos.

  1. A) Definir o caso-base após visitar apenas a primeira subpasta.
  2. B) Definir o caso-base ao retornar somente à pasta inicial.
  3. C) Definir o caso-base quando a pasta atual tiver ao menos um arquivo.
  4. D) Definir o caso-base antes de exibir os arquivos da pasta atual.
  5. E) Definir o caso-base quando a pasta atual não tiver subpastas.

✅ Resposta correta: alternativa E

Resolução passo a passo

  1. Analisamos o procedimento catalogar(pasta). Primeiro ele chama exibir_arquivos(pasta), que mostra os arquivos da pasta atual. Depois testa a CONDICAO e, se ela for verdadeira, executa return e encerra aquele ramo. Caso contrário, percorre as subpastas e chama catalogar para cada uma.
  2. Para o procedimento cumprir o enunciado, a condição de parada precisa ocorrer somente quando não há mais nada a explorar abaixo da pasta atual. Isso acontece quando a pasta atual não tem subpastas, ou seja, quando pasta.subpastas está vazia. Nesse caso o laço for não tem o que percorrer e o ramo termina naturalmente, depois de os arquivos já terem sido exibidos.
  3. Assim, a CONDICAO correta é verificar se a pasta não possui subpastas (por exemplo, not pasta.subpastas ou len(pasta.subpastas) == 0). Com ela, a busca desce em todos os níveis e registra os arquivos de cada pasta antes de parar.
  4. Por que as outras estão erradas: A) parar após a primeira subpasta faria a busca ignorar as demais pastas do mesmo nível. B) retornar só à pasta inicial não define o término de cada ramo, pois a parada deve ocorrer em cada nível. C) a presença de arquivos não indica fim da busca, já que pastas com arquivos podem ter subpastas com mais conteúdo. D) parar antes de exibir os arquivos impediria o registro dos conteúdos da própria pasta.
  5. O gabarito oficial E está correto, e esta resolução coincide com ele.

💡 Dica: Identifique o caso-base que interrompe a recursão sem perder arquivos.

Alternativa por alternativa

A Erradaerro: Procedimental

Imagina que a recursão deve parar após a primeira subpasta, como se o laço for fosse interrompido logo na primeira iteração. Com isso, as demais subpastas do mesmo nível ficariam sem busca.

B Erradaerro: Conceitual

Confunde o retorno de uma chamada recursiva com o fim de toda a busca, achando que o caso-base só serve para voltar à pasta inicial. Não percebe que a parada precisa valer para cada ramo.

C Erradaerro: Conceitual

Associa o caso-base à existência de arquivos, achando que a busca deve parar quando a pasta tem conteúdo de áudio. Isso ignora que uma pasta com arquivos ainda pode conter subpastas com outros arquivos.

D Erradaerro: Procedimental

Coloca a verificação de parada antes do exibir_arquivos, pensando que o return apenas impede o processamento da pasta. Com isso, os arquivos da pasta atual deixam de ser registrados.

E Correta

A ausência de subpastas impede novas chamadas. Como os arquivos já foram exibidos, a condição encerra corretamente aquele ramo da busca.

Raio-X da questão

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

recursao e caso-base

📌 Objetivo

diagnostico

🧱 Pré-requisitos

conceito de funcao recursiva · estrutura de dados em arvore

📚 Reveja

Estude recursao e identificacao de caso-base em funcoes.

⚠️ Erro mais comum

Confundir o caso-base, interrompendo a busca prematuramente ou nao encerrando a recursao.

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