Fondamenti di Informatica 1
Corso di Laurea in Ingegneria Informatica
Corso di Laurea in Ingegneria Automatica
A.A. 2002/03
Appello del 8/4/2003 - Compito C
Si vuole tenere traccia di voli in partenza. Ogni ListaVoli è
associata ad una compagnia aerea (una stringa) ed è costituita da un
insieme ordinato di voli. Di ogni volo sono di interesse le seguenti
informazioni:
- la sigla del volo (una stringa);
- la destinazione del volo (una stringa).
Gli oggetti ListaVoli supportano le seguenti funzionalità:
- crea: che, data una stringa c che rappresenta il
nome della compagnia, crea un oggetto ListaVoli associato a
c che inizialmente non ha alcun volo in lista;
- compagnia: che restituisce il nome della compagnia;
- aggiungiVolo: che, dati la sigla v di un volo e
la destinazione d, inserisce in coda alla lista dei voli in
partenza un nuovo volo con sigla v per la destinazione
d;
- parteVolo: che elimina il volo in testa alla lista di voli; se
la lista di voli è vuota lancia un'eccezione;
- numVoli: che restituisce il numero di voli in lista;
- siglaVolo: che, dato un intero i che
rappresenta il numero d'ordine di un volo, restituisce la sigla
del volo corrispondente; per numero d'ordine di un volo si
intende il numero di voli che lo precedono nella lista (ad
esempio, i=0 rappresenta il numero d'ordine del volo
in testa alla lista); se l'intero i non rappresenta un
numero d'ordine valido lancia un'eccezione;
- destinazioneVolo: che, dato un intero i che
rappresenta il numero d'ordine di un volo, restituisce la
destinazione del volo corrispondente; se l'intero i non
rappresenta un numero d'ordine valido lancia un'eccezione;
- numVoliDestinazione: che, data una destinazione d,
restituisce il numero di voli in partenza per quella destinazione;
- voliDestinazione: che, data una destinazione d,
restituisce un array di interi contenente il numero d'ordine di ciascun
volo in partenza per la destinazione d.
Domanda 1. Scrivere una classe Java ListaVoli
per rappresentare oggetti ListaVoli.
Soluzione:
rappresentazione
degli oggetti,
scheletro della classe,
classe ListaVoli
,
classe
EccezioneListaVoli
Domanda 2. Realizzare un metodo statico
voliPer
cliente della classe ListaVoli
che, dati
- un oggetto v della classe
ListaVoli
,
- il nome fin di un file contenente destinazioni, una per riga, ed
- il nome fout di un file,
scrive sul file fout, per ciascuna destinazione d letta dal
file fin, il numero d'ordine e la sigla di tutti i voli di v
in partenza per la destinazione d, un volo per riga.
Soluzione
Domanda 3. Spiegare la rappresentazione collegata di alberi
binari in cui l'informazione in ciascun nodo è una stringa. Spiegare
l'algoritmo di visita (ricorsiva) simmetrica di alberi binari. Facendo uso
della rappresentazione collegata, realizzare un metodo statico pubblico che,
dati una stringa s ed il riferimento alla radice di un albero binario
alb i cui nodi contengono stringhe, restituisca true se
s compare in alb, false altrimenti.
Soluzione:
rappresentazione di alberi binari,
metodo richiesto