Corso di Laurea in Informatica - Corso
di Laurea in Matematica
Fondamenti di Programmazione
B
Docente: G. Rossi
Programma del corso
Anno accademico 2009-10
Fondamenti di programmazione
Paradigmi di programmazione (cenni).
Introduzione alla programmazione orientata agli oggetti. Classi,
oggetti ed "incapsulamento". "Information hiding". Ereditarieta' [3,
par. 2.3.2].
Tipi di dato astratti (ADT). Definizione e caratteristiche.
ADT in C e C++
[3, p. 224, par. 10.1,12,2].
Tipi di dato - Utilita' dei tipi [4, par. 8.1]
[5, par. 4.1, 4.3]. Equivalenza di tipi. Compatibilita'
e conversione di tipo [4, par. 8.5, 8.6].
Gestione della memoria - Allocazione statica. Allocazione "automatica":
record d'attivazione, pila di sistema. Tempo di vita di una variabile.
Ciclo di sviluppo dei programmi (cenni) [3,
par. 1.2, 2.1.1].
Modularizzazione - "Programming-in-the-large" vs. "Programming-in-the-small"
[5, cap. 7 fino a p. 206]. La nozione di modulo.
La modularizzazione nella fase di progettazione e di realizzazione [3,
par. 9.1, 9.3, 9.4, 9.5]. Classi e modularizzazione in C++. Programmi divisi
in piu' file [3, par. 4.11] e [1b, cap. 3.8].
Il linguaggio C++
Dichiarazione di classe. Creazione di oggetti. Accesso ai campi di un oggetto.
Funzioni proprie ed invocazione di funzioni.
Inizializzazione di oggetti: costruttori.
Esempio: classe Razionale.
Overloading di funzioni ed operatori. Ridefinizione operatori >>
e <<.
La classe string.
Puntatori ed allocazione dinamica della memoria. Esempio: classe
int_vett (cfr. [1b, cap. 11.8]). Ridefinizione operator[].
Ridefinizione assegnamento e costruttore di copia. Distruttori.
Parametri "const reference" e "reference return".
Gestione delle eccezioni. Motivazioni, meccanismi.
Classi parametriche (template): dichiarazione, istanziazione. Esempio:
classe pila<t>. Funzioni parametriche.
Ereditarietà: dichiarazione, ridefinizione funzioni e dati. Campi
protected.
Ereditarieta' multipla (cenni).
Sviluppo di semplici programmi in C++. Librerie standard del C++ (cenni).
Progettazione ed implementazione di un'applicazione in C++.
Materiale didattico
Testo consigliato (vedi sotto) + materiale
vario per parti non coperte dai precedenti (vedi riferimenti nel programma
del corso).
Testi consigliati:
-
[1a] C.
Horstmann. Fondamenti di C++. McGraw-Hill, 2003.
-
[1b] H.M. Deitel, P.J. Deitel. C++ Fondamenti
di programmazione (seconda edizione). Apogeo, 2005.
[relativamente semplici e "didattici", anche se non del tutto esaurienti
dal punto di vista del linguaggio C++]
-
[1c] S. Lippman, J. Lajoie. C++: Corso di programmazione (terza edizione).
Addison-Wesley, 2000.
[completo, ma piu' "ostico" dei precedenti - (vedere ad es.
qui)]
[testo adottato nel corso di "Metodologie
di programmazione"]
Altri riferimenti:
-
[2] A.V.Aho, R.Sethi,
J.D.Ullman. Compilers: Principles, Techniques, and Tools. Addison-Wesley,
1988.
-
[3] M.Cadoli,
M.Lenzerini, P.Naggar, A.Schaerf. Fondamenti della progettazione di
programmi. Principi, tecniche e loro applicazioni in C++, CittaStudiEdizioni
di UTET Libreria, 1997.
-
[4] M.Gabbrielli,
S.Martini. Linguaggi di programmazione. Principi e paradigmi. McGraw-Hill,
2006 [testo adottato nel corso di "Linguaggi di programmazione"]
-
[5] C.Ghezzi, M.Jazayeri.
Programming Language Concepts. J.Wiley & Sons, 1987.