Atividades sobre Programação usando grafos e árvores com gabarito — 9º ano (EF09CO02)
Quando recebo a EF09CO02 no planejamento do 9º ano, sei que o desafio não é apenas apresentar termos como lista, objeto, grafo ou árvore. Preciso transformar esses conceitos em situações que a turma reconheça: organizar uma coleta seletiva, pensar nas fases de um jogo, mapear caminhos na escola ou decidir como guardar informações de um aplicativo.
Na prática, eu tento sair da explicação abstrata o quanto antes. A habilidade pede escolhas justificadas, colaboração e aperfeiçoamento de soluções. Por isso, alterno pequenos problemas no papel, conversa em grupo e questões que mostrem se o estudante entende por que determinada estrutura ou técnica faz sentido.
O que a habilidade EF09CO02 pede, de verdade?
A EF09CO02 pede que o estudante do 9º ano vá além de escrever comandos isolados: ele precisa analisar um problema real ou escolar, planejar uma solução computacional, escolher como organizar os dados e justificar essa escolha. Isso inclui perceber quando uma lista, matriz, objeto, grafo ou árvore ajuda mais do que outra estrutura, além de testar, revisar e melhorar a proposta. Também há uma dimensão importante de trabalho colaborativo: a turma deve comparar ideias, dividir tarefas e articular conhecimentos de outras áreas, como Matemática, Geografia ou Ciências. Em sala, eu traduzo isso como “não basta fazer funcionar; é preciso explicar por que organizamos a solução desse jeito”. Uma atividade sobre rotas entre bairros, por exemplo, pode usar grafos; já uma hierarquia de pastas ou decisões pode ser representada por árvores. O foco é resolver problemas com intenção e critério.
“Construir soluções computacionais de problemas de diferentes áreas do conhecimento, de forma individual e colaborativa, selecionando as estruturas de dados e técnicas adequadas, aperfeiçoando e articulando saberes escolares.”
A habilidade está na unidade temática Pensamento Computacional e tem como objeto de conhecimento a programação usando grafos e árvores. Para consultar o recorte completo e o acervo disponível, eu recomendo a consulta completa do código EF09CO02.
Como trabalhar EF09CO02 em sala?
- Mapa de caminhos da escola: em grupos, peço que representem espaços da escola como pontos e os deslocamentos como ligações. Depois, proponho perguntas: qual caminho tem menos etapas? O que acontece se um corredor estiver interditado? Mesmo sem computador, a turma compreende a lógica dos grafos.
- Árvore de decisões para um problema cotidiano: a turma cria uma árvore para orientar o descarte de resíduos: “é reciclável?”, “está limpo?”, “qual coletor usar?”. Depois, cada grupo revisa a árvore de outro grupo e aponta decisões confusas ou incompletas.
- Aplicativo no papel: apresento um contexto, como registrar livros emprestados na biblioteca. Os estudantes decidem quais dados serão guardados, se precisam de lista, dicionário, valor lógico ou objeto, e defendem a escolha para a classe.
- Jogo com regras visíveis: uso um jogo simples, digital ou de tabuleiro, e peço que a turma identifique variáveis, decisões e regras. Em seguida, criamos um fluxograma ou pseudocódigo para uma fase do jogo.
- Melhoria de uma solução: entrego uma organização propositalmente ruim, com dados repetidos ou sem ordem. Os grupos propõem ajustes e explicam como a nova estrutura facilita a consulta, a busca ou a atualização.
Como avaliar essa habilidade?
Uma boa questão de EF09CO02 não cobra só definição decorada. Ela apresenta um problema e pede que o estudante relacione a necessidade à estrutura de dados ou à técnica adequada. Vale perguntar por que uma lista preserva registros em ordem, como um objeto reúne dados e comportamentos ou quando uma matriz pode ser mais adequada que uma lista.
Eu evito avaliações que tratam uma estrutura como solução universal ou que usam alternativas vagas, como “porque é melhor”. Também tomo cuidado para não exigir sintaxe de uma linguagem específica quando o objetivo é o raciocínio computacional. Para complementar a prova, observo a discussão dos grupos: o estudante conseguiu justificar escolhas, ouvir contrapontos e revisar a solução? Esses indícios ajudam muito a avaliar a habilidade por inteiro.
Questões prontas de EF09CO02 (com gabarito comentado)
1. Como a lógica computacional pode ser aplicada no cotidiano, especialmente em jogos eletrônicos?
- ❌ A) A lógica é irrelevante em jogos simples. Mesmo jogos simples utilizam lógica para funcionarem.
- ❌ B) Os jogos não dependem de decisões durante o jogo. Decisões são essenciais para a dinâmica de qualquer jogo.
- ✅ C) A lógica ajuda a programar as regras do jogo. Programar regras lógicas é crucial para o funcionamento de jogos.
- ❌ D) Jogos eletrônicos não utilizam variáveis. Jogos utilizam variáveis para manter estados e pontuações.
- ❌ E) A lógica computacional é apenas teórica. A lógica computacional tem aplicação prática em diversas áreas, incluindo jogos.
2. Qual é a função de um objeto em um algoritmo de modelagem?
- ✅ A) Representar dados e funções. Objetos são utilizados para representar dados e comportamentos em um algoritmo.
- ❌ B) Apenas armazenar informações. Objetos não servem apenas para armazenar, mas também para definir comportamentos.
- ❌ C) Gerar números aleatórios. Essa função é específica e não define o papel geral dos objetos.
- ❌ D) Executar cálculos matemáticos. Embora possam executar, essa não é sua função principal.
- ❌ E) Armazenar apenas texto. Objetos podem armazenar diversos tipos de dados, não apenas texto.
3. Qual o papel da modelagem de objetos na resolução de problemas em programação?
- ❌ A) Ela torna o código mais confuso e difícil de entender. Modelagem de objetos visa simplificar e organizar o código.
- ✅ B) Facilita a representação de entidades e suas interações. A modelagem simplifica a programação ao refletir conceitos do mundo real.
- ❌ C) É usada apenas para design de interfaces gráficas. Modelagem de objetos é ampla e não se limita apenas a interfaces.
- ❌ D) Não é relevante para a programação em geral. A modelagem é fundamental para a estruturação de qualquer programa.
- ❌ E) Aumenta a complexidade do código sem benefícios claros. O objetivo da modelagem é simplificar e organizar, não complicar.
4. Como a utilização de algoritmos pode otimizar a organização de objetos em um sistema?
- ❌ A) Eliminando a necessidade de dados. Algoritmos dependem de dados para funcionar.
- ✅ B) Estabelecendo regras para organização. Algoritmos definem como os objetos são organizados.
- ❌ C) Complexificando o processo de busca. Algoritmos simplificam a busca, não a complexificam.
- ❌ D) Aumentando a redundância de dados. Algoritmos otimizam a redundância, não a aumentam.
- ❌ E) Eliminando a necessidade de estrutura. Estruturas são essenciais para a organização.
5. Em uma atividade de Computação, uma turma está desenvolvendo um aplicativo para acompanhar a coleta seletiva no bairro. O programa receberá os materiais entregues pelos moradores durante o dia. A equipe definiu que uma lista é adequada para reunir vários valores em uma sequência, preservando a ordem de registro e permitindo consultar cada posição. Também considerou outras estruturas: uma variável simples para guardar um único valor, um valor lógico para representar verdadeiro ou falso, um conjunto para reunir valores sem repetição e um dicionário para relacionar chaves a valores.
Com base nas necessidades do aplicativo e nas características apresentadas, qual solução utiliza adequadamente uma lista?
- ❌ A) Relacionar cada morador ao material entregue em um dicionário. Essa relação entre chave e valor caracteriza um dicionário, não uma lista simples.
- ✅ B) Registrar, na ordem de chegada, os materiais entregues pelos moradores. A lista armazena vários materiais, preserva a ordem de registro e permite acessar cada posição da sequência.
- ❌ C) Guardar em uma variável simples o total de materiais entregues no dia. Esse uso envolve um único valor numérico, não uma sequência de elementos.
- ❌ D) Usar um valor lógico para indicar se a coleta seletiva foi concluída. Uma informação com dois estados, verdadeiro ou falso, é melhor representada por valor lógico.
- ❌ E) Reunir em um conjunto os tipos de materiais entregues, sem repeti-los. Eliminar repetições é característica de conjunto, não de lista.
6. Em um projeto de programação, como a escolha entre matriz e lista pode impactar a eficiência do programa?
- ❌ A) Usar sempre listas, pois são mais fáceis de implementar. Listas são flexíveis, mas podem não ser as mais eficientes para acessos diretos.
- ✅ B) Escolher matrizes para dados fixos e listas para dados dinâmicos. Matrizes são eficientes para dados de tamanho fixo, enquanto listas se adaptam a dados dinâmicos.
- ❌ C) Matrizes são sempre mais rápidas que listas. A velocidade depende do contexto e da estrutura de dados utilizada.
- ❌ D) Listas e matrizes são iguais em eficiência. Cada uma possui características que as tornam mais adequadas a diferentes situações.
- ❌ E) Evitar o uso de matrizes por causa da complexidade de indexação. Matrizes têm complexidade de indexação fixa, o que pode ser vantajoso em muitos cenários.
Próximos passos para o planejamento
Eu começaria com uma situação concreta da escola ou do bairro, pediria uma proposta em grupo e usaria duas ou três questões para verificar a compreensão individual. Se quiser ganhar tempo na montagem da avaliação, há 95 questões alinhadas a este código no acervo e você pode usar o gerador de provas do GeraProva para selecionar, organizar e editar suas questões.
Adapte o nível de linguagem e os contextos à sua turma. Para testar os recursos e montar atividades do seu jeito, faça seu cadastro grátis no GeraProva.
