Programmazione Turno 3/2005-2006
Indice
- 1 NEWS
- 2 Informazioni generali
- 3 Diario del corso
- 3.1 Lezione di Lunedì 3-10-05
- 3.2 Lezione di Mercoledì 5-10-05
- 3.3 Lezione di Venerdì 7-10-05
- 3.4 Lezione di Lunedì 10-10-05
- 3.5 Lezione di Mercoledì 12-10-05
- 3.6 Lezione di Venerdì 14-10-05
- 3.7 Lezione di Lunedì 17-10-05
- 3.8 Lezione di Mercoledì 19-10-05
- 3.9 Lezione di Venerdì 21-10-05
- 3.10 Lezione di Lunedì 24-10-05
- 3.11 Lezione di Mercoledì 26-10-05
- 3.12 Lezione di Lunedì 31-10-05
- 3.13 Lezione di Mercoledì 2-11-05
- 3.14 Lezione di Venerdì 4-11-05
- 3.15 Lezione di Lunedì 7-11-05
- 3.16 Lezione di Mercoledì 9-11-05
- 3.17 Lezione di Venerdì 11-11-05
- 3.18 Lezione di Lunedì 14-11-05
- 3.19 Lezione di Mercoledì 16-11-05
- 3.20 Lezione di Venerdì 18-11-05
- 3.21 Lezione di Mercoledì 23-11-05
- 3.22 Lezione di Lunedì 28-11-05
- 3.23 Lezione di Mercoledì 30-11-05
NEWS
- 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)
- IL TEMA DEL PRIMO PROGETTINO SARA DISPONIBILE SUL SITO DI LABORATORIO DI PROGRAMMAZIONE[1] A PARTIRE DA VENERDI 2 DICEMBRE
- Venerdì 9 dicembre ponte NON ci sarà lezione
Informazioni generali
Programma del corso
http://www.dsi.unimi.it/files/occorrenza/programma/programma258676.doc
Docenti
Prof. Pighizzini / Prof. Marra per il laboratorio
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.
Sito del corso
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
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/
- http://homes.dico.unimi.it/prog/turnoSerale-03/compitini/
- http://homes.dico.unimi.it/prog/turno2-02/compitini/
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
- 20 Gennaio
I 3 progettini ed il progetto finale saranno organizzati da prof. Marra
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
- Primitivi
- 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
- 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
- esemnpi implementazione classe Frazione
- lo stato
- il modificatore private
- implementazione costruttori
- implementazioni metodimetodi
- this
- implementazione nella classe frazione dell'interfaccia Comparable
- esemnpi implementazione classe Frazione