Algoritmos e Estruturas de Dados

Conhecimentos de Base Recomendados

Não existem conhecimentos base recomendados.

Métodos de Ensino

De acordo com os objetivos do curso, as suas condições de realização e o público alvo são utilizadas metodologias e estratégias que permitam à turma apreender e compreender os conteúdos lecionados da melhor forma:

1. Método expositivo: exposição oral de conteúdos teóricos com recurso a apresentações multimédia, tal como utilização de programas específicos e recursos;

2. Método interrogativo: através de questões individuais ou direcionadas ao grupo no decorrer das aulas, permitindo obter feedback imediato sobre os conteúdos abordados;

3. Método ativo: será utilizado com recurso a várias técnicas como, realização de discussões/debates sobre as temáticas desenvolvidas, estudos de caso relativamente a factos importantes na área das ciências informáticas, resolução de problemas e desenvolvimento de trabalhos individuais;

4. Método demonstrativo.

Resultados de Aprendizagem

Depois de frequentar a unidade curricular espera-se que cada aluno seja capaz de

  • reconhecer 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 para, ao analisar um problema, escolher os algoritmos mais eficientes para resolver o problema (tendo em conta o esforço computacional de cada um).

Programa

  1. Tipos Abstratos de Dados
    a. Pilha (disciplina LIFO)
    b. Fila (disciplina FIFO)
    c. Lista (acesso por posição)
    d. Dicionário (acesso por chave): não ordenado e ordenado
  2. Estruturas de Dados
    a. Listas circulares
    b. Listas simplesmente e duplamente ligadas
    c. Tabelas de dispersão
    d. Árvores genéricas
    e. Árvores binárias
    f. Árvores binárias de pesquisa: árvores sem restrições, árvores AVL.
    g. Heaps
  3. Introdução ao estudo da eficiência de algoritmos
    a. Complexidade temporal e espacial
    b. Complexidade no melhor caso, no pior caso e no caso esperado
  4. Introdução à Recursividade
    a. Divisão e conquista
    b. Função-memória
  5. Algoritmos de Ordenação
    a. Ingénuos
    b. Eficientes

Docente(s) responsável(eis)

Estágio(s)

NAO

Bibliografia

Damas, L. (2019). Linguagem C. 24ª edição. FCA.

Rocha, A. A. (2014). Análise da complexidade de algoritmos. FCA.

Rocha, A. A. (2014). Estruturas de dados e algoritmos em C. 3ª edição. FCA.

Vasconcelos, J. & Carvalho, A. (2005). Algoritmia e estruturas de dados: Programação nas linguagens C e java. Edições Centro Atlântico.