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 B
Si vuole tenere traccia delle prenotazioni di visite da effettuare presso
uno studio medico.
Ogni ListaPrenotazioni è associata al tipo di prestazione
medica (una stringa) ed è costituita da un insieme ordinato
di prenotazioni.
Di ogni prenotazione sono di interesse le seguenti informazioni:
- il nome della persona richiedente la visita (una stringa);
- il nome del medico che effettuerà la visita (una stringa).
Si noti che una stessa persona può comparire più volte in una
ListaPrenotazioni.
Gli oggetti ListaPrenotazioni supportano le seguenti
funzionalità:
- crea: che, data una stringa t che rappresenta il
tipo di prestazione, crea un oggetto ListaPrenotazioni
associato a t che inizialmente non ha alcuna prenotazione in
lista;
- prestazione: che restituisce il tipo di prestazione associata
alla lista di prenotazioni;
- aggiungiPrenotazione: che, dati il nome n di una
persona e il nome m di un medico, inserisce in coda alla lista
di prenotazioni una nuova prenotazione per n presso il medico
m;
- rimuoviPrenotazione: che elimina la prenotazione in testa alla
lista; se la lista di prenotazioni è vuota lancia un'eccezione;
- numPrenotazioni: che restituisce il numero di prenotazioni;
- medicoPrenotazione: che, dato un intero i che
rappresenta il numero d'ordine di una prenotazione, restituisce il nome
del medico che dovrà svolgere quella visita; per numero d'ordine
di una prenotazione si intende il numero di prenotazioni che la precedono
nella lista (ad esempio, i=0 rappresenta il numero d'ordine
della prenotazione in testa alla lista); se l'intero i non
rappresenta un numero d'ordine valido lancia un'eccezione;
- personaPrenotazione: che, dato un intero i che
rappresenta il numero d'ordine di una prenotazione, restituisce il nome
della persona che ha richiesto la visita; se l'intero i non
rappresenta un numero d'ordine valido lancia un'eccezione;
- numPrenotazioniMedico: che, dato il nome m di un
medico, restituisce il numero di prenotazioni di visite riguardanti il
medico m;
- visiteMedico: che, dato il nome m di un medico,
restituisce un array di interi contenente il numero d'ordine di ciascuna
delle prenotazioni di visite riguardanti il medico m.
Domanda 1. Scrivere una classe Java
ListaPrenotazioni
per rappresentare oggetti
ListaPrenotazioni.
Soluzione:
rappresentazione degli oggetti,
scheletro della
classe,
classe
ListaPrenotazioni
,
classe
EccezioneListaPrenotazioni
Domanda 2. Realizzare un metodo statico
visiteDelMedico
cliente della classe
ListaPrenotazioni
che, dati
- un oggetto p della classe
ListaPrenotazioni
,
- il nome fin di un file contenente nomi di medici, uno per riga,
ed
- il nome fout di un file,
scrive sul file fout, per ciascun medico m letto dal file
fin, il numero d'ordine e il nome della persona da visitare per tutte
le prenotazioni in p riguardanti il medico m, una
prenotazione per riga.
Soluzione
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 il riferimento alla radice di un albero binario alb i cui nodi
contengono reali negativi, restituisca il minimo reale in alb
(oppure 0 se l'albero è vuoto).
Soluzione:
rappresentazione di alberi binari,
metodo richiesto