Atividades sobre Programação usando grafos e árvores com gabarito — 9º ano (EF09CO01)
Quando recebo a EF09CO01 no planejamento do 9º ano, sei que o desafio não é apenas explicar o que são grafos e árvores. Preciso transformar termos que parecem técnicos em problemas que os alunos reconheçam: caminhos até a escola, seguidores em uma rede social, pastas no computador ou rotas de ambulância.
Na minha experiência, a aula anda melhor quando a turma percebe que essas estruturas não são desenhos abstratos de programação. Elas servem para organizar informações, representar relações e tomar decisões. A partir daí, fica muito mais natural propor uma atividade prática e uma avaliação que vá além de decorar definições.
O que a habilidade EF09CO01 pede, de verdade?
Na prática, essa habilidade pede que o estudante reconheça quando um problema envolve relações ou hierarquias, escolha entre árvore e grafo para representá-lo e avance para uma solução automatizada em programação. Não basta saber que um grafo tem pontos e ligações, ou que uma árvore parece uma estrutura de pastas: o aluno precisa justificar a escolha da estrutura diante de uma situação concreta. Por exemplo, uma rede de amizades permite várias conexões entre pessoas e combina com grafo; já a organização de arquivos por pastas e subpastas segue níveis e combina com árvore. Também espero que a turma leia informações, identifique conexões direcionadas ou não direcionadas, considere pesos como tempo e distância e pense em procedimentos para percorrer ou consultar esses dados. O foco é resolver problemas reais com representação adequada e lógica de programação, não exigir domínio avançado de código.
“Criar soluções de problemas para os quais seja adequado o uso de árvores e grafos para descrever suas informações e automatizá-las usando uma linguagem de programação.”
Esse é o texto oficial da habilidade, da unidade temática Pensamento Computacional, no objeto de conhecimento Programação usando grafos e árvores. Para planejar com segurança, eu também consulto a consulta completa do código EF09CO01, que reúne as questões disponíveis para essa habilidade.
Como trabalhar EF09CO01 em sala?
- Mapa de trajetos da turma: peço que grupos desenhem pontos importantes do bairro ou do caminho até a escola. Os lugares são vértices; as ruas, arestas. Depois, podemos acrescentar tempo de percurso e discutir qual rota parece mais rápida.
- Rede de conexões em papel: cada grupo inventa uma pequena rede social com dez perfis. Eles definem quem segue quem e percebem que seguir pode ser uma relação direcionada. É uma porta de entrada simples para listas de adjacência.
- Árvore de pastas: uso a organização dos arquivos da própria escola: pasta principal, turmas, disciplinas, atividades e arquivos. A turma desenha a hierarquia e identifica raiz, ramificações e elementos finais.
- Cartões de decisão: entrego situações curtas, como “organizar parentesco”, “representar linhas de ônibus” e “guardar uma lista de chamada”. Os alunos justificam se usariam árvore, grafo ou outra estrutura. O ganho está na argumentação, não só no acerto.
- Programação gradual: em pseudocódigo, planilha ou linguagem já usada pela turma, proponho representar vizinhos de cada ponto e buscar informações. Quem tiver mais familiaridade pode criar uma lista de adjacência; quem está começando pode descrever o passo a passo antes de codificar.
Como avaliar essa habilidade?
Uma boa questão de EF09CO01 apresenta um contexto e pede que o estudante relacione o problema à estrutura adequada. Ela pode cobrar a identificação de vértices e arestas, a diferença entre hierarquia e rede, a leitura de relações direcionadas, a economia de espaço em uma representação ou a escolha de um procedimento para encontrar caminhos.
Eu evito avaliar apenas vocabulário isolado, como perguntar a definição de grafo sem contexto. Também tomo cuidado para não transformar a habilidade em uma prova de sintaxe de programação. Um erro comum é considerar árvore e grafo como sinônimos porque ambos têm nós e ligações. Outro é pedir “o caminho mais curto” sem informar se as arestas têm pesos: quando há tempos ou distâncias diferentes, contar somente o número de conexões pode levar a uma resposta errada. Vale combinar questões objetivas, produção de diagramas e uma justificativa breve.
Questões prontas de EF09CO01 (com gabarito comentado)
1. Em programação, qual estrutura de dados é mais adequada para representar relacionamentos entre objetos?
- ❌ A) Lista encadeada — é menos eficaz para representar relacionamentos complexos.
- ❌ B) Matriz — não é a estrutura mais indicada, por si só, para representar relações entre objetos.
- ❌ C) Conjunto — reúne elementos, mas não explicita relacionamentos diretos.
- ✅ D) Grafos — conectam nós e são ideais para representar relacionamentos.
- ❌ E) Array — possui estrutura fixa e não favorece relações entre elementos.
2. Em um grafo, o que representam os vértices e as arestas?
- ❌ A) Vértices são conexões, arestas são entidades — os papéis estão invertidos.
- ❌ B) Ambos são tipos de dados organizados — embora organizados, cumprem funções diferentes.
- ❌ C) Vértices representam relações, arestas entidades — novamente, os conceitos foram trocados.
- ✅ D) Vértices são entidades, arestas são relações — os vértices representam os elementos, e as arestas mostram suas conexões.
- ❌ E) Ambos representam dados não estruturados — um grafo é uma forma estruturada de organizar dados.
3. Qual técnica é mais adequada para representar as relações entre amigos em uma rede social?
- ❌ A) Listas encadeadas, por serem mais simples — não representam bem conexões complexas entre usuários.
- ❌ B) Matrizes, pela facilidade de acesso — não são eficientes para conexões dinâmicas nesse contexto.
- ✅ C) Grafos, por representar conexões entre usuários — são adequados para redes e relações entre pessoas.
- ❌ D) Registros, que organizam dados de maneira sequencial — registros não modelam relações complexas.
- ❌ E) Árvores, que organizam dados hierarquicamente — árvores servem a hierarquias, não a múltiplas conexões em rede.
4. Uma plataforma brasileira de comunicação tem 10 mil usuários. Seguir alguém é uma relação direcionada, cada pessoa segue em média 80 perfis e o sistema precisa consultar os seguidos sem reservar espaço para todas as combinações possíveis. Qual estrutura é mais adequada?
- ❌ A) Uma árvore binária — a rede não é necessariamente hierárquica nem limitada a dois vínculos.
- ❌ B) Uma lista encadeada simples — isoladamente, ela não associa cada usuário ao conjunto de pessoas que segue.
- ❌ C) Uma matriz de adjacência — representa direções, mas desperdiça espaço em uma rede com poucas conexões relativas.
- ✅ D) Uma lista de adjacência — associa cada usuário à lista de perfis que ele segue, economiza espaço e facilita consultar vizinhos.
- ❌ E) Um registro de dados — descreve uma entidade, mas não organiza os vários vínculos entre usuários.
5. Cidades são vértices, estradas são arestas e cada estrada tem um tempo de viagem positivo. Para orientar ambulâncias, qual abordagem encontra o percurso de menor tempo?
- ❌ A) Busca em profundidade, seguindo o primeiro percurso — ela não compara adequadamente os tempos acumulados.
- ❌ B) Busca em largura, considerando custos iguais — contar estradas não garante menor tempo quando os pesos variam.
- ✅ C) Algoritmo de Dijkstra, considerando tempos positivos — ele compara custos acumulados e encontra menores caminhos com pesos não negativos.
- ❌ D) Matriz de adjacência — é uma representação, não um método de cálculo do menor percurso.
- ❌ E) Escolher sempre a estrada mais rápida no ponto atual — uma decisão local pode gerar um caminho total mais lento.
6. Em uma escola, arquivos digitais são organizados por pasta principal, pastas, subpastas e arquivos, com uma única pasta superior para cada item, exceto a principal. Qual estrutura exemplifica uma árvore?
- ✅ A) Uma hierarquia de pastas e arquivos — há raiz, níveis e ramificações, como no conceito de árvore.
- ❌ B) Uma fila de atendimento por chegada — é uma estrutura linear de ordem de entrada.
- ❌ C) Uma sequência de tarefas pendentes — itens em sequência não formam ramificações hierárquicas.
- ❌ D) Uma tabela de notas escolares — organiza linhas e colunas, não níveis de parentesco estrutural.
- ❌ E) Um grafo de rotas com ciclos — árvores não possuem ciclos e mantêm organização hierárquica.
Próximos passos para a aula
Eu começaria com um exemplo visual simples, pediria que os alunos justificassem suas escolhas e só depois levaria a ideia para a programação. Para variar dificuldade, selecionar questões e montar avaliações alinhadas, vale usar o gerador de provas do GeraProva. Se você ainda não utiliza a plataforma, faça seu cadastro grátis e explore as 55 questões do acervo alinhadas a esta habilidade.
Use estas questões como ponto de partida e adapte os contextos à realidade da sua turma. A melhor atividade é aquela em que o aluno consegue explicar por que escolheu uma árvore ou um grafo — e percebe que programação também ajuda a resolver problemas do seu cotidiano.
