Programmazione Turno 3/2005-2006

Da WikiDsy.

NEWS

Mercoledì 2 Novembre primo compitino (normale orario di lezione) Bisogna iscriversi da terminale Sifa o da Internet http://studenti.unimi.it/sifacap/sifa_online.htm entro Giovedì 27 Ottobre

LUNEDI' 7 ci sarà LABORATORIO con Marra

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:

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

  • Analogico/Digitale
  • Definizione Di BIT
  • BIT/BYTE/Kb/KB.....
  • IL CODICE ASCII

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


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

ok spero di non essermi dimenticato niente

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