Back

Algoritmos e Tipos Abstratos de Dados

    Detalhes do curso

  • 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

  • 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
Visão Geral da Privacidade
Escola Superior de Educação - ESE/IPS

Este site utiliza cookies para lhe oferecer a melhor experiência possível. As informações dos cookies são armazenadas no seu navegador e permitem funcionalidades como reconhecê-lo quando regressa ao nosso site e ajudar a nossa equipa a perceber quais as secções que considera mais interessantes e úteis.

Cookies Estritamente Necessários

Os cookies estritamente necessários devem estar sempre ativados para que possamos guardar as suas preferências de configuração de cookies.

Cookies de Terceiros

Este site utiliza o Google Analytics para recolher informação anónima, como o número de visitantes do site e as páginas mais populares. Manter este cookie ativado ajuda-nos a melhorar o nosso website.