Skip to content
Informática · 10.º Ano

Ideias de aprendizagem ativa

Eficiência Algorítmica e Complexidade

Os alunos aprendem melhor sobre eficiência algorítmica quando experimentam diretamente os impactos práticos de diferentes abordagens. Esta unidade trabalha com situações concretas, como ordenar listas ou procurar elementos, para que os alunos sintam as consequências de escolhas algorítmicas em tempo real, tornando abstrato em tangível.

Aprendizagens EssenciaisDGE: Secundário - Pensamento ComputacionalDGE: Secundário - Resolução de Problemas
30–50 minPares → Turma inteira4 atividades

Atividade 01

Comparação Direta: Ordenação de Listas

Divida a turma em pares e forneça listas de números para implementar dois algoritmos de ordenação em Python, como bubble sort e merge sort. Cada par cronometra a execução para 100, 1000 e 10000 elementos, registando tempos numa tabela partilhada. Discuta os resultados em plenário.

Compare diferentes algoritmos para o mesmo problema em termos de eficiência.

Sugestão de FacilitaçãoPara a Comparação Direta, forneça listas de diferentes tamanhos pré-preparadas e cronometre execuções reais usando a função time() do Python, para que os alunos vejam os tempos crescentes.

O que observarApresentar aos alunos dois pequenos trechos de código que resolvem o mesmo problema (ex: encontrar o maior elemento numa lista) com abordagens diferentes. Pedir-lhes para identificar qual é mais eficiente e justificar a sua resposta usando a notação Big O.

AnalisarAvaliarCriarTomada de DecisãoAutogestão
Gerar Aula Completa

Atividade 02

Análise de Estudo de Caso30 min · Pequenos grupos

Simulação Física: Procura Linear vs Binária

Use baralhos de cartas ordenadas para simular procura linear e binária em pequenos grupos. Cronometre buscas em pilhas de 20, 50 e 100 cartas, comparando eficiência. Registe dados num gráfico e preveja escalabilidade para grandes volumes.

Avalie como o volume de dados afeta o desempenho de uma solução algorítmica.

Sugestão de FacilitaçãoNa Simulação Física, use um tabuleiro com números escritos em cartões para que os alunos simulem pesquisa linear e binária, registando passos e tempos manualmente.

O que observarColocar a seguinte questão para discussão em grupo: 'Imaginem que estão a desenvolver uma aplicação para gerir o inventário de uma pequena loja vs. uma grande cadeia de supermercados. Que tipo de algoritmo de pesquisa escolheriam para cada caso e porquê, considerando a eficiência e a complexidade do código?'

AnalisarAvaliarCriarTomada de DecisãoAutogestão
Gerar Aula Completa

Atividade 03

Análise de Estudo de Caso35 min · Individual

Análise de Trade-offs: Código Simples vs Otimizado

Em individual, os alunos reescrevem um algoritmo ineficiente para um problema como soma de subarrays, testando versões em diferentes tamanhos de input. Partilhem métricas de tempo e memória no final, justificando escolhas.

Justifique os compromissos entre a simplicidade do código e a velocidade de execução.

Sugestão de FacilitaçãoDurante a Análise de Trade-offs, peça aos alunos para medirem o desempenho de um algoritmo simples de ordenação por inserção e de um mais complexo de ordenação por fusão com conjuntos de 10, 100 e 1000 elementos.

O que observarPedir aos alunos para escreverem num pequeno papel: 1) Um exemplo de um problema onde a complexidade O(n²) seria aceitável. 2) Um exemplo de um problema onde seria crucial usar um algoritmo com complexidade O(n log n) ou inferior.

AnalisarAvaliarCriarTomada de DecisãoAutogestão
Gerar Aula Completa

Atividade 04

Análise de Estudo de Caso50 min · Pequenos grupos

Desafio em Rotação: Problemas Escaláveis

Crie estações com problemas como grafos ou buscas; grupos rotacionam, implementando soluções e medindo desempenho. Compile resultados numa apresentação coletiva.

Compare diferentes algoritmos para o mesmo problema em termos de eficiência.

Sugestão de FacilitaçãoNo Desafio em Rotação, prepare problemas escaláveis como 'Encontrar pares em uma lista' com soluções O(n²) e O(n log n), para que os alunos testem e discutam limitações.

O que observarApresentar aos alunos dois pequenos trechos de código que resolvem o mesmo problema (ex: encontrar o maior elemento numa lista) com abordagens diferentes. Pedir-lhes para identificar qual é mais eficiente e justificar a sua resposta usando a notação Big O.

AnalisarAvaliarCriarTomada de DecisãoAutogestão
Gerar Aula Completa

Algumas notas sobre lecionar esta unidade

Ensine eficiência algorítmica começando com exemplos do quotidiano, como organizar uma estante de livros ou procurar um nome numa lista telefónica. Evite começar por fórmulas ou teoria abstrata. Use analogias físicas, como comparar caminhar linha a linha versus usar um índice de livro, para solidificar conceitos. Pesquisas mostram que alunos retêm melhor quando associam complexidade a situações reais do que a símbolos matemáticos isolados.

Os alunos demonstram compreensão ao comparar desempenhos de algoritmos, justificar trade-offs entre simplicidade e velocidade, e aplicar notação Big O para classificar soluções. O sucesso é visível quando conseguem prever o comportamento de algoritmos em diferentes cenários de dados.


Atenção a estes erros comuns

  • Durante a Comparação Direta, os alunos podem pensar que 'Mais linhas de código significam sempre maior lentidão'.

    Use os exemplos de ordenação por inserção (simples, mas O(n²)) e ordenação por fusão (complexa, mas O(n log n)) para mostrar que a estrutura do algoritmo é mais importante do que o número de linhas. Peça aos alunos que meçam tempos reais com listas de 1000 elementos para perceberem a diferença.

  • Durante a Simulação Física, os alunos podem acreditar que 'Todos os algoritmos funcionam bem com grandes dados'.

    Use conjuntos de dados crescentes (10, 100, 1000 elementos) e registre os tempos de pesquisa linear e binária. Os alunos verão que a pesquisa linear se torna inviável com dados grandes, enquanto a binária mantém um desempenho estável. Discuta os resultados em grupo para corrigir esta ideia.

  • Durante o Desafio em Rotação, os alunos podem pensar que 'Eficiência só importa em computadores potentes'.

    Use dispositivos simples, como calculadoras ou blocos de notas, para executar os algoritmos. Os alunos verão que mesmo em ambientes limitados, a escolha do algoritmo afeta drasticamente o tempo de resposta. Relacione isto a situações do mundo real, como gerir inventários em pequenas lojas.


Metodologias usadas neste resumo