Skip to content
Aplicações Informáticas B · 12.º Ano

Ideias de aprendizagem ativa

Arrays e Listas

Este tópico exige que os alunos compreendam trade-offs entre estruturas de dados que não são óbvios apenas pela teoria. Aprender com simulações físicas e medições práticas permite-lhes experienciar os custos e benefícios de cada abordagem, tornando concreto o que é abstrato em algoritmia. A manipulação ativa de arrays e listas em exercícios colaborativos reforça a diferença entre acesso direto e sequencial, essencial para resolver problemas complexos mais tarde.

Aprendizagens EssenciaisDGE: Secundário - Algoritmia e ProgramaçãoDGE: Secundário - Dados e Análise
30–50 minPares → Turma inteira4 atividades

Atividade 01

Simulação de Julgamento30 min · Pequenos grupos

Simulação de Julgamento: Arrays vs Listas Dinâmicas

Os alunos representam um array com cartões fixos num tabuleiro e uma lista com elos de papel que podem adicionar ou remover. Peçam-lhes para inserir elementos no início e medir o tempo gasto. Discutam as diferenças observadas em grupo.

Como a escolha entre um array e uma lista afeta a eficiência de um algoritmo?

Sugestão de FacilitaçãoDurante a simulação física de arrays vs listas dinâmicas, peça aos alunos para medirem o tempo de inserção no meio com objetos físicos, como cartões, para visualizarem o deslocamento necessário nos arrays.

O que observarEntregue aos alunos um cartão com um cenário (ex: 'guardar 1000 números inteiros de uma vez' vs 'adicionar nomes de utilizadores à medida que se registam'). Peça-lhes para escreverem qual estrutura (array ou lista) seria mais apropriada e porquê, em duas frases.

AnalisarAvaliarCriarTomada de DecisãoConsciência Social
Gerar Aula Completa

Atividade 02

Desafio de Codificação: Manipulação de Dados

Em pares, codifiquem uma lista de notas de alunos usando arrays e listas em Python. Adicionem, removam e acedam elementos por índice, cronometrando cada operação. Compararem resultados num quadro partilhado.

Analise os desafios de gerir o tamanho de arrays estáticos em comparação com listas dinâmicas.

Sugestão de FacilitaçãoNo desafio de codificação, forneça exemplos mínimos de código com arrays e listas para que os alunos possam testar e comparar diretamente, evitando distrações com código complexo.

O que observarApresente um pequeno trecho de código que utiliza um array e peça aos alunos para identificarem o índice do terceiro elemento. De seguida, apresente um código com uma lista e pergunte como seria acedido o último elemento, focando na diferença de acesso.

AnalisarAvaliarCriarTomada de DecisãoAutogestãoCompetências Relacionais
Gerar Aula Completa

Atividade 03

Análise de Performance: Benchmarking

Individualmente, implementem um algoritmo de busca linear em array e lista com 1000 elementos. Registem tempos de execução variando tamanhos. Apresentem gráficos em plenário para debater eficiência.

Explique como a indexação é fundamental para aceder a elementos em estruturas de dados lineares.

Sugestão de FacilitaçãoNo jogo colaborativo de indexação rápida, organize equipas para que discutam em voz alta as estratégias de acesso a elementos específicos, obrigando-os a verbalizar o processo de pensamento.

O que observarColoque a seguinte questão para discussão em pequenos grupos: 'Se tivéssemos de inserir um novo elemento no início de uma coleção com 10.000 itens, qual estrutura de dados (array ou lista ligada) seria mais eficiente e porquê? Justifiquem a vossa resposta considerando as operações de deslocamento de memória.'

AnalisarAvaliarCriarTomada de DecisãoAutogestãoCompetências Relacionais
Gerar Aula Completa

Atividade 04

Aprendizagem Baseada em Problemas35 min · Pequenos grupos

Jogo Colaborativo: Indexação Rápida

Em small groups, criem um jogo onde um aluno descreve posições em arrays/listas e o grupo aponta elementos por índice. Aumentem complexidade com inserções dinâmicas e registem erros comuns.

Como a escolha entre um array e uma lista afeta a eficiência de um algoritmo?

Sugestão de FacilitaçãoNo benchmarking de performance, forneça tabelas em branco para que os alunos preencham com resultados de tempo de execução, promovendo a análise de dados e a identificação de padrões.

O que observarEntregue aos alunos um cartão com um cenário (ex: 'guardar 1000 números inteiros de uma vez' vs 'adicionar nomes de utilizadores à medida que se registam'). Peça-lhes para escreverem qual estrutura (array ou lista) seria mais apropriada e porquê, em duas frases.

AnalisarAvaliarCriarTomada de DecisãoAutogestãoCompetências Relacionais
Gerar Aula Completa

Algumas notas sobre lecionar esta unidade

Comece com analogias físicas, como filas de espera (arrays) versus elásticos (listas dinâmicas), para ancorar conceitos abstratos. Evite introduzir código antes de os alunos entenderem as operações básicas, como inserção e acesso, em contextos não-digitais. Pesquisas mostram que a resolução de problemas em papel ou com objetos concretos antes da implementação digital melhora a retenção. O foco deve estar na comparação direta de operações, não apenas na sintaxe das linguagens.

Os alunos devem distinguir quando usar arrays ou listas com base em operações comuns, como acesso por índice, inserções ou redimensionamentos, e justificar as suas escolhas com base em eficiência. Devem também explicar por que razão a indexação zero-based é fundamental para o acesso eficiente em arrays. A colaboração em atividades práticas deve evidenciar discussões sobre trade-offs e limitações reais.


Atenção a estes erros comuns

  • Durante a atividade de simulação física de Arrays vs Listas Dinâmicas, watch for alunos que assumem que arrays são sempre mais eficientes, independentemente da operação.

    Peça aos alunos que meçam o tempo de inserção no meio de uma lista de 10 elementos usando cartões. Depois, peça-lhes para simularem a mesma operação num array, deslocando físicamente os cartões. Compare os resultados e questione por que razão a lista foi mais rápida, destacando o custo de O(n) no array.

  • Durante o desafio de codificação de manipulação de dados, watch for alunos que acreditam que listas não permitem acesso por índice.

    Forneça um snippet de código em Python com uma lista e peça aos alunos para acederem ao terceiro elemento usando lista[2]. Depois, mostre-lhes como o acesso funciona internamente, percorrendo nós. Peça-lhes para cronometrar o acesso ao último elemento em listas de diferentes tamanhos e discutirem por que razão o tempo aumenta com o tamanho.

  • Durante a atividade de benchmarking de performance, watch for alunos que pensam que arrays podem ser redimensionados facilmente.

    Peça aos alunos para tentarem redimensionar um array em código, obtendo um erro explícito quando tentam adicionar um elemento além da capacidade. Depois, mostre-lhes como uma lista lida com a mesma operação, criando um novo array internamente. Discuta por que razão a operação falha em arrays e como listas lidam com ela de forma transparente.


Metodologias usadas neste resumo