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

Da WikiDsy.
(NEWS)
(Diario del corso)
Riga 91: Riga 91:
 
'''Argomenti trattati nella lezione di oggi''':
 
'''Argomenti trattati nella lezione di oggi''':
  
*definizione di informatica e 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_macchina Linguaggio macchina]
*Breve storia della Programmazione:
+
** [http://it.wikipedia.org/wiki/Fortran Fortran]
**Linguaggio macchina
+
** [http://it.wikipedia.org/wiki/Algol_%28informatica%29 Linguaggi Algol]
**Fortran
+
** Programmazione strutturata ([http://it.wikipedia.org/wiki/Pascal_%28linguaggio%29 Pascal])
**Linguaggi Algol
+
** Programmazione ad oggetti ([http://it.wikipedia.org/wiki/Java_%28linguaggio%29 Java])
**Programmazione strutturata (Pascal)
+
* Definizione di [http://it.wikipedia.org/wiki/Algoritmo Algoritmo]
**Programmazione ad oggetti (Java)
+
* esempio algoritmo di [ Euclide] per calcolare il massimo comun divisore
 
+
* definizione [http://it.wikipedia.org/wiki/Programma programma] (differenze da un algoritmo)
 
 
*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 ===
 
=== Lezione di Mercoledì 5-10-05 ===
Riga 115: Riga 106:
 
'''Argomenti trattati nella lezione di oggi''' :
 
'''Argomenti trattati nella lezione di oggi''' :
  
*Analogico/Digitale
+
* [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]
  
*Definizione Di BIT
+
''esempi di calcolo utilizzo della memeoria per una pagina in ascii''<br>
 +
''esempio calcolo memoria per un'immagine 800X600 fatta con 2/16/256/65536 colori non compressa''<br>
 +
* Computer/calcolatrice le differenze
  
*BIT/BYTE/Kb/KB.....
+
* 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
  
*IL CODICE ASCII
+
* Classificazione SOFTWARE
 +
** ''[http://it.wikipedia.org/wiki/Sistema_operativo sistema operativo]''
 +
** ''utility''
 +
** ''software applicativi''
  
''esempi di calcolo utilizzo della memeoria per una pagina in ascii''
+
* 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
  
''esempio calcolo memoria per un'immagine 800X600 fatta con 2/16/256/65536 colori non compressa''
+
* LINGUAGGI [http://it.wikipedia.org/wiki/Assembler ASSEMBLER]
 
+
** ''comandi trasferimento dati''  
*Computer/calcolatrice le differenze
+
** ''comandi aritmetico logici''
 
+
** ''istruzioni di controllo e salto''
*Breve classificazione HARDWARE
 
**''processore''
 
**''memoria centrale''
 
**''memoria di massa''
 
**''periferiche''
 
 
 
*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''
 
  
  
Riga 162: Riga 144:
 
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 ===

Versione delle 14:21, 28 nov 2005

NEWS

VENERDI' 25 NOVEMBRE SCIOPERO CONTRO LA FINANZIARIA NON CI SARA' LEZIONE

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)

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

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

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:

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

  • 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

  • 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


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