Publicação em Diário da República: Despacho n.º 7795/2021 - 09/08/2021
6 ECTS; 1º Ano, 2º Semestre, 42,0 PL + 28,0 TP , Cód. 911240.
Docente(s)
- Pedro Daniel Frazão Correia (1)(2)
(1) Docente Responsável
(2) Docente que lecciona
Pré-requisitos
Conceitos de programação e algoritmia. Conhecimentos elementares de C.
Objetivos
1. Adquirir conhecimentos sobre aspetos avançados da linguagem de programação C, tais como: apontadores; funções e passagem de parâmetros; estruturas; memória dinâmica.
2. Aprender a implementar e consumir estruturas de dados elementares, utilizando a linguagem de programação C e Tipos de Dados Abstratos (ADTs-Abstract Data Types).
3. Aprender técnicas de análise e desenho de algoritmos e como classificar algoritmos segundo a estimativa do seu tempo de execução.
4. Aprender a implementar algoritmos de ordenação.
5. Aprender a implementar e consumir estruturas de dados hierárquicas, utilizando a linguagem de programação C e Tipos de Dados Abstratos (ADTs-Abstract Data Types).
Programa
1. Aspetos avançados da linguagem C
1.1. Apontadores
1.1.1. Apontadores e tabelas
1.1.2. Aritmética de apontadores
1.1.3. Apontadores de apontadores
1.2. Passagem de parâmetros para funções
1.2.1. Passagem por valor
1.2.2. Passagem por referência
1.2.3. Passagem de tabelas
1.2.4. Passagem de parâmetros na linha de comando
1.3.vEstruturas
1.3.1. Acesso aos membros de uma estrutura
1.3.2. Estruturas aninhadas
1.3.3. Passagem de estruturas para funções
1.3.4. Operações sobre estruturas
1.4. Memória Dinâmica
1.4.1.vAlocação de memória
1.4.2. Libertação de memória
1.4.3. Estruturas de dados dinâmicas
2. Estruturas Elementares de Dados
2.1. Listas ligadas
2.2. Listas duplamente ligadas
2.3. Filas
2.4. Pilhas
3. Análise e desenho de algoritmos
3.1. Técnicas de análise e desenho de algoritmos
3.2. Notação Big-O
4. Algoritmos de ordenação
4.1. Selection Sort
4.2. Bubble Sort
4.3. Insertion Sort
5. Estruturas de dados hierárquicas
5.1. Árvores binárias
5.2. Operações sobre árvores binárias
5.3. Travessias
Metodologia de avaliação
Avaliação em Época de Frequência:
- Testes Práticos (20% - 4 Valores)
- Trabalho Prático (30% - 6 Valores)
- Teste escrito (50% - 10 Valores)
Outras Épocas de Exame:
- Teste Prático (20% - 4 Valores)
- Exame escrito (30% - 6 Valores)
- Trabalho Prático (50% - 10 Valores)
Todas as épocas de avaliação:
- Notas mínimas: Testes Escritos, 7 valores; Trabalhos Práticos, 10 valores
Bibliografia
- Adrego da Rocha, A. (2014). Estruturas de Dados e Algoritmos em C. PT: FCA
- Damas, L. (1999). Linguagem C. Portugal: FCA
- Rivest, R. e Stein, C. e Leiserson, C. e Cormen, T. (2009). Introduction to Algorithms, Third Edition. USA: MIT Press
- Sedgewick, R. (1997). Algorithms in C, Parts 1-4 Fundamentals,Data Structures, Sorting, Searching. USA: Addison-Wesley
- W. Kernighan, B. e Ritchie, D. (1988). The C Programming Language. USA: Pearson
Método de Ensino
Aulas expositivas para apresentação dos conteúdos teóricos do programa; Aulas práticas laboratoriais para resolução de problemas e consolidação de conhecimentos utilizando o computador; Apoio tutorial para esclarecimento de dúvidas.
Software utilizado nas aulas
Code Blocks; MinGW / GCC / GDB
Aprovado em Conselho Técnico Cientifico: 06 de maio de 2022
Download da Ficha da Unidade Curricular (FUC)