Programmazione Turno 3/2005-2006
Indice
- 1 News
- 2 Anni precedenti
- 3 Informazioni generali
- 4 Informazioni specifiche
- 5 Materiale Didattico
- 6 Diario del corso
- 6.1 Lezione di Lunedì 3-10-05
- 6.2 Lezione di Mercoledì 5-10-05
- 6.3 Lezione di Venerdì 7-10-05
- 6.4 Lezione di Lunedì 10-10-05
- 6.5 Lezione di Mercoledì 12-10-05
- 6.6 Lezione di Venerdì 14-10-05
- 6.7 Lezione di Lunedì 17-10-05
- 6.8 Lezione di Mercoledì 19-10-05
- 6.9 Lezione di Venerdì 21-10-05
- 6.10 Lezione di Lunedì 24-10-05
- 6.11 Lezione di Mercoledì 26-10-05
- 6.12 Lezione di Lunedì 31-10-05
- 6.13 Lezione di Mercoledì 2-11-05
- 6.14 Lezione di Venerdì 4-11-05
- 6.15 Lezione di Lunedì 7-11-05
- 6.16 Lezione di Mercoledì 9-11-05
- 6.17 Lezione di Venerdì 11-11-05
- 6.18 Lezione di Lunedì 14-11-05
- 6.19 Lezione di Mercoledì 16-11-05
- 6.20 Lezione di Venerdì 18-11-05
- 6.21 Lezione di Mercoledì 23-11-05
- 6.22 Lezione di Lunedì 28-11-05
- 6.23 Lezione di Mercoledì 30-11-05
- 6.24 Lezione di Venerdì 02-12-05
- 6.25 Lezione di Lunedì 05-12-05
- 6.26 Lezione di Lunedì 12-12-05
- 6.27 Lezione di Mercoledì 14-12-05
- 6.28 Lezione di Venerdi 16-12-05
- 6.29 Lezione di Lunedì 19-12-05
- 6.30 Lezione di Mercoledì 21-12-05
- 6.31 Lezione del 6 gennaio 2006
- 6.32 Lezione del 18 gennaio 2006
- 6.33 Lezione del 20 gennaio 2006
- 6.34 Lezione del 23 gennaio 2006
- 6.35 Lezione del 25 gennaio 2006
News
Lezioni cancellate/spostate
- MERCOLEDI' 21 DICEMBRE ULTIMA LEZIONE DI PROGRAMMAZIONE PRIMA DELLE VACANZE NATALIZIE - SI RIPRENDE LUNEDI 9 GENNAIO
Appelli
MODALITA' DI REGISTRAZIONE VOTI e PROSSIMI APPELLI
Tutte queste informazioni sono o saranno publicate nell'apposita sezione del sito del corso.
IL CORSO E' TERMINATO
I risultati per chi ha svolto compitini e progettini saranno online a partire dal giorno 10 Febbraio a questo link.
USCITI I RISULTATI FINALI
Anni precedenti
Informazioni generali
Docenti
Prof. Pighizzini / Prof. Marra per il laboratorio.
Corsi di laurea
Modalità d'esame
Scritto + Orale + Progetto
3 compitini svolti in itinere, danno la possibilità di essere esentati dallo scritto di fine semestre infatti chi dovesse passare tutti e 3 i compitini non sarà tenuto a dare lo scritto.
Sarà inoltre possibile al posto che il progetto di fine semestre realizzare 3 progettini, il buon esito dei 3 progettini infatti darà la possibilità di non presentare il progetto di fine semestre.
Se sia i compitini che il progetto risultassero molto buoni non sarà necessario neanche dare l'orale.
il prof ha già dato 3 date indicative per i 3 compitini
- 2 Novembre
- 2 Dicembre
- 25 Gennaio
I 3 progettini ed il progetto finale saranno organizzati da prof. Marra
Orari e luogo delle lezioni
Lunedì | Mercoledì | Venerdì |
---|---|---|
18:30-21:30 Aula 405 (celoria) | 18:30-21:30 Aula 405 (celoria) | 18:30-21:30 Aula 405 (celoria) |
Orario di ricevimento studenti
Da definire.
Informazioni specifiche
Siti del corso
Forum del corso, e affini
Materiale Didattico
Programma del corso
Testi
Dai fondamenti agli oggetti - Corso di programmazione java (2^ ed.) - Giovanni Pighizzini - Mauro Ferrari edito da Pearson Addison Wesley (il libro contiene anche un CD con librerie che saranno usate durante il corso).
Altro materiale consigliato
K. Arnold, J. Gosling, D. Holmes, Java - Manuale ufficiale, Addison Wesley, 2001. Java Technology sito internet della Sun
Video delle lezioni
Si possono copiare facendo richiesta alla segreteria didattica in via Comelico. Fruibili via streaming con account silab http://streaming.dico.unimi.it
Appunti
Altro materiale in Internet
Esami passati, tesine, compiti ..
- http://homes.dico.unimi.it/prog/turno3-04/compitini/
- http://homes.dico.unimi.it/prog/turnoSerale-03/compitini/
- http://homes.dico.unimi.it/prog/turno2-02/compitini/
Diario del corso
Lezione di Lunedì 3-10-05
Argomenti trattati nella lezione di oggi:
- definizione di informatica e programmazione
- Breve storia della Programmazione:
- Linguaggio macchina
- Fortran
- Linguaggi Algol
- Programmazione strutturata (Pascal)
- Programmazione ad oggetti (Java)
- Definizione di Algoritmo
- esempio algoritmo di [ Euclide] per calcolare il massimo comun divisore
- definizione programma (differenze da un algoritmo)
Lezione di Mercoledì 5-10-05
Argomenti trattati nella lezione di oggi :
esempi di calcolo utilizzo della memeoria per una pagina in ascii
esempio calcolo memoria per un'immagine 800X600 fatta con 2/16/256/65536 colori non compressa
- Computer/calcolatrice le differenze
- Breve classificazione HARDWARE
- Differenze e caratteristiche memoria centrale/ memoria di massa
- Classificazione SOFTWARE
- sistema operativo
- utility
- software applicativi
- Modello di VON NEUMANN
- La CPU fetch/decode/execute
- I registri della CPU / la RAM e le sue Locazioni
- LINGUAGGI ASSEMBLER
- comandi trasferimento dati
- comandi aritmetico logici
- istruzioni di controllo e salto
esempio codice per sommare 2 numeri e salvarne il risultato nella cella X
Compito per casa
provare a scrivere con i comandi assembler imparati del codice che, utilizzando l'algoritmo di Euclide, calcoli il massimo comun divisore tra 2 numeri. supposto di avere i due numeri in 2 celle 101 e 102 e di dover lasciare il risultato nella cella 103 e tenendo presente che non mi interessa salvare i dati inizialmente contenuti nelle celle 101 e 102
Lezione di Venerdì 7-10-05
Argomenti trattati nella lezione di oggi :
- correzione compito per casa (programmino in assembler)
- osservazione approposito degli svantaggi della programmazione in assembler
- I linguaggi ad alto livello
- il compilatore
- il linker
- L'interprete
- Errori
- durante la compilazione
- usando il linker
- la fase di testing
- I limiti della portabilità del codice
esempio somma di interi su 2 architetture diverse (una con interi rappresentati da 16 bit ed una da 32 bit)
- JAVA
- il compilatore
- il BYTECODE
- la JVM
- i vantaggi di questa architettura
- La portabilità del codice
- la portabilità del compilatore
- svantaggi
- prestazioni
- le funzioni normalmente solte dal linker in Java ( controllo e colegamento negli altri ling. svolti dal linker)
- le applet Java
Lezione di Lunedì 10-10-05
Argomenti trattati nella lezione di oggi :
- Strutture fondamentali della programmazione strutturata
- SEQUENZA
- SELEZIONE
- ITERAZIONE
- esempio algoritmo di una telefonata utilizzando le strutture fondamentali
- esempio algoritmo equazioni di secondo grado
- Le variabili
- istruzioni di assegnamento
- ITERAZIONE
- controllo in coda
- controllo in testa
- scrivere i seguenti algoritmi come compito
- Algoritmo che legge una sequenza di numeri interi in ingresso e ne calcola la media
- Algoritmo che legge una sequenza di numeri interi in ingresso e ne calcola quanti pari e quanti dispari
- Algoritmo che legge 2 numeri interi e calcola il loro prodotto usando solo somma e sottrazione
- Algoritmo che legge 2 numeri interi e calcola il quoziente e il resto del primo diviso il secondo usando solo addizione e sottrazione
Lezione di Mercoledì 12-10-05
(fino la fine del primo capitolo del libro)
- Ulteriori esempi di programmazione strutturata
- Aspetti sintattici dei linguaggi
- le grammatiche
- BNF e carte sintattiche
Lezione di Venerdì 14-10-05
Laboratorio di programmazione
- Introduzione al corso (logistica, programma)
- Installazione di Java 1.5 e della sua documentazione.
- Editor per il codice sorgente (ad esempio, ConText)
- Impostazione delle variabili di sistema PATH e CLASSPATH
- Il primo programma Java: compilazione ed esecuzione
Lezione di Lunedì 17-10-05
- Il primo programma Java
- Protocolli e contratti
- Costruttori
- Invocazioni di metodi
- Le classi ConsoleInputManager e ConsoleOutputManager
il package prog in cui sono contenute queste classi è fornito con il libro di testo ed è liberamente scaricabile da questo link http://homes.dico.unimi.it/prog/turno3-05/sw/prog.tar
Lezione di Mercoledì 19-10-05
- La classe String
- Prototipi e segnature dei metodi
- Variabili e tipi di variabile
- Riferimento
- Esercizi ed esempi con le classi Frazione, String e Intero.
Lezione di Venerdì 21-10-05
laboratorio di programmazione
- Struttura di una classe
- esempio di una classe che utilizza il metodi della classe ConsoleInputManager del package prog
- leggere la documentazione delle classi
- esempio classe che ci fa meglio comprendere i riferimente in java ( è stato istanziato un oggetto della classe String dichiarando 2 riferimenti)
- riferimenti null "espliciti" ed "impliciti"
Lezione di Lunedì 24-10-05
- Esempi con le classi (importo,String,intero) http://homes.dico.unimi.it/prog/turno3-05/sw/Scontrino.java
- La selezione in Java
- Il tipo primitivo Boolean
Lezione di Mercoledì 26-10-05
- L'iterazione in Java
- I cicli do-while e while
- Il ciclo for
- Quando usare e quando non usare il ciclo for
Lezione di Lunedì 31-10-05
laboratorio di programmazione
- il prof. Marra ha sviluppato un package labprog che renderà disponibile e liberamente scaricabile sul sito del laboratorio di programmazione http://homes.dico.unimi.it/prog/turno3-05/lab/
- durante la lezione abbiamo implementato un rudimentale programma di gestione delle anagrafiche, che mediante l'utilizzo delle classi Persona e Archivio, archivia persone inserite dall'utente e su richiesta dell'utente le stampa a video ordinate alfabeticamente.
il programma è stato sviluppato usando un ciclo while e un menù che permette all'utente di scegliere se stampare le anagrafiche o inserirne di nuove
Lezione di Mercoledì 2-11-05
PRIMO COMPITINO
http://homes.dico.unimi.it/prog/turno3-05/compitini/#compitino1
Lezione di Venerdì 4-11-05
- Esempi sul ciclo For
- Break e Continue
- La lazy evaluation
- L'operatore condizionale
- Promozioni e cast (tipi numerici interi primitivi)
Lezione di Lunedì 7-11-05
laboratorio di programmazione
- il costrutto di selezione switch
- la classe StringTokenizer
- abbiamo modificato il codice del programma iniziato la scorsa lezione utilizzando switch al posto degli If annidati
- usando la classe StringTokenizer abbiamo modificato il codice in modo che l'output del programma fosse un elenco numerato
Lezione di Mercoledì 9-11-05
- I tipi primitivi a virgola mobile
- esponente e mantissa
- Virgola mobile IN JAVA
- float e double
- promozioni implicite e cast tra primitivi interi e a virgola mobile
- perdita di precisione
- perdita di informazione
- il tipo primitivo char
- sequenze di escape
- l'istruzione switch
Lezione di Venerdì 11-11-05
- I tipi enumerativi
- codice esempio http://homes.dico.unimi.it/prog/turno3-05/sw/Oggi.java
- I metodi statici
- le classi Involucro
- Unboxing ed Autoboxing
- Array in java
- comprensione di: "public static void main (String[]args)"
Lezione di Lunedì 14-11-05
Laboratorio aula 311
- impostato path e classpath sul pc del laboratorio
- copia dei package prog e labprog
- test funzionamento librerie
- spiegazione del progetto che svolgeremo durante le ore passata sul pc in laboratorio
- introduzione alla comunicazione di rete
seconda parte aula 200
- programma per il controllo di stringhe palindrome , usando le classi specchio e finestra del package labprog
- per casa migliorare il programma gestione delle anagrafiche
- permettendo di cancellare un anagrafica selezionandone il numero
- possibilità di fare una sempilce cifratura dei dati (usando la classe specchio)
- possibilita di decifrare
Lezione di Mercoledì 16-11-05
- Array ulteriori esempi
- ArrayIndexOutofBoundsException
- da fare per casa - modificare il programma svolto a lezione in modo che legga delle stringhe e le salvi in un array (fino a che l'utente risponde S al metodo ReadSiNo("inserire altra Stringa?") , se si arriva alla dimensione massima dell'array, il programma dovrà crearne uno nuovo di dimensione doppia ,copiando i riferimenti alle stringhe nel nuovo array
- for each
- Ereditarietà e polimorfismo
- Superclassi e sottoclassi
- supertipi e sottotipi
- esempi con la classe rettangolo e quadrato
- l'operatore instanceof ("riferimanto" instanceof "tipo riferimento")
Lezione di Venerdì 18-11-05
- Ereditarietà e Polimorfismo
- Chiamate di metodi: compilazione ed esecuzione
- Promozioni e casting fra tipi riferimento
- Classe cerchio e figura(classe astratta)
- le classi astratte
- la classe object
Lezione di Mercoledì 23-11-05
- Le classi sequenza e sequenza ordinata
- I Tipi generici
- esercizio classe sequenza (creata oggetto sequenza in cui sono stati memorizzati e stampati diversi sottotipi di un supertipo)
- la classe sequenza ordinata
- Le Interfacce JAVA
- Esempio con Classe SequenzaOrdinata (classe in grado di "immagazzinare" oggetti che implementano l'interfaccia comparable)
- Le interfacce tipi riferimento
- le interfacce e la gerarchia dei tipi
Lezione di Lunedì 28-11-05
1a Parte in aula
- Usando la classe Persone e Archivia Persone + le nuove classi rese disponibili per scrivere su file ed importare il file(saranno scaricabili dal sito del laboratorio di programmazione a partire da Mercoledì) abbiamo riscritto il programma (semplice anagrafica) in modo che nel menù sia possibile scegliere di salvare l'anagrafica sul file e di importare da file.
2a Parte in laboratorio
- Esercizio Client\Server
- creato server (usando le classi del package NET di LABPROG) in ascolto su la porta tcp 1234 che resta in attesa di un client che inserisca una stringa e il server restituisca la stringa capovolta (il tutto in un ciclo che termina solo se la stringa passata dal client è "FINITO")
Lezione di Mercoledì 30-11-05
- IMPLEMENTAZIONE DELLE CLASSI
- esempi implementazione classe Frazione
- lo stato
- il modificatore private
- implementazione costruttori
- implementazioni metodi
- this
- implementazione nella classe frazione dell'interfaccia Comparable
- esempi implementazione classe Frazione
- Svolti esercizi preparazione al compitino
Lezione di Venerdì 02-12-05
Lezione di Lunedì 05-12-05
laboratorio di programmazione
- gli URL
- Esercizio occorrenze
- abbiamo iniziato ad implementare una classe che analizzando le occorenze delle lettere in un testo, basandosi su apposite tabelle di riccorenza, riconosca la lingua in cui è scritto il testo.Abbiamo utilizzato StringTokenizer per questo scopo
Lezione di Lunedì 12-12-05
- terminato il programma per il riconoscimento della lingua di un testo
- Testatato mediante la classe leggiUrl
- Spiegato nuovo progetto da svolgere in aula attrezzata
- client per una Chat che utilizzando i canali di comunicazione apre su una specifica porta una sessione con un server chat
- Questo Client sarà sviluppato usando oltre la classe CanaleDiComunicazione anche la Classe GuiSemplificata che sarà reperibile nel package
Labprog scaricabile dal sito del laboratorio
Lezione di Mercoledì 14-12-05
- Riepilogo Implementazione delle classi
- this
- super
- Organizzare le classi in package
- Implementazioni di sottoclassi
- Esempio implementazione di Quadrato sottoclasse di rettangolo
- Public/Private
- Implementazione di classi astratte
- esempio con Figura
Lezione di Venerdi 16-12-05
- Esempio notazione Postfissa
- Creato programma che ricevendo in input dall'utente un espressione postfissa ne calcoli il risultatato ( il programma è stato scritto considerando che l'utente inserisca un solo Operando o Operatore per riga e che il programma debba terminare una volta che l'utente inserisce =)
- Situazioni anomale
- divisione per 0
- numero insufficente di operandi
- numero eccessivo di operandi
- Le eccezioni
- TRY/CATCH
- gestione delle eccezioni con try/catch
Lezione di Lunedì 19-12-05
- Nuova implemantazione del programma che esamina il testo e comunica le occorenze delle lettere:
- In questa nuova versione il programma riceve un url ad un file di testo e restituisce le occorrenze di ogni lettera dell'alfabeto (il programma inoltre considera anche le lettere accentate").
- Iniziata l'implementazione di un interfaccia grafica per l'applicazione analizzatesto (Usando le classi GuiSemplificata e ApplicazioneSemplificata del package labprog)
- un metodo main (LanciaGui) lancerà la nostra interfaccia grafica (che estende ApplicazioneSemplificata) ed utilizza un istanza di GuiSemplificata.
- come esercizio per casa terminare questa implementazione , e modificare l'applicazione ideandola ed implementandola in modo che oltre le occorrenze delle singole lettere il programma restituisca anche la Lingua a cui sembra appartenere il testo
Lezione di Mercoledì 21-12-05
- Try/catch
- ulteriori esempi
- Finally (alcuni cenni)
- esempio con denominatore frazione =0
- prima usando arithmetic exception
- poi creata eccezione come sottoclasse di arithmetic exception
- esempio con denominatore frazione =0
- Throws
- sollevare le eccezioni
- delegare le eccezioni
- quando delegare e quando gestire un eccezione
- La gerarchia delle eccezioni
- Eccezioni controllate/e eccezioni non controllate
- gli errori
- 9 gennaio 2006 - Laboratorio
- 11 gennaio 2006 - Lezione 20
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. Il garbage collector. Gestione dello stack durante l'esecuzione: record di attivazione e loro struttura. Chiamate e rientri dai metodi.
- 13 gennaio 2006 - Lezione 21
Metodi ricorsivi. Overloading e overriding: il ruolo del compilatore e quello dell'esecutore. Come avviene la scelta del metodo da eseguire.
Lezione del 6 gennaio 2006
- Laboratorio
Lezione del 18 gennaio 2006
- Come scrivere il metodo equals
- Esercizi di ripasso.
Lezione del 20 gennaio 2006
- Laboratorio
Lezione del 23 gennaio 2006
- Laboratorio