Licenciatura

Engenharia Informática

Área Científica

Ciências Informáticas

Duração

Semestral

Unidade Curricular

Algoritmos e Estruturas de Dados

ECTS

6

Horas de Contacto Teórico Práticas

60h

OBJETIVOS DA APRENDIZAGEM

Para concluir com sucesso esta unidade curricular, os alunos deverão demonstrar possuir os seguintes conhecimentos e capacidades:

1. Compreender, saber implementar e manipular estruturas de dados do tipo array;

2. Compreender, saber implementar e manipular pilhas e filas de espera;

3. Compreender e saber implementar técnicas de programação recursivas;

4. Compreender, saber implementar e manipular linked lists (listas encadeadas);

5. Compreender, saber implementar e manipular árvores.

Os algoritmos e estruturas de dados serão implementados usando as linguagens C e C++.

PROGRAMA

1. Introdução à Algoritmia e Estruturas de Dados

2. Vetores – Arrays

2.1 Introdução aos vetores

2.2 Implementação de um vetor

2.3. Adicionar, alterar e remover elementos de um vetor

2.4 Ordenação de um vetor

2.5 Pesquisa sequencial e pesquisa binária ou dicotómica

3. Pilhas e Filas de Espera

3.1. O que são Pilhas

3.2. Implementar uma Pilha

3.3. Adicionar, alterar e remover elementos a uma Pilha

3.7. O que são Filas de Espera

3.8. Implementar uma Fila de Espera

3.9. Adicionar, alterar e remover itens a uma fila de espera

4. Recursividade – Conceitos e técnicas

4.1. Recursividade – Conceitos base

4.2. Função Factorial

4.3. Recursão excessiva – Fibonacci Numbers

4.4. Tail Recursion

4.5. Problemas na utilização de funções recursivas

5. Listas encadeadas

5.1. Listas simplesmente encadeadas

5.2. Criar uma lista simplesmente encadeada

5.3. Percurso e localização de um item

5.4. Adicionar, alterar e remover itens em qualquer ponto de uma lista simplesmente encadeada

5.5 Listas duplamente encadeadas

5.6 Implementar uma lista duplamente encadeada

5.7 Adicionar, alterar e remover itens de uma lista duplamente encadeada

5.8 Listas encadeadas circulares

5.9. Implementar uma lista encadeada circular

5.10. Adicionar, alterar ou remover um conjunto de itens a uma lista encadeada circular

6. Árvores

6.1. Conceitos base

6.2. Representação de árvores

6.3. Árvores binárias

6.4. Árvores de ordenação binária

6.5. Atravessamento de uma árvore

6.6. Localizar e inserir itens em árvores de ordenação binária

6.7. Implementar uma árvore de ordenação binária

6.8. Inserir um nó numa árvore de ordenação binária

6.9. Verificar se existe um dado nó numa árvore de ordenação binária

6.10. Calcular o número de nós da árvore de ordenação binária

DEMONSTRAÇÃO DE COERÊNCIA ENTRE CONTEÚDOS PROGRAMÁTICOS E RESULTADOS DA APRENDIZAGEM

O objetivo 1 é atingido através dos pontos 2.1 a 2.5. Os pontos 3.1 a 3.9 permitem atingir o objetivo 2. O objetivo 3 é atingido através dos pontos 4.1 a 4.5. Os pontos 5.1 a 5.10 permitem alcançar o objetivo 4. O objetivo 5 é atingido através dos pontos 6.1 a 6.10.

METODOLOGIA DE ENSINO E AVALIAÇÃO

As aulas desta unidade curricular são de natureza teórico-prática. Estão previstas 60 horas de contato. O tempo total de trabalho do aluno corresponde a 162 horas. Em todas as aulas, exercícios de aplicação prática dos algoritmos e das estruturas de dados complementam a exposição teórica dos apresentados. Esta metodologia permite que os alunos adquiram, não apenas os conhecimentos teóricos, mas também as necessárias competências para aplicar as estruturas de dados a situações práticas simuladas.

De acordo com o Regulamento de Funcionamento do ISTEC a avaliação é efetuada através de um exame escrito individual e obrigatório. Na classificação final, poderão ser considerados elementos de avaliação contínua, tais como testes, trabalhos individuais ou em grupo, assim como a participação nas aulas presenciais e em recursos de aprendizagem proporcionados por sistemas de e-learning.

DEMONSTRAÇÃO DE COERÊNCIA ENTRE METODOLOGIAS DE ENSINO E RESULTADOS DE APRENDIZAGEM

A obtenção dos objetivos da unidade curricular é assegurada pela natureza teórico-prática das aulas da unidade curricular que são planeadas para permitir a compreensão teórica e prática dos conceitos, partindo das estruturas de dados mais simples para as construções mais complexas.

BIBLIOGRAFIA

Fundamental:
Rocha, António A., Estruturas de Dados e Algoritmos em C, 2014, 3ª. edição, FCA, ISBN 978-972-722-769-3.
Shaffer, Clifford A. Data Structures and Algorithm Analysis in C++, Third Edition (2011)

Complementar:
Goodrich, Michael T.; Tamassia, Roberto e Mount, David M. Data Structures and Algorithms in C++, Second Edition, John Wiley & Sons

INTERNET:
Acesso a publicações da especialidade, gratuitamente, através da rede SPRINGER:
https://link.springer.com/