CORSO DI STUDI IN INFORMATICA
Università di Torino
Facoltà di Scienze Matematiche Fisiche e Naturali

Programmazione I B a.a. 2004-05: Diario delle lezioni e slides

docente: prof. Elio Giovannetti
pagina principale: Programmazione I e Laboratorio - B

NOTA: (i links ad) alcuni blocchi di diapositive compaiono due volte nel sottostante diario, essendo stati proiettati in parte in un certo giorno e in parte in un altro.


Data
Argomento
Slides
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




[Corso di Studi di Informatica]

Last update: Oct 16, 2008