0 |
29/9 |
Introduzione al corso. Test e questionari. |
|
PRIMA PARTE: LE BASI DELLA PROGRAMMAZIONE, (QUASI) SENZA OGGETTI
|
30/9 |
Presentazione del laboratorio (dr. Rabellino).
Il primo programma Java. Convenzioni di scrittura per i programmi Java |
blocco 1:
2x1:

6x1:
|
I |
5/10 |
Compilazione ed esecuzione di un programma Java. Grammatiche (o sintassi) e linguaggi. Introduzione alla sintassi di Java.
Convenzioni di scrittura (ripasso). Le basi della programmazione imperativa: variabili assegnabili e assegnazione.
Tipi, valori, espressioni. Tipo booleano, valori ed espressioni booleane. Procedure: cenni introduttivi.
|
blocco 3:
2x1:

6x1:
|
6/10 |
Procedure e metodi. La rappresentazione della memoria. Primi programmi. Ecc.
|
blocco 4 (stack):
1x1:

|
7/10 |
Metodi, passaggio parametri e restituzione di risultato, record di attivazione, input-output.
Domande e risposte sulle diapositive assegnate in lettura a casa:
Algoritmi, macchine, programmi.
Struttura del calcolatore.
Linguaggio-macchina e linguaggi di programmazione ad alto livello.
Codifiche. Tipi di file: puro testo, testo formattato, eseguibile.
|
blocco 2:
2x1:

6x1:
|
II |
12/10 |
Esecuzione di un programma e cambiamenti dello stato della memoria.
Riepilogo struttura di un programma Java: classi, campi e metodi statici, variabili.
Dichiarazioni e istruzioni.
Tipi primitivi e tipi riferimento-a-oggetto.
Le istruzioni di selezione (if, if-else). Il costrutto virtuale if ... else if ... else if ...
|
blocco 5:
6x1:
|
13/10 |
Creazione di oggetti. Invocazione di metodi di oggetti.
L'istruzione while. Invarianti di ciclo. Esempi: somma e massimo
di una sequenza di numeri introdotta da tastiera.
|
blocco 6:
6x1:
|
14/10 |
L'istruzione for. Ripasso istruzioni semplici e istruzioni composte. Blocchi.
Portata (scope) di una dichiarazione, mascheramenti di nomi.
L'istruzione return.
|
blocco 9 (return):
6x1:
|
III |
19/10 |
Correzione del Compito 1.
L'istruzione do-while.
Dichiarazioni di import e import static.
|
blocco 7 (import):
6x1:
|
20/10 |
Introduzione agli array ed esempi
|
blocco 10:
1x1:
|
21/10 |
Annullata per motivi di salute
|
|
IV |
26/10 |
Annullata per Sospensione dell'attività didattica a causa dell'assemblea generale dei docenti dell'Unversità
di Torino
|
blocco 8:
(invarianti)
6x1:
|
27/10 |
Esempio di simulazione dell'esecuzione passo-passo di un programma con visualizzazione dell'evoluzione
dello stack (raffigurazione dello stato dello stack ad ogni passo).
|
blocco 4 (stack):
1x1:

|
SECONDA PARTE: PROGRAMMAZIONE A OGGETTI – RISOLUZIONE DI PROBLEMI
|
28/10 |
Programmazione a oggetti: campi di oggetto (o variabili di istanza), metodi di istanza, costruttori,
parametro implicito this;
riferimenti a oggetti
|
blocco 11:
1x1:
|
V |
2/11 |
Annullata per motivi di salute
|
|
3/11 |
Ripasso programmazione a oggetti.
|
induzione:
6x1:
|
4/11 |
Invarianti di ciclo. Il problema della bandiera tricolore.
In java non esiste il passaggio parametri per riferimento:
impossibilità della tradizionale procedura "scambia".
|
bandiera:
2x1:
|
VI |
9/11 |
Visibilità private e public per campi e metodi;
Modificatore final; campi static final e costanti di compilazione;
cenni su java.text.numberFormat.
Il nuovo formato del for in java 1.5.
Copia di un array, uguaglianza di arrays. Uguaglianza e identità fra array
(con rappresentazione della memoria).
|
|
10/11 |
Esempi di metodi statici ed algoritmi standard su arrays:
copia, uguaglianza, ricerca sequenziale,...
Il costrutto condizionale "cond ? expr1 : expr2".
Programmazione a oggetti: il valore null, uguaglianza di oggetti, assegnazioni
di variabili di tipo riferimento a oggetto, passaggio di parametri di tipo riferimento a oggetto.
|
blocco 12:
2x1:

6x1:

|
11/11 |
Tipo primitivo char. Programmazione a oggetti: classi Coppia.
1)Inserimento al posto giusto in un array ordinato.
2) Copia ordinata (cioè creazione di un array contenente tutti e soli gli elementi dell'array
di partenza, ma ordinato (in ordine crescente).
3) Algoritmo di ordinamento isort (insertion sort, o ordinamento per inserimento).
|
isort, ecc.:
1x1:
|
VII |
16/11 |
Ricerca dell'ultimo elemento di un array che soddisfa una data proprietà.
Ricerca binaria in un array ordinato.
|
|
17/11 |
Sequenze di lunghezza variabile e array parzialmente riempiti.
Definizione della classe IntArrayParziale, nozione di invariante di classe,
eliminazione di un elemento, eliminazione di tutti gli elementi che soddisfano
ad una data proprietà (algoritmo lineare).
|
blocco 13:
1x1:
|
18/11 |
Algoritmo di ordinamento per selezione (ssort); confronto fra algoritmi di ordinamento.
Ripasso e approfondimenti su argomenti diversi. Eccezioni (checked e unchecked).
|
|
VIII |
23/11 |
Esecuzione di algoritmi di ordinamento diversi con verifica della velocitą
di esecuzione.
Introduzione alla classe Negozio come esempio di array di oggetti parzialmente
riempito.
|
|
24/11 |
Numeri con la virgola, (non-)rappresentabilitą in binario di numeri con virgola decimale,
approssimazioni. La classe BigDecimal.
Approfondimenti sui costruttori. Come definire una classe in modo che sia vietata
la costruzione di oggetti di quella classe.
Fusione ordinata (merge) di due array ordinati.
|
ssort, merge
1x1:
|
25/11 |
Simulazione dell'esecuzione passo-passo di un programma,
con raffigurazione dello stato della memoria (dalla prova
scritta di esame del dicembre 2003)
|
soluzione
|
IX |
30/11 |
Ricerca binaria: versione che restituisce sempre il punto di inserimento.
Array ordinati. La classe Negozio. Ripasso uso delle eccezioni.
|
eccezioni
|
1/12 |
L'esponenziale veloce, con dimostrazione di correttezza.
|
rileggi blocco 8 (invarianti)
esp. veloce
|
2/12 |
Ripasso e approfondimenti sui costruttori.
Esercizio di simulazione dell'esecuzione passo-passo di un programma,
con raffigurazione dello stato della memoria.
|
costruttori
|
X |
6/12 |
Ripasso su files e serializzazione.
Esercizi su array di stringhe. Soluzioni delle esercitazioni
sulla massima sottosequenza negativa e sull' array parzialmente riempito mantenuto ordinato.
|
files
|
7/12 |
|
|