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–69<br />

Progetti <strong>di</strong> <strong>programmazione</strong><br />

Progetto 15.1. Realizzate una classe, BinaryTreeSet, che usi un esemplare <strong>di</strong> TreeSet per memorizzare<br />

i propri elementi. Dovrete realizzare un iteratore che scan<strong>di</strong>sca i no<strong>di</strong> secondo l’or<strong>di</strong>ne<br />

dei valori in essi contenuti. Tale iteratore è piuttosto complesso, perché a volte ha la necessità <strong>di</strong><br />

tornare in<strong>di</strong>etro: potete aggiungere in ciascun esemplare <strong>di</strong> Node un riferimento al nodo genitore,<br />

oppure potete fare in modo che un oggetto iteratore memorizzi una pila dei no<strong>di</strong> visitati.<br />

Progetto 15.2. Realizzate un valutatore <strong>di</strong> espressioni che usi un analizzatore sintattico (parser)<br />

per costruire un albero <strong>di</strong> espressione, come visto nel Paragrafo 15.6 (notate che l’albero che<br />

ne risulta è un albero binario ma non è un albero <strong>di</strong> ricerca binario). Eseguite, poi, una visita in<br />

or<strong>di</strong>ne posticipato per valutare l’espressione, usando una pila per la memorizzazione dei risultati<br />

interme<strong>di</strong>.<br />

Progetto 15.3. Scrivete un programma che mostri un’animazione del funzionamento dell’algoritmo<br />

heapsort, visualizzando l’albero grafi camente e fermandosi dopo ogni invocazione <strong>di</strong> fi xHeap.<br />

Capitolo 16<br />

<strong>Esercizi</strong> <strong>di</strong> <strong>programmazione</strong><br />

* <strong>Esercizi</strong>o P16.1. Mo<strong>di</strong>fi cate la classe generica Pair in modo che i due valori siano dello stesso<br />

tipo.<br />

* <strong>Esercizi</strong>o P16.2. Aggiungete alla classe Pair dell’esercizio precedente un metodo swap che<br />

scambi tra loro il primo e il secondo elemento della coppia.<br />

** <strong>Esercizi</strong>o P16.3. Realizzate un metodo statico generico PairUtil.swap, il cui parametro sia<br />

un oggetto <strong>di</strong> tipo Pair, usando la classe generica defi nita nel Paragrafo 16.2. Il metodo deve<br />

restituire una nuova coppia avente il primo e il secondo elemento scambiati rispetto alla coppia<br />

originaria.<br />

** <strong>Esercizi</strong>o P16.4. Scrivete un metodo statico generico PairUtil.minmax che identifi chi gli<br />

elementi minimo e massimo presenti in un array <strong>di</strong> tipo T e restituisca una coppia contenente tali<br />

valori minimo e massimo. Esprimete il fatto che gli elementi dell’array devono realizzare l’interfaccia<br />

Measurable vista nel Capitolo 9.<br />

** <strong>Esercizi</strong>o P16.5. Risolvete nuovamente il problema dell’esercizio precedente, richiedendo però<br />

che gli elementi dell’array realizzino l’interfaccia Comparable.<br />

*** <strong>Esercizi</strong>o P16.6. Risolvete nuovamente il problema dell’<strong>Esercizi</strong>o P16.4, richiedendo però che<br />

il tipo parametrico estenda il tipo generico Comparable.<br />

** <strong>Esercizi</strong>o P16.7. Realizzate una versione generica dell’algoritmo <strong>di</strong> ricerca binaria.<br />

*** <strong>Esercizi</strong>o P16.8. Realizzate una versione generica dell’algoritmo <strong>di</strong> or<strong>di</strong>namento per fusione. Il<br />

programma deve essere compilato senza che vengano segnalati warning.<br />

** <strong>Esercizi</strong>o P16.9. Realizzate una versione generica della classe LinkedList vista nel Capitolo<br />

14.<br />

** <strong>Esercizi</strong>o P16.10. Realizzate una versione generica della classe BinarySearchTree vista nel<br />

Capitolo 15.<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!