Esercizi e progetti di programmazione - Apogeo
Esercizi e progetti di programmazione - Apogeo
Esercizi e progetti di programmazione - Apogeo
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
ESERCIZI E PROGETTI DI PROGRAMMAZIONE E–53<br />
Se identifi cate un collegamento espresso in modo errato, lanciate un’eccezione. Otterrete una<br />
valutazione migliore se il vostro programma è in grado <strong>di</strong> seguire i collegamenti che ha identifi -<br />
cato, trovando collegamenti anche in quelle pagine (i motori <strong>di</strong> ricerca, come Google, usano un<br />
meccanismo simile a questo per scoprire i siti web).<br />
Capitolo 12<br />
<strong>Esercizi</strong> <strong>di</strong> <strong>programmazione</strong><br />
* <strong>Esercizi</strong>o P12.1. Scrivete un metodo ricorsivo void reverse() che inverte il contenuto <strong>di</strong> una<br />
frase. Ad esempio, questo frammento <strong>di</strong> co<strong>di</strong>ce<br />
Sentence greeting = new Sentence(“Hello!”);<br />
greeting.reverse();<br />
System.out.println(greeting.getText());<br />
visualizza la stringa “!olleH”. Progettate una soluzione ricorsiva eliminando il primo carattere,<br />
invertendo la frase costituita dal testo rimanente e combinando le due parti.<br />
** <strong>Esercizi</strong>o P12.2. Risolvete <strong>di</strong> nuovo l’esercizio precedente, usando però un metodo ausiliario<br />
ricorsivo che inverte una sottostringa <strong>di</strong> un messaggio <strong>di</strong> testo.<br />
* <strong>Esercizi</strong>o P12.3. Realizzate iterativamente il metodo reverse dell’<strong>Esercizi</strong>o P12.1.<br />
** <strong>Esercizi</strong>o P12.4. Usate la ricorsione per realizzare un metodo boolean fi nd(String t) che<br />
verifi ca se una stringa è contenuta in una frase:<br />
Sentence s = new Sentence(“Mississippi!”);<br />
boolean b = s.fi nd(“sip”); // restituisce true<br />
Suggerimento: se il testo inizia con la stringa che state cercando, avete fi nito; altrimenti, considerate<br />
la frase che si ottiene eliminando il primo carattere.<br />
** <strong>Esercizi</strong>o P12.5. Usate la ricorsione per realizzare un metodo int indexOf(String t) che restituisce<br />
la posizione iniziale della prima sottostringa del testo che sia uguale alla stringa t. Restituite<br />
–1 se t non è una sottostringa <strong>di</strong> s. Ad esempio:<br />
Sentence s = new Sentence(“Mississippi!”);<br />
int n = s.indexOf(“sip”); // restituisce 6<br />
Suggerimento: questo è un po’ più <strong>di</strong>ffi cile del problema precedente, perché dovete tenere traccia <strong>di</strong><br />
quanto sia lontana dall’inizio della frase la corrispondenza che state cercando; inserite tale valore<br />
come parametro <strong>di</strong> un metodo ausiliario.<br />
* <strong>Esercizi</strong>o P12.6. Usando la ricorsione, trovate l’elemento maggiore in un array.<br />
public class DataSet<br />
{<br />
public DataSet(int[] values, int fi rst, int last) {...}<br />
public int getMaximum() {...}<br />
...<br />
}<br />
Cay Horstmann: Concetti <strong>di</strong> informatica e fondamenti <strong>di</strong> Java 5 a ed. - Copyright 2010 <strong>Apogeo</strong> srl