In questa esercitazione, si utilizzeranno le principali strutture di controllo di Java, gli array e i metodi.
Prima della fine dell'esercitazione, inviare
tutti i file .java
prodotti (anche se incompleti) a rbruni@cli.di.unipi.it come attachment
di un messaggio di posta elettronica con Subject: ES-07.
Esercizi
Per gli esercizi che richiedono di leggere dei dati in input
da tastiera, scaricare la classe Input.java. Un
esempio di uso dei metodi di questa classe è
contenuto nella classe EuroInput.java.
Qualora l'esercizio richieda un qualche tipo di iterazione, CHIARIRE IN UN COMMENTO se si tratta di iterazione determinata oppure indeterminata e motivare l'uso del costrutto impiegato.
|
-
[0]
Avviare Eclipse, creare un nuovo progetto chiamato ES-07 e
sviluppare al suo interno un'opportuna classe Java per ognuno dei seguenti esercizi.
Ricordarsi di importare il
file Input.java all'interno
del progetto ES-07.
- [1]
Scrivere un programma LeggiInvertiString che legge un intero positivo n e poi, utilizzando un array, legge n stringhe e le stampa in ordine inverso (stampa per prima l'ultima stringa letta e per ultima la prima stringa letta).
- [2]
Scrivere un programma modulare Memo che, utilizzando un array, legge 10 stringhe e poi mette a disposizione un menu con le seguente opzioni:
- [S] Stampa stringhe dalla posizione ... alla ...
- [M] Modifica stringa in posizione ...
- [T] Trova posizione della stringa ...
- [E] Esci
Il menu viene proposto ripetutamente all'utente, fino a quando viene
selezionata l'uscita dal programma (opzione E). Il
significato delle operazioni è il seguente:
- se l'utente sceglie S, il programma legge due posizioni n e m e stampa tutti gli elementi dell'array il cui indice è compreso tra n e m;
- se l'utente sceglie M, il programma legge una posizione n e una stringa s che assegna alla cella n dell'array;
- se l'utente sceglie T, il programma legga una stringa s e stampa la prima posizione dell'array che la contiene, o un messaggio di errore se nessuna cella la contiene;
- se l'utente sceglie E, il programma stampa il contenuto dell'array e termina.
Ognuna delle operazioni (tranne [E]) deve essere realizzata da un metodo diverso che realizza quanto indicato.
- [3]
Scrivere un programma modulare MemoPlus che estende il programma Memo dell'esercizio precedente mettendo a disposizione anche le seguenti opzioni:
- [A] Aggiungi stringa in posizione ...
- [C] Cancella stringa in posizione ...
Il significato delle operazioni è il seguente:
- se l'utente sceglie A, il programma legge una posizione n e una stringa s che assegna alla cella n dell'array dopo aver spostato in avanti di una posizione i contenuti delle celle da n+1 in poi (il contenuto dell'ultima cella viene perso);
- se l'utente sceglie C, il programma legge una posizione n e sposta indietro di una posizione i contenuti delle celle da n+1 in poi (il contenuto dell'ultima cella diventa la stringa vuota);
Ognuna delle operazioni deve essere realizzata da un metodo diverso che realizza quanto indicato.
- [4]
Scrivere un programma modulare MemoStar che estende il programma MemoPlus dell'esercizio precedente mettendo a disposizione anche le seguenti opzioni:
- [I] Inverti
- [R] Ridimensiona
- [O] Ordina
Il significato delle operazioni è il seguente:
- se l'utente sceglie I, il programma inverte il contenuto dell'array (la prima stringa diventa l'ultima, la seconda diventa la penultima, ecc);
- se l'utente sceglie R, il programma legge un intero d e ridimensiona l'array in modo da avere d celle (Nota: la dimensione di un array non può essere modificata; invece occorre creare un nuovo array di dimensione d e copiarvi il contenuto delle celle esistenti);
- se l'utente sceglie O, il programma ordina lessicograficamente il contenuto dell'array.
Ognuna delle operazioni deve essere realizzata da un metodo diverso che realizza quanto indicato.
- [5]
Date due sequenze s e t, si dice che s è contenuta dentro
t se ogni elemento di
s compare anche in t.
Scrivere un programma modulare Contiene che chiede all'utente di
immettere due sequenze di stringhe, ciascuna conclusa dalla stringa
vuota, memorizza le sequenze in due array distinti e controlla se
la prima sequenza è contenuta dentro la seconda.
Suggerimento: per la lettura delle sequenze si usi il metodo Input.readSeq()
- [6]
Data una stringa s, il metodo split() della classe String permette di ottenere facilmente l'array delle sottostringhe ottenute scomponendo s rispetto a un certo separatore (per i dettagli si veda la documentazione della classe String).
Scrivere un programma modulare Parole che legga una sequenza di stringhe conclusa dalla stringa vuota, e stampi in ordine lessicografico e senza ripetizioni tutte le parole che appaiono nelle stringhe lette.
Nota: si assuma che ogni stringa sia composta da una o più parole separate da un singolo carattere di spazio.
- [7] Scrivere un programma modulare Libretto per la gestione dei voti
verbalizzati da uno studente.
Il programma deve dare la possibilità all'utente di aggiungere nuovi voti, stampare la lista dei voti conseguiti, stampare tutti i voti superiori a un certo valore, stampare la media complessiva, uscire dal programma.
L'interazione dell'utente col programma avviene tramite un menu di scelta che presenta le varie opzioni selezionabili con la pressione di singoli caratteri.
|