Sei sulla pagina 1di 2

Fondamenti di Informatica - A.A.

2014-2015
Prova pratica di programmazione del 16 giugno 2015
PILA MULTIPLA
L'interfaccia CStack, allegata, definisce un contenitore di elementi comparabili con modalit di accesso
LIFO (pila):
public interface CStack // -- Interfaccia CStack
{ boolean isEmpty();
int size();
void push(Comparable x);
Object pop() throws EmptyStackException;
}
dove:
- boolean isEmpty() restituisce true se la pila vuota, false altrimenti;
- int size() restituisce il numero di elementi presenti nella pila;
- void push(Comparable x) inserisce l'elemento comparabile x in testa alla pila;
- Object pop() lancia l'eccezione EmptyStackException se la pila vuota, altrimenti restituisce,
estraendolo, l'elemento in testa alla pila.
La seguente classe S realizza l'interfaccia CStack:
public class S implements CStack // -- Pila di Elementi Comparabili
{ // parte privata
...
// parte pubblica
public S();
public Comparable[] toArray() {...}
public Comparable[] toSortedArray() {...}
}
dove:
- il costruttore inizializza una pila vuota;
- Comparable[] toArray() restituisce in un array gli elementi comparabili della pila in sequenza LIFO, in
modo che all'indice zero sia posizionato l'elemento in cima alla pila;
- Comparable[] toSortedArray() restituisce gli elementi comparabili della pila in un array ordinato in
senso crescente, secondo il loro ordine naturale.
La Pila Multipla un contenitore di pile disposte in sequenza. Ciascuna pila associata a un numero
intero non negativo, detto rango, che pari al numero di pile che la precedono nella sequenza. Esempio:
la pila di rango 0 la prima pila della sequenza, mentre la pila di rango 1 la seconda pila della
sequenza. Nella classe pubblica SM, allegata:
- la variabile length vale il numero di pile contenute nella pila multipla;
- il costruttore SM(int n) inizializza il contenitore con n pile vuote;
- push(Comparable x, int k) inserisce l'elemento x nella pila di rango k se k < length, altrimenti genera
l'eccezione java.lang.IndexOutOfBoundsException;
- pop(int k) se k < length restituisce, estraendolo, l'elemento in testa alla pila di rango k; altrimenti
genera l'eccezione IndexOutOfBoundsException;
- toString(int k) se k < length restituisce la descrizione testuale della pila, un elemento per riga, in
sequenza LIFO, in modo che il primo elemento sia l'elemento in testa alla pila; altrimenti genera
l'eccezione IndexOutOfBoundsException;

- toSortedArray() restituisce un array contenente tutti gli elementi della pila multipla, ordinati in senso
crescente secondo il loro ordine naturale (NB: si usi il metodo toSortedArray() della classe S).
Il candidato scriva la parte privata e completi la parte pubblica delle classi EmptyStackException, S e
SM.
Il candidato inserisca commenti interpretabili dal programma javadoc e produrre la relativa
documentazione in formato html.
In sede di correzione il codice sar provato con i comandi:
$ rm *.class
$ javac ProvaSM.java
$ java ProvaSM < testo.txt 5
dove: testo.txt il file di testo allegato. La classe di prova ProvaSM esegue le seguenti funzioni:
- definisce una pila multipla con n=args[0] pile;
- acquisisce un insieme di righe da standard input;
- separa le parole di ciascuna riga, inserendo nella pila di rango k - 1 le parole contenute nella riga k;
- stampa nella sequenza FIFO le pile della Pila Multipla
- stampa tutti gli elementi della Pila Multipla in ordine crescente
Nella realizzazione delle classi S e SM non lecito:
- aggiungere elementi, se non privati;
- usare classi della libreria standard, ad eccezione di quelle dei package java.lang e java.io e delle classi
java.util.Scanner e NoSuchElementException.
Alla fine della prova il candidato lascer nella directory di lavoro i file eventualmente prodotti:
EmptyStackException.java, S.java, SM.java e i file allegati dal docente: ProvaSM.java, CStack.java,
testo.txt. I file prodotti dal candidato dovranno contenere il nome e cognome, matricola, data, numero
della postazione.
Sono valutati insufficienti i compiti che presentano errori di compilazione.

FONDAMENTI DI INFORMATICA - A.A. 2014-2015 - (prof. Sergio Canazza)


Nome e Cognome _____________________________________________________________
Matricola ________________________ Postazione _________________________________
Consegno l'elaborato.

Non consegno lelaborato e mi ritiro dallesame.

Firma _______________________________