Fondamenti di Informatica 1
Corso di Laurea in Ingegneria Informatica
Corso di Laurea in Ingegneria Automatica
A.A. 2002/03
Appello del 22/7/2003 - Compito B
Un'agenzia di recapiti ha la necessità di tenere traccia dei pacchi
da ritirare e consegnare, mediante una struttura dati CodaPacchi, che
è associata ad un impiegato dell'agenzia (identificato da nome e
matricola) e che contiene ordinatamente le informazioni dei pacchi da
recapitare. Per ogni pacco sono di interesse le seguenti informazioni:
- nome e indirizzo del mittente (una stringa)
- nome e indirizzo del destinatario (una stringa)
- peso del pacco (un intero)
Gli oggetti CodaPacchi supportano le seguenti funzionalità:
- crea: che date due stringhe n e m,
che rappresentano rispettivamente nome e matricola di un impiegato
dell'agenzia, crea un oggetto CodaPacchi associato all'impiegato
e che inizialmente non contiene alcun pacco da recapitare.
- nuovoPacco: che, dati il mittente m, il
destinatario d e il peso p di un pacco da consegnare,
inserisce il nuovo pacco nella coda rispettando l'ordine di arrivo;
- prossimaConsegna: che restituisce una stringa contenente la
concatenazione del mittente e del destinatario del prossimo pacco da
consegnare (il più vecchio presente nella coda); se la coda
è vuota lancia un'eccezione;
- rimuoviPacco: che elimina il pacco più vecchio dalla
coda; se la coda è vuota lancia un'eccezione;
- numPacchi: che restituisce il numero dei pacchi in coda;
- pacchiLeggeri: che dato un valore intero v, restituisce
un array di interi contenente il numero d'ordine di ciascun pacco da
recapitare il cui peso è inferiore a v.
- mittente: che dato un intero i che rappresenta il
numero d'ordine di un pacco, restituisce il mittente della spedizione;
per numero d'ordine di un pacco si intende il numero di pacchi che lo
precedono nella coda (ad esempio, i=0 rappresenta il numero
d'ordine del pacco in prima posizione nella coda); se l'intero i
non rappresenta un numero d'ordine valido lancia un'eccezione;
- destinatario: che dato un intero i che rappresenta il
numero d'ordine di un pacco, restituisce il destinatario della
spedizione; per numero d'ordine di un pacco si intende il numero di
pacchi che lo precedono nella coda; se l'intero i non
rappresenta un numero d'ordine valido lancia un'eccezione;
Domanda 1. Scrivere una classe Java CodaPacchi
per rappresentare oggetti CodaPacchi.
Domanda 2. Realizzare un metodo statico
pacchiCliente
cliente della classe CodaPacchi
(esterno ad essa) che, dati un oggetto r istanza della classe
CodaPacchi
, una stringa m rappresentante nome e indirizzo
di un cliente dell'agenzia, ed il nome f di un file, scrive sul file
f il numero d'ordine, il mittente e il destinatario di ogni pacco
nella coda r riguardante il cliente m (sia come mittente che
come destinatario), ciascun pacco per riga.
Domanda 3.
Spiegare la rappresentazione collegata di alberi binari in cui l'informazione
in ciascun nodo è un reale. Spiegare l'algoritmo di visita (ricorsiva) in
postordine di alberi binari. Facendo uso della rappresentazione collegata,
realizzare un metodo statico pubblico che, dato un valore reale v ed
il riferimento alla radice a di un albero binario i cui nodi
contengono reali, verifichi se l'albero di radice a contiene un nodo
il cui valore è v.