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 Esercizi sulla ricorsione: ricerca binaria. Presentazione dell'esonero 3.
Blog e sito Web del corso di Metodologie di Programmazione (Corso di Laurea in Informatica, canale M-Z)
giovedì 27 aprile 2017
mercoledì 26 aprile 2017
Lab e lezione del 26/4/2017: le Collection (2/2) e introduzione ai generici
Espressioni lambda per specificare il Comparator. Riferimenti a metodi. Riferimenti a metodi:
statici, d'istanza con riferimento, d'istanza con classe. Ordinamento
di una collection in Java 8 vs. Java 7. Metodi di default e statici
dell'interfaccia Comparator. Interfacce funzionali standard: Predicate, Function, Supplier, Consumer. Pila e coda in Java. Come scegliere la collection appropriata al proprio problema. Introduzione ai tipi generici.
lunedì 24 aprile 2017
Lezione del 24/4/2017: le Collection (1/2)
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. L'interfaccia Comparable. Ordinamento con l'interfaccia Comparator. Insiemi e mappe con elementi (o chiavi) senza ordinamento, con ordinamento naturale e con ordinamento di inserimento. I metodi keySet, values e entrySet di Map. Espressioni lambda per specificare il Comparator.
Lezione del 20/4/2017: correzione dei compiti
Esercizi più problematici. Errori più frequenti. Problemi nello stile della scrittura del codice. Stile "non Java".
giovedì 6 aprile 2017
lunedì 3 aprile 2017
Lab del 5/4/2017: iterabilità, comparabilità, sorting, espressioni lambda
Laboratorio importante di preparazione all'esonero: un altro esempio di iterabilità (iterare sulle righe di una stringa); rendere una classe comparabile mediante l'estensione di Comparable<T>. Ordinare liste di oggetti comparabili con Collections.sort. Aggiungere la funzionalità di comparabilità dopo aver chiuso il codice di una classe: l'interfaccia funzionale Comparator<T>. Ordinamento mediante Comparator: Collections.sort(lista, comparator) e List.sort(comparator). Esempi di espressioni lambda. Utilizzare le espressioni lambda per implementare un comparator.
Lezione 03/04/2017: esercizi su classi interne e anonime ed iterabilità; espressioni lambda
Esercizi su classi interne: l'esempio dei potenziamenti di un'astronave; l'esempio della lista linkata di interi elemento come classe statica annidata. Iterabilità: iterare una lista linkata implementando l'interfaccia java.lang.Iterable e l'interfaccia java.util.Iterator mediante classe interna o classe anonima (sua definizione). Intefacce funzionali. Espressioni lambda.
Iscriviti a:
Post (Atom)