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 recebo a EF08CO01 no planejamento do 8º ano, meu primeiro desafio é não transformar “recursão” em uma palavra distante, cheia de código que a turma apenas copia. Eu preciso transformar a habilidade em uma situação que faça sentido: pastas dentro de pastas, respostas encadeadas, caminhos em um mapa ou uma lista que precisa ser somada.
Na avaliação, também faço uma escolha importante: não cobro que o estudante decore uma sintaxe específica. Procuro observar se ele entende a lógica de dividir um problema, chamar novamente o mesmo procedimento e, sobretudo, definir quando essa repetição precisa parar.
O que a habilidade EF08CO01 pede, de verdade?
A EF08CO01 pede que o estudante do 8º ano construa soluções para problemas usando recursão e automatize essas soluções em uma linguagem de programação. Na prática, eu traduzo isso assim: a turma precisa reconhecer problemas que têm partes parecidas entre si — como explorar subpastas, somar valores de uma lista ou percorrer respostas dentro de respostas — e criar um procedimento que resolva uma parte e se repita para as demais. Mas não basta “chamar a função de novo”: o aluno precisa perceber o caso-base, isto é, a condição que encerra cada caminho, e garantir que cada chamada avance no problema em vez de voltar sempre ao mesmo ponto. Quando levo isso para a aula, alterno esquemas no caderno, pseudocódigo e testes de mesa antes de pedir uma implementação. Assim, a programação aparece como ferramenta para automatizar um raciocínio que eles já conseguem explicar.
“Construir soluções de problemas usando a técnica de recursão e automatizar tais soluções usando uma linguagem de programação.”
Esta habilidade pertence à unidade temática Pensamento Computacional, no objeto de conhecimento Programação, para o 8º ano de Computação. Para consultar o recorte completo e acessar mais itens, eu uso a consulta completa do código EF08CO01.
Como trabalhar EF08CO01 em sala?
- Pastas desenhadas no quadro: desenho uma pasta principal com arquivos e subpastas. Em duplas, os estudantes criam regras para contar todos os arquivos, inclusive os que estão em níveis mais profundos. Depois, trocamos as setas e a regra verbal por pseudocódigo.
- Teste de mesa com cartões: escrevo chamadas de função em cartões, como
total(Acervo)etotal(Reportagens). A turma organiza a sequência de chamadas e retornos. É uma forma simples de visualizar a “ida e volta” da recursão. - Caça ao caso-base: entrego pequenos algoritmos incompletos e peço que os grupos localizem o momento em que não há mais subpastas, posições da lista ou respostas. Antes de preencher código, eles justificam por que o algoritmo pararia ali.
- Mapas e ciclos: em um grafo simples desenhado no papel, proponho visitar locais sem repetir nenhum. A conversa leva naturalmente à necessidade de registrar os nós antes de explorar os vizinhos, especialmente quando há ciclos.
Se houver computador disponível, eu finalizo com pseudocódigo ou uma linguagem já usada pela turma. Se não houver, a atividade continua válida: o essencial é construir e explicar a solução automatizável, não depender de laboratório.
Como avaliar essa habilidade?
Uma boa questão de EF08CO01 precisa cobrar raciocínio recursivo, e não apenas leitura de comandos. Eu observo se o estudante identifica o caso-base, se a chamada recursiva recebe uma parte menor ou mais específica do problema e se os resultados retornados são acumulados corretamente. Situações com listas, árvores de pastas e grafos são especialmente adequadas porque exigem acompanhar a lógica.
Um erro comum é avaliar somente vocabulário, perguntando “o que é recursão?”. Outro é aceitar uma chamada recursiva que não progride, como chamar a função usando a mesma pasta indefinidamente. Também evito casos-base que encerram cedo e descartam dados: uma pasta pode ter arquivos e subpastas; uma lista pode chegar ao fim sem que seja válido acessar uma posição além dela.
Questões prontas de EF08CO01 (com gabarito comentado)
1. Visitação de estações de monitoramento em um mapa com ciclo
Pesquisadores precisam visitar as estações A, B, C e D de um rio sem repetir chamadas indefinidamente. A se liga a B e C; B e C se ligam a D; e D se liga novamente a B. Qual alteração conclui a varredura?
- ❌ A) Registrar cada estação somente após visitar todos os destinos. Isso mantém B sem registro quando D tenta visitá-la.
- ❌ B) Explorar só a primeira ligação. Isso deixa estações e ligações sem análise.
- ❌ C) Registrar sem verificar antes da chamada. Anotar não bloqueia visitas repetidas.
- ❌ D) Registrar apenas A. O ciclo entre B e D continua.
- ✅ E) Registrar cada estação antes de explorar ligações e visitar somente destinos sem registro. Assim, D reconhece B como já visitada.
2. Catalogação de arquivos em pastas e subpastas
No procedimento catalogar(pasta), os arquivos da pasta atual são exibidos antes de percorrer subpastas. Qual condição deve encerrar cada ramo?
- ❌ A) Parar após a primeira subpasta. As demais não seriam processadas.
- ❌ B) Parar apenas ao voltar à pasta inicial. O término deve ocorrer em cada ramo.
- ❌ C) Parar ao encontrar um arquivo. Uma pasta pode ter arquivos e subpastas.
- ❌ D) Parar antes de exibir os arquivos. Arquivos de pastas finais seriam perdidos.
- ✅ E) Parar quando a pasta atual não tiver subpastas. Os arquivos já foram exibidos e não há novas chamadas.
3. Soma recursiva das vendas de uma lista
Na função somar(vendas, posicao), iniciada em posição 0, qual preenchimento evita acesso inexistente e soma todos os valores?
- ❌ A) Quando posição for tamanho da lista, retornar
vendas[posicao]. Esse índice não existe. - ❌ B) Quando posição for o último índice, retornar 0. O último valor ficaria fora da soma.
- ❌ C) Quando posição for 0, retornar tamanho + 1. A função terminaria logo no início.
- ❌ D) Quando posição for tamanho, retornar 1. O total ganharia um valor indevido.
- ✅ E) Quando posição for tamanho da lista, retornar 0. As chamadas anteriores somam os valores acessados.
4. Soma de durações em subpastas de uma rádio
Na função somaDuracao(pasta), qual substituição deve ocupar a chamada feita quando um item é uma pasta?
- ❌ A)
somaDuracao(Raiz). Recomeça o acervo inteiro e causa contagem indevida. - ❌ B)
total = somaDuracao(item). Sobrescreve o acumulador já calculado. - ❌ C)
somaDuracao(pasta). Chama a mesma pasta e não avança. - ✅ D)
somaDuracao(item). Percorre a subpasta e adiciona seu retorno ao total. - ❌ E)
item.duracao. Pastas não têm duração direta; seus itens precisam ser percorridos.
5. Leitura de respostas encadeadas em uma conversa
Um procedimento registra uma mensagem e chama a si próprio para cada resposta ligada a ela. Qual regra evita chamadas desnecessárias sem perder mensagens profundas?
- ❌ A) Ignorar respostas das respostas. Isso corta níveis profundos.
- ❌ B) Voltar sempre à primeira mensagem. Isso reinicia leituras já feitas.
- ❌ C) Apagar respostas examinadas. Além de alterar dados, não define o caso-base.
- ✅ D) Sem respostas ligadas, concluir aquele caminho de leitura. A ausência de respostas é o caso-base.
- ❌ E) Ler cada resposta duas vezes. Isso duplica registros sem resolver a parada.
6. Contagem de arquivos em um acervo digital
Considerando uma pasta com qtd de arquivos diretos e uma lista sub de subpastas, qual definição calcula corretamente total(Acervo)=15?
- ❌ A) Somar 1 por subpasta. Pasta não deve ser contada como arquivo.
- ❌ B) Retornar 0 em pastas sem subpastas. Isso perde seus arquivos diretos.
- ❌ C) Somar apenas subpastas quando elas existem. Faltam os arquivos da pasta atual.
- ✅ D) Se não houver subpastas, retornar
p.qtd; caso contrário, retornarp.qtd + soma(total(s) para s em p.sub). A regra inclui todos os níveis. - ❌ E) Parar quando
p.qtd==0. Uma pasta vazia pode conter subpastas com arquivos.
Próximos passos
Eu começaria com uma das situações do cotidiano acima, pediria um teste de mesa e só depois levaria a turma ao código. Para montar uma avaliação com mais agilidade, há 25 questões alinhadas a esta habilidade no acervo: experimente o gerador de provas do GeraProva e faça seu cadastro grátis.
Use estas questões como ponto de partida e ajuste exemplos, linguagem e nível de apoio à realidade da sua turma. Recursão fica muito mais acessível quando o estudante consegue explicar o caminho antes de programá-lo.
O GeraProva busca questões com gabarito comentado e BNCC no acervo e monta a prova pronta para imprimir.
Criar minha prova