Algoritmos e Tipos Abstratos de Dados
-
Conhecimentos de Base Recomendados
Conhecimentos sólidos das características e semântica de uma linguagem de programação, nomeadamente:- Tipos de dados e variáveis;- Estruturas de selecção e repetição;- Uso de funções - tipos de retorno e argumentos formais e atuais.- Uso de programação procedimental. -
Objetivos
- Saber formalizar algoritmos e analisar/discutir a sua complexidade algorítmica temporal;- Saber o conceito de Tipo Abstrato de Dados (ADT) e distinguir "especificação" de "implementação";- Saber aplicar ADTs na resolução de problemas;- Saber especificar novos ADTs;- Dada a sua especificação, saber derivar uma implementação concreta para um ADT e saber discutir/comparar diferentes implementações, variando a estrutura de dados;- Aplicar algoritmia e ADTs na resolução de problemas reais, identificando os algoritmos e ADTs mais apropriados.Que o aluno adquira e consolide conhecimentos, aptidões e competências na:- Interpretação, análise, especificação e implementação de algoritmos triviais de computação, e.g., algoritmos de seleção, pesquisa, ordenação; algoritmos iterativos e recursivos; na componente de análise será dado destaque à complexidade temporal dos algoritmos;- Especificação e manipulação de estruturas de dados lineares (estáticas e dinâmicas) e tabelas de dispersão;- Compreensão, uso e implementação dos tipos abstratos de dados (do género coleção) mais comuns, e.g., Stack, Queue, List, Map;- Especificação de novos ADTs, escolha de uma estrutura de dados apropriada e sua implementação e uso;- Aplicação prática dos conteúdos programáticos em problemas reais utilizando o paradigma de programação procedimental e imperativa, incluindo domínio de ponteiros e gestão dinâmica de memória. -
Métodos de Ensino
**AULAS TP**- Transferência de conhecimento através de recursos expositivos.- Exercícios de consolidação dos conceitos.- Quizzes de feedback disponibilizados assíncronamente.**AULAS PL**- Aplicação em problemas reais do conhecimento adquirido, através de trabalhos práticos de codificação.**OUTROS**- A UC disponibiliza slides, livros próprios, fichas de exercícios, tutoriais e repositórios de código no apoio à aprendizagem, acessíveis através das plataformas Moodle e GitHub.- Moodle:- <https://moodle.ips.pt/2324/course/view.php?id=1976>- GitHub:- <https://github.com/estsetubal-atad>- <https://github.com/estsetubal-atad-2023-24-labs> -
Estágio(s)
Não
-
Programa
1. Introdução à linguagem C - procedimental e modular; diferenças em relação à linguagem Java.2. Algoritmos, complexidade algorítmica e formalização de algoritmos em pseudo-código;3. Algoritmos de pesquisa e seleção;4. Algoritmos de ordenação simples O(n²) - Bubble Sort e Selection Sort;5. Algoritmos recursivos versus iterativos; recursividade;- Exemplificação de algoritmos recursivos conhecidos: Algoritmo de ordenação Quick Sort e pesquisa binária.6. Tipos de dados estruturados, ponteiros e gestão dinâmica de memória; passagem de argumentos por cópia vs. passagem por referência.7. Tipos Abstratos de Dados na Linguagem C; especificação vs. implementação;8. Especificação e uso dos tipos abstratos de dados (do género coleção) mais comuns: Stack, Queue, List e Map.9. Definição e manipulação de estruturas de dados lineares estáticas, semi-estáticas e dinâmicas, i.e., arrays e listas ligadas;10. Implementação dos tipos abstratos de dados Stack, Queue, List e Map utilizando estruturas de dados lineares;11. Conceitos de Tabelas de dispersão para uso na implementação de dicionários, e.g., ADT Map. -
Demonstração de conteúdos
-
-
Demonstração da metodologia
-
-
Docente(s) responsável(eis)
Bruno Miguel Nunes da Silva - 2.º Semestre
-
Bibliografia
António Manuel Adrego da Rocha; Estruturas de Dados e Algoritmos em C, FCA, 2014. ISBN: 9789727227693
Bruno Silva; Linguagem C (e-book ), (unpublished)
Bruno Silva; Tipos Abstratos de Dados na Linguagem C (e-book), (unpublished)
Vinu Das; Principles of Data Structures using C and C++, New Age, 2006. ISBN: 978-81-224-2864-3
António Manuel Adrego da Rocha; Análise da Complexidade de Algoritmos, FCA, 2014. ISBN: 9789727227907
Detalhes do curso
-
Código
INF32153
-
Modo de Ensino
PRESENCIAL
-
ECTS
6.0
-
Duração
Semestral
-
Horas
30h Práticas e Laboratórios
45h Teórico-Práticas
Conteúdo atualizado em 21/03/2025 15:46
