Planeamento
Aulas Teóricas
Apresentação
Apresentação; Breve introdução à linguagem C e ao Linux. Exemplos.
Introdução à linguagem C
Linguagem C: tipos, operadores e estruturas de controlo. Exemplos.
Input e output em C
Introdução à programação em C: Input/Output. Exemplos.
Vectores e Strings
Introdução à programação em C: tabelas unidimensionais, bidimensionais e strings. Exemplos.
Funções
Introdução à programação em C: Funções.
Elementos da linguagem C
Linguagem C: sintaxe, tipos, estrutura.
Estruturas
Linguagem C: estruturas de dados. Exemplos.
Introdução aos algoritmos
Introdução aos algoritmos: crescimento de funções, notação assimptótica.
Algoritmos de ordenação elementares
Algoritmos de ordenação elementares: bubble, selection e insertion.
Algoritmos de ordenação eficientes
Algoritmos de ordenação eficientes: quick e merge sort.
Algoritmos de ordenação eficientes
Algoritmos de ordenação eficientes: heap sort.
Algoritmos de ordenação eficientes
Algoritmos de ordenação eficientes: radix sort (LSB e MSB).
Ponteiros
Linguagem C: introdução aos ponteiros.
Ponteiros
Linguagem C: ponteiros e tabelas. Exercícios.
Reserva dinâmica de memória
Reserva dinâmica de memória: malloc e free.
Ponteiros para estruturas
Linguagem C: ponteiros para estruturas.
Estruturas auto-referenciadas
Linguagem C: estruturas auto-referenciadas.
Tipos de dados abstractos
Tipos de dados abstractos (ADTs).
Tabelas de dispersão
Tabelas de dispersão (hash tables).
Árvores binárias
Árvores binárias.
Árvores equilibradas
Árvores equilibradas: AVL (Adelson-Velsky and Landis).
Introdução aos grafos
Introdução aos grafos: representação.
Introdução aos grafos
Introdução aos grafos: algoritmos elementares.
Revisões
Revisões.
Dúvidas
Dúvidas.
Aulas Laboratoriais
Introdução à utilização da linguagem C.
Introdução à utilização da linguagem C: compilação e execução de exemplos simples.
Introdução à programação em C
Codificação em C de exemplos em python e diretamente.
Programação em C: funções
Programação em C: construção de exemplos simples com variáveis escalares.
Vectores e strings
Construção de exemplos com vectores e strings.
Matrizes e vectores de estruturas
Matrizes a duas dimensões.
Ordenação elementar
Algoritmos de ordenação.
Ordenação eficiente
Algoritmos de ordenação: merge, heap, counting e radix (LSD e MSD)
Ponteiros e reserva dinâmica de memória
Declaração e manipulação de ponteiros.
Listas simplesmente ligadas
Listas simplesmente ligadas.
Hash tables
Hash-tables: encadeamento externo, linear probing, double-hashing.
Árvores
Árvores: binárias e AVL.
Grafos
Estrutura de grafos.