31.05.2013 Views

Esercizi e progetti di programmazione - Apogeo

Esercizi e progetti di programmazione - Apogeo

Esercizi e progetti di programmazione - Apogeo

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!