Algoritmos e Estruturas de Dados (2024/2025) - Departamento de Informática

Informação adicional: http://ctp.di.fct.unl.pt/di/aed/

Descrição

Introdução dos conceitos de tipo abstracto de dados, e de algoritmos e estruturas de dados básicas, como ferramentas essenciais para resolver problemas de forma estruturada e eficiente.

Dois hábitos são particularmente exercitados no desenvolvimento de programas para problemas concretos: estruturar as soluções desenvolvidas em tipos abstractos de dados, e escolher os algoritmos e estruturas de dados adequadas ao problema em causa, de forma que a solução seja eficiente.

Objectivos

Saber: Técnicas básicas para a resolução de problemas: tipos abstractos de dados fundamentais (lista, conjunto, pilha, fila, dicionário, dicionário ordenado) e do domínio do problema; técnicas básicas de desenho de algoritmos: estruturas de dados fundamentais (vector, lista ligada simples e dupla, tabela de dispersão, árvores binárias); técnicas básicas para análise de algoritmos: complexidade espacial e temporal.

Saber Fazer: modelar programas usando tipos abstractos de dados; definir e implementar tipos abstractos de dados no domínio do problema; calcular a complexidade espacial e temporal de algoritmos; implementar os tipos abstractos de dados fundamentais, utilizando as estruturas de dados mais adequadas; conceber e implementar soluções eficientes para problemas concretos.

Soft-skills: Capacidade para avaliar soluções, capacidade para seleccionar as técnicas apropriadas a um problema; capacidade de comunicação escrita: relatórios de projetos da disciplina.

Programa
  1. Estruturação dum programa em tipos abstractos de dados.
    • Método para análise e conceção da solução
    • Definição e implementação de tipos abstractos de dados no domínio do problema
  2. Especificação formal e implementação de tipos de dados abstractos:
    • Fila
    • Pilha
    • Sequência
    • Conjunto
    • Dicionário
  3. Introdução à análise de algoritmos.Estudo das principais estruturas de dados, sempre acompanhado da análise da complexidade das primitivas suportadas, no melhor caso, no pior caso e no caso esperado.
  4. Técnicas de implementação usando:
    • Vetores.
    • Listas simplesmente e duplamente ligadas.
    • Tabelas de dispersão. Funções de dispersão. Dispersão aberta. Dispersão fechada.
    • Ordenação.
Bibliografia Principal

Mark Allen Weiss.
Data Structures and Algorithm Analysis in C (second edition).
Addison-Wesley, 1997.
ISBN 0-201-49840-5 (Hard cover)

Linguagem de Programação C

Brian Kernighan and Dennis Ritchie
The C Programming Language (second edition).
Prentice-Hall, 1988.
ISBN 0-13-110362-8 (Paperback)

Pedro Guerreiro.
Elementos de Programação com C (3ª edição).
FCA - Editora de Informática, 2005.

Luis Damas.
Linguagem C (12ª edição).
FCA - Editora de Informática, 2005.

Requisitos Prévios

Precedência obrigatória:

- Programação de Microprocessadores

Esforço do Aluno
  Horas por crédito 28
  Horas p/ semana Semanas Horas
Aulas práticas e laboratoriais 2 14 28.0
Aulas teóricas 2 14 28.0
Avaliação   7.0
Estudo   46.0
Orientação tutorial   14.0
Projectos e trabalhos   45.0
Total de Horas 168
ECTS 6.0