Atividades de Programação - Programação com listas e recursão para o 8º ano com gabarito
Reuni atividades de Programação com listas e recursão para o 8º ano, com gabarito comentado. Veja como trabalhar estruturas de dados, percursos e análise de listas em Computação.
Quando trabalho Programação com listas no 8º ano, procuro aproximar a ideia de estrutura de dados de situações em que é preciso guardar vários registros e depois consultar cada um. Uma lista de nomes, códigos ou leituras ajuda a turma a perceber por que uma variável isolada não resolve todo problema: o programa precisa manter uma coleção, percorrê-la e, quando necessário, atualizá-la.
Também gosto de separar o que as questões abordam diretamente do que pode ser uma continuação do tema. As atividades abaixo exploram principalmente listas, posições, percursos, organização e controle de registros. A recursão pode entrar como ampliação, comparando a repetição de uma tarefa com uma função que volta a chamar a si mesma até alcançar um caso de parada. Assim, consigo trabalhar o assunto com exemplos concretos sem atribuir às questões conceitos que elas não avaliam.
O que o aluno de 8º ano precisa saber sobre Programação - Programação com listas e recursão
Para resolver atividades de listas, o estudante precisa compreender que uma lista reúne vários dados em uma estrutura que o programa pode acessar e manipular. Ele deve reconhecer quando a quantidade de elementos pode mudar, como acontece com inscrições que entram e saem, e entender por que uma coleção dinâmica é mais adequada do que criar uma variável diferente para cada pessoa. Também precisa acompanhar percursos: visitar cada posição, testar uma condição e decidir se inclui, altera ou ignora o elemento. Em listas paralelas, é importante relacionar os valores que ocupam a mesma posição, como o código de um kit e seu estado de devolução. Ao analisar sequências, deve conferir índices, janelas e condições sem pular o primeiro ou o último caso. Para introduzir recursão, apresento a ideia de decompor uma tarefa em uma chamada menor do mesmo procedimento e identificar um caso de parada. O objetivo é justificar o funcionamento, não apenas decorar nomes de estruturas.
Nas questões desta seleção, a habilidade EF08CO02 aparece em situações de organização e análise de dados. As propostas passam de reconhecer a função de uma lista a aplicar percursos e condições em contextos com registros variáveis. Esse caminho permite observar se o aluno entende a estrutura e se consegue acompanhar o efeito de uma regra sobre os dados.
O que ele precisa saber antes
Antes dessas atividades, é útil verificar se a turma compreende o que é uma estrutura de dados e como elementos podem ser organizados em sequência. Também convém retomar conceitos básicos de programação, como variáveis, condições e repetição, porque várias questões dependem de percorrer os elementos e testar uma regra para cada um.
Para a questão dos sensores, os alunos precisam interpretar listas e índices e comparar valores de uma sequência numérica. Para a atividade dos kits, precisam entender a correspondência entre posições de duas listas. Na deduplicação de códigos, é importante saber controlar o fluxo do programa e verificar se um item já aparece na coleção. A noção de registro também ajuda: um registro pode reunir informações de um elemento, mas, sozinho, não representa uma coleção de muitos alunos ou objetos.
Se a turma ainda não estudou recursão, não é necessário dominá-la para responder às oito questões abaixo. Posso apresentar esse conceito como extensão: uma solução recursiva precisa ter uma condição de parada e reduzir o problema a uma versão menor. Comparar essa lógica com um percurso iterativo de lista ajuda a evitar que a palavra “recursão” vire apenas um termo decorado.
Onde os alunos mais erram
Um erro recorrente nas situações propostas é confundir uma quantidade total com os dados individuais. Saber quantos objetos existem não revela o prazo ou a situação de cada objeto; do mesmo modo, contar inscritos sem guardar seus nomes não permite enviar uma mensagem a cada pessoa. Para identificar esse raciocínio, peço que a turma diga quais informações o programa precisa consultar em cada elemento.
Outro ponto é tratar uma coleção variável como se tivesse tamanho fixo. Criar uma variável para cada cadastro pode funcionar em um exemplo pequeno, mas exige alterar o programa sempre que a quantidade muda. A lista, por sua vez, permite incluir ou retirar elementos e percorrer a coleção sem escrever um comando específico para cada pessoa. Também aparece o percurso parcial: guardar os nomes numa lista não basta se o algoritmo envia o aviso apenas ao último nome.
Nas questões que trabalham posições e sequências, alguns distratores representam erros de índice ou de condição. O aluno pode marcar o início da janela quando a regra pede o horário final, ou deixar de verificar a última janela possível. Pode ainda confundir crescimento estrito com valores iguais ou esquecer que o aumento mínimo deve ser comparado entre o primeiro e o terceiro valor da janela. Já na deduplicação, somar listas de voluntários ignora que um mesmo código pode aparecer mais de uma vez. Nas listas paralelas, o desafio é manter a associação entre código e estado na mesma posição.
Por fim, alguns alunos confundem lista com outras estruturas ou atribuem a ela funções que não são sua finalidade central. Uma pilha, uma árvore, um grafo e um registro têm organizações diferentes. Vale pedir que justifiquem a escolha pelo problema: reunir vários elementos em sequência, acessar e manipular os dados, ou representar relações mais específicas.
Como trabalhar em sala
- Comece com uma lista curta no quadro. Anote alguns nomes ou códigos e peça à turma que diga o que muda quando um elemento é acrescentado, removido ou atualizado. Depois, compare essa solução com a criação de uma variável separada para cada dado.
- Simule um percurso manual. Apresente uma lista de leituras ou de objetos e peça que os alunos examinem uma posição por vez, registrem a condição testada e indiquem a ação. Essa prática torna visível o papel da repetição e ajuda a conferir se nenhum elemento foi ignorado.
- Use duas listas paralelas com poucos itens. Escreva códigos de kits numa coluna e estados em outra, mantendo as posições alinhadas. Troque um estado e pergunte como o programa sabe a qual código ele pertence. Isso permite discutir organização e correspondência sem depender de computador.
- Investigue duplicatas e ordem. Faça uma sequência de códigos com algumas repetições. A turma pode construir uma nova lista, adicionando um código apenas quando ele ainda não estiver presente. Compare o resultado com a ordenação alfabética e observe por que ordenar pode apagar a ordem da primeira aparição.
- Amplie para recursão com um exemplo pequeno. Mostre uma tarefa que possa ser reduzida a uma versão menor, como contar elementos de uma lista: se não há elementos, a contagem termina; caso contrário, conta-se um elemento e continua-se com o restante. Compare a descrição com um laço e destaque o caso de parada, sem exigir código complexo.
Questões prontas de Programação - Programação com listas e recursão para o 8º ano (com gabarito comentado)
As questões a seguir trabalham reconhecimento, análise e aplicação de listas em diferentes situações. Em cada item, sugiro que os alunos expliquem por que a alternativa escolhida atende aos requisitos do enunciado. A justificativa ajuda a distinguir um acerto por compreensão de um palpite.
Questão 1 — Objetos esquecidos e prazos
Objetos esquecidos nas estações passam por triagem. O sistema registra protocolo, estação, dia de entrada e situação. Como a quantidade varia e há atualizações diárias, qual organização permite localizar os objetos que aguardam retirada há 30 dias ou mais?
- ❌ A) Uma lista com protocolo, dia de entrada e situação, percorrida para testar o prazo. Esta alternativa, na verdade, é a correta: reúne os dados necessários e permite verificar cada objeto. Atenção: o enunciado original identifica esta opção como correta.
- ❌ B) Uma sequência fixa de comandos por estação. Está errada porque a quantidade de objetos muda, então não é adequado prever um comando para cada caso.
- ❌ C) Uma variável com o total de objetos. Está errada porque o total não informa a data nem a situação de cada objeto.
- ❌ D) Uma lista de objetos já devolvidos. Está errada porque a busca deve encontrar os que ainda aguardam retirada.
- ❌ E) Uma lista apenas de protocolos. Está errada porque faltam os dados de prazo e situação.
Gabarito: A. A lista mantém os atributos necessários e pode ser percorrida para testar a condição de cada registro. A quantidade variável é um motivo central para preferir uma estrutura que possa ser atualizada.
Questão 2 — Cadastro e envio de alertas
Moradores se cadastram para receber avisos da Defesa Civil. Entram e saem pessoas, e, quando chega um alerta, o sistema deve enviar a mesma orientação a todas as cadastradas. Qual procedimento atende a essa necessidade?
- ❌ A) Usar um texto único e apagar o anterior a cada inscrição. Está errada porque a sobrescrita elimina os nomes já registrados.
- ❌ B) Usar uma lista, mas avisar somente o último nome. Está errada porque deixa de percorrer os demais cadastrados.
- ❌ C) Guardar apenas o total de inscritos. Está errada porque o número não identifica os destinatários.
- ❌ D) Criar uma variável para cada nome. Está errada porque cada inclusão exigiria alterar o programa e dificultaria o tratamento conjunto.
- ✅ E) Usar uma lista, atualizá-la nas inscrições e percorrê-la para enviar cada aviso. Correta: a lista acomoda a quantidade variável e o percurso alcança todos os nomes.
Gabarito: E. A solução combina armazenamento e automação. Vale perguntar aos alunos o que deve acontecer quando alguém deixa de participar: a lista também precisa ser atualizada para que o envio reflita os cadastros atuais.
Questão 3 — Leituras de sensores e janelas consecutivas
As horas são [8h, 10h, 12h, 14h, 16h, 18h, 20h]. As leituras da serra são [95, 100, 112, 118, 121, 140, 145] e as da ponte são [120, 128, 137, 142, 160, 165, 170]. Para cada janela de três leituras, os dois sensores devem crescer e ao menos um deve aumentar 15 ou mais entre o primeiro e o terceiro valor. O programa registra a hora final da janela. Quais horários entram em alertas?
- ❌ A) 12h, 16h e 18h. Está errada porque considera apenas janelas em que a ponte atinge o aumento mínimo e ignora a serra.
- ❌ B) 14h, 16h, 18h e 20h. Está errada porque deixa de considerar a primeira janela, que também atende às condições.
- ✅ C) 12h, 14h, 16h, 18h e 20h. Correta: em todas as janelas os dois sensores crescem e pelo menos um aumenta 15 ou mais entre os extremos.
- ❌ D) 12h, 14h, 16h e 18h. Está errada porque não inclui a última janela, terminada às 20h.
- ❌ E) 10h, 12h, 14h, 16h e 18h. Está errada porque registra o início da janela, mas a regra pede a hora final, em i+2.
Gabarito: C. Para resolver, os alunos podem listar as janelas: 8h–12h, 10h–14h, 12h–16h, 14h–18h e 16h–20h. Conferir cada intervalo ajuda a evitar erros de limite e de índice.
Questão 4 — Remover códigos repetidos sem alterar a ordem
Durante uma coleta, alguns sacos são escaneados mais de uma vez. O relatório precisa apresentar cada código uma única vez, manter a ordem da primeira aparição e informar o total de códigos distintos. Qual lógica atende aos três requisitos?
- ❌ A) Guardar uma lista por voluntário e somar os tamanhos. Está errada porque o mesmo código pode aparecer em listas diferentes e ser contado mais de uma vez.
- ✅ B) Verificar se o código já está na lista; se não estiver, adicioná-lo; ao final, usar o tamanho da lista. Correta: evita duplicatas, preserva a primeira ordem e permite contar os distintos.
- ❌ C) Adicionar todas as leituras e usar o tamanho. Está errada porque o total incluiria os escaneamentos repetidos.
- ❌ D) Remover o código antigo e inserir cada repetição no fim. Está errada porque altera a ordem da primeira aparição.
- ❌ E) Ordenar e remover apenas códigos iguais adjacentes. Está errada porque ordenar perde a ordem original e a proposta não preserva a primeira ocorrência.
Gabarito: B. O detalhe decisivo é verificar a presença antes de inserir. O tamanho final da lista representa o total distinto porque cada código só entra uma vez.
Questão 5 — Controle de kits devolvidos
Uma oficina registra oito kits em ordem fixa e marca cada um como “retornado” ou “pendente”. Qual organização permite mostrar, na ordem de registro, os kits que ainda não voltaram?
- ❌ A) Guardar apenas o total de kits devolvidos. Está errada porque a contagem não identifica quais códigos estão pendentes.
- ❌ B) Anotar cada kit em mensagens separadas. Está errada porque bilhetes soltos não formam uma estrutura fácil de percorrer automaticamente.
- ❌ C) Registrar tudo em um texto único e procurar palavras. Está errada porque dificulta manter os dados organizados e relacionar código e estado.
- ❌ D) Misturar código, nome e estado sem padrão. Está errada porque o programa não consegue comparar as informações com segurança.
- ✅ E) Organizar os códigos em uma lista e os estados em outra, comparando posições correspondentes. Correta: cada estado fica associado ao código da mesma posição.
Gabarito: E. São listas paralelas: a posição funciona como vínculo entre os dados. Se a ordem de uma lista mudar sem mudar a outra, a associação se perde, um ponto importante para discutir com a turma.
Questão 6 — Estrutura para alunos e notas
Qual estrutura de dados é mais adequada para representar uma lista de alunos e suas notas em um programa?
- ❌ A) Pilhas. Está errada porque a pilha organiza o acesso com prioridade ao último elemento inserido, o que não é o que a pergunta pede.
- ❌ B) Grafo. Está errada porque representa elementos ligados por relações, estrutura que não é necessária para essa coleção.
- ❌ C) Árvore. Está errada porque organiza elementos em níveis, e não como a lista solicitada.
- ❌ D) Registro. Está errada porque um registro reúne informações de um elemento, mas não representa sozinho vários alunos.
- ✅ E) Lista. Correta: permite reunir vários elementos em sequência. As informações de cada aluno podem ser relacionadas às respectivas notas.
Gabarito: E. A alternativa D é um distrator plausível porque um registro pode descrever um aluno e sua nota. O ponto é que a questão pede uma coleção de vários alunos, não apenas os campos de um único elemento.
Questão 7 — Função principal de uma lista
Em um programa que utiliza listas, qual é a função principal de armazenar dados?
- ❌ A) Organizar dados de forma visual. Está errada porque a lista é uma estrutura de dados; sua finalidade não é organizar visualmente a tela.
- ✅ B) Armazenar dados para acesso e manipulação. Correta: os elementos ficam disponíveis para serem consultados e alterados pelo programa.
- ❌ C) Facilitar a criação de gráficos. Está errada porque gráficos podem usar dados de uma lista, mas essa não é sua função principal.
- ❌ D) Armazenar apenas números inteiros. Está errada porque listas podem conter diferentes tipos de dados, conforme a linguagem e o uso.
- ❌ E) Otimizar funções matemáticas. Está errada porque essa não é a finalidade geral de uma lista.
Gabarito: B. A lista é um meio de guardar uma coleção para que o algoritmo possa trabalhar com seus elementos. Diferencie o uso dos dados de uma aplicação específica, como montar um gráfico.
Questão 8 — Listas em algoritmos
No contexto de algoritmos, para automatizar uma tarefa, qual é a principal função das listas?
- ❌ A) Facilitar a visualização do código. Está errada porque a lista organiza dados, não tem como função principal tornar o código visualmente mais simples.
- ❌ B) Agrupar dados de forma permanente. Está errada porque uma lista não garante permanência; os dados podem ser alterados e dependem de como o programa os mantém.
- ✅ C) Organizar e manipular dados com eficiência. Correta: essa é a função central de uma lista dentro de um algoritmo.
- ❌ D) Servir como banco de dados. Está errada porque uma lista não equivale, por si só, a um sistema completo de banco de dados.
- ❌ E) Definir regras para dados. Está errada porque a lista armazena elementos; as regras são definidas pela lógica do algoritmo.
Gabarito: C. A alternativa correta sintetiza o papel das listas: reunir dados e permitir operações sobre eles. É possível retomar essa ideia relacionando-a às questões de cadastro, sensores, códigos repetidos e kits.
Próximos passos
Depois de aplicar as atividades, posso usar as justificativas para decidir o que retomar: estrutura de dados, percurso, índices, condição ou associação entre listas. Para ampliar o trabalho sobre a habilidade, consulte também as questões da habilidade EF08CO02. Se quiser montar uma avaliação com outros itens e ajustar a seleção ao objetivo da aula, acesse o gerador de provas do GeraProva ou faça seu cadastro grátis.
As questões são um ponto de partida: adapte a aplicação ao ritmo e aos objetivos da sua turma. No GeraProva, você pode preparar novas provas e atividades para apoiar seu planejamento.
O GeraProva busca questões com gabarito comentado e BNCC no acervo e monta a prova pronta para imprimir.
Criar minha prova