GeraProva GeraProva Provas com IA para professores do Brasil
BNCC

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.

Atividades sobre Programação com gabarito — 8º ano (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.

Monte uma prova com questões como estas

O GeraProva busca questões com gabarito comentado e BNCC no acervo e monta a prova pronta para imprimir.

Criar minha prova

Habilidades BNCC deste artigo

Questões deste artigo com resolução completa

  1. — Achou a gravação de 1998? — perguntou a técnica da rádio comunitária, enquanto organizava o acervo no…
  2. Qual técnica pode ser utilizada para resolver problemas onde a mesma solução pode ser aplicada repetidamente…
  3. Quando utilizar recursão ao invés de iteração em um algoritmo?
  4. Para resolver um problema usando recursão, qual é o principal requisito da função recursiva?
  5. O que acontece quando uma função recursiva não possui uma condição de parada?
  6. Identifique qual das opções a seguir é uma ferramenta computacional que pode ser utilizada para criar…

Fontes

Artigos relacionados

0 comentários

Nome
E-mail (não é publicado)
Comentário
Questões resolvidas Resolução passo a passo, gabarito e o erro de cada alternativa315.741 questões
Ver todas as questões →
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.