Atividades sobre Programação com gabarito — 8º ano (EF08CO01)
Atividades de Programação para o 8º ano com questões comentadas sobre recursão, caso-base e automação de soluções. Use as propostas para planejar aulas e avaliações alinhadas à EF08CO01.
Quando recebi no planejamento o código EF08CO01, minha primeira reação foi pensar: como eu explico recursão para uma turma de 8º ano sem transformar a aula em uma aula de matemática abstrata? Sei que muitos colegas passam pela mesma dúvida. O código aparece na grade, o texto oficial é técnico, e cabe ao professor descobrir como isso vira uma atividade real, com gabarito, que a turma consiga resolver.
Neste post eu organizo o que aprendi trabalhando essa habilidade, mostro ideias práticas e deixo seis questões com gabarito comentado. Se você quer ir direto para a parte de prova, também pode ir à consulta completa do código EF08CO01, onde estão todas as questões do acervo.
O que a habilidade EF08CO01 pede, de verdade?
O texto oficial diz:
Construir soluções de problemas usando a técnica de recursão e automatizar tais soluções usando uma linguagem de programação.
Em linguagem de sala de aula, isso significa que o aluno precisa aprender a resolver um problema grande quebrando-o em partes menores iguais ao original, e a escrever uma função que chama a si mesma para resolver essas partes, até chegar a um caso simples que encerra as chamadas. O objeto de conhecimento é a programação com listas e recursão, ou seja, o aluno não aprende recursão solta: ele aplica a ideia em estruturas que organizam dados, como pastas, listas de nomes ou sequências de valores. A habilidade cobra duas coisas ao mesmo tempo: pensar a solução (decompor o problema) e codificá-la (automatizar em uma linguagem de programação). Uma questão boa precisa exigir as duas.
Como trabalhar EF08CO01 em sala?
Estas são ideias que testei ou que funcionam bem sem material caro:
- Teatro da pilha de chamadas. Escolha três alunos para formar uma fila de chamadas. Cada um recebe um papel ("eu calculo o fatorial de n") e precisa chamar o colega seguinte até alguém dizer "o caso base é 1". Depois todos voltam resolvendo. A turma enxerga a volta da recursão.
- Pastas de papel. Desenhe no quadro uma árvore de pastas com subpastas e arquivos com duração ou tamanho. Peça para somar tudo. Quando o aluno percebe que precisa repetir a mesma operação em cada subpasta, ele já está pensando recursivamente.
- Lista de contatos do celular. Use a lista de contatos de um aplicativo (com dados fictícios, para não expor ninguém) e pergunte como contar quantos contatos começam com determinada letra, sem usar laço de repetição. Isso conecta listas com recursão de forma natural.
- Comparar duas versões. Peça para resolverem o mesmo problema com laço e com recursão, e discutam qual lê melhor e qual gasta mais chamadas. Isso desmonta a ideia de que recursão é sempre a resposta certa.
Como avaliar essa habilidade?
Uma boa questão desse código precisa cobrar que o aluno identifique o caso base, reconheça a parte que se repete e entenda o que acontece quando a condição de parada não existe. Questões que só pedem a definição de recursão decoradas não medem a habilidade. Também evite questões que pedem apenas a escolha de uma palavra-chave, porque o aluno acerta por chute.
Erros comuns que eu mesmo já cometi: esquecer o caso base (e perder o aluno no erro de stack overflow), pedir recursão em problemas em que o laço seria mais simples sem explicar por quê, e colocar alternativas absurdas que ninguém escolheria. Vale revisar cada alternativa perguntando: um aluno que entendeu a ideia erraria por qual motivo?
Questões prontas de EF08CO01 (com gabarito comentado)
Questão 1: a soma das durações em pastas aninhadas
— 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.
- ❌ A) somaDuracao(Raiz) — Fixa a chamada na pasta inicial: repete a soma do acervo inteiro a cada subpasta, causando contagem indevida e alto custo.
- ❌ B) total = somaDuracao(item) — Sobrescreve o acumulador: troca o total já somado pelo valor da subpasta atual, perdendo durações de arquivos e de outras pastas.
- ❌ C) somaDuracao(pasta) — Erro de parâmetro: chama com a mesma pasta e não avança na estrutura, podendo gerar repetição infinita (recursão sem progresso).
- ✅ D) somaDuracao(item) — 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) item.duracao — Confunde pasta com arquivo: subpastas não têm duração direta; sem percorrer seus itens, os áudios internos não entram na soma.
Conceito central: recursividade em funções. Dica de resolução: entenda a recursividade para somar durações em subpastas.
Questão 2: a técnica para repetir a solução
Qual técnica pode ser utilizada para resolver problemas onde a mesma solução pode ser aplicada repetidamente, como calcular fatorial?
- ❌ A) Variável — Uma variável guarda um valor que pode ser usado ou alterado. Ela não faz chamadas repetidas para resolver partes menores do problema.
- ❌ B) Sequência — Uma sequência organiza instruções para serem executadas uma após a outra, mas não repete a solução chamando a si mesma.
- ❌ C) Condicional — Uma condicional escolhe entre caminhos de acordo com uma condição. Sozinha, ela não repete a solução.
- ❌ D) Array — Um array guarda vários valores em uma estrutura. Ele não é uma técnica para repetir a solução de um problema.
- ✅ E) Recursão — Na recursão, uma função chama a si mesma para resolver partes menores do problema, até chegar a um caso simples que encerra as chamadas.
Conceito central: recursão em algoritmos. Dica de resolução: identifique a técnica que permite uma função chamar a si mesma para repetir etapas.
Questão 3: quando preferir recursão à iteração
Quando utilizar recursão ao invés de iteração em um algoritmo?
- ❌ A) Quando o problema é simples — Problemas simples podem ser resolvidos de forma iterativa mais facilmente.
- ❌ B) Quando há muitos dados — A quantidade de dados não determina o uso de recursão.
- ✅ C) Quando o problema pode ser dividido — Recursão é útil para problemas que se podem dividir em subproblemas.
- ❌ D) Quando a performance é prioridade — Recursão pode ser mais lenta devido a chamadas de função adicionais.
- ❌ E) Quando não se usa listas — A utilização de listas não está relacionada à escolha entre recursão e iteração.
Conceito central: recursão e iteração. Dica de resolução: considere as vantagens e desvantagens de cada abordagem.
Questão 4: o requisito principal da função recursiva
Para resolver um problema usando recursão, qual é o principal requisito da função recursiva?
- ❌ A) Variáveis globais — Variáveis globais não são um requisito para a recursão.
- ❌ B) Iteração — Recursão e iteração são diferentes; recursão não depende de iteração.
- ✅ C) Condição base — Uma condição base é essencial para que a função recursiva termine.
- ❌ D) Complexidade alta — A complexidade não é um requisito, mas pode ser uma consideração.
- ❌ E) Limite de chamadas — Limitar chamadas não é um requisito, mas pode ser uma prática de segurança.
Conceito central: função recursiva. Dica de resolução: identifique o requisito fundamental da recursão.
Questão 5: o que acontece sem condição de parada
O que acontece quando uma função recursiva não possui uma condição de parada?
- ❌ A) A função executa normalmente e retorna um valor. — Sem uma condição de parada, a função não pode retornar um valor e entrará em loop.
- ❌ B) A função vai executar apenas uma vez. — A função irá chamar a si mesma indefinidamente.
- ✅ C) A função gera um erro de stack overflow. — Sem uma condição de parada, a função continuará chamando a si mesma até esgotar a pilha de chamadas.
- ❌ D) A função não tem efeito e termina imediatamente. — Na verdade, a função continuará a chamar a si mesma e não terminará.
- ❌ E) A função retorna o valor padrão 0. — Isso não acontece, pois a função não termina e não retorna nenhum valor.
Conceito central: função recursiva. Dica de resolução: pense sobre o conceito de recursão e suas implicações.
Questão 6: ferramentas para apresentações digitais
Identifique qual das opções a seguir é uma ferramenta computacional que pode ser utilizada para criar apresentações digitais.
- ❌ A) Microsoft Word — Embora útil para textos, não é específica para apresentações.
- ❌ B) Adobe Photoshop — É uma ferramenta de edição de imagens, não para apresentações.
- ✅ C) Google Slides — Permite criar e compartilhar apresentações na web.
- ❌ D) Excel — É uma ferramenta de planilhas, não de apresentações.
- ❌ E) Notepad — É um editor de texto simples, não serve para apresentações.
Conceito central: ferramentas de apresentação digital. Dica de resolução: identifique qual ferramenta foi desenvolvida especificamente para criar apresentações digitais.
Próximos passos
Se você está montando a avaliação do bimestre, comece pelo caso base e pela decomposição do problema, depois avance para a codificação. Use as questões acima como ponto de partida e depois adapte para a realidade da sua turma. Para ver todas as questões alinhadas ao código, acesse a consulta completa do código EF08CO01. Se quiser gerar uma prova inteira com o seu nível de turma, use o gerador de provas do GeraProva, e se ainda não tem conta, o cadastro grátis leva menos de dois minutos.
Estas questões servem como referência e não substituem a sua avaliação do que sua turma já aprendeu. Ajuste o nível, o contexto e a linguagem como achar melhor. Se quiser economizar tempo, o GeraProva pode montar uma primeira versão para você revisar.
Encontrou um erro neste conteúdo? Veja nossa política editorial e avise a gente.
O GeraProva busca questões com gabarito comentado e BNCC no acervo e monta a prova pronta para imprimir.
Habilidades BNCC deste artigo
Questões deste artigo com resolução completa
- — Achou a gravação de 1998? — perguntou a técnica da rádio comunitária, enquanto organizava o acervo no…
- Qual técnica pode ser utilizada para resolver problemas onde a mesma solução pode ser aplicada repetidamente…
- Quando utilizar recursão ao invés de iteração em um algoritmo?
- Para resolver um problema usando recursão, qual é o principal requisito da função recursiva?
- O que acontece quando uma função recursiva não possui uma condição de parada?
- Identifique qual das opções a seguir é uma ferramenta computacional que pode ser utilizada para criar…
Fontes
- Base Nacional Comum Curricular (BNCC), Ministério da Educação: basenacionalcomum.mec.gov.br
- Questões do acervo GeraProva sobre Programação - Programação com listas e recursão, com resolução comentada e análise de cada alternativa.
