Imprimir / PDF

Propaganda
Complementos de Programação
Código: 425202
ECTS: 6
Ano Letivo: 2015/16
Carga horária: T: 2:00 h; TP: 1:30 h; OT: 2:00 h;
Departamento: Informática
Área Científica: Informática; Objetivos da Unidade Curricular
Proporcionar ao aluno uma introdução às técnicas de estruturação de dados no contexto da metodologia de programação centrada em objectos baseada
em contratos. Aprofundar o estudo desta metodologia, com ênfase para os princípios de abstracção e modularização, bem como nos mecanismos de
correcção e robustez. Introdução às técnicas algorítmicas mais comuns.
Pré-requisitos
Introdução à Programação (26722)
Conteúdos
Eficiência de Algoritmos.
Pilhas e operações sobre pilhas.
Filas e operações sobre filas.
Iteradores e sua utilização.
Algoritmos recursivos.
Árvores e suas propriedades.
Conjuntos, mapas e tabelas de dispersão.
Ordenação.
Filas com prioridade.
Árvores AVL.
Descrição detalhada dos conteúdos programáticos
Componente Teórica
Eficiência de Algoritmos. A notação O-grande. Comparação de eficiências de algoritmos e alguns exemplos.
Pilhas e operações sobre pilhas. Algum exemplos de aplicação. Implementação de pilhas sobre diferentes estruturas.
Especificação formal da pilha: géneros, assinaturas e domínios das operações. Axiomas. Refinamento: a especificação para uma classe Java. Especificação
formal de uma fila. Ligação a uma classe Java.
Iteradores e sua utilização.
Algoritmos recursivos, pilha de execução e registos de activação. Busca binária num array.
Árvores e suas propriedades. Travessia prefixa, infixa e sufixa. Árvores binárias: Especificação, Refinamento, Implementação utilizando nós ligados entre si.
Árvores de pesquisa.
Conjuntos, mapas e tabelas de dispersão. Valor de dispersão e cálculo do índice na tabela. Colisões e sua resolução: método de endereçamento aberto.
Operações de inserção, pesquisa e remoção.
Ordenação. Algoritmos quadráticos: ordenação por selecção (SelectionSort) e por inserção (InsertionSort). Análise do número de comparações e de trocas,
no melhor e no pior caso.
Filas com prioridade. Amontoados. Algoritmos de inserção e remoção. Heap sort. Quick sort.
Árvores AVL. Necessidade de manter as árvores equilibradas. Rotações. Árvores AVL: factor de equilíbrio, rotação, algoritmos de pesquisa e inserção.
Componente Teórica-Prática
Eficiência de Algorimos. Algumas revisões de Java. Listas simplesmente ligadas. Implementção de alguma operações simples.
Pilhas e operações sobre pilhas.Implementação de pilhas sobre diferentes estruturas. Exemplos e exercícios.
Especificação de Pilhas. Refinamento: a especificação para uma classe Java.
Especificação de Filas. Ligação a uma classe Java. Implementação da fila com um vector circular.
Iteradores e sua utilização. Interface iterator e interface iterable. Implementação de um iterador para Filas.
Herança. O funcionamento do mecanismo de herança em Java.
Recursão. Busca binária num array. Alguma operações sobre listas. Torres de Hanói.
Árvores. O interface Comparable. Algoritmo de busca. Implementação dos métodos de inserção e remoção.
Conjuntos, mapas e tabelas de dispersão. Implementação de uma tabela de dispersão com endereçamento aberto.
Ordenação de Comparable: métodos genéricos. MergeSort.
Filas com prioridade e Ordenação. Implementação com um ArrayList.
Árvores AVL: factor de equilíbrio, rotação, algoritmos de pesquisa e inserção.
Bibliografia
Recomendada
Data Structures: Abstraction and Design Using Jav a; Elliot B. Koffman and Paul A. T. Wolfgang ; Wiley; 2 edition (January 26, 2010)
Outros elementos de estudo
Specifying and Monitoring Java Classes. V. Vasconcelos, A. Lopes e I. Nunes. Documento interno.
Métodos de Avaliação
A avaliação terá um equilíbrio entra uma componente prática,
constituída por um conjunto de trabalhos a realizar ao longo do
semestre e uma componente teórica a avaliar em exame. Propõe-se:
Trabalhos práticos (30%) + Exame teórico (70%)
Língua de ensino
Português ou Inglês
Download