domenica 27 maggio 2012

Lab del 23/5/12: esercizi d'esonero, generici e progetto

Esercizi d'esonero sulla ricorsione: conta percorsi, MangiaDoppioniConsecutivi, somma minimale, sequenza k-esplosiva. Esercizi sull'I/O: biblioteca. Esercizi sulle collection: inversione di una mappa. Generici: implementazione della Pila generica. Delucidazioni sul progetto.


martedì 22 maggio 2012

Lezione 22/5/12: Tipi generici

Ancora sulle strutture dati: alberi, alberi binari, definizione in Java. Esercizio: ricerca in un albero binario.

Tipi generici. Definire e utilizzare una classe generica. Specificare più tipi generici. Estendere le classi generiche. Esercizio: la classe Pila. Generici e collezioni: interfacce generiche prototipiche. Definire un metodo generico. Sicurezza dei generici a tempo di compilazione: confronto con gli array. Jolly come tipi generici. Esempio: metodo generico di somma. Cancellazione del tipo (type erasure). Esempio: cancellazione del tipo nella classe Coppia e nel metodo getMassimo. Esercizio: cancellazione del tipo nella classe Pila.

  (cancellazione del tipo)

mercoledì 16 maggio 2012

Lab del 16/5/12: esercizi su ricorsione, collezioni e I/O

Esercizi sulla ricorsione: conteggio delle occorrenze di una lettera; verifica del contenimento di un intero in un array; calcolo del numero di occorrenze totali e in posizione pari di un carattere in una stringa; stampa della lista delle posizione delle occorrenze; verifica della presenza di caratteri ripetuti in una stringa.

Esercizi su I/O e collezioni: lettura e recupero di successioni; verifica se un carattere appare k volte in una stringa.



Lezione 15/5/12: ancora su strutture dati, pile e code

Ancora su strutture dati: interfacce fondamentali (Iterable, Collection, List, Set, OrderedSet, Queue), insiemi e mappe con elementi (o chiavi) senza ordinamento, con ordinamento naturale e con ordinamento di inserimento. La classe pila: Stack. L'interfaccia coda Queue e l'implementazione mediante LinkedList. Esercizi con pila e coda: parentesi annidate, inversione degli elementi di una coda, calcolatrice in notazione polacca inversa.

giovedì 10 maggio 2012

Lezione 10/5/12: collezioni in Java

Le Collection. Gerarchia delle interfacce di tipo Collection: Iterable, Collection, List, Set, SortedSet, Queue. Tre modi per iterare su una collezione. L'interfaccia Iterator. Esempio: il Jukebox. Collezioni fondamentali: ArrayList, LinkedList, HashSet, TreeSet, HashMap, LinkedHashMap, TreeMap. Metodi di ogni collezione. ListIterator e il metodo listIterator. Esempi di uso di HashSet e TreeSet. Funzionamento di un HashSet: il metodo hashCode. HashMap e TreeMap: l'interfaccia Map. Algoritmi sulle collezioni: la classe Collections. Algoritmi sugli array: la classe Arrays. Ordinamento "naturale" degli oggetti. L'interfaccia Comparable. Ordinamento con l'interfaccia Comparator.


Lab del 9/5/12: esercizi sulla ricorsione in Java

Esercizi: Teseo, il minotauro e il labirinto di Creta (e il filo di Arianna!) sia nella versione con labirinto rappresentato da una struttura ricorsiva di corridoi, sia nella sua rappresentazione matriciale (caricata da file). Gestione dell'I/O: DatabasePersone, valutazione in and e or di espressioni valutabili.


Lezione 8/5/12: ancora su ricorsione; input & output

Ancora su ricorsione: la successione di Fibonacci, efficienza e problematiche dell'implementazione ricorsiva. Esercizio: permutazioni di una stringa. Esercizio: Teseo, il minotauro e il labirinto di Creta (versione con struttura dati ricorsiva e con labirinto a matrice). Mutua ricorsione. Esempio: pari e dispari. Esercizio: SommaSottrai. Ricorsione di coda. Esercizio: and tra espressioni "valutabili" in una lista. Esercizio: la Torre di Hanoi.

Input & output: gli oggetti System.out e System.in. InputStream, PrintStream e la classe Scanner. File di testo e file binari. Gli stream. Gerarchie di classi stream. Leggere e scrivere un file di testo: la classe File. Leggere e scrivere un file di testo formattato: le classi Formatter e Scanner. Serializzare e deserializzare un oggetto. L'interfaccia Serializable e il serialVersionUID.


giovedì 3 maggio 2012

Lezione 3/5/12: ricorsione in Java

La ricorsione. Pensare ricorsivamente. Esempio: il fattoriale. Funzionamento della ricorsione: record di attivazione e stack. Non prevedere un caso base: la ricorsione infinita. Esempi: riconoscimento di una stringa palindroma, concatenazione ricorsiva di stringhe, ricerca binaria ricorsiva. Utilizzo di metodi di comodo mediante l'overloading. Strutture dati ricorsive. Esempio: visualizzare il contenuto di una cartella in forma gerarchica. Esercizio: cercare file in una cartella, somma ricorsiva di numeri.

Le specifiche del progetto sono online!!!

mercoledì 2 maggio 2012

Lab del 2/5/12: soluzioni secondo esonero e presentazione progetto

Visione dei compiti, soluzioni del secondo esonero e presentazione di una "bozza" del progetto (avventura testuale e/o grafica).