Guia das aulas praticas e de laboratório de ATAI Ano Lectivo 2005/2006 TAD Fila Exercícios Práticos 1 - Elabore um programa que utilizando uma implementação do TAD Pilha para manipulação dos inteiros, efectue as seguintes tarefas: a) Defina a classe FilaVaziaException que é um subclasse de Exception, e que deverá conter a seguinte mensagem de falha – “ A fila está vazia”. b) Defina uma interface IntFila para o TAD Fila, contendo os seguintes métodos: tamanho vazia //retorna o comprimento da fila //testa se a fila esta vazia primeiro //devolve o primeiro elemento da fila dá uma excepção se a fila estiver vazia coloca //introduz um elemento na fila retira //retira o primeiro elemento da fila e dá uma excepção se a fila estiver vazia getIterator //devolve o iterador sobre os elementos da fila c) Defina a classe FilaListaSimples que implementa a interface IntFila, através do uso de listas simplesmente ligadas. d) Implemente um pequeno programa, para testar a classe criada na alínea c). Este programa deverá testar todos os métodos desenvolvidos nas alíneas anteriores. 2 - Usando a classe definida na alínea a) do exercício 1 e a interface definida na alínea b), implemente a classe FilaVector que implementa a interface IntFila, através do uso da classe Vector do JAVA. Alguns métodos da classe Java.util.Vector: • void addElement (Object o) – adiciona um elemento no final do Vector • void insertElementAt (Object o, int index) – adiciona um elemento no específico indice do Vector • Object elementAt (int índex) – retorna um elemento do Vector armazenado num índice específico • boolean isEmpty () – retorna true se o Vector não contem elementos © DSI 2005 33 Guia das aulas praticas e de laboratório de ATAI Ano Lectivo 2005/2006 3 - Desenvolva um programa que gere soluções para o chamado problema de Josephus. Este problema pode ser visto como um processo de eleição de um leader: N pessoas elegem um leader colocando-se em círculo e contando até M. A pessoa que estiver na posição M é eliminada do círculo e a contagem recomeça no indivíduo imediatamente a seguir a essa pessoa. O processo termina quando restar apenas uma única pessoa, que será o leader. O programa deverá chamar-se josephus e aceitar 2 parâmetros inteiros positivos, N e M, com o significado dado acima. Cada pessoa é identificada por um número. Durante a execução, o programa deverá apresentar o número de pessoas que vão sendo eliminadas. No fim da eleição, o programa deverá indicar quem é o leader. Exemplo: josephus 5 8 3 2 5 4 leader: 1 Exercícios de Laboratórios 1 - Desenvolva um programa que permita gerir uma pista para descolagem de aviões dum aeroporto. Para o correcto funcionamento desta pista é necessário que sejam implementadas as seguintes funcionabilidades: • Nº de aviões à espera de descolar. • Descolagem de um avião. • Entrada de um novo avião para descolar. • Listar todos os aviões à espera de descolar. • Listar as características do próximo avião a descolar. Utilize a classe FilaVector desenvolvida no exercício 2 e a seguinte implementação da classe Avião: public class Aviao extends Object { private String nome; private int numero; public Aviao(String nome, int numero) © DSI 2005 34