Programmazione Turno 3/2005-2006

Da WikiDsy.


NEWS

  • USCITI I RISULTATI DEL PRIMO PROGETTINO [1]
  • 3 COMPITINO FISSATO PER IL 25 GENNAIO
  • MERCOLEDI' 21 DICEMBRE ULTIMA LEZIONE DI PROGRAMMAZIONE PRIMA DELLE VACANZE NATALIZIE - SI RIPRENDE LUNEDI 9 GENNAIO

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

sito del corso

sito del Laboratorio

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


Altro materiale trovato su Internet

Manuale Java 5

Java Mattone dopo Mattone


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