Back

Algoritmos e Tipos Abstratos de Dados

    Detalhes do curso

  • Conhecimentos de Base Recomendados

    Conhecimentos iniciais da linguagem de programação JAVA.

  • Objetivos

     O aluno deve adquirir e consolidar 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 estuturas de dados lineares (estáticas e dinâmicas) e tabelas de dispersão;
    - comprensã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 TAD, escolha de uma estrutura de dados apropriada e sua implementação e uso;
    - (paralelamente) aquisição de competências  em programação orientada a objetos e uso de tipos genéricos e exceções na implementação de TADs.


    Os alunos devem ser capazes de analisar um problema e escolher algortimos apropriados para sua solução de forma a minimizar, principalmente, os custos de tempo de processamento e memória utilizando para tanto os recursos da linguagem de programação proposta para o trabalho.

  • Métodos de Ensino

    Aulas  teórico-práticas com proposição de exercícios e projeto prático.

  • Estágio(s)

    Não

  • Programa


    • Algoritmos, complexidade algorítmica e formalização de algoritmos em pseudo-código;

    • Algoritmos de pesquisa e seleção;

    • Algoritmos de ordenação simples O(n²) - Bubble Sort e Selection Sort;

    • Algoritmos recursivos versus iterativos;

    • Algoritmo de ordenação complexa, e.g., O(n log n) - Quick Sort;

    • Tipos de dados referenciados, tipos genéricos e recapitulação de conceitos de interfaces e exceções.

    • Utilização de um TAD dada a sua interface; criação de unidades de teste para validação de implementações de TAD;

    • Definição e manipulação de uma estrutura de dados linear estática, e.g. arraylist;

    • Especificação e implementação dos tipos abstratos de dados (do género coleção) mais comuns, e.g. Stack, Queue, List e Map, recorrendo a uma estrutura de dados estática;

    • Implementação e manipulação de estruturas de dados lineares dinâmicas, e.g. listas ligadas;

    • Implementação dos tipos abstratos de dados anteriores, recorrendo a uma estrutura de dados dinâmica;

    • Tabelas de dispersão e uso desta estrutura de dados numa implementação do TAD Map (=Hash tables).

  • Demonstração de conteúdos

    -

  • Demonstração da metodologia

    -

  • Docente(s) responsável(eis)

    Bruno Miguel Nunes da Silva - 1.º Semestre

  • Bibliografia

    António Adegro da Rocha; ESTRUTURAS DE DADOS E ALGORITMOS EM JAVA
    António Adrego da Rocha; ANÁLISE DA COMPLEXIDADE DE ALGORITMOS

  • Código

    TINF19

  • Modo de Ensino

    PRESENCIAL

  • ECTS

    6.0

  • Duração

    Semestral

  • Horas

    60h Teórico-Práticas

Conteúdo atualizado em 09/03/2025 23:15
Visão Geral da Privacidade

Este site utiliza cookies para oferecer a melhor experiência possível. As informações dos cookies são armazenadas no navegador e permitem funcionalidades como reconhecer cada visitante 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 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.