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.