Programmazione Turno 3/2005-2006

Da WikiDsy.

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

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

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

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

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")