Atividades sobre Estratégias de solução de problemas com gabarito — 6º ano (EF06CO04)
Quando eu recebo o código EF06CO04 no planejamento, a primeira sensação é bem comum: a habilidade parece objetiva, mas transformar isso em aula e avaliação para o 6º ano exige tradução pedagógica. No documento, tudo vem em linguagem enxuta. Na sala, eu preciso pensar em problema concreto, mediação, registro e, claro, em como verificar se o aluno realmente entendeu a lógica da solução.
Neste caso, estamos em Computação, na unidade temática Pensamento Computacional, com o objeto de conhecimento Estratégias de solução de problemas. Isso já me dá uma pista importante: eu não devo levar a turma direto para “mexer no computador” sem antes trabalhar raciocínio. Antes do código, vem a ideia de dividir o problema, organizar etapas e perceber como uma solução pode ser reaproveitada em situações parecidas.
O que a habilidade EF06CO04 pede, de verdade
“Construir soluções de problemas usando a técnica de decomposição e automatizar tais soluções usando uma linguagem de programação. Generalização”
Na prática, eu leio essa habilidade assim: o aluno precisa pegar um problema maior, quebrar em partes menores, organizar uma solução e depois transformar isso em uma sequência que possa ser automatizada em linguagem de programação. E tem um ponto que muita gente deixa passar: generalização. Não basta resolver um caso único; o estudante deve começar a perceber como a mesma lógica serve para vários casos semelhantes.
Em linguagem de professor, EF06CO04 pede três movimentos bem claros. Primeiro: decompor, ou seja, separar um problema em pedaços menores. Segundo: automatizar, transformando os passos em comandos, blocos ou instruções programáveis. Terceiro: generalizar, entendendo o que muda e o que permanece igual quando o problema aparece em outro contexto.
Eu também costumo lembrar que essa habilidade não é sinônimo de cobrar sintaxe perfeita. Se eu avaliar só se o aluno escreveu um comando com pontuação correta, eu reduzo demais o que a BNCC está pedindo. O centro aqui é o raciocínio: perceber partes, organizar funções e criar uma solução que faça sentido além de um único exemplo.
Se você quiser comparar essa leitura com o acervo da plataforma, vale consultar a consulta completa do código EF06CO04. Lá estão reunidas as questões do código, e o GeraProva já tem 55 questões alinhadas a essa habilidade.
Como trabalhar EF06CO04 em sala
1) Começar com problemas do cotidiano escolar. Eu gosto de partir de situações que o aluno reconhece: organizar empréstimo da biblioteca, montar escala de apresentação, registrar merenda por turma ou controlar transporte escolar. Antes de programar, peço que a turma responda: que partes existem nesse problema? Quais informações preciso guardar? O que acontece primeiro, depois e por último?
2) Fazer decomposição no papel ou no quadro. Não precisa material caro. Um quadro, caderno e cartões de papel já resolvem. Eu escrevo um problema grande no topo e peço que os grupos separem em subtarefas. Por exemplo: “organizar transporte escolar” pode virar “cadastrar alunos”, “registrar rotas”, “anotar horários” e “consultar dados”. Esse passo é essencial porque ajuda o aluno a enxergar estrutura, não só resposta.
3) Passar da linguagem natural para pseudocódigo ou blocos. Depois da decomposição, eu peço que cada grupo escreva os passos da solução. Pode ser em pseudocódigo, fluxograma simples ou programação em blocos, se a escola usar essa abordagem. O importante é o aluno perceber que automatizar não é “apertar botão”, mas converter raciocínio em instruções claras.
4) Trabalhar generalização com pequenas mudanças no problema. Aqui entra a parte mais rica. Se o algoritmo filtra alunos por turma, eu pergunto: como adaptar para filtrar por turno? E por idade? E por cidade? O aluno começa a entender que uma boa solução não nasce presa a uma palavra específica; ela usa variável, parâmetro e estrutura reutilizável.
5) Incentivar reúso e revisão. Eu também trago situações em que já existe uma função pronta e a turma precisa decidir se vale reaproveitar. Isso aproxima o raciocínio de programação real. Nem sempre criar tudo do zero é a melhor escolha. Reusar uma função, biblioteca ou estrutura já pronta também é parte de pensar bem computacionalmente.
O que funciona melhor, para mim, é fazer esse percurso em camadas: problema concreto, decomposição, registro dos passos, automatização e generalização. Quando pulo uma dessas etapas, a turma até executa comandos, mas sem compreender por que está fazendo aquilo.
Como AVALIAR essa habilidade
Uma boa questão de EF06CO04 precisa cobrar mais do que definição decorada. Ela deve colocar o aluno diante de um problema e pedir que ele reconheça uma estratégia adequada de decomposição, uma forma de automatizar a solução ou um jeito de generalizar o algoritmo para outros casos.
Quando eu monto ou seleciono itens para essa habilidade, procuro verificar se a questão avalia pelo menos um destes pontos:
- identificação de partes menores dentro de um problema maior;
- organização de funções, módulos ou etapas com responsabilidades diferentes;
- transformação de solução em algoritmo ou linguagem de programação;
- uso de variáveis ou parâmetros para tornar a solução mais flexível;
- reúso de código ou estruturas já existentes.
Os erros mais comuns de avaliação, na minha experiência, são três. O primeiro é cobrar só conceito solto, sem situação-problema. O segundo é exagerar na sintaxe de uma linguagem específica, quando o foco da habilidade está no raciocínio. O terceiro é montar questões em que qualquer alternativa “organizada” parece correta, sem realmente diferenciar decomposição de simples agrupamento de tarefas.
Em resumo: para avaliar bem EF06CO04, eu preciso verificar se o aluno consegue pensar a solução, e não apenas repetir palavras como algoritmo, função ou variável.
Questões prontas de EF06CO04 (com gabarito comentado)
Abaixo, separei três questões que funcionam muito bem para sondagem, revisão ou prova curta.
1) Para organizar o transporte escolar, a direção quer um programa que registre alunos, rotas e horários de saída. Qual solução está mais alinhada à decomposição?
- ❌ A) Usar um cadastro geral para guardar todas as informações juntas, porque assim o sistema fica mais simples de manter. Errada porque confunde simplificação com decomposição. Guardar tudo junto pode parecer prático, mas não divide o problema em partes com responsabilidades diferentes.
- ❌ B) Criar um único programa para reunir alunos, rotas e horários em uma mesma tela, sem separar as funções. Errada porque concentra tudo em uma única solução e ignora a ideia de partes menores.
- ❌ C) Começar pelo registro dos horários e depois adicionar alunos e rotas, porque a ordem de criação determina a decomposição do sistema. Errada porque a decomposição não depende da ordem de criação, e sim da divisão funcional do problema.
- ✅ D) Organizar o programa em partes menores, com um módulo para cadastro de alunos, outro para controle das rotas e outro para registro dos horários. Correta porque representa exatamente a técnica de decomposição: dividir o problema em partes menores e específicas.
- ❌ E) Focar apenas no horário de saída, pois essa é a parte mais importante para organizar o transporte escolar. Errada porque resolve só um pedaço do enunciado e deixa de fora alunos e rotas.
Dica de resolução: procure a opção que realmente divide o problema em funções menores.
Conceito central: decomposição.
2) Qual das alternativas abaixo exemplifica o reúso de código em um projeto de programação?
- ❌ A) Criar uma nova função semelhante a uma já existente. Errada porque criar uma nova função gera código novo, não necessariamente reúso.
- ✅ B) Usar uma biblioteca de funções já desenvolvidas. Correta porque bibliotecas são exemplos clássicos de reúso: eu aproveito funções prontas em diferentes projetos.
- ❌ C) Duplicar uma parte do código em um novo projeto. Errada porque duplicar não é reutilizar de forma organizada; é apenas copiar.
- ❌ D) Desenvolver um novo software do zero sem referências. Errada porque ignora totalmente estruturas já existentes.
- ❌ E) Fazer alterações em uma função para adaptá-la a um novo contexto. Errada porque adaptar pode envolver modificação, mas a alternativa não caracteriza claramente o reúso como reaproveitamento direto.
Dica de resolução: pense em exemplos de funções ou bibliotecas que podem ser usadas de novo.
Conceito central: reúso de código.
3) Você tem um algoritmo que filtra registros por campo fixo “cidade”. Qual variável ou parâmetro deve ser adicionado para generalizá-lo a filtrar por qualquer campo, como cidade, idade ou status?
- ✅ A) Adicionar parâmetro “campo” (string) e parâmetro “valor”; comparar registro[campo] == valor. Correta porque o parâmetro “campo” torna o critério abstrato e, junto com “valor”, permite reutilizar a mesma lógica para diferentes filtros.
- ❌ B) Adicionar o parâmetro “valor” apenas. Errada porque ainda faltaria indicar qual campo do registro será comparado.
- ❌ C) Adicionar variável “cidade” e “registro” para filtrar. Errada porque continua presa a um caso específico e não generaliza o algoritmo.
- ❌ D) Adicionar parâmetro “data” para filtrar. Errada porque “data” é um exemplo particular, não uma solução flexível.
- ❌ E) Adicionar variável “busca” ao invés de “campo”. Errada porque o termo é vago e não explicita o que deve ser parametrizado no algoritmo.
Dica de resolução: pense no que precisa mudar para o mesmo algoritmo servir a vários filtros.
Conceito central: generalização por variável ou parâmetro.
Próximos passos
Se eu estivesse planejando uma sequência sobre EF06CO04 hoje, faria assim: começaria com um problema próximo da rotina da turma, passaria pela decomposição no papel, transformaria a solução em algoritmo simples e fecharia com uma atividade de generalização. Depois, aplicaria duas ou três questões bem escolhidas para verificar se o estudante entendeu a lógica por trás da programação.
Para ganhar tempo nesse processo, eu recorreria a o gerador de provas do GeraProva e também faria meu cadastro grátis. Isso ajuda bastante quando a gente quer adaptar o nível da turma sem começar tudo do zero.
Se você quiser, comece pelas questões prontas do código EF06CO04 e personalize para sua realidade; a ideia é poupar seu tempo de planejamento sem engessar sua aula.
