Conhecimentos de Base Recomendados
N/A
Métodos de Ensino
Não disponível.
Resultados de Aprendizagem
No final da unidade curricular o aluno deverá ficar habilitado a:
• conhecer diferentes estruturas para guardar e manipular dados na memória;
• distinguir estruturas estáticas de estruturas dinâmicas;
• escolher, definir e utilizar a estrutura de dados mais adequada para cada problema;
• desenvolver e implementar algoritmos que permitam manipular diferentes estruturas de dados, em C;
• implementar algoritmos iterativos e recursivos para resolver problemas;
• compreender a noção de complexidade e escolher entre dois ou mais algoritmos para resolver o mesmo
problema (tendo em conta o esforço computacional de cada um).
Programa
1. Algoritmos de Ordenação e Pesquisa
a. Ingénuos
b. Eficientes
2. Manipulação de ficheiros em C (criação, abertura, leitura, escrita)
a. Ficheiros de texto
b. Ficheiros binários
3. Estruturas
a. Definição, declaração, atribuição
b. typedef
c. Tabelas de estruturas
4. Ponteiros
a. Conceitos de ponteiros
b. Aritmética de ponteiros
c. Ponteiros e subprogramas
c. Tabelas e ponteiros
d. Estruturas e ponteiros
e. Alocação dinâmica de memória
5. Estruturas dinâmicas
a. Listas ligadas: Simples, Duplamente ligadas, Circulares
b. Árvores
c. Tipos Abstratos de Dados: Pilha, Fila, Dicionário
6. Recursividade
a. Divisão e conquista
b. Função-memória
7. Introdução ao estudo da eficiência de algoritmos
a. Complexidade temporal e espacial
b. Análise de complexidade no melhor caso, no pior caso e no caso médio
Estágio(s)
NAO
Bibliografia
Damas, L. (2019). Linguagem C. (24ª edição). FCA.
Rocha, A. (2014). Análise de complexidade de algoritmos. FCA.
Rocha, A. (2014). Estruturas de dados e algoritmos em C. FCA.
Szuhay, J. (2020). Learn C Programming: A beginner’s guide to learning C programming the easy and disciplined
way. Packt publishing.
Vasconcelos, J. & Carvalho, A. (2005). Algoritmia e estruturas de dados: Programação nas linguagens C e java.
Edições Centro Atlântico.