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–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