Questo documento propone alcuni esercizi, tratti dai libri di testo, in preparazione alla prova di accertamento della terza parte del corso di Programmazione. Riferimento: "Concrete Abstraction", capp. 10-13. Cap. 10 Esercizi 10.2 e 10.3. Cap. 11 Esercizi 11.14, da 11.21 a 11.24, 11.27, Cap. 12 Esercizi 12.1, 12.24, 12.28, 12.29, 12.31, 12.32, 12.34. Cap. 13 Esercizi 13.29, 13.32, 13.33. Riferimento: "Introduction to Programming Using Java". Sez. 8.11 Esercizi 1, 2 (p. 300) Cap. 8 - Further Exercises Esercizi 1, 2 (p. 305) Sez. 10.3 Esercizi 2, 3 (p. 391) Sez. 10.5 Esercizi 2, 3 (p. 403) Sez. 11.5 Esercizio 2 (p. 477) Cap. 11 - Further Exercises Esercizi 2, 3 (p. 498) Cap. 12 - Further Exercises Esercizio 1 (p. 597) Inoltre, sempre in Java: 1) Definire un metodo statico per il calcolo del massimo comun divisore, basato sull'algoritmo di Euclide. 2) Definire una struttura dati "List", che consenta accessi e operazioni il piu' possibile simili alla corrispondente struttura vista in Scheme. In particolare, l'interfaccia della classe deve rendere disponibili i metodi: .null() .cons( ) .car() .cdr() oltre al costruttore, che genera una lista vuota. 3) Definire una struttura dati "Tree" per gli alberi binari, con le seguenti operazioni: .emptyTree() .growLeft( , ) .growRight( , ) .leftSubTree() .rightSubTree() oltre al costruttore per generare un albero vuoto. Il metodo "growLeft" fa crescere l'istanza di albero a cui e' applicato il metodo collegandola a un nuovo nodo radice e affiancandogli un sottoalbero a sinistra. Il metodo "growRight" opera simmetricamente.