Università di Roma "La Sapienza"
Laurea in Ingegneria Informatica
Fondamenti di Informatica 1
Lezioni A.A. 2002/2003
Materiale didattico
[1] Lezioni di Fondamenti di Informatica -
Parte I: introduzione alla programmazione in Java. Diego Calvanese,
Giuseppe De Giacomo, Camil Demetrescu, Luca Iocchi, Daniele Nardi. Esculapio,
2003.
[2] Lezioni di Fondamenti di Informatica -
Parte II: tecniche di programmazione in Java. Diego Calvanese, Giuseppe De
Giacomo, Camil Demetrescu, Luca Iocchi, Daniele Nardi. Esculapio, 2003.
[3]
Concetti di
Informatica e fondamenti di JAVA 2 (seconda edizione).
Cay S. Horstmann. Apogeo, 2002.
Lezioni
Tabella riassuntiva
Sett |
Argomento |
Lunedì
8:45-10:15 (lezione) |
Lunedì
14:00-15:30 (eserc.) |
Martedì
8:45-10:15 (lezione) |
Mercoledì
8:45-10:15 (lezione) |
Mercoledì
14:00-15:30 (eserc.) |
Giovedì
8:45-10:15 (lezione) |
#1 13 gen. |
Introduzione alla programm.
|
Introduzione alla programm.
(Lez 1,2)
|
-- |
Uso di oggetti, invocazione di metodi
(Lez 3,4)
|
Variabili, riferimenti a oggetti
(Lez 5,6)
|
-- |
costruttori, input/output
(Lez 7,8)
|
#2 20 gen. |
Definizione di metodi e classi
|
modularizz., def. metodi statici
(Lez 9,10)
|
JDK e BlueJ, metodi statici
(Eser 1)
|
Definizione di classi
(Lez 11,12)
|
Variabili di istanza, costruttori
(Lez 13,14)
|
Inv. metodi statici, def. di classi
(Eser 2)
|
Ereditiarietà
(Lez 15,16)
|
#3 27 gen. |
Tipi di dato primitivi e
istruzioni condizionali
|
Tipi primitivi interi
(Lez 17,18)
|
Tipi primitivi
(Eser 3)
|
Tipi primitivi reali, carattere, booleani
(Lez 19,20)
|
Istruzione if-else
(Lez 21,22)
|
Istruzione if-else
(Eser 4)
|
Condizioni complesse, confronto tra oggetti
(Lez 23,24)
|
#4 3 feb. |
Istruzioni iterative
|
Istruzione switch , ciclo while
(Lez 25,26)
|
Istruzioni condizionali e iterative
(Eser 5)
|
Schemi di ciclo
(Lez 27,28)
|
Istruzioni for e do-while
(Lez 29,30)
|
Istruzioni iterative
(Eser 6)
|
Cicli annidati
(Lez 31,32)
|
#5 10 feb. |
Array, File
|
Array
(Lez 33,34)
|
Array
(Eser 7)
|
Matrici
(Lez 35,36)
|
Esercizi su array
(Lez 37,38)
|
Array e Matrici
(Eser 8)
|
File
(Lez 39,40)
|
#6 17 feb. |
Stream, eccezioni
|
Stream
(Lez 41,42)
|
Matrici
(Eser 9)
|
Errori
(Lez 43,44)
|
Eccezioni
(Lez 45,46)
|
Prova al calcolatore
(Prova)
|
-- |
#7 24 feb. |
Ricorsione
|
Domini definiti induttivamente e ricorsione
(Lez 47,48)
|
-- |
Metodi ricorsivi
(Lez 49,50)
|
Gestione memoria a run-time
(Lez 51,52)
|
Ricorsione multipla
(Eser 10)
|
Esercizi sulla ricorsione
(Lez 53,54)
|
#8 3 mar. |
Strutture collegate lineari
|
-- |
-- |
-- |
Array dinamici, liste
(Lez 55,56)
|
Array dinamici
(Eser 11)
|
Operazioni sulle liste
(Lez 57,58)
|
#9 10 mar. |
Strutture collegate
|
Liste - real. con side-effect
(Lez 59,60)
|
-- |
Liste - real. funzionale
(Lez 61,62)
|
Esercizi sulle liste (impl. ricorsiva)
(Lez 63,64)
|
Liste
(Eser 12)
|
Alberi binari
(Lez 65,66)
|
#10 17 mar. |
Tipi astratti di dato
|
Alberi binari, tipi astratti di dato
(Lez 67,68)
|
-- |
Realizzazione di tipi astratti di dato
(Lez 69,70)
|
Esempi di tipi astratti di dato
(Lez 71,72)
|
Esercizi di esame
(Eser 13)
|
Esercizi di esame
(Lez 73,74)
|
Dettaglio
Settimana 1:
Introduzione alla programmazione (Unità 1),
uso di oggetti e variabili (Unità 2)
Lezioni 1,2 - 13/01/2003
- Argomenti trattati
[L1, Unità 1]
- presentazione del corso
- linguaggi di programmazione
- programmi = oggetti + operazioni
- primo programma Java
- scrittura, compilazione, esecuzione di un programma
- Cosa lo studente dovrebbe sapere dopo la lezione
- distinzione tra oggetti e operazioni
- scrivere, compilare ed eseguire un semplice programma Java
Lezioni 3,4 - 14/01/2003
- Argomenti trattati
[L1, Unità 1, 2]
- errori nei programmi
- oggetti e classi in Java
- la classe
String
- invocazione di metodi
- output su video tastiera
- Cosa lo studente dovrebbe sapere dopo la lezione
- scrivere semplici programmi formati dal solo metodo
main
che manipolano oggetti String
Lezioni 5,6 - 15/01/2003
- Argomenti trattati
[L1, Unità 2]
- variabili
- assegnazione
- riferimenti e oggetti denotati
- Cosa lo studente dovrebbe sapere dopo la lezione
- modello degli oggetti e delle variabili in memoria
- scrivere semplici programmi formati dal solo metodo
main
che fanno uso di variabili di tipo
String
- illustrare con diagrammi ciò che avviene in memoria durante
l'esecuzione dei programmi su citati
Lezioni 7,8 - 16/01/2003
- Argomenti trattati
[L1, Unità 2]
- creazione di nuovi oggetti: costruttori
- oggetti mutabili e immutabili in Java
- metodi che effettuano side-effect
- la classe
StringBuffer
- input da tastiera e output su finestra
- Cosa lo studente dovrebbe sapere dopo la lezione
- scrivere semplici programmi formati dal solo metodo
main
che fanno uso di variabili di tipo
String
e StringBuffer
- illustrare con diagrammi ciò che avviene in memoria durante
l'esecuzione dei programmi su citati
Settimana 2:
Definizione di metodi e classi (Unità 3)
Lezioni 9,10 - 20/01/2003
- Argomenti trattati
[L1, Unità 3]
- modularizzazione dei programmi
- astrazione sulle operazioni
- definizione di metodi statici
- passaggio dei parametri
- Cosa lo studente dovrebbe sapere dopo la lezione
- illustrare con diagrammi ciò che avviene in memoria durante
il passaggio di parametri e l'invocazione dei metodi (record di
attivazione)
- scrivere semplici programmi formati da diversi metodi che fanno
uso di variabili di tipo
String
e
StringBuffer
- illustrare con diagrammi ciò che avviene in memoria durante
l'esecuzione dei programmi su citati
Esercitazione 1 - 20/01/2003
(Laboratorio - Ing. Giorgio Grisetti)
Lezioni 11,12 - 21/01/2003
- Argomenti trattati
[L1, Unità 3]
- esecuzione di un metodo: record di attivazione di un metodo
- variabili locali: campo di azione e tempo di vita
- astrazione sugli oggetti
- definizione di classi
- modificatori di accesso:
public
e private
- Cosa lo studente dovrebbe sapere dopo la lezione
- comprendere definizioni di classi: campi dati e campi operazione
Lezioni 13,14 - 22/01/2003
- Argomenti trattati
[L1, Unità 3]
- variabili di istanza: campo di azione e tempo di vita
- metodi
- costruttori
- il costruttore standard
- metodologia di progetto di una classe
- Cosa lo studente dovrebbe sapere dopo la lezione
- come di definiscono e invocano i costruttori di una classe
- sapere realizzare una classe Java a partire dalla specifica
seguendo la metodologia illustrata
Esercitazione 2 - 22/01/2003
(Laboratorio - Ing. Giorgio Grisetti)
- Argomenti trattati
- esercizi sull'invocazione di metodi statici e sulla definizione di
classi che realizzano astrazione per oggetto:
specifica e
soluzioni
Lezioni 15,16 - 23/01/2003
- Argomenti trattati
[L1, Unità 3]
- Cosa lo studente dovrebbe sapere dopo la lezione
- comprendere gli aspetti base dell'ereditarietà
- come effettuare l'overriding di metodi
Settimana 3:
Tipi di dato primitivi (Unità 4) e istruzioni condizionali (Unità
5)
Lezioni 17,18 - 27/01/2003
- Argomenti trattati
[L1, Unità 4]
- i tipi primitivi di Java e variabili di un tipo primitivo
- classi wrapper
- tipi di dato predefiniti per rappresentare numeri interi:
int
, byte
short
,
long
- espressioni con e senza side-effect
- Cosa lo studente dovrebbe sapere dopo la lezione
- conoscere e sapere utilizzare i tipi interi
- saper utilizzare correttamente gli operatori che effettuano
side-effect
Esercitazione 3 - 27/01/2003
(Laboratorio - Ing. Giorgio Grisetti)
Lezioni 19,20 - 28/01/2003
- Argomenti trattati
[L1, Unità 4, 5]
- tipi di dato predefiniti per rappresentare reali:
double
, float
- tipo di dato predefinito per rappresentare caratteri:
char
- tipo di dato predefinito per rappresentare booleani:
boolean
- istruzione condizionale
if-else
- Cosa lo studente dovrebbe sapere dopo la lezione
- conoscere e sapere utilizzare i tipi primitivi di Java
Lezioni 21,22 - 29/01/2003
- Argomenti trattati
[L1, Unità 5]
- istruzione condizionale
if-else
- variante senza
else
- istruzione blocco e campo di azione delle variabili definite in un
blocco
- istruzioni
if-else
annidate
- Cosa lo studente dovrebbe sapere dopo la lezione
- conoscere e sapere utilizzare l'istruzione
if-else
e
la variante if
in programmi elementari
- Esercizi proposti
Esercitazione 4 - 29/01/2003
(Laboratorio - Ing. Giorgio Grisetti)
Lezioni 23,24 - 30/01/2003
- Argomenti trattati
[L1, Unità 5]
- uso di condizioni complesse nell'istruzione
if-else
- espressione condizionale
- confronto tra oggetti
String
- uguaglianza di oggetti: uguaglianza superficiale e uguaglianza
profonda
- Cosa lo studente dovrebbe sapere dopo la lezione
- conoscere e sapere utilizzare l'istruzione
if-else
con
condizioni complesse
- sapere come effettuare confronti di uguaglianza tra stringhe e
oggetti
- Esercizi svolti
Settimana 4:
Istruzioni iterative (Unità 6)
Lezioni 25,26 - 03/02/2003
- Argomenti trattati
[L1, Unità 5, 6]
- cicli definiti e indefiniti
- istruzione
while
- Cosa lo studente dovrebbe sapere dopo la lezione
- conoscere e sapere utilizzare l'istruzione
while
in
programmi elementari
- distinguere la parte di controllo di un ciclo dalla parte di azioni
specifiche
Esercitazione 5 - 03/02/2003
(Laboratorio - Ing. Giorgio Grisetti)
Lezioni 27,28 - 04/02/2003
- Argomenti trattati
[L1, Unità 6]
- schemi di ciclo (contatore, accumulatore, valori caratteristici in
un insieme)
- Cosa lo studente dovrebbe sapere dopo la lezione
- implementare cicli di diverso tipo
- Esercizi svolti
Lezioni 29,30 - 05/02/2003
- Argomenti trattati
[L1, Unità 6]
- istruzione
for
- istruzione
do-while
- Cosa lo studente dovrebbe sapere dopo la lezione
- conoscere e sapere utilizzare le istruzioni
for
e
do-while
in programmi elementari
- Esercizi proposti
- calcolo del massimo comun divisore (Unità 6, lucidi 6.33 -
6.38)
Esercitazione 6 - 05/02/2003
(Laboratorio - Ing. Giorgio Grisetti)
Lezioni 31,32 - 06/02/2003
- Argomenti trattati
[L1, Unità 6]
- cicli annidati
- la classe
StringTokenizer
- istruzioni di controllo del flusso
- Cosa lo studente dovrebbe sapere dopo la lezione
- sapere utilizzare le istruzioni
while
,
for
e do-while
per scrivere programmi
che contengono cicli annidati
- saper utilizzare la classe
StringTokenizer
- Esercizi svolti
- Esercizi proposti
- lunghezza della più lunga sottosequenza (Unità 6,
lucido 6.39)
- la classe
TestoCriptato
(Unità 6, lucidi 6.50 -
6.54)
Settimana 5:
Array (Unità 7) e file (Unità 8)
Lezioni 33,34 - 10/02/2003
- Argomenti trattati
[L1, Unità 7]
- memorizzare collezioni di elementi
- dichiarazione e inizializzazione di array
- accesso agli elementi di un array
- Cosa lo studente dovrebbe sapere dopo la lezione
- conoscere e sapere utilizzare array in programmi elementari
Esercitazione 7 - 10/02/2003
(Laboratorio - Ing. Giorgio Grisetti)
Lezioni 35,36 - 11/02/2003
- Argomenti trattati
[L1, Unità 7]
- dichiarazione e inizializzazione di matrici
- accesso agli elementi di una matrice
- Cosa lo studente dovrebbe sapere dopo la lezione
- conoscere e sapere utilizzare array in programmi elementari
- Esercizi svolti
- lunghezza della più lunga sottosequenza di elementi
consecutivi pari a 0 in un array di interi, risolto
attraverso una macchina a stati
Lezioni 37,38 - 12/02/2003
- Argomenti trattati
[L1, Unità 7]
- esercizi su array e matrici
- classi che fanno uso di array
- Cosa lo studente dovrebbe sapere dopo la lezione
- conoscere e sapere utilizzare array in programmi elementari
- Esercizi svolti
Esercitazione 8 - 12/02/2003
(Laboratorio - Ing. Giorgio Grisetti)
Lezioni 39,40 - 13/02/2003
- Argomenti trattati
[L1, Unità 8]
- il concetto di file
- apertura e chiusura di file
- scrittura su file di testo usando le classi
FileWriter
e PrintWriter
- lettura da file di testo usando le classi
FileReader
e
BufferedReader
- Cosa lo studente dovrebbe sapere dopo la lezione
- conoscere e saper utilizzare file di testo in programmi semplici
Settimana 6:
Stream (Unità 8) e eccezioni (Unità 9)
Lezioni 41,42 - 17/02/2003
- Argomenti trattati
[L1, Unità 8]
- stream di input
- stream di output
- lettura di dati da file di testo formattati
- Cosa lo studente dovrebbe sapere dopo la lezione
- Esercizi svolti / proposti
- conoscere e saper utilizzare stream di input e stream di output in
programmi semplici
- conoscere e saper utilizzare file di testo in programmi più
complessi
Esercitazione 9 - 17/02/2003
(Laboratorio)
Lezioni 43,44 - 18/02/2003
- Argomenti trattati
[L1, Unità 9]
- errori nei programmi
- individuazione e correzione degli errori
- le eccezioni in Java
- Cosa lo studente dovrebbe sapere dopo la lezione
- quali sono i tipi di errori nei programmi
- come si possono individuare e correggere gli errori nei programmi
- cosa sono e come si classificano le eccezioni
Lezioni 45,46 - 19/02/2003
- Argomenti trattati
[L1, Unità 9]
- dichiarazione di eccezioni
- lanciare eccezioni (istruzione
throw
)
- catturare eccezioni (istruzione
try-catch
)
- Cosa lo studente dovrebbe sapere dopo la lezione
- come si gestiscono gli errori nei programmi attraverso l'uso di
eccezioni
- Esercizi svolti / proposti
Prova al calcolatore - 19/02/2003
(Laboratorio)
Settimana 7:
Ricorsione (Unità 10)
Lezioni 47,48 - 24/02/2003
- Argomenti trattati
[L2, Unità 10]
- domini definiti induttivamente (naturali, stringhe, file, ...)
- funzioni ricorsive
- metodi ricorsivi
- Cosa lo studente dovrebbe sapere dopo la lezione
- sapere come si definisce un dominio in modo induttivo
- sapere caratterizzare in modo ricorsivo un'operazione che opera su
un dominio definito induttivamente
- sapere progettare e implementare in Java semplici metodi ricorsivi
che operano sui naturali e sulle stringhe
Lezioni 49,50 - 25/02/2003
- Argomenti trattati
[L2, Unità 10]
- esempi di metodi ricorsivi che fanno uso di ricorsione semplice
- Cosa lo studente dovrebbe sapere dopo la lezione
- sapere progettare e implementare in Java semplici metodi ricorsivi
che operano sui naturali e sulle stringhe e sui file
- Esercizi proposti
Lezioni 51,52 - 26/02/2003
- Argomenti trattati
[L2, Unità 10]
- record di attivazione
- evoluzione della pila dei record di attivazione durante
l'esecuzione di metodi:
programma di esempio
- evoluzione della pila dei record di attivazione durante
l'esecuzione di metodi ricorsivi
programma di
esempio
- ricorsione multipla
- Cosa lo studente dovrebbe sapere dopo la lezione
- conoscere le nozioni di record di attivazione e di pila dei record
di attivazione
- avere compreso come dette nozioni supportano l'invocazione di
metodi nei programmi, in particolare nel caso di metodi ricorsivi
- Esercizi proposti
- sequenza di interi simmetrica (Paragrago 10.21)
Esercitazione 10 - 26/02/2003
(Laboratorio - Ing. Giorgio Grisetti)
Lezioni 53,54 - 27/02/2003
- Argomenti trattati
[L2, Unità 10]
- esercizi su ricorsione multipla
- Cosa lo studente dovrebbe sapere dopo la lezione
- sapere progettare e implementare in Java metodi ricorsivi che
fanno uso di ricorsione multipla
- Esercizi proposti
Settimana 8:
Strutture collegate lineari (Unità 11)
Lezioni 55,56 - 05/03/2003
- Argomenti trattati
[L2, Unità 11]
- uso di array dinamici per la gestione di collezioni di elementi
- rappresentazione di strutture collegate lineari (o liste)
- operazioni di base sulle liste (inserimento e cancellazione di un
elemento)
- Cosa lo studente dovrebbe sapere dopo la lezione
- quali sono i vantaggi e gli svantaggi dell'uso di array per la
gestione di collezioni di elementi
- come usare array dinamici per la gestione di collezioni di elementi
- come inserire e cancellare un elemento da una struttura collegata
lineare, dato un riferimento opportuno
- Esercizi svolti
- Esercizi proposti
Esercitazione 11 - 05/02/2003
(Laboratorio - Ing. Giorgio Grisetti)
Lezioni 57,58 - 06/02/2003
- Argomenti trattati
[L2, Unità 11]
- operazioni fondamentali sulla liste
- metodi di inserimento di un elemento ed eliminazione di un
elemento da una lista
- Cosa lo studente dovrebbe sapere dopo la lezione
- sapere realizzare semplici metodi che operano sulle liste
Settimana 9:
Strutture collegate lineari (Unità 11),
Alberi binari (Unità 12)
Lezioni 59,60 - 10/03/2003
- Argomenti trattati
[L2, Unità 11]
- implementazione delle operazioni fondamentali sulle liste usando
una realizzazione con side-effect (classe
ListaStringhe
)
- utilizzo delle operazioni sulle liste in una classe cliente
- realizzazioni con side-effect e realizzazioni funzionali
- Cosa lo studente dovrebbe sapere dopo la lezione
- sapere implementare operazioni sulle liste
- sapere realizzare programmi che utilizzano le liste (clienti della
classe
ListaStringhe
)
- conoscere la differenza tra una realizzazione con side-effect e una
realizzazione funzionale
- Esercizi svolti
Lezioni 61,62 - 11/03/2003
- Argomenti trattati
[L2, Unità 11]
- condivisione di memoria e interferenza
- sharing
- implementazione delle operazioni fondamentali sulle liste usando
una realizzazione funzionale con condivisione di memoria (classe
ListaStringheF
)
- Cosa lo studente dovrebbe sapere dopo la lezione
- conoscere la differenza tra condivisione di memoria e sharing
- sapere implementare operazioni sulle liste utilizzando una
realizzazione funzionale con condivisione di memoria
- sapere realizzare programmi che utilizzano le liste (clienti della
classe
ListaStringheF
)
- Esercizi svolti
- realizzazione di liste funzionale con condivisione di memoria:
la classe
ListaStringheF
- esempio di
cliente
Lezioni 63,64 - 12/03/2003
- Argomenti trattati
[L2, Unità 11]
- metodi statici ricorsivi per la manipolazione di liste
- soluzione di un esercizio di esame
- Cosa lo studente dovrebbe sapere dopo la lezione
- come implementare operazioni sulle liste utilizzando metodi
ricorsivi
- risolvere esercizi della difficoltà di un esercizio di esame
- Esercizi svolti
- Esercizi proposti
- esercizio sulle liste collegate: pila di stringhe:
specifica
Esercitazione 12 - 12/03/2003
(Laboratorio - Ing. Giorgio Grisetti)
Lezioni 65,66 - 13/03/2003
- Argomenti trattati
[L2, Unità 12, solo paragrafi 1, 2, 3, 4, 7, 8,
9, 10, 12, 13, 14, 15]
- alberi, alberi binari, definizione induttiva di alberi binari
- rappresentazione collegata di alberi binari
- visita in preordine, postordine, simmetrica di alberi binari
- metodi basati sulla visita di alberi binari e altri esercizi
- la classe
AlberoBin
- Cosa lo studente dovrebbe sapere dopo la lezione
- conoscere le nozioni di base sugli alberi binari
- sapere progettare a realizzare semplici metodi su alberi binari
- Esercizi proposti e svolti
Settimana 10:
Tipi astratti di dato (Unità 13, 14)
Lezioni 67,68 - 17/03/2003
- Argomenti trattati
[L2, Unità 12, 13]
- metodi basati sulla visita di alberi binari e altri esercizi
- tipi astratti di dato
- Cosa lo studente dovrebbe sapere dopo la lezione
- conoscere il concetto di tipo astratto di dato
- Esercizi proposti e svolti
Lezioni 69,70 - 18/03/2003
- Argomenti trattati
[L2, Unità 13]
- tipi astrazione di valori e tipi astrazione di entità
- realizzazione di tipi astratti di dato
- con side-effect senza condivisione di memoria
- funzionale con condivisione di memoria
- Cosa lo studente dovrebbe sapere dopo la lezione
- conoscere la distinzione tra tipi astrazione di valori e tipi
astrazione di entità
- conoscere la metodologia di realizzazione di tipi astratti di dato
Lezioni 71,72 - 19/03/2003
- Argomenti trattati
[L2, Unità 13, 14]
- esempi di realizzazione di tipi astratti di dato (Insieme,
Studente, Coppia, Lista, Pila,
Coda)
- Cosa lo studente dovrebbe sapere dopo la lezione
- sapere realizzare tipi astrazione di valori semplici, tipi
astrazione di valori collezione, e tipi astrazione di entità
- Esercizi proposti
- realizzazione funzionale (con condivisione di memoria) del tipo
astratto Insieme
- realizzazione con side-effect (senza condivisione di memoria) del
tipo astratto Studente
- realizzazione dei tipi astratti Lista, Pila, e
Coda
- utilizzando una lista collegata per rappresentare gli
elementi di una lista/pila/coda
- realizzazione funzionale con condivisione di memoria
- realizzazione con side-effect senza condivisione di
memoria
- utilizzando un array dinamico per rappresentare gli elementi
di una lista/pila/coda
- realizzazione funzionale
- realizzazione con side-effect
(si noti che in questo caso, dal momento che si utilizza un
array, entrambe le realizzazioni saranno senza
condivisione di memoria)
Esercitazione 13 - 19/03/2003
(Laboratorio - Ing. Giorgio Grisetti)
- Argomenti trattati
- esercizi sulla realizzazione di tipi astratti di dato:
la classe
Gruppo
:
specifica e
soluzione
Lezioni 73,74 - 20/03/2003
- Argomenti trattati
- soluzione di esercizi di esame
- Cosa lo studente dovrebbe sapere dopo la lezione
- sapere realizzare una classe a fronte di una specifica
- sapere realizzare un cliente di una classe a fronte di una
specifica
- Esercizi svolti
- Esercizi proposti
home page del corso
Ultimo aggiornamento di questo file:
Tuesday, 16-Nov-2004 3:36:20 CET