Cerca de 300 sacos de lixo foram recolhidos em um mutirão de limpeza na orla. Para registrar a coleta, cada…
Publicado por Alexandre Lombardi dos Santos, fundador do GeraProva
Criar soluções de problemas para os quais seja adequado o uso de listas para descrever suas informações e automatizá-las usando uma linguagem de programação, empregando ou não a recursão como uma técnica de resolver o problema.
Fonte: Base Nacional Comum Curricular (MEC).Questão
Cerca de 300 sacos de lixo foram recolhidos em um mutirão de limpeza na orla. Para registrar a coleta, cada saco recebeu um adesivo com um código curto (como “B17”, “C04”). Voluntários usaram um aplicativo simples que funciona offline e salva os códigos lidos ao longo do dia. Na pressa, alguns sacos foram escaneados duas vezes por pessoas diferentes. No fim, a coordenação precisa gerar um relatório com (1) a lista de códigos de sacos recolhidos sem repetição e (2) o total de sacos distintos. Além disso, a lista deve manter a ordem da primeira vez em que cada código apareceu, porque essa ordem ajuda a revisar o trajeto feito na coleta. O grupo decidiu resolver isso com uma lista e um pequeno programa. Com base no texto, identifique a lógica de programa que melhor atende ao relatório: evitar duplicidades, manter a ordem do primeiro registro e calcular o total de sacos distintos.
- A) Guardar uma lista por voluntário e, no final, somar os tamanhos das listas para obter o total distinto.
- B) Verificar se o código já está na lista; se não estiver, adicionar; ao final, usar o tamanho da lista.
- C) Adicionar todo código lido na lista e usar o tamanho da lista como total ao final.
- D) Adicionar o código e, se ele repetir, remover a ocorrência antiga e inserir o código no fim da lista.
- E) Ordenar a lista ao final e imprimir apenas os códigos que forem diferentes do item imediatamente anterior.
✅ Resposta correta: alternativa B
Resolução passo a passo
- O relatório exige três coisas: não repetir códigos, manter a ordem da primeira aparição e informar quantos sacos distintos foram recolhidos. Passo 2: A alternativa B resolve as três. Para cada código lido, verifica-se se ele já está na lista. Se não estiver, ele é adicionado ao fim, o que preserva a ordem do primeiro registro. Ao final, o tamanho da lista é exatamente o total de sacos distintos. Passo 3: A alternativa A está errada porque cada voluntário tem sua própria lista, e o mesmo saco pode aparecer em listas de pessoas diferentes; somar os tamanhos contaria essas repetições mais de uma vez. Passo 4: A alternativa C está errada porque adiciona todas as leituras, inclusive as duplicadas, e o tamanho final contaria sacos repetidos. Passo 5: A alternativa D está errada porque, ao remover a ocorrência antiga e inserir o código no fim, o código passa a ter a posição da segunda leitura, quebrando a ordem da primeira aparição exigida pela coordenação. Passo 6: A alternativa E está errada porque ordenar a lista destrói a ordem do trajeto, e comparar apenas com o item imediatamente anterior não detecta repetições que não sejam consecutivas. Passo 7: Conclusão: a lógica correta é a de verificar a presença antes de adicionar, mantendo a lista na ordem de chegada e usando seu tamanho como total de sacos distintos. O gabarito oficial B está correto.
💡 Dica: Pense em como evitar duplicatas e manter a ordem ao adicionar códigos na lista.
Alternativa por alternativa
Acredita que separar as leituras por voluntário e somar os tamanhos das listas resolve o problema, sem perceber que o mesmo saco pode ter sido escaneado por pessoas diferentes. Assim, a duplicidade entre listas não é eliminada.
Por que engana: O aluno pode pensar que somar listas de voluntários dá o total correto, ignorando duplicatas.
Garante um registro por código (sem repetição), preserva a ordem da primeira aparição e calcula o total por tamanho.
Interpreta que o relatório só precisa contar as leituras, ignorando que o enunciado diz que alguns sacos foram escaneados duas vezes e que a lista deve conter códigos sem repetição.
Entende que a remoção da ocorrência antiga e a reinserção no fim mantêm a ordem, mas isso faz o código assumir a posição da última leitura, e não a da primeira aparição exigida.
Imagina que ordenar a lista e comparar cada código apenas com o anterior elimina todas as duplicatas, esquecendo que a ordenação destrói a ordem do trajeto e que repetições não consecutivas passariam despercebidas.
Raio-X da questão
listas, duplicidade, ordem, contagem
avaliacao
estruturas de dados básicas · controle de fluxo
Estude estruturas de dados para evitar duplicatas e manter ordem de inserção.
O aluno pode pensar que somar listas de voluntários dá o total correto, ignorando duplicatas.
pensamento_critico
cotidiano
Questões parecidas com resolução
- Ao fim de cada tarde, uma oficina de robótica comunitária registra o uso de oito kits de ferramentas. Para organizar a…
- Na tenda de um ecoponto montado na praça, voluntários registram as doações de recicláveis para a cooperativa. O registro…
- Na feira de ciências do bairro, um grupo de estudantes montou um ponto de coleta de pilhas usadas. Ao final de cada dia…
- "Tem livro que aparece como emprestado duas vezes e ninguem sabe com quem esta", reclamou uma voluntaria do Ponto de…
- — Moça, já deu para encher o caminhão? — pergunta um catador, enquanto descarrega sacos na cooperativa. Na triagem, cada…
- Em uma atividade de Computação, uma turma está desenvolvendo um aplicativo para acompanhar a coleta seletiva no bairro…
Todas as questões de Programação - Programação com listas e recursão
🔎 Procurar outra questão
Procure no banco do GeraProva pelo tema ou por um trecho do enunciado. Cada questão já vem com resolução comentada e a análise de cada alternativa.
Professor: monte a prova com questões como esta, com gabarito e folha de respostas, em 30 segundos. Ver planos · Blog
