Atividades sobre Estratégias de solução de problemas com gabarito — 7º ano (EF07CO05)
Quando recebo a EF07CO05 no planejamento do 7º ano, minha primeira dúvida é bem prática: como transformar termos como decomposição, reúso e automatização em uma aula que faça sentido para a turma? Se eu ficar só na definição, os alunos até podem decorar palavras, mas não necessariamente conseguem planejar uma solução.
O caminho que costuma funcionar comigo é partir de problemas próximos: organizar a fila da cantina, montar uma lista de empréstimos da biblioteca, calcular médias ou criar regras para um jogo. A partir daí, a programação deixa de parecer algo distante e vira uma forma de organizar tarefas, testar ideias e trabalhar em grupo.
O que a habilidade EF07CO05 pede, de verdade?
Na prática, a EF07CO05 pede que o estudante enfrente um problema maior sem tentar resolver tudo de uma vez: ele precisa separar o desafio em partes menores, reconhecer ações que se repetem e criar uma solução que possa ser usada novamente. Também precisa construir isso com colegas, combinando responsabilidades, explicando escolhas e integrando as partes em um algoritmo que funcione. Depois, essa sequência de passos deve ser automatizada em uma linguagem de programação, que pode ser visual, como blocos, ou textual, conforme o percurso da turma. Portanto, não basta pedir que o aluno copie comandos ou acerte uma sintaxe isolada. Eu preciso observar se ele identifica o problema, define requisitos, organiza subtarefas, cria procedimentos ou funções reutilizáveis, testa o resultado e corrige falhas. É uma habilidade de pensamento computacional, programação e colaboração ao mesmo tempo.
Criar algoritmos fazendo uso da decomposição e do reúso no processo de solução de forma colaborativa e cooperativa e automatizá-los usando uma linguagem de programação.
Ela pertence à unidade temática Pensamento Computacional e trabalha o objeto de conhecimento Estratégias de solução de problemas. Para consultar o detalhamento e o acervo disponível, vale acessar a consulta completa do código EF07CO05.
Como trabalhar EF07CO05 em sala?
- Comece no papel. Proponho um problema da escola, como organizar a entrega de livros. Em grupos, os alunos listam todas as ações e depois as agrupam: cadastro, conferência, classificação e registro de devolução. Essa é uma entrada concreta para a decomposição.
- Caça à repetição. Peço que a turma marque os passos que aparecem mais de uma vez. Se toda pessoa precisa informar nome e turma, por exemplo, por que escrever esse processo várias vezes? Daí surge a ideia de procedimento, bloco ou função reutilizável.
- Programação em duplas. Uma pessoa atua como quem programa e outra como quem revisa, alternando os papéis. Em ferramentas de blocos ou em pseudocódigo, cada dupla cria uma parte da solução. Depois, juntamos as partes e verificamos se elas conversam entre si.
- Teste com casos reais. Não deixo o algoritmo ser avaliado apenas pelo visual. A turma testa situações comuns e exceções: campo vazio, nota inválida, horário ocupado, livro sem categoria. É nesse momento que eles percebem o valor de organizar e reutilizar bem o código.
Como avaliar essa habilidade?
Uma boa questão de EF07CO05 deve apresentar um problema e pedir que o aluno reconheça ou escolha uma estratégia de solução: dividir tarefas, criar funções, reaproveitar procedimentos, testar etapas e organizar o trabalho cooperativo. Também posso usar uma atividade prática com uma rubrica simples: o grupo identificou subtarefas? Evitou repetição desnecessária? Criou uma rotina reutilizável? Testou o algoritmo? Conseguiu explicar o que cada integrante fez?
Um erro comum é avaliar somente se o programa “rodou”. Um código pode funcionar em um exemplo e ainda estar todo repetido, difícil de corrigir e sem decomposição. Outro erro é cobrar apenas nomes técnicos, como função e variável, sem contexto. Nesta habilidade, quero que o estudante compreenda a decisão por trás da estrutura do algoritmo, e não apenas memorize comandos.
Questões prontas de EF07CO05 (com gabarito comentado)
1. Na organização de uma feira de troca de livros e brinquedos do bairro, quatro estudantes ficaram responsáveis por preparar a lista de entrega dos participantes. Eles perceberam que várias etapas se repetiam: conferir nome, registrar o item levado, separar por categoria e gerar um recibo simples. Para ganhar tempo, decidiram dividir o trabalho em partes menores e combinar que cada parte seria escrita uma vez e usada sempre que precisassem. Assim, quando chegasse um novo participante, o sistema repetiria os mesmos passos sem refazer tudo do zero. Ao final, cada dupla cuidaria de uma etapa, mas o programa reuniria as partes para montar o atendimento completo.
Considere a situação apresentada e identifique a proposta de algoritmo que melhor usa decomposição e reúso para automatizar o atendimento.
- ❌ A) Criar apenas uma lista de materiais, deixando as etapas de atendimento sem organização. Isso ajuda parcialmente, mas não automatiza nem reaproveita as ações repetidas.
- ✅ B) Dividir as tarefas em partes menores e transformar cada parte em procedimento reutilizável.
- ❌ C) Mudar a ordem das tarefas a cada participante. A proposta exige uma sequência padronizada, não alterações aleatórias.
- ❌ D) Escolher uma pessoa para fazer todas as tarefas, sem dividir o problema. Não há decomposição nem colaboração.
- ❌ E) Criar uma sequência única e longa para repetir todas as tarefas. Isso duplica instruções e dificulta a manutenção.
2. Ao decompor um algoritmo que valida vários tipos de entrada, que subtarefa promove generalização e reúso de código por meio de funções?
- ❌ A) Criar uma função para cada tipo de entrada em vez de genéricas. Funções muito específicas geram mais trabalho e pouca reutilização.
- ✅ B) Implementar funções genéricas de validação, como validarData e validarNumero, e chamá-las onde necessário para reutilizar a lógica.
- ❌ C) Utilizar validações específicas diretamente dentro de cada módulo sem funções. Isso duplica código e dificulta manutenção.
- ❌ D) Executar validações apenas após a entrada do usuário, sem funções. Esperar prejudica a organização e a segurança da solução.
- ❌ E) Limitar validações a um único tipo de dado por módulo apenas. Isso não promove reúso nem consistência.
3. Durante uma aula de programação, a professora pediu que os alunos criassem um programa simples que calculasse a média de três notas. Como você organizaria este programa utilizando o conceito de reutilização de códigos?
- ❌ A) Criar um código diferente para cada nota. Essa estratégia não reutiliza a lógica.
- ✅ B) Usar uma função para calcular a média. A função pode ser chamada sempre que for necessário calcular outra média.
- ❌ C) Armazenar as notas em uma lista e somar. Pode funcionar, mas não é a melhor resposta para destacar o reúso.
- ❌ D) Reescrever o código sempre que necessário. Reescrever é justamente o oposto de reutilizar.
- ❌ E) Usar um loop para cada nota individualmente. Um loop pode ser útil, mas não representa a melhor estratégia de reúso aqui.
4. Maria deseja aprimorar seu jogo de tabuleiro eletrônico. Para isso, ela decide usar um algoritmo que reutiliza partes de códigos anteriores. Qual é a principal vantagem desse reuso?
- ❌ A) Aumentar o tempo de desenvolvimento. O reúso tende a economizar tempo.
- ✅ B) Reduzir a quantidade de erros. Partes já testadas são menos propensas a introduzir novos erros.
- ❌ C) Criar novos algoritmos desnecessariamente. O objetivo é evitar criar tudo do zero.
- ❌ D) Dificultar a manutenção do código. O reúso bem organizado facilita corrigir e atualizar.
- ❌ E) Aumentar a complexidade do código. Em geral, procedimentos reutilizáveis simplificam a organização.
5. Em um projeto de programação, um grupo de alunos deve criar um algoritmo para resolver um problema real da escola. Se eles decidirem automatizar o agendamento de aulas, quais passos devem seguir?
- ❌ A) Definir os horários e criar o algoritmo apenas. Ainda faltam teste e implementação.
- ❌ B) Identificar os requisitos e implementar a solução. É preciso criar e testar o algoritmo antes de implementar.
- ❌ C) Criar o algoritmo e não testar. Testar é essencial para verificar se a solução funciona.
- ✅ D) Identificar requisitos, criar, testar e implementar. Essa sequência organiza adequadamente o projeto.
- ❌ E) Criar o algoritmo e depois definir os requisitos. Os requisitos precisam orientar a criação desde o início.
6. Em qual situação o uso de algoritmos é essencial?
- ❌ A) Quando se deseja apenas um resultado aleatório. Algoritmos seguem passos definidos para atingir um objetivo.
- ✅ B) Ao resolver um problema matemático. Algoritmos organizam procedimentos para chegar à solução.
- ❌ C) Quando não se tem informações suficientes. São necessários dados para executar corretamente os passos.
- ❌ D) Em jogos de azar. O resultado não depende de uma sequência de resolução criada pelo participante.
- ❌ E) Ao ignorar as regras. Algoritmos se baseiam em regras e instruções, não em ignorá-las.
Próximos passos
Eu começaria com uma situação simples, deixaria a turma planejar no papel e só depois levaria a solução para a programação. Para variar nível, formato e quantidade de itens, você pode usar o gerador de provas do GeraProva e montar uma avaliação alinhada à habilidade.
As questões são um ponto de partida: adapte exemplos, linguagem e apoio à realidade da sua turma. Se quiser salvar materiais e criar provas com mais rapidez, faça seu cadastro grátis no GeraProva.
