Programmazione
(Turno 3)
Anno accademico 2008/2009 - Primo semestre
In questa pagina potete
trovare
Materiale di
riferimento
Avvisi
Argomenti delle
lezioni
Risorse
software
Pagine
correlate
Laboratorio di Programmazione
Compitini
Esami
Pagine anno accademico
2007/2008
Materiale di riferimento
Libro di testo:
Altro materiale consigliato:
- K. Arnold, J. Gosling, D. Holmes, Il linguaggio Java
- Manuale ufficiale, Pearson Education, 2006.
- Java Technology sito internet
della Sun.
Documentazione delle librerie:
Avvisi
-
Risultati complessivi
È disponibile il quadro riassuntivo
dei risultati dei compitini e del progetto di laboratorio.
-
Conclusione del corso
I corsi di Programmazione/Laboratorio di Programmazione (turno 3) sono
terminati il giorno 26 gennaio 2009 con il secondo compitino.
- Calendario delle lezioni
Il corso è iniziato lunedì 29 settembre 2008.
Le lezioni si svolgono secondo quanto previsto dal
calendario
accademico e si concluderanno nel mese di gennaio.
Eventuali variazioni saranno comunicate su queste pagine e nella
sezione avvisi del sito del
Coordinamento Didattico
di Scienze e Tecnologie Informatiche.
- Orari e aule
Le lezioni si tengono presso il Settore Didattico, via Celoria 20, nei giorni
di lunedì, mercoledì e venerdì, dalle 18.30 alle 21.30,
nelle seguenti aule:
- Lunedì: aula 201
- Mercoledì: aula 309
- Venerdì: aula 201
Salvo cambiamenti occasionali, le lezioni del lunedì e del venerdì
sono dedicate al corso di Programmazione, quelle del mercoledì al corso di laboratorio.
- Ricevimento studenti
Il docente riceve gli studenti il martedì dalle 11 alle 13
(via Comelico 39, primo piano, per tale orario non è necessario
fissare un appuntamento). Eventuali sospensioni o spostamenti
del ricevimento
vengono comunicati tramite avviso sul sito del
Coordinamento Didattico
di Scienze e Tecnologie Informatiche.
Per ricevimento in altri orari è necessario inviare una
email per chiedere un appuntamento.
Argomenti delle lezioni
(Per gli argomenti del corso di laboratorio si faccia riferimento
all'apposita pagina.)
- 29 settembre 2008 - Lezione 1
Presentazione del corso. L'evoluzione della programmazione.
Algoritmi e Programmi. Informazione.
Unità di misura dell'informazione.
- 1° ottobre 2008 - Lezione 2
Dispositivi hardware. Classificazione del software. La macchina di Von
Neumann. Linguaggi macchina e assembler. Un esempio di linguaggio
assembler.
Dai linguaggi macchina ai linguaggi ad alto livello.
Compilatori, interpreti, assemblatori.
- 3 ottobre 2008 - Lezione 3
Editor, compilatore, linker e librerie.
Il compilatore Java. Il bytecode e la Java Virtual Machine.
Variabili e assegnamenti.
La programmazione strutturata: sequenza e selezione.
- 6 ottobre 2008 - Lezione 4
La programmazione strutturata: iterazione. Esempi.
Aspetti sintattici dei linguaggi: le grammatiche. BNF e carte
sintattiche. Alcuni aspetti della grammatica del linguaggio Java.
- 8 ottobre 2008 - Lezione 5
Esempi di cicli infiniti.
Dalla programmazione strutturata alla programmazione a oggetti.
Il primo programma Java.
Protocolli e contratti.
Costruttori e operatore new.
Invocazione di metodi e costruttori.
Variabili per riferimenti.
- 10 ottobre 2008 - Laboratorio
- 13 ottobre 2008 - Lezione 6
Le classi ConsoleInputManager e ConsoleOutputManager.
Direttive d'importazione.
Prototipi e segnature dei metodi.
La classe String.
Variabili e tipi. Tipi primitivi e tipi riferimento.
- 15 ottobre 2008 - Laboratorio
- 20 ottobre 2008 - Lezione 7
Esercizi ed esempi sull'uso delle classi
e sulla scrittura di metodi main che utilizzano
esclusivamente istruzioni in sequenza
(link ad alcuni degli esempi presentati,
con ulteriori domande ed esercizi).
Il costrutto di selezione in Java. Il tipo primitivo boolean
(introduzione).
Cosa sappiamo fare? Cosa abbiamo imparato?
Arrivato a questo punto del corso (in particolare dopo
la prima parte di questa lezione), lo studente deve essere in
grado di svolgere autonomamente tutti gli esercizi
proposti nei primi due capitoli del libro di testo e
nelle prime due lezioni di laboratorio.
In particolare, bisogna sapere scrivere applicazioni
basate su metodi main con istruzioni in sequenza, in grado
di utilizzare oggetti di svariate classi.
Gli studenti sono invitati a prestare particolare attenzione
agli esercizi alla fine del secondo capitolo.
È inutile affrontare gli argomenti successivi
senza avere acquisito queste semplici abilità.
- 22 ottobre 2008 - Laboratorio
- 24 ottobre 2008 - Lezione 8
Il tipo boolean (continuazione). La lazy evaluation.
I cicli do...while e while.
(Link ad alcuni degli esempi presentati,
con ulteriori domande ed esercizi.)
- 27 ottobre 2008 - Lezione 9
I metodi statici. Il tipo primitivo char e la classe Character.
Il ciclo for. Quando usare e quando non usare il ciclo for.
Esempi. Le istruzioni break e continue.
(Link ad alcuni degli esempi presentati,
con ulteriori domande ed esercizi.)
Cosa sappiamo fare? Cosa abbiamo imparato?
A questo punto è stato presentato tutto il
materiale dei primi tre capitoli del testo
(e alcuni argomenti dal quarto).
Ora lo studente deve essere in grado di scrivere
applicazioni basate su metodi main (con costrutti
di sequenza, selezione e iterazione), in grado
di utilizzare oggetti di svariate classi.
Gli studenti sono invitati a prestare particolare attenzione
agli esercizi proposti nel terzo capitolo del testo
e a questi
ulteriori esercizi.
- 29 ottobre 2008 - Laboratorio
- 31 ottobre 2008 - Lezione 10
Uso dei cicli: esempi di cicli innestati.
Introduzione ai tipi generici: le classi Sequenza e SequenzaOrdinata.
Il ciclo for-each.
La classe involucro Integer. Il tipo riferimento Integer e il tipo
primitivo int: autoboxing e unboxing.
(Link ad alcuni degli esempi presentati,
con ulteriori domande ed esercizi.)
Nota
Gli argomenti presentati in questa lezione si trovano principalmente
nei paragrafi
4.10 e 5.7 del libro di testo. Anche se non sono stati ancora presentati
tutti gli argomenti dei capitoli 4 e 5, con quanto visto oggi gli
studenti possono risolvere gli esercizi proposti dopo il paragrafo
5.7 (con l'eccezione degli esercizi 5.21, 5.22, 5.24 che fanno
riferimento a esempi sugli array, argomento non ancora trattato).
- 3 novembre 2008 - Lezione 11
Le espressioni e gli effetti collaterali.
L'operatore condizionale.
I tipi numerici interi. Conversioni implicite (promozioni) ed
esplicite (forzature o cast) tra tipi primitivi interi.
(Link ad alcuni degli esempi presentati.)
- 5 novembre 2008 - Laboratorio
- 7 novembre 2008 - Laboratorio
- 19 novembre 2008 - Laboratorio
- 21 novembre 2008 - Lezione 12
I tipi primitivi in virgola mobile.
Conversioni tra valori interi e valori in virgola mobile.
Perdita d'informazione e perdita di precisione.
Costanti e importazione statica.
Esercizi ed esempi.
(Link ad alcuni degli esempi presentati,
con ulteriori domande ed esercizi.)
- 24 novembre 2008 - Primo compitino
- 26 novembre 2008 - Lezione 13
Tipi enumerativi. Istruzione switch. Array.
Array e cicli for. Il parametro del metodo main.
Significato dell'intestazione del metodo main.
- 28 novembre 2008 - Lezione 14
Le classi Rettangolo e Quadrato. L'ereditarietà: superclassi
e sottoclassi, supertipi e sottotipi. L'operatore instanceof.
Conversioni implicite (promozioni) ed esplicite (forzature o cast)
tra tipi riferimento.
- 1° dicembre 2008 - Lezione 15
Overriding e polimorfismo.
Chiamate di metodi: compilazione ed esecuzione.
Le classi Cerchio e Figura. Classi astratte. La classe Object
e la gerarchia delle classi. Esempi.
- 3 dicembre 2008 - Laboratorio
- 5 dicembre 2008 - Lezione 16
I file di testo.
Le interfacce Java. L'interfaccia
Comparable. Esempi di classi che implementano Comparable.
Interfacce e tipi riferimento.
La gerarchia dei tipi.
Esempi su gerarchia delle classi e gerarchia dei tipi.
(Esempi sui file di testo,
Esercizi
sulla gerarchia dei tipi e delle classi).
- 10 dicembre 2008 - Laboratorio
- 15 dicembre 2008 - Lezione 17
Implementazione delle classi.
Esempio: la classe Frazione.
Organizzazione in package.
Modificatori di visibilità public e private.
Riepilogo sulla struttura delle classi:
campi, campi statici, costruttori, metodi, metodi statici.
Variabili locali dei metodi/costruttori e parametri.
- 17 dicembre 2008 - Laboratorio
- 19 dicembre 2008 - Lezione 18
Estensione di classi e implementazione di sottoclassi.
Esempi: implementazione di Quadrato.
Costruttori e gerarchia delle classi. Uso di this e di super.
Implementazione della classe Figura.
Cenni all'adombramento.
- 7 gennaio 2009 - Lezione 19
Le eccezioni: comportamento dei programmi in caso di eventi anomali.
Come intercettare le eccezioni: il costrutto try/catch.
La gerarchia delle eccezioni. Esempi.
(Link ad alcune degli esempi presentati.)
- 9 gennaio 2009 - Lezione 20
Classificazione delle eccezioni: eccezioni controllate e
non controllate. Come delegare le eccezioni.
L'input/output standard (package java.io).
Stream di caratteri: le classi Reader, FileReader, BufferedReader
(VisualizzaFile.java: lettura a caratteri
mediante
uso di FileReader, lettura per righe
mediante
uso di BufferedReader,
con
una semplice gestione delle eccezioni); le classi Writer,
FileWriter, BufferedWriter (CopiaFile.java: elaborazione a caratteri
mediante FileWriter,
elaborazione per righe
mediante BufferedWriter).
Stream di byte: InputStream, Outputstream ed esempi di sottoclassi.
I riferimenti predefiniti System.in, System.err, System.out
(ContaLettere.java: lettura
da tastiera, lettura da
file o da tastiera).
Come sollevare le eccezioni: l'istruzione throw.
Come definire nuove eccezioni.
- 12 gennaio 2009 - Lezione 21
Metodi ricorsivi.
Invocazione dei metodi e passaggio dei parametri.
Passaggio per valore. Cenni ad altri meccanismi di passaggio dei
parametri.
Organizzazione della memoria durante l'esecuzione: memoria
statica, stack, heap. Gestione dello
stack durante l'esecuzione: record di attivazione e loro struttura.
Chiamate e rientri dai metodi.
- 14 gennaio 2009 - Laboratorio
- 16 gennaio 2009 - Lezione 22
Evoluzione dello stack durante l'esecuzione e metodi ricorsivi.
Overloading e overriding: il ruolo del compilatore e
quello dell'esecutore. Come avviene la scelta del metodo
da eseguire. Come scrivere il metodo equals.
Esercizi su eccezioni, ereditarietà e gerarchia delle classi,
struttura delle classi.
- 21 gennaio 2009 - Laboratorio
- 23 gennaio 2009 - Laboratorio
- 26 gennaio 2009 - Secondo
compitino
Risorse software
- Il package prog, utilizzato in molti esempi del corso, e fornito con il libro di
testo.
WebCounter
segnala
accessi a queste pagine dal 10 settembre 2008
Ultimo
aggiornamento:
28 gennaio 2009
©
Giovanni Pighizzini
Università degli Studi di Milano