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

Da WikiDsy.
(Lezione di Mercoledì 12-10-05)
 
(77 versioni intermedie di 10 utenti non mostrate)
Riga 1: Riga 1:
== NEWS ==
+
[[Categoria:Corsi 2005-2006]]
'''VENERDI' 25 NOVEMBRE SCIOPERO CONTRO LA FINANZIARIA NON CI SARA' LEZIONE'''
+
<!-- non rimuovere ASSOLUTAMENTE le linee precedenti, servono per la categorizzazione della pagina -->
  
'''SECONDO COMPITINO CONFERMATO PER VENERDI 2 DICEMBRE (non sarà necessaria nessuna iscrizione via sifa poichè il prof. Pighizzini ha già l'elenco dei partecipanti al primo compitino''')
+
== News ==
 +
=== Lezioni cancellate/spostate ===
  
== 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
+
=== Docenti ===
! Lunedì!! Mercoledì!! Venerdì
+
Prof. '''[[Giovanni Pighizzini|Pighizzini]]''' / Prof. '''[[Vincenzo Marra|Marra]]''' per il laboratorio.
|-
 
| 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 ===
+
=== Corsi di laurea ===
  
Da definire.
+
*[[:Categoria:Corsi Informatica|Informatica]]
  
===Sito del corso ===
+
=== Modalità d'esame ===
  
http://homes.dico.unimi.it/prog/turno3-05/
+
'''Scritto + Orale + Progetto'''
  
=== Materiale didattico ===
+
'''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'''.
'''libro di testo:'''
 
  
''dai fondamenti agli oggetti corso di programmazione java seconda edizione''
+
Sarà inoltre possibile al posto che il progetto di fine semestre realizzare '''3 progettini''',
''GIOVANNI PIGHIZZINI - MAURO FERRARI'' edito da pearson addison wesley.
+
'''il buon esito dei 3 progettini  infatti darà la possibilità di non presentare il progetto di fine semestre'''.
(il libro contiene anche un CD con librerie che saranno usate durante il corso)
 
  
'''altro materiale consigliato:'''
+
'''Se sia i compitini che il progetto risultassero molto buoni non sarà necessario neanche dare l'orale'''.
  
''K. Arnold, J. Gosling, D. Holmes, Java - Manuale ufficiale, Addison Wesley, 2001.''
+
il prof ha già dato 3 date indicative per i 3 compitini
  
''Java Technology sito internet della Sun''
+
*2 Novembre
  
http://java.sun.com/
+
*2 Dicembre
  
'''video delle lezioni tenute lo scorso anno'''
+
*25 Gennaio
  
si possono copiare facendo richiesta alla segreteria didattica in via Comelico.
+
I 3 progettini ed il progetto finale saranno organizzati da prof. Marra
  
Fruibili via streaming con account silab
+
=== Orari e luogo delle lezioni ===
http://streaming.dico.unimi.it
 
  
'''Vecchi compitini'''
+
{| border=1
http://homes.dico.unimi.it/prog/turno3-04/compitini/
+
! Lunedì!! Mercoledì!! Venerdì
 +
|-
 +
|  18:30-21:30 Aula 405 (celoria) ||  18:30-21:30 Aula 405 (celoria) || 18:30-21:30 Aula 405 (celoria)
 +
|}
  
=== Modalità d'esame ===
+
=== Orario di ricevimento studenti ===
  
 +
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]
  
'''Scritto + Orale + Progetto'''
+
==Materiale Didattico ==
 +
=== Programma del corso ===
 +
*[http://www.dsi.unimi.it/files/occorrenza/programma/programma258676.doc http://www.dsi.unimi.it/files/occorrenza/programma/programma258676.doc]
  
 +
=== Testi ===
  
 +
''[[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).
 +
-----
  
'''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'''.
+
=== Altro materiale consigliato ===
  
Sarà inoltre possibile al posto che il progetto di fine semestre realizzare '''3 progettini''',
+
''K. Arnold, J. Gosling, D. Holmes, Java - Manuale ufficiale, Addison Wesley, 2001.''
'''il buon esito dei 3 progettini  infatti darà la possibilità di non presentare il progetto di fine semestre'''.
+
''[http://java.sun.com/ 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 http://streaming.dico.unimi.it]
  
'''Se sia i compitini che il progetto risultassero molto buoni non sarà necessario neanche dare l'orale'''.
+
=== Appunti ===
 
 
  
il prof ha già dato 3 date indicative per i 3 compitini
+
=== Altro materiale in Internet ===
  
*2 Novembre
+
*[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]
  
*2 Dicembre
+
=== Esami passati, tesine, compiti .. ===
  
*20 Gennaio
+
* [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/]
  
I 3 progettini ed il progetto finale saranno organizzati da prof. Marra
+
* [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]
  
 
== Diario del corso ==
 
== Diario del corso ==
Riga 92: Riga 116:
  
 
* definizione di [http://it.wikipedia.org/wiki/Informatica informatica] e [http://it.wikipedia.org/wiki/Programmazione programmazione]
 
* definizione di [http://it.wikipedia.org/wiki/Informatica informatica] e [http://it.wikipedia.org/wiki/Programmazione programmazione]
* Breve storia della 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/Linguaggio_macchina Linguaggio macchina]
 
** [http://it.wikipedia.org/wiki/Fortran Fortran]
 
** [http://it.wikipedia.org/wiki/Fortran Fortran]
Riga 154: Riga 178:
 
* I [http://it.wikipedia.org/wiki/Linguaggio_di_programmazione_ad_alto_livello linguaggi ad alto livello]
 
* I [http://it.wikipedia.org/wiki/Linguaggio_di_programmazione_ad_alto_livello linguaggi ad alto livello]
 
** il [http://it.wikipedia.org/wiki/Compilatore 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'[http://it.wikipedia.org/wiki/Interprete_%28informatica%29 interprete]
 
** L'[http://it.wikipedia.org/wiki/Interprete_%28informatica%29 interprete]
 
** Errori
 
** Errori
Riga 212: 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 244: 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 268: 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 321: Riga 339:
 
=== Lezione di Mercoledì 9-11-05 ===
 
=== Lezione di Mercoledì 9-11-05 ===
  
*I tipi primitivi a virgola mobile
+
*[http://it.wikipedia.org/wiki/Virgola_mobile I tipi primitivi a virgola mobile]
 
**esponente e mantissa
 
**esponente e mantissa
 
**Virgola mobile IN JAVA
 
**Virgola mobile IN JAVA
Riga 337: Riga 355:
  
 
*l'istruzione switch
 
*l'istruzione switch
 
  
 
=== Lezione di Venerdì 11-11-05 ===
 
=== Lezione di Venerdì 11-11-05 ===
Riga 345: Riga 362:
 
*I metodi statici
 
*I metodi statici
 
*le classi Involucro
 
*le classi Involucro
 +
*[http://it.wikipedia.org/wiki/Java_5#autoboxing_unboxing Unboxing ed Autoboxing]
 
*Array in java
 
*Array in java
 
*comprensione di: "public static void main (String[]args)"
 
*comprensione di: "public static void main (String[]args)"
 
 
  
 
=== Lezione di Lunedì 14-11-05 ===
 
=== Lezione di Lunedì 14-11-05 ===
Riga 372: Riga 388:
 
**ArrayIndexOutofBoundsException
 
**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 ''
 
** ''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
+
*[http://it.wikipedia.org/wiki/Java_5#for_each_loop for each]
 
*Ereditarietà e polimorfismo
 
*Ereditarietà e polimorfismo
 
**Superclassi e sottoclassi
 
**Superclassi e sottoclassi
Riga 390: Riga 406:
  
 
*Le classi sequenza e sequenza ordinata
 
*Le classi sequenza e sequenza ordinata
*I Tipi generici
+
*[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)
 
*esercizio classe sequenza (creata oggetto sequenza in cui sono stati memorizzati e  stampati diversi sottotipi di un supertipo)
 
*la classe sequenza ordinata
 
*la classe sequenza ordinata
Riga 397: Riga 413:
 
* Le interfacce tipi riferimento
 
* Le interfacce tipi riferimento
 
**le interfacce e la gerarchia dei tipi
 
**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