Licenciatura em Engenharia Electrotécnica e de Computadores
Algoritmos e Estruturas de Dados
Ano lectivo de 2000/2001
Turma 2E1-7

Sumários das aulas

Número Datas Assunto Comentário

1

20-02-2001

Apresentação da ficha da disciplina. Introdução à programação estruturada em C++, focando diferenças em relação ao C.

parte-1.pdf

2

22-02-2001

Entrada e saída de dados e manipulação de ficheiros com "streams"; o tipo de dados "bool"; pontos de declaração de variáveis; declaração de variáveis com "const"; coerção de tipos; referências e passagem de argumentos por referência; argumentos por omissão; nomes de funções "overloaded".

--

3

01-03-2001

"Templates" de funções; funções "inline"; utilização de variáveis locais com alocação estática; revisão de apontadores e relação entre apontadores e "arrays".

--

4

06-03-2001

Alocação e libertação de memória com new e delete; aplicação a "arrays" dinâmicos; relação entre apontadores e "strings".

--

5

08-03-2001

Análise de algoritmos: noção de complexidade temporal e espacial; notação de O grande. Algoritmo de pesquisa sequencial.

parte-2.pdf

6

13-03-2001

Algoritmos de pesquisa binária, ordenação por inserção e ordenação por partição.

parte-3.pdf

7

15-03-2001

Algoritmos de ordenação por partição (conclusão).

--

8

20-03-2001

Introdução à programação orientada por objectos em C++: conceito de programação orientada por objectos; conceito de classe e conceito de objecto em C++; membros-função; restrições de acesso a membros.

--

9

22-03-2001

Não houve aulas na FEUP.

--

10

27-03-2001

Construtores e destrutores; objectos e membros constantes; inicializadores de membros; composição de classes; o apontador this; membros estáticos.

--

11

29-03-2001

Funções e classes "friend"; construtor de cópia; criação e destruição de objectos com new e delete. Classes derivadas e herança.

--

12

03-04-2001

Funções virtuais e polimorfismo. Funções virtuais puras e classes abstractas. Classes de interface e classes de implementação.

--

13

05-04-2001

Overloading de operadores. "Templates" de classes. Tratamento de excepções.

--

14

19-04-2001

Listas Lineares: o tipo de dados abstracto; representação em array. listas.pdf

15

24-04-2001

Listas Lineares: representação ligada em cadeia; listas circulares e listas duplamente ligadas.

--

16

26-04-2001

Listas Lineares: representação por endereçamento indirecto; representação por simulação de apontadores.
Comparação das várias implementações e exemplo de aplicação de listas.

--

17

03-05-2001

Pilhas: tipo de dados abstracto; implementação baseada em array; implementação baseada em cadeia; exemplo de aplicação. pilhas.pdf

18

15-05-2001

Filas: tipo de dados abstracto; implementação baseada em array; implementação baseada em cadeia. Exemplo de aplicação de filas.

filas.pdf

19

17-05-2001

Árvores: definições; árvores binárias; representação de árvores baseada em fórmula; representação ligada; percorrer a árvore em profundidade (pré-order, em-ordem e pós-ordem) e em largura.

trees.pdf

20

22-05-2001

Tipo de dados abstracto BinaryTree. Classe C++ BinaryTree para implementar uma árvore binária; percorrer a árvore em profundidade e em largura.
Aplicação de árvores binárias: rede de distribuição.

--

21

24-05-2001

Filas de prioridade: tipo de dados abstracto MaxPriorityQueue; utilização de Heaps; representação em array de Heaps e algoritmos associados; implementação em C++ da classe MaxHeap.
Aplicação à ordenação de arrays (HeapSort).

heaps.pdf

22

29-05-2001

Hashing: dicionários, tabelas de dispersão ("hash"), implementação em C++ da classe HashTable; aplicação à compressão de ficheiros segundo o algoritmo LZW.

hash.pdf

23

31-05-2001

Discussão e resolução de exame exemplo: exame realizado em 16/6/2000.

exame de 16/6/2000

24

05-06-2001

Discussão e resolução de exame exemplo: exame realizado em 18/6/1999.

exame de 18/6/1999

25

07-06-2001

Discussão e resolução de exame exemplo: exame realizado em 10/7/2000

exame de 10/7/2000