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.

Estruturas, vectores de estruturas e estruturas de vectores.

Ordenação elementar

Algoritmos de ordenação.

Ordenação por selection, insertion, bubble, quick, merge.

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.

Funções: passagem por referência e manipulação de strings.
Reserva dinâmica de memória: strings, estruturas e vectores de estruturas.

Listas simplesmente ligadas

Listas simplesmente ligadas.

Reserva e libertação dos elementos da lista.
Inserções na lista: início, fim e em posição.

Hash tables

Hash-tables: encadeamento externo, linear probing, double-hashing.

Árvores

Árvores: binárias e AVL.

Grafos

Estrutura de grafos.

Operações simples em grafos.