Sei sulla pagina 1di 2

Fondamenti di Informatica - a.a.

2019-2020
Prova pratica di programmazione del 28 Gennaio 2020

ESERCIZIO 1: RICORSIONE (10 punti)


Scrivere nella classe ContaRighe.java il metodo:
public static int conditionalCountLinesRecursion(Scanner in) throws
IOException {...}
che implementa un algoritmo ricorsivo per contare le righe del file di testo dato che iniziano
con i due caratteri: ->
Provare il programma col file supereroi.txt fornito.

È valutato 10 punti se risponde alle specifiche, 0 punti se presenta errori di compilazione.


Alla fine della prova il candidato lascerà nella directory di lavoro il file modificato
ContaRighe.java, e supereroi.txt. Il file prodotto dal candidato dovrà contenere il nome e
cognome, matricola, data, numero della postazione.


ESERCIZIO 2: TOUR OPERATOR (punti 20)
L'ADT dizionario è definito dalla seguente interfaccia:
public interface Dictionary extends Container
{
void insert(Comparable key, Object attribute);
Object find(Comparable key);
Object remove(Comparable key);
}

I metodi dell'interfaccia Dictionary eseguono le seguenti funzioni:


- insert(...) inserisce la coppia (key, attribute) nel dizionario. Se la chiave è già
presente, sovrascrive la coppia;
- find(...) restituisce l'attributo associato alla chiave key nel dizionario. Se la chiave non è
presente, genera l'eccezione java.util.NoSuchElementException;
- remove(...) elimina la coppia (key, attribute) dal dizionario e restituisce l'attributo
associato alla chiave se questa è presente. Se la chiave non è presente, genera l'eccezione
java.util.NoSuchElementException.

I metodi dell'interfaccia Container eseguono le seguenti funzioni:


- isEmpty() ritorna true se il contenitore è vuoto, false altrimenti;
- makeEmpty() rende vuoto il contenitore;
- size() restituisce il numero di elementi inseriti nel contenitore.

Un’agenzia di viaggi commissiona un dizionario che contenga le seguenti informazioni relative


ai propri clienti:
- codice identificativo del cliente (chiave)
- nome cliente (attributo)
- destinazione del viaggio (attributo)
Il codice identificativo del cliente sia composto da quattro caratteri alfanumerici con il seguente
formato Lnnn, dove L è un carattere alfabetico compreso nell'intervallo [A, Z], mentre n è un
carattere numerico compreso nell'intervallo [0, 9]. Es: A199 è un codice cliente valido.
Il candidato scriva i metodi:
public void add(String nome, String dest) { // metodo invocato dal
main per l'inserimento ...} (punti 8)
private void increment(String code) { ... } (punti 12)

nella classe eseguibile:


public class TourOperator implements Dictionary

È valutato 0 punti se presenta errori di compilazione.

Il costruttore public TourOperator(String initialClientCode) inizializza la struttura


dati e imposta la variabile di esemplare String nextClientCode col valore passato nel
parametro String initialClientCode.
Il metodo add inserisce i dati: (codice, nome, destinazione) nel dizionario. Successivamente
incrementa il codice cliente.
Il metodo increment effettua l’incremento del codice cliente come segue:
- se il numero nnn rappresentato dai caratteri numerici è inferiore a 999 si incrementa
semplicemente il numero;
- altrimenti si impostano i caratteri numerici alla stringa "000" e si incrementa il carattere
alfabetico L al successivo nell'ordine lessicografico.
Esempio: se il codice cliente vale C998, il codice successivo vale C999 (998 diventa 999,
mentre C resta immutato); se il codice cliente vale C999 il codice successivo vale D000 (999
diventa 000, mentre C diventa D).

All'atto della correzione il codice verra' provato nel seguente modo:

$ rm *.class
$ javac *.java
$ java TourOperator A998 < viaggi.txt

dove A998 è la stringa da riga di comando e il file viaggi.txt è allegato.

Nell'esecuzione della prova si possono usare solo le classi dei pacchetti java.lang e le classi
Scanner e NoSuchElementException del pacchetto java.util.
Alla fine della prova il candidato lascerà nella directory di lavoro il file TourOperator.java
che dovrà contenere in testa un commento con nome e cognome del candidato, matricola, data,
numero della postazione.

FONDAMENTI DI INFORMATICA - a.a. 2019-2020 - (prof. Sergio Canazza)

Nome e Cognome _____________________________________________________________

Matricola ________________________ Postazione _________________________________

☐ Consegno l'elaborato. ☐ Non consegno l’elaborato e mi ritiro dall’esame.

Firma _______________________________