Modulo di Laboratorio di Programmazione I (CdL in Informatica)
Corso di Laboratorio di Programmazione (CdL in Matematica)
a.a. 2007-08
Alcuni appunti ed esercizi
Attenzione! Pagina in costruzione! (ultimo aggiornamento: 29/01/2008)
Si prega di segnalare eventuali errori o imprecisioni all'indirizzo
di posta elettronica monica@di.univaq.it.
Prima parte del corso
- Lezione1 (4/10/2007):
Presentazione del corso.
- Lezione2 (5/10/2007): Algoritmi, programmi e linguaggi di programmazione.
Esempi: somma e moltiplicazione di due numeri tramite il pallottoliere.
Concetto di macchina astratta.
Moltiplicazione di due numeri tramite pseudo-codice.
- Lezione3 (8/10/2007):
Diagrammi di flusso. Esempi di algoritmi espressi tramite diagrammi di flusso.
- Lezione4 (9/10/2007):
Esempi di algoritmi su dati monodimensionali e bidimensionali
tramite diagrammi di flusso.
- Lezione5 (11/10/2007):
Altri esempi di algoritmi tramite diagrammi di flusso.
Introduzione alla programmazione strutturata ed orientata agli oggetti.
- Lezione6 (12/10/2007):
Introduzione al linguaggio Java. Struttura di un programma Java.
Input/Output di un programma Java. Astrazione sui dati in ingresso.
(Note)
- Lezione7 (16/10/2007):
Tipi di dato primitivi o di base: boolean, int, byte, short, long, float,
double, char. Dichiarazione di variabili, inizializzazione, assegnamento.
Promozione e cast.
Espressioni ed operatori booleani (sintassi e semantica).
Costanti letterali e simboliche.
Dichiarazione di costanti simboliche (esempio).
- Lezione8 (18/10/2007):
Espressioni aritmetiche. Istruzione if/if-else.
Sintassi (informale) e semantica tramite diagramma di flusso.
Blocchi, dichiarazione di identificatori in un blocco, regole
di visibilità degli identificatori (scoping rules).
Istruzioni if/if-else annidate.
Esempi.
- Lezione9 (19/10/2007):
Iterazione e ciclo (loop): istruzioni while, do-while, for.
Sintassi (informale) e semantica tramite diagramma di flusso.
Esempi.
Cicli annidati. Istruzioni (ed operatori) di incremento e decremento.
Riepilogo degli operatori aritmetici, logici e relazionali in Java.
Confronto tra while e for.
- Lezione10 (25/10/2007):
Programmazione strutturata e modulare: definizione di metodi in Java.
Intestazione di un metodo. Metodi statici o di classe.
Parametri formali ed attuali, chiamata di metodo, passaggio dei parametri,
modalità di passaggio per valore (call-by-value).
Istruzione return. (Note)
- Lezione11 (26/10/2007):
Struttura dati array. Array monodimensionali: dichiarazione, creazione,
inizializzazione, assegnamento su array.
Metodi statici iterativi con parametri di tipo array
(esempi).
- Lezione12 (8/11/2007):
Array bidimensionali: dichiarazione, creazione, inizializzazione.
Valutazione di codice Java e definizione di metodi iterativi con
array bidimensionali (esempi).
- Lezione13 (9/11/2007):
Stringhe in Java. Alcuni metodi utili della classe String
(length, equals, concat, charAt, substring).
Esercizi su esecuzione di codice
Java e definizione di metodi statici iterativi con stringhe ed array.
- Lezione14 (15/11/2007):
Valutazione di codice Java con array bidimensionali di stringhe e definizione
di metodi iterativi che restituiscono array
(esercizi).
- Lezione15 (16/11/2007):
Esercizi in preparazione della prova intermedia:
una versione della prova intermedia 2005 +
alcune soluzioni;
una versione della prova intermedia 2006 +
alcune soluzioni.
Seconda parte del corso
- Lezione16 (29/11/2007):
Introduzione alla ricorsione e definizione di metodi ricorsivi in Java.
Valutazione di chiamate di metodi ricorsivi, metodi ricorsivi su array
monodimensionali e bidimensionali (esempi).
- Lezione17 (30/11/2007):
Definizione di metodi ricorsivi su stringhe e su array
(esempi).
- Lezione18 (4/12/2007):
Ricerca lineare di un elemento in un array.
Ordinamento di un array tramite selezione del minimo.
Ricerca binaria di un elemento in un array ordinato.
Metodi e altri esercizi.
Definizione di metodi ricorsivi che restituiscono array
(esempi).
- Lezione19 (7/12/2007):
Introduzione al concetto di classe, oggetto, variabile istanza.
Costruttori e metodi d'istanza e loro chiamate.
Parametri espliciti e parametro implicito (this).
Esempio.
- Lezione20 (10/12/2007):
Definizione di classi, costruttori, metodi d'istanza ed oggetti.
Applicazione di metodi d'istanza.
Esempio.
- Lezione21 (11/12/2007):
Definizione di classi con array di oggetti
(esempio).
- Lezione22 (10/01/2008):
Introduzione al concetto di ereditarietà in Java.
Superclasse, sottoclasse, variabili istanza e metodi ereditati.
Il costrutto super. Sovrascrittura di metodi (overriding).
Esempi (incluso l'esempio sulle
polizze, non fatto a lezione).
- Lezione23 (11/01/2008):
Ereditarietà, overloading e overriding.
Early binding (selezione anticipata o statica) e late binding (selezione
posticipata o dinamica).
Assegnamenti tra riferimenti ad oggetti, cast, instanceof
(esempio).
Definizione di classi con array di oggetti
(esempio Agenzia Assicurativa,
non fatto a lezione).
- Lezione24 (17/01/2008):
Definizione di classi con array di oggetti,
sottoclassi, overriding e riutilizzo del codice
(testo degli esercizi
e alcune soluzioni).
Altri esercizi.
- Lezione25 (18/01/2008):
Esercizi su metodi iterativi e ricorsivi, definizione di classi e
sottoclassi, metodi sovrascritti e loro chiamata su oggetti di
superclasse/sottoclasse.
Alcuni esercizi.