Número | Datas | Assunto | Acetatos |
---|---|---|---|
1 |
19 Fevereiro |
Apresentação da ficha da disciplina. Introdução à programação estruturada em C++ (extensões ao C) |
|
2 |
22 ou 23 de Fevereiro |
Entrada e saída de dados e manipulação de ficheiros de texto com "streams"; comentários até ao fim da linha; declaração de variáveis; constantes simbólicas; coerção de tipos; o tipo de dados "bool". | - |
3 |
1 ou 2 de Março |
Funções: passagem de argumentos por referência; funções que retornam referências; utilização de "const" em argumentos de funções; argumentos por omisão; funções "inline"; sobrecarga de funções; padrões ("templates") de funções. | - |
4 |
6 de Março |
Alocação e libertação de memória dinâmica com "new" e "delete". Algoritmos de pesquisa e ordenação de arrays: pesquisa sequencial, pesquisa binária, |
- |
5 |
8 ou 9 de Março |
Ordenação por inserção; ordenação por partição. Análise de algoritmos: noção de complexidade temporal e espacial; notação de O grande; aplicação aos algoritmos de pesquisa e ordenação de arrays. |
|
6 |
13 de Março |
Introdução à programação orientada por objectos em C++ (classes): conceito de objecto e classe; membros-função; restrições de acesso a membros; separação de interface e implementação; | |
7 |
15 ou 16 de Março |
Construtores e destrutores; objectos e membros constantes; inicializadores de membros; composição de classes; o apontador "this"; membros estáticos; classes e funções "friend"; construtor de cópia; criação e destruição de objectos com "new" e "delete". | - |
8 |
20 de Março |
Classes derivadas: relação "is a", herança e classes derivadas; composição versus herança; herança pública, privada e protegida; hierarquias de classes; | - |
9 |
22 ou 23 de Março |
Funções virtuais e polimorfismo; funções virtuais puras e classes abstractas; classes de interface e classes de implementação; herança múltipla; classes base replicadas e classes base virtuais; apontadores para membros-função. | - |
10 |
27 de Março |
Sobrecarga de operadores. | - |
11 |
29 ou 30 de Março |
Padrões ("templates") de classes. Tratamento de excepções. |
- |
12 |
3 de Abril |
Listas Lineares: o tipo de dados abstracto; representação em array; representação ligada em cadeia; listas circulares e listas duplamente ligadas | |
13 |
5 ou 6 de Abril |
Representação por endereçamento indirecto. | - |
14 |
19 ou 20 de Abril |
Representação por simulação de apontadores; aplicações de listas lineares. | - |
15 |
24 de Abril |
Pilhas: tipo de dados abstracto; implementação baseada em array; implementação baseada em cadeia; exemplo de aplicação. | |
16 |
26 ou 27 de Abril |
Filas: tipo de dados abstracto; implementação baseada em array; implementação baseada em cadeia; exemplo de aplicação. | |
17 |
3 ou 4 de Maio |
Á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. Tipo de dados abstracto BinaryTree. | |
18 |
15 de Maio |
Classe C++ BinaryTree para implementar uma árvore binária; percorrer a árvore em profundidade e em largura. Aplicação de árvores binárias; redes de distribuição. |
- |
19 |
17 ou 18 de Maio |
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). | |
20 |
22 de Maio |
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. | |
21 |
24 ou 25 de Maio |
Grafos: definições e propriedades; Tipo de dados abstracto Grafo e Digrafo; representação de grafos em matriz das adjacências, lista empacotada de adjacências e cadeia de adjacências; representação de redes e matriz de custos; implementação das classes C++ para grafos, digrados com e sem pesos usando a matriz das adjacências e usando a lista encadeada de adjacências. | |
22 |
29 de Maio |
Iteradores para listas de adjacências; algoritmo de procura em largura (BFS) e em profundidade (DFS). | - |
23 |
31 de Maio ou 1 de Junho |
Implementação de BFS e DFS em C++; exemplos de aplicação (caminhos, etiquetar componentes). | - |
24 |
4 de Junho |
Resolução de exame-tipo | - |
25 |
7 ou 8 de Junho |
Resolução de exame-tipo | - |