GeraProva GeraProva Provas com IA para professores do Brasil
BNCC

Atividades sobre Programação com gabarito — 8º ano (EF08CO02)

Atividades de Programação para o 8º ano, com foco em listas, estruturas de dados e automação de soluções. Confira questões alinhadas à EF08CO02, com gabarito comentado para usar na aula ou avaliação.

Atividades sobre Programação com gabarito — 8º ano (EF08CO02)

Quando o código EF08CO02 aparece no meu planejamento, a primeira sensação é de que a habilidade é bonita no papel, mas difícil de virar aula de verdade. Eu já passei por isso: li o texto oficial, pensei em algo abstrato demais e, na hora de montar a avaliação, fiquei sem saber o que cobrar. Este texto é o que eu gostaria de ter encontrado antes.

Vou mostrar como eu traduzo essa habilidade para a sala, quais ideias funcionam sem material caro e como montar questões que realmente medem aprendizagem. No final, você encontra seis questões prontas com gabarito comentado. Se quiser ir além, também pode consultar a consulta completa do código EF08CO02, com todas as questões alinhadas.

O que a habilidade EF08CO02 pede, de verdade?

A habilidade trata de resolver problemas usando listas para organizar informações e automatizar tarefas com uma linguagem de programação. O texto oficial diz:

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.

Na prática, o aluno precisa entender quando uma lista é a estrutura certa, saber guardar vários valores de uma vez, percorrê-los e aplicar uma regra a cada elemento. A recursão aparece como uma forma alternativa de resolver o mesmo problema, quando uma função chama a si mesma até atingir um caso simples. O foco não é decorar sintaxe, e sim pensar a solução antes de digitar o código.

Essa é a parte que mais exige do professor: tirar o aluno da lógica de "uma variável por dado" e fazê-lo perceber que um conjunto de informações pede uma estrutura própria. Quando ele entende isso, a automação deixa de ser mágica e passa a ser consequência natural do raciocínio.

Como trabalhar EF08CO02 em sala?

Estas são as ideias que eu mais uso, todas com o que já existe na escola: papel, lápis, quadro e, se houver, computadores.

  • Algoritmo no papel antes do computador. Peça que os alunos escrevam, em passos numerados, como organizar a lista de notas da turma e calcular a média. Só depois eles testam em uma linguagem.
  • Situações do cotidiano escolar. A lista de chamada, o cardápio da cantina ou os livros da biblioteca são ótimos pontos de partida para perguntar: "o que muda se um novo item entra?"
  • Simulação com cartões. Cada aluno vira um elemento da lista e a turma percorre a fila, aplicando uma regra simples, como separar quem ainda não entregou o trabalho.
  • Recursão com dominó de passos. Mostre que, para contar os alunos de uma fila, basta contar o primeiro e pedir ao restante que faça o mesmo. Essa imagem costuma destravar a ideia de caso base.

Como avaliar essa habilidade?

Uma boa questão desse código precisa cobrar três coisas: a escolha da estrutura adequada, a lógica de percorrer e transformar os dados e a capacidade de justificar a solução. Questões que só pedem definição de "lista" ou "vetor" medem memória, não a habilidade.

Os erros mais comuns que vejo em provas são: avaliar apenas sintaxe, ignorar o contexto do problema, pedir recursão sem ter trabalhado o caso base e criar alternativas absurdas que o aluno descarta sem pensar. Prefira enunciados com uma situação real, em que a escolha da estrutura faça diferença, e alternativas plausíveis, que exijam raciocínio para eliminar.

Questões prontas de EF08CO02 (com gabarito comentado)

As questões abaixo são reais e validadas do acervo do GeraProva. Em cada uma, a alternativa correta está marcada com ✅ e as erradas com ❌, com a explicação do motivo.

Questão 1: estrutura para múltiplos telefones

Em um algoritmo que registra múltiplos telefones por aluno, qual estrutura de dado (variável) é mais adequada para armazenar esse conjunto de números e permitir inserções e iterações eficientes?

  • ❌ A) Registro com campos fixos para cada telefone — Registros fixos não suportam uma quantidade variável de telefones.
  • ✅ B) Lista (array dinâmico) de valores (strings) — uma lista de telefones por aluno. Listas e arrays dinâmicos permitem armazenar quantidade variável de elementos por aluno, suportam inserções e iteração eficiente e são mais flexíveis que campos fixos.
  • ❌ C) Dicionário (mapa) onde as chaves são os telefones — Dicionários não são adequados para armazenar listas de valores.
  • ❌ D) Lista estática com tamanho fixo de 10 — Tamanho fixo não permite armazenar mais de 10 telefones por aluno.
  • ❌ E) Estrutura de conjunto (set) para armazenar números — Conjuntos não permitem múltiplas ocorrências do mesmo número.

Dica de resolução: considere as características das estruturas de dados em programação.

Questão 2: índice linear de uma matriz

Em um algoritmo que armazena uma matriz de registros 'tab' em um vetor linear em row-major com n colunas, qual fórmula calcula o índice linear do elemento tab[i][j]?

  • ❌ A) Índice linear = j * n + i — Essa fórmula inverte a ordem, ignorando que as linhas vêm primeiro.
  • ❌ B) Índice linear = i - j — Subtrair em vez de somar não calcula a posição corretamente.
  • ✅ C) Índice linear = i * n + j — No armazenamento row-major, cada linha contém n elementos; para chegar à linha i somam-se i blocos de n e depois avança-se j posições dentro da linha.
  • ❌ D) Índice linear = n * n + (i + j) — Essa fórmula é confusa e não reflete a estrutura de uma matriz.
  • ❌ E) Índice linear = i + j — Ignora completamente o dimensionamento das linhas.

Dica de resolução: considere a estrutura da matriz e a fórmula de acesso.

Questão 3: perfil de aluno com notas variáveis

Qual combinação de estruturas é mais adequada para armazenar perfis de alunos com campos fixos e número variável de notas: registro, lista, matriz ou outra variável? Explique brevemente.

  • ❌ A) Registro com matriz fixa de notas (colunas limitadas) — Matriz fixa impõe limite ou desperdício; não suporta número variável de notas.
  • ❌ B) Pilha de notas no registro que só permite acessar a última nota — Pilha (LIFO) dá acesso só à última nota; não permite consultar todo o histórico.
  • ✅ C) Usar um registro para os campos fixos do aluno (nome, id) contendo uma lista dinâmica de notas — o registro organiza os campos estáticos e a lista dinâmica acomoda quantidade variável de notas, facilitando inserção e remoção sem desperdício de espaço.
  • ❌ D) Tabela hash aluno → média das notas, sem armazenar cada nota — Guardar só a média impede recuperar ou operar sobre notas individuais.
  • ❌ E) Apenas uma lista de registros misturando alunos e notas, sem registro aluno — Sem registro central, os campos fixos do aluno ficam dispersos e difíceis de acessar.

Dica de resolução: considere as características de cada estrutura de dados.

Questão 4: corrigir o cálculo da média

Em um programa que calcula a média de notas de alunos, um erro faz com que a última nota não seja considerada. Qual estrutura de dados você utilizaria para corrigir esse problema e garantir que todas as notas sejam contabilizadas?

  • ❌ A) Matriz — Uma matriz é mais complexa e não é necessária para armazenar notas.
  • ✅ B) Lista — Listas são ideais para armazenar sequências de dados, como notas.
  • ❌ C) Registro — Registros são usados para agrupar diferentes tipos de dados, não é adequado aqui.
  • ❌ D) Grafo — Grafos são usados para representar redes, não se aplica ao cálculo de médias.
  • ❌ E) Fila — Filas são para processamento em ordem, não são necessárias neste caso.

Dica de resolução: considere as estruturas de dados que permitem armazenar múltiplos valores.

Questão 5: função de uma lista

Em um jogo, o jogador precisa coletar 5 itens diferentes. O algoritmo para registrar esses itens utiliza uma lista. Qual é a função de uma lista na programação?

  • ❌ A) Uma lista é usada para armazenar apenas um dado — Uma lista pode armazenar múltiplos dados.
  • ✅ B) Uma lista serve para organizar dados de forma sequencial — Listas organizam dados para acesso e manipulação.
  • ❌ C) Listas não permitem a manipulação dos dados armazenados — Listas permitem manipulação através de funções.
  • ❌ D) Uma lista é somente um meio de visualização de dados — Listas são estruturas de dados, não apenas visualizações.
  • ❌ E) Listas não podem conter diferentes tipos de dados — Listas podem conter diferentes tipos de dados, dependendo da linguagem.

Dica de resolução: pense sobre como listas são usadas para armazenar dados em programação.

Questão 6: avisos de iluminação pública

Por que uma lâmpada apagada pode continuar sem reparo por vários dias? Na central de atendimento de um município, moradores enviam avisos sobre falhas na iluminação pública. Em uma sexta-feira, chegaram 18 avisos; na segunda-feira, foram 47. Cada aviso informa o bairro, o número do poste, o tipo de falha e se a vistoria já ocorreu. Ao fim do expediente, o sistema deve separar os avisos ainda sem vistoria e encaminhá-los ao setor responsável pelo tipo de defeito. Como a quantidade de avisos muda diariamente, estudantes foram convidados a propor uma forma de organizar os dados e executar essa tarefa sem reescrever o programa a cada novo aviso.

Identifique a estratégia de programação que permite atender à necessidade da central, mesmo quando varia a quantidade de avisos recebidos.

  • ❌ A) Guardar os avisos sem verificar a vistoria e interromper a leitura após encontrar o primeiro pendente — Erro de interrupção prematura: os demais avisos pendentes não seriam verificados nem encaminhados.
  • ✅ B) Guardar os avisos em uma lista, percorrê-la e encaminhar os pendentes conforme o tipo de falha — A lista reúne uma quantidade variável de avisos, e sua leitura permite selecionar os que não tiveram vistoria e automatizar o encaminhamento.
  • ❌ C) Guardar somente o total diário de avisos e encaminhar todos os bairros ao mesmo setor — Erro de perda de atributos: o total não preserva o tipo de falha nem permite separar os avisos pendentes.
  • ❌ D) Guardar um aviso por vez e substituir o anterior sempre que chegar uma nova mensagem — Erro de sobrescrita de dados: substituir o aviso anterior elimina registros que ainda precisam ser analisados.
  • ❌ E) Guardar cada aviso em uma variável de nome fixo e criar novas variáveis manualmente — Erro de escalabilidade: a solução exige alterar o programa quando aumenta a quantidade de avisos.

Dica de resolução: pense em estruturas de dados que se adaptam a quantidades variáveis de informações.

Próximos passos

Se você está planejando essa habilidade agora, minha sugestão é começar pelo papel: um algoritmo escrito à mão já revela o que os alunos entenderam. Depois, avance para a linguagem e, por fim, para a recursão. Você pode montar sua própria prova com o gerador de provas do GeraProva, escolhendo o código EF08CO02 e ajustando as questões à sua turma. Para começar sem custo, faça seu cadastro grátis.

Estas questões servem como ponto de partida para o seu planejamento. Ajuste o nível e o contexto à realidade da sua turma, e use o gabarito como apoio, não como verdade absoluta.

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

Artigos relacionados

0 comentários

Nome
E-mail (não é publicado)
Comentário
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.