Differenze tra le versioni di "Fondamenti di architettura e programmazione T1/2005-2006"

Da WikiDsy.
 
(18 versioni intermedie di 13 utenti non mostrate)
Riga 1: Riga 1:
'''Docenti'''
+
[[Categoria:Corsi 2005-2006]]
 +
<!-- non cancellare le righe precedenti -->
 +
==Informazioni Generali==
 +
 
 +
===Docenti===
  
 
''Teoria:''Meregretti C.
 
''Teoria:''Meregretti C.
Riga 5: Riga 9:
 
''Pratica:''Malchiodi D.
 
''Pratica:''Malchiodi D.
  
'''Orario Lezioni'''
+
===Orario Lezioni===
  
 
''Teoria''
 
''Teoria''
  
Lun: 10.30 - 13.30
+
Lun: 10.30 - 13.30 Aula V2
  
Mer: 10.30 - 12.30 - Giornata soppressa! Quindi non si farà mai lezione eccetto i casi di recupero ore o simili e cmq comunicate sul canale ufficiale, Chiaro!
+
Mer: 10.30 - 13.30 Aula V2
  
Gio: 09.30 - 12.30
+
Gio: 10.30 - 12.30 - Aula V1 - Giornata soppressa! Quindi non si farà mai lezione eccetto i casi di recupero ore o simili e cmq comunicate sul canale ufficiale, Chiaro!
  
  
 
''Pratica''
 
''Pratica''
  
Mar: 08.30 - 12.30 -Domani 4 ottobre No lezione! Inizio da definirsi...si prevede verso novembre.
+
Mar: 08.30 - 12.30 - Aula V2
  
  
Riga 28: Riga 32:
  
  
'''Orario ricevimento Prof.Malchiodi '''
+
===Orario ricevimento Prof.Malchiodi===
  
 
Giovedi dalle 15.30
 
Giovedi dalle 15.30
Riga 34: Riga 38:
  
  
'''Canale ufficiale informazioni per questo corso'''
+
===Canale ufficiale informazioni per questo corso===
  
 
FAP: http://homes.dsi.unimi.it/~mereghet/fap/   
 
FAP: http://homes.dsi.unimi.it/~mereghet/fap/   
Riga 41: Riga 45:
  
  
'''Organizzazione del corso:'''
+
===Organizzazione del corso===
  
 
Il corso si organizzera grosso modo in 2 parti:
 
Il corso si organizzera grosso modo in 2 parti:
Riga 50: Riga 54:
  
  
'''Testi Consigliati'''
+
===Testi Consigliati===
  
 
''I Parte:''
 
''I Parte:''
Riga 62: Riga 66:
  
  
'''Modalità Esami'''
+
===Modalità Esami===
  
 
Durante l'anno verranno organizzati tre compitini che si svolgeranno intorno a primi novembre, metà dicembre, e al termine del corso
 
Durante l'anno verranno organizzati tre compitini che si svolgeranno intorno a primi novembre, metà dicembre, e al termine del corso
Riga 77: Riga 81:
 
di 2 punti per gli studenti che abbiano consegnato oltre il 75% delle esercitazioni.
 
di 2 punti per gli studenti che abbiano consegnato oltre il 75% delle esercitazioni.
  
 +
==Diario del Corso==
  
 
+
===Lezione de 03/10/2005===
----
 
 
 
'''Lezione de 03/10/2005'''
 
 
 
  
 
*Introduzione al Corso.
 
*Introduzione al Corso.
 
 
*Definizone e brevi esempi di algoritmi.
 
*Definizone e brevi esempi di algoritmi.
  
 
+
===Lezione de 06/10/2005===
 
 
----
 
 
 
'''Lezione de 06/10/2005'''
 
 
 
  
 
*Che cos'è un programma.
 
*Che cos'è un programma.
 
 
*Correzione del compito a casa.
 
*Correzione del compito a casa.
 
 
*Risoluzione piccoli algoritmi matematici.
 
*Risoluzione piccoli algoritmi matematici.
 
 
*Introduzione agli alaboratori.
 
*Introduzione agli alaboratori.
 
 
*Il bit
 
*Il bit
 
 
*Comportamento dell'elaboratore
 
*Comportamento dell'elaboratore
 +
*Hardware
 +
*Software
 +
*Calcolatore ideale
 +
*CPU/Memoria centrale/Bus/Periferiche/HardDisk
  
*Hardware
+
===Lezione de 10/10/2005===
  
*Software
+
*Esercitazione su memorizzazione di immagini: risoluzione e profondità d'immagine.
 +
*Esecuzione dei programmi sull'architettura di von Neumann, ciclo macchina: fetch-decode-execute.
 +
*Registri di lavoro nella CPU. Dal linguaggio macchina all'assembly, assemblatore.
 +
*Forma di un'istruzione assembly (codice operativo + operandi), un semplice assembly.
 +
*Istruzioni di lettura, scrittura, aritmetiche, salto (in)condizionato.
 +
*Esempi di programmazione assembly
 +
*Compiti a casa --> Stessi esercizi della settimana scorsa in pseudocodifica ma trasformarli in assembly
  
*Calcolatore ideale
+
===Lezione de 11/10/2005===
  
*CPU/Memoria centrale/Bus/Periferiche/HardDisk
+
*Ancora sulla programmazione assembly.
 +
*Struttura interna della CPU: registri, CU (control unit), ALU (arithmetic/logic unit).
 +
*Rappresentazione dell'informazione, cenni alla digitalizzazione di immagini, suoni testi.
 +
*Importanza della digitalizzazione numerica.
 +
*Rappresentazione dei numeri in base b, da base b a base decimale e ritorno, la base ottale ed esadecimale.
 +
*Rappresentazione binaria dei numeri, scorciatoie da base ottale/hex a binaria e viceversa. Esercizi
  
 +
===Lezione de 11/10/2005 Laboratorio===
  
 +
*Panegirico sulla riforma Moratti
 +
*Introduzione al corso
  
----
+
===Lezione de 17/10/2005===
  
 +
*Algoritmo di Euclide in assembly.
 +
*Operazioni sui numeri binari: somma, propagazione del riporto, esempi.
 +
*Sottrazione, riduzione alla rappresentazione dei negativi.
 +
*Rappresentazione in modulo e segno, range di rappresentazione, overflow e underflow, esempi.
 +
*Rappresentazione in complemento a due, conversione e traduzione, range di rappresentazione.
 +
*Esempi di sottrazione mediante rappresentazione in complemento a due
  
'''Lezione de 10/10/2005'''
+
===Lezione de 18/10/2005===
  
*Esercitazione su memorizzazione di immagini: risoluzione e profondità d'immagine.  
+
*Esercizi su somme e sottrazioni in complemento a due.
 +
ALU, circuiti elettronici e loro struttura.
 +
*Algebra di Boole, principali operazioni: and, or, not, xor, nand, nor, implica, sse, corrispettive porte logiche.
 +
*Espressioni booleane, tabelle di verità, sintesi di circuiti.
 +
*Equivalenza logica di espressioni, verifica
  
*Esecuzione dei programmi sull'architettura di von Neumann, ciclo macchina: fetch-decode-execute.
+
===Lezione de 20/10/2005 Laboratorio===
  
*Registri di lavoro nella CPU. Dal linguaggio macchina all'assembly, assemblatore.
+
*Sistemi operativi
 +
*Logica Booleana e circuiti
  
*Forma di un'istruzione assembly (codice operativo + operandi), un semplice assembly.
+
===Lezione de 24/10/2005===
  
*Istruzioni di lettura, scrittura, aritmetiche, salto (in)condizionato.
+
*Approfondimento funzionamento ALU
 +
*Approfondimento Algebra Di BOOL
  
*Esempi di programmazione assembly
+
===Lezione de 25/10/2005 Laboratorio===
  
*Compiti a casa --> Stessi esercizi della settimana scorsa in pseudocodifica ma trasformarli in assembly.
+
*Implementare “da zero” algoritmi di media complessità
 +
*Verificare la correttezza di un algoritmo eseguendolo “a mano”.
 +
*Imparare a valutare le prestazioni di un algoritmo.
 +
*Scrivere alcuni algoritmi “tipici” da utilizzare come base per realizzarne altri.
  
 +
===Lezione de 2/11/2005===
  
----
+
*L'attività di programmazione, linguaggi a basso ed alto livello, vantaggi e svantaggi.
 +
*Compilazione, significato.
 +
*Vita del software, fasi di editing, compiling, linking, loading, possibili errori.
 +
*Nozione di interprete.
 +
*La situazione ibrida di Java, compilatore e Java Virtual Machine (JVM), creazione del bytecode e interpretazione. *Esecuzione di programmi in Internet (applet, browser).
 +
*Programmazione strutturata, strutture di controllo, motivazioni: sequenza, selezione iterazione.
 +
*Esempi con sequenza e selezione
  
 +
===Lezione de 7/11/2005===
  
'''Lezione de 11/10/2005'''
+
*Esercizi di programmazione sulla struttura di selezione.
 +
*La struttura di controllo iterazione, le due varianti, loro analisi (numero massimo e minimo di iterazioni consentite da ciascuna delle due varianti).
 +
*Esercizi sulla struttura d'iterazione (somma di sequenze di numeri di lunghezza prefissata e non).
 +
*Il concetto di variabile
  
 +
===Lezione de 8/11/2005===
  
*Ancora sulla programmazione assembly.  
+
*Il paradigma della programmazione ad oggetti, scenari: classi, oggetti, interazioni tra oggetti, messaggi.  
 +
*Caratteristiche di un oggetto, stato e comportamento.
 +
*Protocollo, interfaccia, contratto, responsabilità dell'interfaccia.
 +
*Classe come fabbrica di oggetti.
 +
*Il vocabolario di Java, parole riservate, identificatori, separatori, commenti.
 +
*Il primo programma Java, dal sorgente all'esecuzione.
 +
*La classe ConsoleOutputManager, esempio di utilizzo
  
*Struttura interna della CPU: registri, CU (control unit), ALU (arithmetic/logic unit).
+
===Lezione de 9/11/2005 Laboratorio===
  
*Rappresentazione dell'informazione, cenni alla digitalizzazione di immagini, suoni testi.
+
http://homes.dsi.unimi.it/~malchiod/LP/Lab04-PrimiProgrammiJava.pdf
  
*Importanza della digitalizzazione numerica.
 
  
*Rappresentazione dei numeri in base b, da base b a base decimale e ritorno, la base ottale ed esadecimale.
+
===Lezione de 14/11/2005===
  
*Rappresentazione binaria dei numeri, scorciatoie da base ottale/hex a binaria e viceversa. Esercizi
+
*Ancora sugli elementi principali della programmazione ad oggetti, esempi.
 +
*La classe ConsoleInputManager, significato e principali metodi.
 +
*Esempi di utilizzo di ConsoleInputManager.
 +
*Il fenomeno dell'overloadin: prototipo e segnatura dei metodi, overloading in ConsoleOutputManager e ConsoleInputManager.  
 +
*Esempi di programmi che utilizzano entrambe le classi di I/O
  
  
  
 +
===Lezione de 9/11/2005 Laboratorio===
 +
http://homes.dsi.unimi.it/~malchiod/LP/Lab05-SelezioneIterazione.pdf
  
----
+
===Lezione de 17/11/2005===
  
'''Lezione de 11/10/2005 Laboratorio'''
+
*La classe String, metodi principali, l'operazione di concatenazione.
 +
*Esercizi, il programma Evidenziatore. Variabili e tipi in Java, Java come linguaggio fortemente tipato, tipo dell'espressione.
 +
*Dichiarazione e definizione di variabili.
 +
*Tipi primitivi e tipi riferimento, principali caratteristiche.
 +
*Assegnamento per variabili di tipo primitivo e riferimento, sostanziale differenza.
 +
*La classe Frazione, metodi principali.
  
*Panegirico sulla riforma Moratti
 
  
*Introduzione al corso
+
===Lezione de 21/11/2005===
  
 +
*Esempi di utilizzo della classe Frazione.
 +
*Il costrutto if in Java, varianti ed esempi.
 +
*If nidificati, convenzioni del compilatore, programmi per la ricerca di stringhe nei testi.
 +
*Il tipo boolean, operatori tra tipi primitivi ed espressioni semplici. Espressioni composte mediante && (and), || (or), ! (not).
 +
*Operatori == e != su tipi primitivi e riferimento, differenze ed esempi.
 +
*I costrutti while e do...while, esempi.
 +
*Calcolo della media di una sequenza di frazioni
  
  
----
 
  
'''Lezione de 17/10/2005 '''
+
===Lezione de 22/11/2005===
  
*Algoritmo di Euclide in assembly.  
+
*Esercizi su strutture di controllo. Iterazione mediante for, varianti di for, esempi.
 +
*Test di primalità.
 +
*Il metodo charAt della classe String, esempi di utilizzo.
 +
*Stringhe palindrome, programma per la loro rivelazione, ottimizzazioni varie.
 +
*Espressioni Java, tipo e valore ritornato.
 +
*Espressioni semplici, metodi.
 +
*L'assegnamento come espressione, effetti collaterali.
 +
*Esercizi
  
*Operazioni sui numeri binari: somma, propagazione del riporto, esempi.
 
  
*Sottrazione, riduzione alla rappresentazione dei negativi.
+
===Lezione de 23/11/2005 Laboratorio===
  
*Rappresentazione in modulo e segno, range di rappresentazione, overflow e underflow, esempi.  
+
http://homes.dsi.unimi.it/~malchiod/LP/Lab06-DatiVariabili.pdf
  
*Rappresentazione in complemento a due, conversione e traduzione, range di rappresentazione.
 
  
*Esempi di sottrazione mediante rappresentazione in complemento a due
+
===Lezione de 28/11/2005===
  
----
+
*Espressioni in Java, tipo e valore.
 +
*Esercizi con l'espressione di assegnamentoi, effetti collaterali.
 +
*Gli operatori ++ e --, loro utilizzo in espressioni.
 +
*Valutazione di espressioni booleane, lazy evaluation e sua prevenzione, utilizzo di &&, &, ||, |, !, esempi con effetti collaterali.
 +
*L'operatore ternario condizionale, significato e suo utilizzo
  
'''Lezione de 18/10/2005 '''
 
  
*Esercizi su somme e sottrazioni in complemento a due.
+
===Lezione de 29/11/2005 Laboratorio===
  
*Rappresentazione dei reali, virgola fissa, virgola mobile (mantissa, esponente, IEEE 754).  
+
http://homes.dsi.unimi.it/~malchiod/LP/Lab07-StringArrayMain.pdf
  
*Rappresentazione dei caratteri, ASCII, ASCII esteso, UNICODE.
 
  
*All'interno della ALU, circuiti elettronici e loro struttura.
+
===Lezione de 30/11/2005 ===
  
*Algebra di Boole, principali operazioni: and, or, not, xor, nand, nor, implica, sse, corrispettive porte logiche.  
+
*I tipi primitivi numerici in Java: int, long, byte, short, double, float, principali caretteristiche di memorizzazione, principali operatori aritmetici e di confronto.
 +
*Operazioni tra tipi eterogenei, conversioni implicite (promozioni), esempi.
 +
*Forzatura di tipo mediante casting, esempi.
 +
*Operatore + tra stringhe e tipi primitivi/riferimento, esempi.
 +
*Il tipo char, codifica UNICODE, esempi di conteggio di caratteri
  
*Espressioni booleane, tabelle di verità, sintesi di circuiti.
 
  
*Equivalenza logica di espressioni, verifica
+
===Lezione de 5/12/2005 ===
  
 +
*Metodi statici, sintassi e semantica, esempi d'utilizzo.
 +
*Classi involucro, alcuni esempi d'utilizzo di metodi statici dalle classi involucro.
 +
*Differenze tra variabile di tipo primitivo e di "tipo involucro".
 +
*Gli array, principali definizioni e struttura di un array.
 +
*Array di tipo primitivo e array d'oggetti. Riempimento e scansione d'array.
 +
*Esempi di programmi che utilizzano array
  
----
 
  
'''Lezione de 20/10/2005 Laboratorio'''
 
  
 +
===Lezione de 12/12/2005 ===
  
*Sistemi operativi
+
*Esercizi con array: ricerca della frazione massima in un array di frazioni, ricerca di una parola in un testo, *occorrenza di caratteri in righe di testo.
 +
*Gerarchie di classi, ereditarietà, polimorfismo.
 +
*La classe Rettangolo, definizione e principali metodi.
 +
*Esempi di utilizzo, ricerca del rettangolo di area maggiore in una sequenza di rettangoli.
 +
*Il formalismo UML per Java: classi (a diversi livelli di dettaglio, oggetti, metodi).
 +
*La classe Quadrato, relazione con Rettangolo
  
*Logica Booleana e circuiti
 
  
 +
===Lezione de 14/12/2005 ===
  
----
+
*Esercizi con array e sequenze.
 +
*La classe Quadrato, principali metodi, relazione con Rettangolo.
 +
*Gerarchie di classi, ereditarietà, polimorfismo.
 +
*Tipi, supertipi, ereditarietà sui metodi, riscrittura di metodi (overriding).
 +
*Ricerca del rettangolo o qudrato di area massima.
 +
*La classe Cerchio, relazioni col resto delle figure, la classe Figura
  
'''Lezione de 25/10/2005 '''
 
  
*Approfondimento funzionamento ALU
+
===Lezione de 19/12/2005 ===
  
*Approfondimento Algebra Di BOOL
+
*Ancora sulla gerarchia di figure geometriche.
 +
*La classe Figura, nozione di classe astratta, metodi astratti.
 +
*La classe Object, assegnamenti, tipi, supertipi, polimorfismo, overriding, esempi.
 +
*Il concetto di interfaccia, l'interfaccia Comparable.
 +
*Esempi di utilizzo nell'ordinamento di array

Versione attuale delle 20:27, 2 ago 2006

Informazioni Generali

Docenti

Teoria:Meregretti C.

Pratica:Malchiodi D.

Orario Lezioni

Teoria

Lun: 10.30 - 13.30 Aula V2

Mer: 10.30 - 13.30 Aula V2

Gio: 10.30 - 12.30 - Aula V1 - Giornata soppressa! Quindi non si farà mai lezione eccetto i casi di recupero ore o simili e cmq comunicate sul canale ufficiale, Chiaro!


Pratica

Mar: 08.30 - 12.30 - Aula V2


Avviso Importantissimo

Le ore di laboratorio che si dovrebbero tenere in via comelico nell'aula Sigma, non sono lezioni e nessun professore è presente. Ci sarà solamente il laboratorio prenotato per noi studenti del 1° turno, dove potremo esercitarci e fare programmi, quindi niente di obbligatorio, solo un'opportunità facoltativà per chi non vuole esercitarsi a casa!

NB:Nel laboratorio saranno presenti 1 o 2 "tutor" per aiutare l'utente nella programmazione.


Orario ricevimento Prof.Malchiodi

Giovedi dalle 15.30 Ufficio 5241 in sede del dipartimento in via Comelico.


Canale ufficiale informazioni per questo corso

FAP: http://homes.dsi.unimi.it/~mereghet/fap/

LP: http://homes.dsi.unimi.it/~malchiod/LP/


Organizzazione del corso

Il corso si organizzera grosso modo in 2 parti:

I°: Architettura

II°: Programmazione


Testi Consigliati

I Parte:

S. Ceri, D. Mandrioli, L.Sbattella: Informatica arte e mestiere (II edizione), McGraw-Hill,2004.


II parte:

G. Pighizzini, M. Ferrari: Dai fondamenti agli oggetti. Corso di programmazione JAVA (II edizione), Addison-Wesley, Pearson Education Italia, 2005.


Modalità Esami

Durante l'anno verranno organizzati tre compitini che si svolgeranno intorno a primi novembre, metà dicembre, e al termine del corso

Gli studenti che abbiano sostenuto tutti e tre i compitini e li abbiano superati con voti non inferiori a 12 e con una media finale non inferiore a 18 sono esentati dal sostenere l'appello d'esame

Poi ci sarà da realizzare un progetto anche a gruppi e questo dovrà essere anche sostenuto e giustificato da un orale.

Alla fine di tutto questo...il voto se positivo potra essere registrato oppure sostenere un ulteriore orale per alzare (o abbassare OCCCHIO!!) la media.

In piu ci saranno dei punti bonus: di 0 punti per gli studenti che abbiano consegnato meno del 50% delle esercitazioni proposte durante l'anno; di 1 punto per gli studenti che abbiano consegnato fra il 50% e il 75% delle esercitazioni; di 2 punti per gli studenti che abbiano consegnato oltre il 75% delle esercitazioni.

Diario del Corso

Lezione de 03/10/2005

  • Introduzione al Corso.
  • Definizone e brevi esempi di algoritmi.

Lezione de 06/10/2005

  • Che cos'è un programma.
  • Correzione del compito a casa.
  • Risoluzione piccoli algoritmi matematici.
  • Introduzione agli alaboratori.
  • Il bit
  • Comportamento dell'elaboratore
  • Hardware
  • Software
  • Calcolatore ideale
  • CPU/Memoria centrale/Bus/Periferiche/HardDisk

Lezione de 10/10/2005

  • Esercitazione su memorizzazione di immagini: risoluzione e profondità d'immagine.
  • Esecuzione dei programmi sull'architettura di von Neumann, ciclo macchina: fetch-decode-execute.
  • Registri di lavoro nella CPU. Dal linguaggio macchina all'assembly, assemblatore.
  • Forma di un'istruzione assembly (codice operativo + operandi), un semplice assembly.
  • Istruzioni di lettura, scrittura, aritmetiche, salto (in)condizionato.
  • Esempi di programmazione assembly
  • Compiti a casa --> Stessi esercizi della settimana scorsa in pseudocodifica ma trasformarli in assembly

Lezione de 11/10/2005

  • Ancora sulla programmazione assembly.
  • Struttura interna della CPU: registri, CU (control unit), ALU (arithmetic/logic unit).
  • Rappresentazione dell'informazione, cenni alla digitalizzazione di immagini, suoni testi.
  • Importanza della digitalizzazione numerica.
  • Rappresentazione dei numeri in base b, da base b a base decimale e ritorno, la base ottale ed esadecimale.
  • Rappresentazione binaria dei numeri, scorciatoie da base ottale/hex a binaria e viceversa. Esercizi

Lezione de 11/10/2005 Laboratorio

  • Panegirico sulla riforma Moratti
  • Introduzione al corso

Lezione de 17/10/2005

  • Algoritmo di Euclide in assembly.
  • Operazioni sui numeri binari: somma, propagazione del riporto, esempi.
  • Sottrazione, riduzione alla rappresentazione dei negativi.
  • Rappresentazione in modulo e segno, range di rappresentazione, overflow e underflow, esempi.
  • Rappresentazione in complemento a due, conversione e traduzione, range di rappresentazione.
  • Esempi di sottrazione mediante rappresentazione in complemento a due

Lezione de 18/10/2005

  • Esercizi su somme e sottrazioni in complemento a due.

ALU, circuiti elettronici e loro struttura.

  • Algebra di Boole, principali operazioni: and, or, not, xor, nand, nor, implica, sse, corrispettive porte logiche.
  • Espressioni booleane, tabelle di verità, sintesi di circuiti.
  • Equivalenza logica di espressioni, verifica

Lezione de 20/10/2005 Laboratorio

  • Sistemi operativi
  • Logica Booleana e circuiti

Lezione de 24/10/2005

  • Approfondimento funzionamento ALU
  • Approfondimento Algebra Di BOOL

Lezione de 25/10/2005 Laboratorio

  • Implementare “da zero” algoritmi di media complessità
  • Verificare la correttezza di un algoritmo eseguendolo “a mano”.
  • Imparare a valutare le prestazioni di un algoritmo.
  • Scrivere alcuni algoritmi “tipici” da utilizzare come base per realizzarne altri.

Lezione de 2/11/2005

  • L'attività di programmazione, linguaggi a basso ed alto livello, vantaggi e svantaggi.
  • Compilazione, significato.
  • Vita del software, fasi di editing, compiling, linking, loading, possibili errori.
  • Nozione di interprete.
  • La situazione ibrida di Java, compilatore e Java Virtual Machine (JVM), creazione del bytecode e interpretazione. *Esecuzione di programmi in Internet (applet, browser).
  • Programmazione strutturata, strutture di controllo, motivazioni: sequenza, selezione iterazione.
  • Esempi con sequenza e selezione

Lezione de 7/11/2005

  • Esercizi di programmazione sulla struttura di selezione.
  • La struttura di controllo iterazione, le due varianti, loro analisi (numero massimo e minimo di iterazioni consentite da ciascuna delle due varianti).
  • Esercizi sulla struttura d'iterazione (somma di sequenze di numeri di lunghezza prefissata e non).
  • Il concetto di variabile

Lezione de 8/11/2005

  • Il paradigma della programmazione ad oggetti, scenari: classi, oggetti, interazioni tra oggetti, messaggi.
  • Caratteristiche di un oggetto, stato e comportamento.
  • Protocollo, interfaccia, contratto, responsabilità dell'interfaccia.
  • Classe come fabbrica di oggetti.
  • Il vocabolario di Java, parole riservate, identificatori, separatori, commenti.
  • Il primo programma Java, dal sorgente all'esecuzione.
  • La classe ConsoleOutputManager, esempio di utilizzo

Lezione de 9/11/2005 Laboratorio

http://homes.dsi.unimi.it/~malchiod/LP/Lab04-PrimiProgrammiJava.pdf


Lezione de 14/11/2005

  • Ancora sugli elementi principali della programmazione ad oggetti, esempi.
  • La classe ConsoleInputManager, significato e principali metodi.
  • Esempi di utilizzo di ConsoleInputManager.
  • Il fenomeno dell'overloadin: prototipo e segnatura dei metodi, overloading in ConsoleOutputManager e ConsoleInputManager.
  • Esempi di programmi che utilizzano entrambe le classi di I/O


Lezione de 9/11/2005 Laboratorio

http://homes.dsi.unimi.it/~malchiod/LP/Lab05-SelezioneIterazione.pdf

Lezione de 17/11/2005

  • La classe String, metodi principali, l'operazione di concatenazione.
  • Esercizi, il programma Evidenziatore. Variabili e tipi in Java, Java come linguaggio fortemente tipato, tipo dell'espressione.
  • Dichiarazione e definizione di variabili.
  • Tipi primitivi e tipi riferimento, principali caratteristiche.
  • Assegnamento per variabili di tipo primitivo e riferimento, sostanziale differenza.
  • La classe Frazione, metodi principali.


Lezione de 21/11/2005

  • Esempi di utilizzo della classe Frazione.
  • Il costrutto if in Java, varianti ed esempi.
  • If nidificati, convenzioni del compilatore, programmi per la ricerca di stringhe nei testi.
  • Il tipo boolean, operatori tra tipi primitivi ed espressioni semplici. Espressioni composte mediante && (and), || (or), ! (not).
  • Operatori == e != su tipi primitivi e riferimento, differenze ed esempi.
  • I costrutti while e do...while, esempi.
  • Calcolo della media di una sequenza di frazioni


Lezione de 22/11/2005

  • Esercizi su strutture di controllo. Iterazione mediante for, varianti di for, esempi.
  • Test di primalità.
  • Il metodo charAt della classe String, esempi di utilizzo.
  • Stringhe palindrome, programma per la loro rivelazione, ottimizzazioni varie.
  • Espressioni Java, tipo e valore ritornato.
  • Espressioni semplici, metodi.
  • L'assegnamento come espressione, effetti collaterali.
  • Esercizi


Lezione de 23/11/2005 Laboratorio

http://homes.dsi.unimi.it/~malchiod/LP/Lab06-DatiVariabili.pdf


Lezione de 28/11/2005

  • Espressioni in Java, tipo e valore.
  • Esercizi con l'espressione di assegnamentoi, effetti collaterali.
  • Gli operatori ++ e --, loro utilizzo in espressioni.
  • Valutazione di espressioni booleane, lazy evaluation e sua prevenzione, utilizzo di &&, &, ||, |, !, esempi con effetti collaterali.
  • L'operatore ternario condizionale, significato e suo utilizzo


Lezione de 29/11/2005 Laboratorio

http://homes.dsi.unimi.it/~malchiod/LP/Lab07-StringArrayMain.pdf


Lezione de 30/11/2005

  • I tipi primitivi numerici in Java: int, long, byte, short, double, float, principali caretteristiche di memorizzazione, principali operatori aritmetici e di confronto.
  • Operazioni tra tipi eterogenei, conversioni implicite (promozioni), esempi.
  • Forzatura di tipo mediante casting, esempi.
  • Operatore + tra stringhe e tipi primitivi/riferimento, esempi.
  • Il tipo char, codifica UNICODE, esempi di conteggio di caratteri


Lezione de 5/12/2005

  • Metodi statici, sintassi e semantica, esempi d'utilizzo.
  • Classi involucro, alcuni esempi d'utilizzo di metodi statici dalle classi involucro.
  • Differenze tra variabile di tipo primitivo e di "tipo involucro".
  • Gli array, principali definizioni e struttura di un array.
  • Array di tipo primitivo e array d'oggetti. Riempimento e scansione d'array.
  • Esempi di programmi che utilizzano array


Lezione de 12/12/2005

  • Esercizi con array: ricerca della frazione massima in un array di frazioni, ricerca di una parola in un testo, *occorrenza di caratteri in righe di testo.
  • Gerarchie di classi, ereditarietà, polimorfismo.
  • La classe Rettangolo, definizione e principali metodi.
  • Esempi di utilizzo, ricerca del rettangolo di area maggiore in una sequenza di rettangoli.
  • Il formalismo UML per Java: classi (a diversi livelli di dettaglio, oggetti, metodi).
  • La classe Quadrato, relazione con Rettangolo


Lezione de 14/12/2005

  • Esercizi con array e sequenze.
  • La classe Quadrato, principali metodi, relazione con Rettangolo.
  • Gerarchie di classi, ereditarietà, polimorfismo.
  • Tipi, supertipi, ereditarietà sui metodi, riscrittura di metodi (overriding).
  • Ricerca del rettangolo o qudrato di area massima.
  • La classe Cerchio, relazioni col resto delle figure, la classe Figura


Lezione de 19/12/2005

  • Ancora sulla gerarchia di figure geometriche.
  • La classe Figura, nozione di classe astratta, metodi astratti.
  • La classe Object, assegnamenti, tipi, supertipi, polimorfismo, overriding, esempi.
  • Il concetto di interfaccia, l'interfaccia Comparable.
  • Esempi di utilizzo nell'ordinamento di array