Università di Roma "La Sapienza"
Laurea in Ingegneria Informatica e Ingnegneria Automatica

Programma del corso
Fondamenti di Informatica 1

Prof. Giuseppe De Giacomo

A.A. 2002/03


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.


  1. Introduzione alla programmazione ed al linguaggio Java [1]: unità 1.
    Linguaggi e compilatori, ambiente di programmazione. Oggetti e classi: il primo programma Java. L'ambiente di elaborazione: hardware, sistema operativo. Scrittura ed esecuzione di programmi in Java.
  2. Uso degli oggetti [1]: unità 2.
    La classe String, uso di metodi e costruzione di programmi. Variabili ed assegnazioni: esempi di programmi che usano le stringhe. Creazione di oggetti.
  3. Definizione di metodi e classi [1]: unità 3.
    Tempo di vita e visibilità delle variabili. Definizione di metodi statici. Modello della memoria per le variabili e gli oggetti. Definizione di classi. Costruttori. Ereditarietà. La classe Object.
  4. Tipi di dato primitivi [1]: unità 4.
    Tipi di dati per rappresentare numeri interi (int, long, short, byte). Tipi di dati per rappresentare numeri reali (double, float). Tipo di dato char. Tipo di dato boolean. Classi wrapper. Conversioni di tipo, cast.
  5. Istruzioni condizionali [1]: unità 5.
    Istruzione if-else ed istruzione switch. Espressione condizionale.
  6. Istruzioni di ciclo [1]: unità 6.
    Cicli definiti ed indefiniti. Istruzioni while. Istruzione for. Istruzione do. Cicli annidati.
  7. Array [1]: unità 7.
    Definizione ed uso di array. Matrici.
  8. File e flussi di input/output [1]: unità 8.
    Concetto di file e file di testo. Lettura da e scrittura su file. Flussi di input/output. Lettura da flussi di input (e.g., file, tastiera, ecc.). Scrittura su flussi di output (e.g., file, tastiera).
  9. Errori nei programmi e gestione delle eccezioni [1]: unità 9.
    Categorie di errori (di sintassi, di semantica, logici). Tecniche di individuazione degli errori. Gerarchia di eccezioni e gestione degli errori tramite eccezioni (clausola throws, istruzioni throw e try-catch).
  10. Ricorsione [2]: unità 10.
    Domini definiti induttivamente. Definizione di metodi ricorsivi. Gestione della memoria a run-time. Evoluzione della pila dei record di attivazione. Ricorsione multipla.
  11. Strutture collegate lineari [2]: unità 11.
    Limitazioni degli array e array dinamici. Strutture collegate. Strutture collegate lineari o liste. Operazioni sulle liste (creazione, ricerca, inserimento cancellazione, ecc.). Realizzazione con side-effect e realizzazione funzionale di una classe per le liste. Implementazione ricorsiva delle operazioni sulle liste.
  12. Alberi binari [2]: unità 12, solo paragrafi 12.1-12.4, 12.7-12.10, 12.12-12.15.
    Alberi e alberi binari. Rappresentazione parentetica di alberi. Rappresentazione collegata di alberi. Visite in profondità. Realizzazione di operazioni tramite visite.
  13. Tipi astratti e loro realizzazione [2]: unità 13 e 14, escluso paragrafi 13.22-13.24.
    Tipi di dati astratti. Astrazione di valori e astrazione di entità. Realizzazione con side-effect di tipi astratti. Realizzazione funzionale di tipi astratti. pile, code, insiemi. Esempi di realizzazione di tipi astratti (lista, pila, coda, albero binario, tipi collezione, etc.).


Home page del corso di Fondamenti di Informatica 1
della Laurea in Ingegneria Informatica e Ingegneria Automatica dell'Università di Roma "La Sapienza"