Tecniche di Programmazione
Corso di Laurea in Ingegneria Informatica
Corso di Laurea in Ingegneria Automatica
A.A. 2003/04
Appello del 23/3/2004 - Compito B
Si vogliono gestire dei pronto-soccorsi. Di un oggetto ProntoSoccorso
sono di interesse il nome del pronto-soccorso (una stringa) e le visite che deve
effettuare. Di ogni visita sono di interesse le seguenti informazioni:
- nome del paziente (una stringa);
- priorità della visita (un intero positivo).
Gli oggetti ProntoScoccorso supportano le seguenti funzionalità:
- crea: che, data una stringa n che rappresenta il nome
di pronto-soccorso, crea un oggetto ProntoScoccorso con nome n
che inizialmente non ha alcuna visita da effettuare;
- nome: che restituisce il nome del ProntoScoccorso;
- presente: che, dato il nome di un paziente, restituisce true
se il paziene è presente nel pronto-soccorso, false altrimenti;
- priorità: che, dato il nome di un paziente, restituisce
la sua priorità; se il paziente non è presente lancia una eccezione;
- accoda: che, dato il nome di un paziente e la sua priorità,
aggiunge una nuova visita in coda alle visite già presenti; tuttavia
se è già presente un paziente con lo stesso nome, lancia una
eccezione.
- servi: che, effettua la visita al primo paziente in coda tra quelli
di priorità massima, eliminandolo dalla coda e restituendone il nome;
se non c'e' alcuna paziente da visitare restituisce null;
- maxPriorità: che, restituisce la priorità massima
tra quelle delle visite da effettuare; se non vi è alcuna visita da
effettuare restituisce -1;
- quantiPriorità: che, dato un intero positivo che rappresenta
una priorità, restituisce il numero di pazienti da visitare con tale priorità;
- tuttiPriorità: che, dato un intero positivo che rappresenta
una priorità, restituisce un array di stringhe contenente nomi dei
pazienti con quella priorità.
Domanda 1. Scrivere una classe Java ProntoScoccorso
per rappresentare oggetti ProntoScoccorso. Fornire il costo in tempo
dei metodi che realizzano le funzionalità priorità, servi
e tuttiPriorità, motivando la risposta (indicando esplicitamente
i parametri di input e il caso peggiore).
Domanda 2. Realizzare un metodo statico pazientiDaVisitare
cliente della classe ProntoScoccorso che, dati
- il nome fin di un file di input di stringhe che rappresentano nomi
di pazienti (tutti diversi tra loro e memorizzati uno per riga),
- un intero positivo pin che rappresenta una priorità,
- il nome fout di un file di output,
- ed un
ProntoScoccorso ps
scrive sul file fout, uno per riga, il nome del paziente e la
relativa
priorità, dei pazienti in fin presenti in ps la cui
priorità è maggiore di pin. Fornire il costo in tempo
del metodo realizzato, motivando la risposta (indicando esplicitamente i parametri
di input e il caso peggiore).
Domanda 3. Spiegare la rappresentazione collegata di alberi
binari in cui l'informazione in ciascun nodo è una stringa. Spiegare
l'algoritmo di visita in preordine di alberi binari. Facendo uso della rappresentazione
collegata, realizzare un metodo statico pubblico che, dato il riferimento alla
radice di un albero binario alb, restituisca il numero di nodi che
hanno esattamente un figlio diverso dall'albero vuoto. Fornire il costo in tempo
e spazio di memoria del metodo realizzato, motivando la risposta (indicando
esplicitamente i parametri di input e il caso peggiore).