GeraProva GeraProva Provas com IA para professores do Brasil
BNCC

Atividades sobre Análise de programas com gabarito — 7º ano (EF07CO02)

Atividades sobre Análise de programas com gabarito — 7º ano (EF07CO02)

Quando recebo a EF07CO02 no planejamento do 7º ano, sei que não basta pedir que a turma diga se um programa está “certo” ou “errado”. O desafio é criar situações em que os estudantes leiam uma regra, acompanhem o que o algoritmo faz e localizem a causa de um resultado inesperado.

Na prática, eu costumo partir de exemplos próximos: uma lista de tarefas que repete um item, uma catraca que cobra de quem não deveria ou um cadastro que apresenta dados estranhos. Assim, depurar deixa de parecer uma tarefa distante de programador e vira uma investigação lógica, possível mesmo com pseudocódigo no quadro ou atividades impressas.

O que a habilidade EF07CO02 pede, de verdade?

A EF07CO02 pede que o estudante analise programas para encontrar erros, proponha correções e aumente a confiança de que o resultado está correto. Em linguagem de sala de aula, eu traduzo assim: a turma precisa comparar o que o programa deveria fazer com o que ele realmente faz, levantar hipóteses sobre a origem da falha e testar uma mudança que resolva o problema sem criar outro. Não é decorar comandos nem apenas apontar “tem bug”: é justificar onde está o erro — numa condição, variável, repetição ou sequência de passos — e explicar por que a alteração faz sentido. Também envolve testar casos diferentes, inclusive os casos de limite, como a idade exatamente igual a 12 ou o último item de uma lista. O foco está no raciocínio investigativo: observar evidências, revisar a lógica e validar a solução.

“Analisar programas para detectar e remover erros, ampliando a confiança na sua correção.”

Essa habilidade pertence à unidade temática Pensamento Computacional, no objeto de conhecimento Análise de programas. Para o 7º ano, vale trabalhar com códigos curtos e situações bem delimitadas antes de avançar para projetos maiores.

Como trabalhar EF07CO02 em sala?

1. Faça a turma virar equipe de testes. Eu entrego um pseudocódigo simples e uma tabela com entradas e saídas esperadas. Em duplas, os estudantes simulam a execução linha por linha. Quando há diferença entre o esperado e o obtido, começam a investigação.

2. Use casos de fronteira. Em uma regra de desconto para pessoas com até 12 anos, pergunto: “E quem tem 12? E 13?” Esse tipo de teste evidencia erros de comparação, como trocar <= por <, sem exigir computador.

3. Proponha o desafio do código com defeito. Escrevo no quadro um algoritmo curto com um erro intencional: uma condição com “e” no lugar de “ou”, um contador que não avança ou uma variável mal definida. Cada grupo marca o trecho suspeito, sugere uma correção e defende sua escolha.

4. Compare soluções. Depois da correção, não paro no “agora funciona”. Peço que cada grupo crie dois ou três testes para verificar a proposta. Isso reforça que corrigir um programa exige evidência, não palpite.

5. Registre o raciocínio. Uma ficha simples com “erro observado”, “causa provável”, “alteração feita” e “teste realizado” ajuda muito na organização. Também me dá elementos claros para acompanhar a aprendizagem individual.

Como avaliar essa habilidade?

Uma boa questão de EF07CO02 apresenta uma finalidade clara para o programa, mostra uma regra ou um comportamento esperado e traz um indício observável de erro. O estudante precisa analisar a lógica e escolher ou propor a alteração coerente. Questões sobre condições, laços, índices, variáveis e sequências são especialmente adequadas, desde que não cobrem apenas vocabulário técnico.

Eu evito avaliar somente se o aluno sabe dizer que “programas precisam ser testados”. Isso é importante, mas ainda é genérico. Também tomo cuidado com enunciados sem contexto ou com mais de uma alternativa defensável. O essencial é verificar se a turma relaciona causa e efeito: qual trecho provoca o problema, por que ele provoca e como a mudança corrige o resultado. Para ampliar a avaliação, use a consulta completa do código EF07CO02, que reúne todas as questões disponíveis.

Questões prontas de EF07CO02 (com gabarito comentado)

1. Na porta de um centro cultural, um programa simples decide se o visitante paga ingresso ou entra de graça. A regra foi escrita assim: visitantes com 12 anos ou menos entram gratuitamente; também entram de graça os professores com carteirinha válida. O código testado foi: leia idade; leia carteirinha; se (idade <= 12) e (carteirinha = "sim") entao escreva "Entrada gratuita"; senao escreva "Ingresso pago". Durante a verificação, crianças sem carteirinha passaram a ser cobradas. Qual alteração corrige o programa?

  • ❌ A) Substituir o operador <= por < na comparação da idade. Isso excluiria quem tem exatamente 12 anos, embora a regra inclua essa idade.
  • ✅ B) Substituir o operador e por ou na condição do teste. A regra libera quem tem 12 anos ou menos ou quem apresenta carteirinha.
  • ❌ C) Retirar o bloco senao para que todos recebam entrada gratuita. Sem a separação, o programa não identifica quem deve pagar.
  • ❌ D) Trocar a ordem das linhas de escrita. As mensagens não mudam a lógica da condição, onde está o erro.
  • ❌ E) Substituir “sim” por “nao” na carteirinha. Isso inverteria a regra e liberaria o caso incorreto.

2. Uma lista não vazia possui índices de 0 até n, e n é seu último índice válido. Em um laço, o índice i começa em 0, aumenta de 1 em 1 e n não muda. Mesmo assim, o laço termina antes de i visitar n. Qual erro é mais provável?

  • ❌ A) Erro no valor de n, que deveria ser alterado durante a execução. O enunciado informa que n é constante e representa o último índice válido.
  • ❌ B) Erro na posição inicial de i. Como i começa em 0, essa informação não explica o término antecipado.
  • ❌ C) Erro na quantidade de elementos da lista, que deveria ser menor. Reduzir a lista não resolve uma condição de parada incorreta.
  • ✅ D) Erro na condição de parada do laço. Ela provavelmente impede que i alcance n: um caso clássico de erro de limite, ou off-by-one.
  • ❌ E) Erro no aumento de i, que deveria avançar mais de uma posição. Avançar mais poderia pular itens e pioraria a situação.

3. Num algoritmo que insere registros em uma lista, sempre aparece um registro duplicado ao final. Ao analisar o código, qual problema é mais provável e deve ser corrigido primeiro?

  • ❌ A) Falta de desalocação de memória após cada inserção. Vazamento de memória não explica a repetição do mesmo registro.
  • ❌ B) O compilador duplica funções por otimização. Isso não provoca reinserção do mesmo registro durante a execução.
  • ❌ C) A função ordena a lista após inserir. Ordenar reorganiza itens; não cria cópias.
  • ✅ D) O índice ou ponteiro não é atualizado corretamente dentro do laço. Sem avançar, o algoritmo pode inserir repetidamente o mesmo registro.
  • ❌ E) O laço tem condição invertida e impede novas inserções. Isso tenderia a bloquear inserções, não a duplicar o último item.

4. Ana está desenvolvendo um aplicativo para ajudar seus colegas a gerenciar tarefas escolares. Quais passos ela deve seguir para garantir que o algoritmo funcione corretamente?

  • ❌ A) Codificar e esperar resultados. Esperar não substitui a verificação planejada.
  • ✅ B) Testar com entradas variadas e corrigir. Os testes revelam falhas e permitem ajustar o algoritmo com base em evidências.
  • ❌ C) Implementar sem revisar o código. A revisão é parte importante da prevenção e da correção de erros.
  • ❌ D) Documentar o código apenas no final. Registrar decisões ao longo do processo favorece a análise.
  • ❌ E) Pedir ajuda somente quando falhar. Trocar ideias durante o desenvolvimento também ajuda a detectar problemas.

5. Ao criar um software, um programador usa variáveis para armazenar informações. O que acontece se ele não definir corretamente essas variáveis?

  • ❌ A) O software funcionará normalmente. Variáveis mal definidas podem comprometer os cálculos e decisões do programa.
  • ❌ B) O programa fará uma pausa. Uma pausa não é a consequência direta esperada.
  • ✅ C) Pode gerar erros inesperados. Valores, tipos ou nomes incorretos podem causar comportamentos indesejados.
  • ❌ D) Não haverá impacto visível. Resultados incorretos podem aparecer mesmo quando o programa executa.
  • ❌ E) O sistema se tornará mais lento. Lentidão não é o efeito direto de uma variável mal definida.

6. O que ocorre se um algoritmo não for bem estruturado?

  • ❌ A) Nada, ele sempre funcionará. Um algoritmo com falhas pode não produzir o resultado esperado.
  • ❌ B) Ele gera sempre o mesmo resultado. Um problema estrutural não implica repetição garantida de resultado.
  • ✅ C) Ele pode não executar a tarefa desejada. Erros na estrutura podem impedir que o algoritmo cumpra sua finalidade.
  • ❌ D) Ele será mais rápido. Em geral, uma estrutura inadequada não representa ganho de eficiência.
  • ❌ E) Ele não precisa ser testado. Justamente por poder conter falhas, precisa ser testado.

Próximos passos

Eu começaria com uma questão diagnóstica, faria uma atividade de depuração em duplas e retomaria os erros mais comuns antes da avaliação. Se quiser montar listas diferentes para cada turma sem perder tempo, use o gerador de provas do GeraProva e filtre as 25 questões do acervo alinhadas a esta habilidade.

As questões são um ponto de partida para a sua aula: adapte exemplos, linguagem e nível de apoio à sua turma. Para criar materiais e salvar seu planejamento, faça seu cadastro grátis no GeraProva.

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.