Metodologie di Programmazione - Canale P-Z
Corso di Laurea in Informatica
Anno Accademico 2009/10
Diario delle lezioni e delle esercitazioni
lun 8 mar (Gorla)
Presentazione del corso. Evoluzione dei linguaggi di programmazione.
Il primo progamma Java (Hello, World) e come lo avremmo scritto in C. Il main. La piattaforma Java. Comilazione ed esecuzione di programmi Java: la JVM.
Lucidi:
Introduzione ai linguaggi di programmazione (
pdf
)
Lucidi:
Introduzione a Java 1 (
pdf
)
Sorgenti:
Hello0 (
java
)
Sorgenti:
Hello (
java
)
Sorgenti:
Greeter (
zip
)
lun 15 mar (Gorla)
Elementi fondamentali di Java: oggetti, classi, attributi, metodi, I/O, tipi di dati primitivi, conversioni, operatori, costrutti.
Lucidi:
Introduzione a Java 1 (
pdf
)
Lucidi:
Introduzione a Java 2 (
pdf
)
Sorgenti:
TicketMachine (
java
)
mer 17 mar (Piperno)
Laboratorio: primi contatti con un ambiente di programmazione Java; modifica del programma "Ticket Machine", con l'aggiunta di funzionalitą pił evolute (diversi tipi di biglietti, numero massimo di posti disponibili, input/output, ...)
ven 19 mar (Gorla)
Attributi e metodi static, overloading, classi dei tipi di dati primitivi, stringhe, array, liste.
Lucidi:
Introduzione a Java 2 (
pdf
)
Lucidi:
Introduzione a Java 3 (
pdf
)
lun 22 mar (Gorla)
Iterazione e ricorsione: il fattoriale, i numeri di fibonacci, la ricerca binaria.
Dispense:
Risorsione e Iterazione (
pdf
)
Sorgenti:
Fibonacci (
java
)
mer 24 mar (Piperno)
Laboratorio: esperimenti con eccezioni e liste.
Sorgenti:
Eccezioni (
java
)
Sorgenti:
Liste (
java
)
ven 26 mar (Gorla)
Precondizioni, postcondizioni, invarianti, funzioni di terminazione e loro applicazione per dimostrare la correttezza delle implementazioni dei metodi Java visti il 22 Marzo per calcolare il fattoriale e i numeri di fibonacci.
Dispense:
Risorsione e Iterazione (
pdf
)
mer 7 apr (Piperno)
Laboratorio: il quicksort ricorsivo.
ven 9 apr (Gorla)
Precondizioni, postcondizioni, invarianti, funzioni di terminazione e loro applicazione per dimostrare la correttezza delle implementazioni dei metodi Java su array: ricerca binaria e selection sort.
Dispense:
Risorsione e Iterazione (
pdf
)
lun 12 apr (Gorla)
Specifiche e loro confronto; quando un programma soddisfa una specifica e metodi di verifica. Astrazione procedurale. Introduzione ai tipi di dato astratti.
Dispense:
Specifiche (
pdf
)
Dispense:
Astrazione procedurale (
pdf
)
Dispense:
ADTs (
pdf
)
mer 14 apr (Piperno)
Laboratorio: il quicksort iterativo; invariante e dimostrazione di correttezza.
ven 16 apr (Gorla)
Tipi di dato astratti (ADT): specifica e implementazione.
Dispense:
ADTs (
pdf
)
Dispense:
ADTs-2 (
pdf
)
lun 19 apr (Gorla)
Esempi di ADT: booleani, numeri complessi e stack (implementazione con array; suggerimenti per un'implementazione con liste concatenate).
Dispense:
Booleani e Complessi (
pdf
)
Dispense:
Stack (
pdf
)
mer 21 apr (Piperno)
Laboratorio: ADT coda e albero binario; loro implementazione in Java.
ven 23 apr (Gorla)
Esercizi in vista dell'esonero.
Dispense:
Esercizi (
pdf
)
lun 3 mag (Salvo)
Alberi in Java.
Interfacce. Sottotipaggio. Type Soundness in Java.
Overloading di costruttori. Il costruttore di default.
Dynamic lookup dei metodi.
Lucidi: *
Java1.pdf: Java: aspetti generali e definizioni di classi
Lucidi: *
Java2.pdf: Ancora sulle definizioni di classi
ven 7 mag (Salvo)
Alberi in Java.
Tipo statico e tipo dinamico.
Uso di metodi privati per funzioni ausiliarie che non appartengono all'interfaccia del tipo. Downcast e instance of.
Il metodo equals. Il metodo toString.
Overloading.
Lucidi: *
Java3.pdf: Interfacce e sottotipaggio
lun 10 mag (Salvo)
Alberi in Java: bilanciamento in profonditą e nel numero dei nodi.
Bilanciamento con un'unica scansione dell'albero: uso dei valori tornati dal metodo.
Bilanciamento con un'unica scansione dell'albero: simulazione del passaggio di parametri per indirizzo in Java.
ven 14 mag (Salvo)
Alberi in Java.
Uso di campi statici.
Uso di costruttori privati. Inner classes.
Codice: *
TestTree.java: Alberi in Java
lun 17 mag (Salvo)
Ancora sugli alberi in Java: alberi generici.
Overloading. Subtyping dei tipi base.
Introduzione all'ereditarietą.
Overriding di metodi.
Lucidi: *
Java4.pdf: Ereditarietą
Codice: *
TestPunti.java: Esempio ereditarieta': punti e punti colorati
ven 21 mag (Salvo)
Ancora sull'ereditarietą: classi astratte.
lun 24 mag (Salvo)
Eccezioni in Java.
Lucidi: *
eccezioni.pdf: Eccezioni
ven 28 mag (Salvo)
Iteratori in Java.
Lucidi: *
iteratori.pdf: Iteratori
lun 31 mag (Salvo)
Ereditarietą e specifiche.
Invariante di tipo di dato.
Signature, method e property rule.
Wrapping.
ven 4 giu (Salvo)
Insiemi come liste ordinate.
Tipi mutabili e immutabili.
Il metodo clone().
lun 7 giu (Salvo)
Polimorfismo in JAVA: Tipi Generici.
lun 11 giu (Salvo)
Polimorfismo e sottotipaggio: limiti inferiori e limiti inferiori.
Funzionali su liste in Java: map e reduce.
Lucidi: *
polimorfismo.pdf: Tipi Generici
Codice: *
testBlocchi2.java: Liste Generiche
Ecco alcuni utili esercizi con cui cimentarvi
Potete mettervi alla prova sull'intramontabile mondo dei
fumetti,
Oppure su quello tornato di recente alla ribalta di
Pupe e Secchioni.
Purtroppo anche i tagli a univeristą e ricerca sono il pensiero ricorrente dei nostri
Onorevoli
Il consiglio č di consultare le seguenti soluzioni commentate solo
dopo adeguato sforzo...
Eccovi svelati comunque tutti i segreti di
paperi e Xman, di
Pupe e Secchioni
e di lacrimose e sanguinose
manovre economiche
--
IvanoSalvo - 19 Mag 2010