Corso di
Fondamenti di Informatica II (primo modulo)
Docente : Prof. Giuseppe De Giacomo
Testi adottati:
[T1] M. Cadoli, M. Lenzerini, P. Naggar,
A. Schaerf, Fondamenti della progettazione dei programmi:
principi, tecniche e loro applicazione in C++, Citta'StudiEdizioni,
UTET Libreria, 1997.
[T2] M. Cadoli, E. Panizzi, A. Schaerf., M. Lenzerini. Esercizi
di progettazione dei programmi in C++. CittáStudiEdizioni,
UTET Libreria, 1998.
[T3] C. Batini, L. Carlucci Aiello, M.
Lenzerini, A. Miola, A. Marchetti Spaccamela, Fondamenti di Programmazione
dei Calcolatori Elettronici, Franco Angeli, 4a edizione, 1992.
Testo consigliato:
[T4] Capper, Introduzione al C++,
McGraw Hill, 1997.
Programma d'esame per l'A.A. 1999/2000
Note:
(1) Le sigle T1, T2, T3, T4 si riferiscono
alla lista di testi che compongono il materiale didattico.
(2) Quando si cita un capitolo, si intende che esso si deve studiare integralmente.
(3) Il testo T4 non è obbligatorio,
ma solo consigliato per approfondimenti sul linguaggio C++. Per approfondire
la conoscenza del C++, un qualunque altro testo (ad esempio il manuale
della Borland) che tratti gli argomenti citati è comunque accettabile.
1. Considerazioni generali sullo sviluppo del software
Il contesto organizzativo. Il ciclo di sviluppo dei programmi. Le qualità dei programmi.
Materiale didattico T1, Cap. 1
2. La fase di progettazione
Concettualizzazione e realizzazione. Astrazione . Decomposizione. Tecniche di progettazione. Strumenti di progettazione.
Materiale didattico T1, Cap. 2
3. Elementi di base del C++
Struttura di un programma. Espressioni e istruzioni. Strutture di controllo. Tipi di dato. Funzioni.
Materiale didattico T1, Cap. 3
Consigliato: T4, Capp. 1,2,3,4,5,6,7
4. Classi in C++
Generalità. Modello run-time. Elementi
privati e pubblici. Costruttori. Elementi di tipo static. Overloading di
operatori. Il problema dell'interferenza. Overloading dell'assegnazione
e del costruttore di copia. Distruttore. Funzioni friend. Template.
Materiale didattico T1, Cap. 4
Consigliato: T4, Capp. 8,9,10, Appendice A
5. Nozioni generali sulla modularizzazione
La nozione di modulo. Criteri per la modularizzazione.
Tipi di modularizzazione. La modularizzazione nella fase di concettualizzazione.
La modularizzazione nella fase di realizzazione. Schema di una metodologia
basata sulla modularizzazione.
Materiale didattico T1, Cap. 9
6. Modularizzazione per tipo astratto: concettualizzazione
La specifica dei tipi astratti. La specifica di
alcuni tipi astratti: boolean, coppia, pila, coda, array, lista semplice,
lista, insieme, albero binario, albero, grafo. Una classificazione di tipi
astratti.
Materiale didattico T1, Cap. 10
7. Rappresentazione di tipi astratti
Rappresentazioni di vettori e matrici. Rappresentazioni
di liste. Rappresentazioni di insiemi. Rappresentazioni di pile e code.
Rappresentazioni di alberi binari. Alberi binari di ricerca e loro rappresentazione.
Rappresentazioni di alberi N-ari. Rappresentazioni di grafi.
Materiale didattico T3, Cap. 3
8. Modularizzazione per tipo astratto: realizzazione
Incapsulamento, information hiding, overloading.
Dalla segnatura delle funzioni all'interfaccia di calle. La rappresentazione
dei valori del tipo. Schemi realizzativi. Scelta sulla realizzazione delle
operazioni. Scelta sulla condivisione di memoria. Realizzazioni funzionali
con condivisione, e con side effect senza condivisione. Realizzazione delle
relazioni tra moduli. Approfondimenti sulla metodologia di realizzazione
di tipi astratti mediante classi.
Materiale didattico T1, Cap. 12 (Par. 12.1,12.2,12.3,12.4,12.5,12.6
- tranne 12.6.2 e 12.6.4 - 12.8)
9. L'ereditarietà
Introduzione all'ereditarietà. Ereditarietà
in C++. Dichiarazione di classi derivate. Perte protetta di una classe.
Tipi di derivazione. Sovrapposizione di funzioni. Costruttori e distruttori
di classi derivate. Ereditarietà multipla. Uso dell'ereditarietà
per la realizzazione di tipi astratti. Realizzazione della relazione is-a.
Raffinamento della rappresentazione. Classe base come supporto per la rappresentazione.
Altri usi della ereditarietà.
Materiale didattico T1, Capp. 5, 13
Consigliato: T4, Capp. 11,12,15
10. Esercizi e progetti su tipi astratti
Mulitiinsieme. Matrice quadrata sparsa. Insiemi
di interi in un intervallo. Albero. Sportello automatico di cambio valuta.
Ufficio con sportelli.
Materiale didattico T1, Cap. 14
Ritorno alla home page del corso
di Fondamenti di Informatica II - primo modulo