| LEZIONE | ARGOMENTI TRATTATI | DOCUMENTAZIONE / ESERCIZI |
|
18.10.10 1. Presentazione del corso. Introduzione a GNU/Linux e all'uso del JDK. |
Linux: la shell bash - comandi essenziali; il file system - struttura ad albero,
root (/), path assoluti e relativi, home directory, directory corrente (.).
File e loro formati, il formato testo.
Un editor di testo per linux: gedit.
Il Java Development Kit: javac e java, compilazione ed esecuzione da
linea di comando.
Proposta di lavoro: installare sul proprio pc linux, il JDK e la libreria prog-3ed.jar, ripassare i comandi della bash visti a lezione (pwd, ls, cd, cp, mv, mkdir, rm, rmdir, chmod, uso di ? e *), scrivere, compilare ed eseguire il programma visto a lezione. |
Per un'introduzione a GNU/Linux si vedano gli
Appunti
a cura di M. Santini), in particolare le sezioni 1 e 2.
Java: Esempio 1 |
| 25.10.10 2. Introduzione alla programmazione in Java |
Shell bash: echo, cat, less.
Struttura di un semplice programma Java. Classi, oggetti, metodi.
Librerie. Il metodo main. Variabili e tipi. Stringhe e interi.
Primi programmi java
(Esempio 2,
Esempio 3,
Esempio 4)
Proposte di lavoro: Es. 0: ripasso dei comandi della shell bash (per casa). Es. 1: uso di String e int. Es. 2: uso del tipo int, delle classi String e Frazione. Es. 3: uso della classe Intero. Es. 4: uso di String e Intero. |
Documentazione della libreria API Java: http://java.sun.com/javase/6/docs/api/ e della libreria prog del libro di testo: http://homes.dico.unimi.it/~pighizzi/jb/librerie/doc/ Comandi shell |
|
8.11.10 3. Strutture di controllo: l'if. |
Correzione degli esercizi.
Sequenze di escape.
Il costrutto di selezione if (if, if - else, if - else if - else).
Espressioni booleane.
Proposte di lavoro: Es. 0: ripasso della bash Esercizi: uso dell'IF Es. 2: uso di IF da solo Es. 3: uso di IF - ELSE IF - ELSE Es. 4: uso di operatori logici Es. 5: uso di espressioni logiche complesse Lavoro per casa: finire gli esercizi qui sopra, fare gli esercizi del libro, fra qualche giorno rifare gli esercizi di oggi. |
Soluzioni esercizi Lez. 2:
Es1 Es. 2 Es. 3 Es. 4 |
| 15.11.10 4. Le strutture di controllo. |
For, while. Strutture di controllo annidate (if e for).
Proposte di lavoro: Es. 1: selezione Es. 2: iterazione Esercizi 3, 4 e 5 di Esercizi: iterazione Per casa: Es. 2.9, 2.10, 3.13, 3.14, 3.15, 3.17, 3.21, 3.26 del libro di testo. Ripassare la sintassi dei comandi visti finora. |
Soluzioni esercizi Lez. 3
Nota sull'uso delle graffe, Nota sulla dichiarazione delle variabili |
| 22.11.10 5. Strutture di controllo. |
Proposte di lavoro:
Es. 1: selezione (evitare le ripetizioni di codice), Es. 2, Es. 3, Es. 4, Es. 5, Es. 6, Es. 7 (facoltativo), Per casa: esercizi su selezione e iterazione, esercizi sui cicli numerati, Es. del libro di testo. |
|
| 25.11.10 6. Tipi primitivi e espressioni. |
Il tipo char. Espressioni sui char.
Conversioni implicite ed esplicite (casting) di tipo.
Ridirezione dell'I/O (<input >output).
Proposte di lavoro: Es. 1. Esercizi sui cicli. Esercizi sui caratteri. Tabella1. Tabella2. Tabella3. Per casa: Esercizi sui cicli. indovinaNumero.txt . |
Alcune soluzioni esercizi Lez. 4
Soluzione es. Rotazione |
| 29.11.10 7. Array. |
Metodi statici. Classi involucro.
Array. L'array args del metodo main.
Gestione dell'input. La classe StringTokenizer.
Costrutto for-each.
Un algoritmo di ordinamento sul posto (selezione diretta).
Proposte di lavoro: Esercizi su input, array, conversioni di base |
Dispensa sulla rappresentazione dei dati (Prof. Boldi)
Nota sull'uso dell'argomento args del main |
| 9.12.10 8. I/O. Array e ArrayList |
La classe Scanner e i suoi metodi nextInt(), nextDouble(), nextLine(), next().
La classe generica ArrayList e i metodi add, get, size, set, remove, toString.
Classi involucro e auto-boxing e -unboxing. Uso del ciclo for esteso (for-each).
I metodi toString e copyOf della classe Arrays.
Array a piú dimensioni.
Proposte di lavoro: Es. 5.3, 5.18, 5.19 (Nota), 5.24 (Nota), 5.25, 5.28 (senza usare la classe Sequenza), SommaMatrici. |
|
| 13.12.10 9. Implementazione di classi. |
Introduzione all'implementazione di classi. Progettazione dell'interfaccia
pubblica e documentazione per javadoc. Implementazione e verifica di
applicazioni da specifiche: campi, campi statici,
costruttori, uso di this, metodi pubblici.
Proposte di lavoro: Menu, ContoCorrente, LibrettoEsami, CampoMinato. |
Soluzioni di Menu e ContoCorrente |
| 20.12.10 10. Implementazione di classi: gerarchia e ereditarietà. |
Implementazione di un'applicazione con piú classi:
riferimenti interni ed esterni ad una classe,
ereditarietà, overloading, overriding, il metodo equals,
estensione di classi.
Proposte di lavoro: Rettangoli (le istruzioni sono in rettangoli.txt) |
Documentazione delle classi da implementare
|
| 10.1.11 11. Interfacce e introduzione alle Collections. |
Dichiarazione di interfacce e realizzazione di classi che le implementano.
Uso di Collections delle API Java (rivedere: tipi generici, interfacce,
Cap. 5 e 6. Si consiglia inoltre la parte introduttiva di
http://java.sun.com/docs/books/tutorial/collections/index.html sulle
collections).
Proposte di lavoro: DataSet, DataSetMisurabile, CestinoDellaSpesa (scaricare i file da Cestino della spesa e lavorare su quelli) |
Documentazione delle classi da implementare |
| 17.1.11 12. Collections. |
Le interfacce Comparable e Iterable. I metodi add, contains, remove. Uso di
classi astratte.
Proposte di lavoro: rubricaTelefonica.txt (scaricare i file da Rubrica telefonica e lavorare su quelli) |
Documentazione delle classi da implementare
RubricaTelefonica: soluzione completa |
| 24.1.11 13. Ripasso. |
Esercizi di ripasso e di preparazione all'esame
|
|
|
Esercizi supplementari |
Proposte di lavoro:
Esercizio sull'uso corretto del metodo contains:
Pagella.java (contiene testo esercizio),
Valutazione.java (classe da completare).
Esercizio sull'uso corretto del metodo remove:
Eratostene.java.
Esercizio sull'uso del metodo sort della classe
Collections:
pagella.
Sequenze di Kaprekar (una sola classe con metodi statici). Torneo (gerarchia di classi con uso di Collection). |
Nota sull'esecuzione automatica di test per controllare la correttezza dell'output. |
| Orario delle lezioni: | lunedí h 8:30-12:30, primo semestre. Il corso prevede circa 48 ore di lezione. |
| Inizio lezioni: | lunedí 18.10.09 |
| Aula: | laboratorio tau, SILab, via Comelico 39 |
| Ricevimento:
|
per appuntamento (email: morpurgo@dsi.unimi.it),
ufficio S201, Dipartimento di Scienze dell'Informazione (DSI), via Comelico 39/41 - 20135 Milano NOTA Quando si scrive a un docente, usare preferibilemente l'indirizzo di posta di ateneo (della forma nome.cognome@studenti.unimi.it). Indicare sempre il proprio nome e cognome e l'insegnamento (Laboratorio di programmazione). |
Copyright © 2009. Morpurgo. DSI, Università degli Studi di Milano.