GeraProva GeraProva Provas com IA para professores do Brasil
Questoes

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.

Atividades de Programação - Programação com listas e recursão para o 8º ano com gabarito

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.

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

Artigos relacionados

0 comentários

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.