Corso di
Fondamenti di Informatica II (primo modulo)
Docente : Prof. Giuseppe De Giacomo
Testo adottato:
[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.
Testi consigliati:
[T2] Capper, Introduzione al C++,
McGraw Hill, 1997.
[T3] C. Batini, L. Carlucci Aiello, M.
Lenzerini, A. Miola, A. Marchetti Spaccamela, Fondamenti di Programmazione
dei Calcolatori Elettronici, Franco Angeli, 4a edizione, 1992.
Programma d'esame per l'A.A. 2000/01 (non definitivo)
Note:
(1) Le sigle T1, T2, T3 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 T2 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.
(4) Il testo T3 può essere sostituito dal testo adottato per Fondamenti di Informatica I secondo modulo.
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: T2, 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: T2, 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: T2, 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