Differenze tra le versioni di "Programmazione Turno 3/2005-2006"

Da WikiDsy.
(Lezione di Lunedì 31-10-05)
 
(103 versioni intermedie di 10 utenti non mostrate)
Riga 1: Riga 1:
== NEWS ==
+
[[Categoria:Corsi 2005-2006]]
 +
<!-- non rimuovere ASSOLUTAMENTE le linee precedenti, servono per la categorizzazione della pagina -->
  
'''Mercoledì 2 Novembre primo compitino (normale orario di lezione)
+
== News ==
Bisogna iscriversi da terminale Sifa o da Internet http://studenti.unimi.it/sifacap/sifa_online.htm entro Giovedì 27
+
=== Lezioni cancellate/spostate ===
Ottobre'''
 
  
== Informazioni generali ==
+
*'''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'[http://homes.dico.unimi.it/prog/turno3-05/esami/ apposita sezione del sito del corso].
  
=== Programma del corso ===
+
====IL CORSO E' TERMINATO====
 +
I risultati per chi ha svolto compitini e progettini saranno online a partire dal giorno 10 Febbraio
 +
[http://homes.dico.unimi.it/prog/turno3-05/compitini/quadro.html a questo link].
  
http://www.dsi.unimi.it/files/occorrenza/programma/programma258676.doc
+
====USCITI I RISULTATI FINALI====
 +
*[http://homes.dico.unimi.it/prog/turno3-05/compitini/quadro.html Risultati Finali]
  
=== Docenti ===  
+
== Anni precedenti ==
  
Prof. '''Pighizzini''' / Prof. '''Marra''' per il laboratorio
+
* [[Programmazione Turno 3/2004-2005|Diario del Corso 2004/05]]
 +
* [[Programmazione Turno 3/2003-2004|Diario del Corso 2003/04]]
  
=== Orari e luogo delle lezioni ===
+
== Informazioni generali ==
 
 
{| border=1
 
! 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 ===
+
=== Docenti ===
 +
Prof. '''[[Giovanni Pighizzini|Pighizzini]]''' / Prof. '''[[Vincenzo Marra|Marra]]''' per il laboratorio.
  
Da definire.
+
=== Corsi di laurea ===
  
===Sito del corso ===
+
*[[:Categoria:Corsi Informatica|Informatica]]
 
 
http://homes.dico.unimi.it/prog/turno3-05/
 
 
 
=== Materiale didattico ===
 
'''libro di testo:'''
 
 
 
''dai fondamenti agli oggetti corso di programmazione java seconda edizione''
 
''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''
 
 
 
http://java.sun.com/
 
 
 
'''video delle lezioni tenute lo scorso anno'''
 
 
 
si possono copiare facendo richiesta alla segreteria didattica in via Comelico.
 
 
 
Fruibili via streaming con account silab
 
http://streaming.dico.unimi.it
 
 
 
'''Vecchi compitini'''
 
http://homes.dico.unimi.it/prog/turno3-04/compitini/
 
  
 
=== Modalità d'esame ===
 
=== Modalità d'esame ===
 
 
  
 
'''Scritto + Orale + Progetto'''
 
'''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'''.
 
'''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'''.
Riga 70: Riga 41:
 
Sarà inoltre possibile al posto che il progetto di fine semestre realizzare '''3 progettini''',
 
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'''.
 
'''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'''.
 
'''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
 
il prof ha già dato 3 date indicative per i 3 compitini
Riga 82: Riga 50:
 
*2 Dicembre
 
*2 Dicembre
  
*20 Gennaio
+
*25 Gennaio
  
 
I 3 progettini ed il progetto finale saranno organizzati da prof. Marra
 
I 3 progettini ed il progetto finale saranno organizzati da prof. Marra
  
== Diario del corso ==
+
=== Orari e luogo delle lezioni ===
  
=== Lezione di Lunedì 3-10-05 ===
+
{| border=1
 +
! Lunedì!! Mercoledì!! Venerdì
 +
|-
 +
|  18:30-21:30 Aula 405 (celoria) ||  18:30-21:30 Aula 405 (celoria) || 18:30-21:30 Aula 405 (celoria)
 +
|}
  
'''Argomenti trattati nella lezione di oggi''':
+
=== Orario di ricevimento studenti ===
  
*definizione di informatica e programmazione
+
Da definire.
  
 +
== Informazioni specifiche ==
 +
=== Siti del corso ===
 +
*[http://homes.dico.unimi.it/prog/turno3-05 http://homes.dico.unimi.it/prog/turno3-05]
 +
*[http://homes.dico.unimi.it/prog/turno3-05/lab/ sito del Laboratorio]
 +
=== Forum del corso, e affini ===
 +
* [http://www.dsy.it/forum/forumdisplay.php?s=&forumid=259 Dsy.it]
  
*Breve storia della Programmazione:
+
==Materiale Didattico ==
**Linguaggio macchina
+
=== Programma del corso ===
**Fortran
+
*[http://www.dsi.unimi.it/files/occorrenza/programma/programma258676.doc http://www.dsi.unimi.it/files/occorrenza/programma/programma258676.doc]
**Linguaggi Algol
 
**Programmazione strutturata (Pascal)
 
**Programmazione ad oggetti (Java)
 
  
 +
=== Testi ===
  
*Definizione di Algoritmo
+
''[[Dai fondamenti agli oggetti - Pighizzini Ferrari|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 ===
  
*esempio algoritmo di Euclide per calcolare il massimo comun divisore
+
''K. Arnold, J. Gosling, D. Holmes, Java - Manuale ufficiale, Addison Wesley, 2001.''
 +
''[http://java.sun.com/ Java Technology sito internet della Sun]''
  
 +
=== Video delle lezioni ===
  
*definizione programma (differenze da un algoritmo)
+
Si possono copiare facendo richiesta alla segreteria didattica in via Comelico.
 +
Fruibili via streaming con account silab [http://streaming.dico.unimi.it http://streaming.dico.unimi.it]
  
 +
=== Appunti ===
  
=== Lezione di Mercoledì 5-10-05 ===
+
=== Altro materiale in Internet ===
  
'''Argomenti trattati nella lezione di oggi''' :
+
*[http://www.claudiodesio.com/download/oo_&&_java_5.zip Manuale Java 5]
 +
*[http://www.java-net.it/docs/mattone/mattone.zip Java Mattone dopo Mattone]
 +
*[http://www.dsy.it/forum/showthread.php?s=&threadid=16402 Manualetto Java]
  
*Analogico/Digitale
+
=== Esami passati, tesine, compiti .. ===
  
*Definizione Di BIT
+
* [http://homes.dico.unimi.it/prog/turno3-04/compitini/ http://homes.dico.unimi.it/prog/turno3-04/compitini/]
 +
* [http://homes.dico.unimi.it/prog/turnoSerale-03/compitini/ http://homes.dico.unimi.it/prog/turnoSerale-03/compitini/]
 +
* [http://homes.dico.unimi.it/prog/turno2-02/compitini/ http://homes.dico.unimi.it/prog/turno2-02/compitini/]
  
*BIT/BYTE/Kb/KB.....
+
* [http://www.dsy.it/forum/showthread.php?s=&threadid=5258 Progettini 2002/03]
 +
* [http://www.dsy.it/forum/showthread.php?s=&threadid=2563 Domande orale]
  
*IL CODICE ASCII
+
== Diario del corso ==
  
''esempi di calcolo utilizzo della memeoria per una pagina in ascii''
+
=== Lezione di Lunedì 3-10-05 ===
  
''esempio calcolo memoria per un'immagine 800X600 fatta con 2/16/256/65536 colori non compressa''
+
'''Argomenti trattati nella lezione di oggi''':
  
*Computer/calcolatrice le differenze
+
* definizione di [http://it.wikipedia.org/wiki/Informatica informatica] e [http://it.wikipedia.org/wiki/Programmazione programmazione]
 +
* [http://it.wikipedia.org/wiki/Linguaggio_di_programmazione#Storia Breve storia della Programmazione:]
 +
** [http://it.wikipedia.org/wiki/Linguaggio_macchina Linguaggio macchina]
 +
** [http://it.wikipedia.org/wiki/Fortran Fortran]
 +
** [http://it.wikipedia.org/wiki/Algol_%28informatica%29 Linguaggi Algol]
 +
** Programmazione strutturata ([http://it.wikipedia.org/wiki/Pascal_%28linguaggio%29 Pascal])
 +
** Programmazione ad oggetti ([http://it.wikipedia.org/wiki/Java_%28linguaggio%29 Java])
 +
* Definizione di [http://it.wikipedia.org/wiki/Algoritmo Algoritmo]
 +
* esempio algoritmo di [ Euclide] per calcolare il massimo comun divisore
 +
* definizione [http://it.wikipedia.org/wiki/Programma programma] (differenze da un algoritmo)
  
*Breve classificazione HARDWARE
+
=== Lezione di Mercoledì 5-10-05 ===
**''processore''
 
**''memoria centrale''
 
**''memoria di massa''
 
**''periferiche''
 
  
*Differenze e caratteristiche memoria centrale/ memoria di massa
+
'''Argomenti trattati nella lezione di oggi''' :
  
 +
* [http://it.wikipedia.org/wiki/Analogico Analogico]/[http://it.wikipedia.org/wiki/Digitale_%28informatica%29 Digitale]
 +
* Definizione Di [http://it.wikipedia.org/wiki/Bit_%28informatica%29 BIT]
 +
* [http://it.wikipedia.org/wiki/Bit_%28informatica%29 BIT]/[http://it.wikipedia.org/wiki/Byte BYTE]/Kb/KB.....
 +
* IL CODICE [http://it.wikipedia.org/wiki/ASCII ASCII]
  
*Classificazione SOFTWARE
+
''esempi di calcolo utilizzo della memeoria per una pagina in ascii''<br>
**''sistema operativo''  
+
''esempio calcolo memoria per un'immagine 800X600 fatta con 2/16/256/65536 colori non compressa''<br>
**''utility''
+
* Computer/calcolatrice le differenze
**''software applicativi''
 
  
*Modello di VON NEUMANN
+
* Breve classificazione HARDWARE
 +
** ''[http://it.wikipedia.org/wiki/Processore processore]''
 +
** ''[http://it.wikipedia.org/wiki/Memoria_centrale memoria centrale]''
 +
** ''[http://it.wikipedia.org/wiki/Memoria_di_massa memoria di massa]''
 +
** ''[http://it.wikipedia.org/wiki/Periferiche periferiche]''
 +
* Differenze e caratteristiche memoria centrale/ memoria di massa
  
*La CPU fetch/decode/execute
+
* Classificazione SOFTWARE
 +
** ''[http://it.wikipedia.org/wiki/Sistema_operativo sistema operativo]''
 +
** ''utility''
 +
** ''software applicativi''
  
*I registri della CPU / la RAM e le sue Locazioni
+
* Modello di [http://it.wikipedia.org/wiki/Macchina_di_von_Neumann VON NEUMANN]
 +
* La CPU fetch/decode/execute
 +
* I registri della CPU / la RAM e le sue Locazioni
  
*LINGUAGGI ASSEMBLER
+
* LINGUAGGI [http://it.wikipedia.org/wiki/Assembler ASSEMBLER]
**''comandi trasferimento dati''  
+
** ''comandi trasferimento dati''  
**''comandi aritmetico logici''
+
** ''comandi aritmetico logici''
**''istruzioni di controllo e salto''
+
** ''istruzioni di controllo e salto''
  
  
Riga 163: Riga 168:
 
provare a scrivere con i comandi assembler imparati del codice che, utilizzando l'algoritmo di Euclide, calcoli il massimo comun divisore tra 2 numeri.
 
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
 
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
 
ok spero di non essermi dimenticato niente
 
  
 
=== Lezione di Venerdì 7-10-05 ===
 
=== Lezione di Venerdì 7-10-05 ===
Riga 173: Riga 176:
 
**osservazione approposito degli svantaggi della programmazione in assembler
 
**osservazione approposito degli svantaggi della programmazione in assembler
  
*I linguaggi ad alto livello
+
* I [http://it.wikipedia.org/wiki/Linguaggio_di_programmazione_ad_alto_livello linguaggi ad alto livello]
**il compilatore
+
** il [http://it.wikipedia.org/wiki/Compilatore compilatore]
**il linker
+
** il [http://it.wikipedia.org/wiki/Linguaggio_di_programmazione#Il_Collegamento_.28linking.29 linker]
**L'interprete
+
** L'[http://it.wikipedia.org/wiki/Interprete_%28informatica%29 interprete]
**Errori
+
** Errori
***durante la compilazione
+
*** durante la compilazione
***usando il linker
+
*** usando il linker
**la fase di testing
+
** la fase di testing
**I limiti della portabilità del codice
+
** 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)''
 
''esempio somma di interi su 2 architetture diverse (una con interi rappresentati da 16 bit ed una da 32 bit)''
*JAVA
+
* [http://it.wikipedia.org/wiki/Java_%28linguaggio%29 JAVA]
**il compilatore
+
** il compilatore
**il BYTECODE
+
** il [http://it.wikipedia.org/wiki/Bytecode BYTECODE]
**la JVM
+
** la [http://it.wikipedia.org/wiki/Macchina_virtuale_Java JVM]
**i vantaggi di questa architettura
+
** i vantaggi di questa architettura
***La portabilità del codice
+
*** La [http://it.wikipedia.org/wiki/Portabilit%C3%A0 portabilità] del codice
***la portabilità del compilatore
+
*** la [http://it.wikipedia.org/wiki/Portabilit%C3%A0 portabilità] del compilatore
**svantaggi
+
** svantaggi
***prestazioni
+
*** prestazioni
**le funzioni normalmente solte dal linker in Java( ''controllo e colegamento negli altri ling. svolti dal linker'')  
+
** le funzioni normalmente solte dal linker in Java ( ''controllo e colegamento negli altri ling. svolti dal linker'')  
**le applet Java
+
** le [http://it.wikipedia.org/wiki/Applet applet] Java
  
 
=== Lezione di Lunedì 10-10-05 ===
 
=== Lezione di Lunedì 10-10-05 ===
Riga 224: Riga 227:
 
''(fino la fine del primo capitolo del libro)''
 
''(fino la fine del primo capitolo del libro)''
  
*Ulteriori esempi di programmazione strutturata
+
* Ulteriori esempi di programmazione strutturata
 
+
* Aspetti sintattici dei linguaggi
*Aspetti sintattici dei linguaggi
+
** le grammatiche
**le grammatiche
+
** [http://it.wikipedia.org/wiki/BNF BNF] e carte sintattiche
**BNF e carte sintattiche
 
  
 
=== Lezione di Venerdì 14-10-05 ===
 
=== Lezione di Venerdì 14-10-05 ===
Riga 234: Riga 236:
 
Laboratorio di programmazione
 
Laboratorio di programmazione
  
*Introduzione al corso (logistica, programma)
+
* Introduzione al corso (logistica, programma)
 
+
* Installazione di Java 1.5 e della sua documentazione.
*Installazione di Java 1.5 e della sua documentazione.
+
* Editor per il codice sorgente (ad esempio, [http://www.context.cx/ ConText])
 
+
* Impostazione delle variabili di sistema PATH e CLASSPATH
*Editor per il codice sorgente (ad esempio, ConText)
+
* Il primo programma Java: compilazione ed esecuzione
 
 
*Impostazione delle variabili di sistema PATH e CLASSPATH
 
 
 
*Il primo programma Java: compilazione ed esecuzione
 
  
 
=== Lezione di Lunedì 17-10-05 ===
 
=== Lezione di Lunedì 17-10-05 ===
Riga 266: Riga 264:
 
* Variabili e tipi di variabile
 
* Variabili e tipi di variabile
  
**Primitivi
+
**[http://it.wikipedia.org/wiki/Java_%28linguaggio%29#Tipi_Primitivi Primitivi]
  
 
**Riferimento
 
**Riferimento
  
 
*Esercizi ed esempi con le classi Frazione, String e Intero.
 
*Esercizi ed esempi con le classi Frazione, String e Intero.
 
  
 
=== Lezione di Venerdì 21-10-05 ===
 
=== Lezione di Venerdì 21-10-05 ===
Riga 290: Riga 287:
 
*La selezione in Java
 
*La selezione in Java
  
*Il tipo primitivo Boolean
+
*Il tipo primitivo [http://it.wikipedia.org/wiki/Algebra_di_Boole Boolean]
 
 
  
 
=== Lezione di Mercoledì 26-10-05 ===
 
=== Lezione di Mercoledì 26-10-05 ===
Riga 305: Riga 301:
 
laboratorio di programmazione
 
laboratorio di programmazione
  
*il prof. Marra ha sviluppato un package labprog che renderà disponibile e liberamente scaricabile dalsito del laboratorio di programmazione http://homes.dico.unimi.it/prog/turno3-05/lab/
+
*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.
 
*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
 
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 ===
 +
 +
*[http://it.wikipedia.org/wiki/Virgola_mobile 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
 +
*[http://it.wikipedia.org/wiki/Java_5#autoboxing_unboxing 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 ''
 +
*[http://it.wikipedia.org/wiki/Java_5#for_each_loop 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
 +
*[http://it.wikipedia.org/wiki/Java_5#generics 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
 +
 +
*Svolti esercizi preparazione al compitino
 +
 +
=== Lezione di Venerdì 02-12-05 ===
 +
 +
[http://homes.dico.unimi.it/prog/turno3-05/compitini/#compitino2 SECONDO COMPITINO]
 +
 +
=== 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
 +
 +
*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
 +
 +
===Lezione del 25 gennaio 2006===
 +
 +
[http://homes.dico.unimi.it/prog/turno3-05/compitini/#compitino3 - Terzo Compitino]

Versione attuale delle 09:44, 28 lug 2006


Indice

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 ..

Diario del corso

Lezione di Lunedì 3-10-05

Argomenti trattati nella lezione di oggi:

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
  • 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

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
    • 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

  • La selezione in Java

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

  • 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


  • 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

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
  • Svolti esercizi preparazione al compitino

Lezione di Venerdì 02-12-05

SECONDO COMPITINO

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
  • 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
  1. 9 gennaio 2006 - Laboratorio
  1. 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.

  1. 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

Lezione del 25 gennaio 2006

- Terzo Compitino