Planeamento
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: carateres
Programação em C: construção de exemplos simples com carateres.
Vectores e strings
Construção de exemplos com vectores e cadeias de carateres.
Matrizes e vectores de estruturas
Depurador de código: debugger
Ordenação elementar
Algoritmos de ordenação.
Gestão de memória
Listas simplesmente ligadas
Listas simplesmente ligadas.
Hash tables
Hash-tables: encadeamento externo, linear probing, double-hashing.
Árvores
Árvores: binárias e AVL.
Ordenação eficiente
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).