Corso di Laurea in Informatica
Fondamenti di Programmazione
Laboratorio di Programmazione
Docente: G. Rossi
Collaboratore didattico: T. Zolo
Programma del corso
Anno accademico 2003-04
PARTE I - Programmazione
imperativa con il C++
-
Concetti e costrutti di base
Il concetto di algoritmo. Rappresentazione di algoritmi: i diagrammi
di flusso.
I linguaggi di programmazione. Esecuzione tramite compilazione
ed interpretazione (cenni)
Struttura di un programma. Un esempio di programma C++.
Variabili e costanti. Dichiarazione di variabile.
Tipi di dato. I tipi elementari del C++.
Assegnamento e statement composto.
Input/output di base: formattato, a caratteri. La libreria iostream.
Espressioni e operatori.
Le strutture di controllo: selezione, cicli, salto. Gli statement
del C++.
Strutture dati: definizione, costruttori di tipo, strutture
dati astratte e concrete.
Array in C++. Dichiarazione, selezione elementi, memorizzazione,
operazioni su array.
Vettori e matrici. Realizzazioni in C++ tramite array. Array
bi-dimensionali.
Stringhe. Stringhe come array di caratteri. Operazioni su stringhe.
Funzioni di libreria.
Il costruttore struct in C++: dichiarazione, selezione
elementi, operazioni. Record e tabelle (cenni).
La dichiarazione typedef.
-
Funzioni ed astrazione procedurale
Sottoprogrammi: significato, motivazioni.Dichiarazione e chiamata
di funzione in C++.
Modalità di passaggio parametri: per valore, per riferimento.
Passaggio parametri di tipo array in C++.
Funzioni void.
Funzioni ricorsive.
Visibilità identificatori: regole di "scope" in
C++. Dichiarazioni globali e locali.
Input/output su file. Creazione di uno stream. Lettura/scrittura
formattata e a caratteri.
-
Sviluppo programmi
Ambiente di sviluppo: editor, compilatore, linker (cenni).
Sviluppo di semplici programmi nel frammento imperativo del C++.
Utilizzo di funzioni di libreria.
PARTE II - Programmazione
orientata agli oggetti con il C++
-
Concetti e costrutti di base
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: dichiarazione, accesso, operazioni.
Allocazione dinamica della memoria. Puntatori ed array.
Esempio: classe int_vett. Ridefinizione operator[].
Ridefinizione assegnamento e costruttore di copia. Distruttori.
Tempo di vita di un oggetto (cenni).
Tipi di dato astratti (ADT). "Incapsulamento" e "information hiding".]
-
Concetti e costrutti avanzati
Gestione delle eccezioni. Motivazioni. Costrutti e meccanismi
del C++.
Classi parametriche: dichiarazione, istanziazione. Esempio:
classe vett<t>.
Funzioni parametriche (cenni).
Ereditarietà: dichiarazione, ridefinizione funzioni e
dati. Campi protected.
Costruttori e distruttori in presenza di ereditarieta'. Modalita' di
derivazione.
Ereditarieta' multipla (cenni).
-
Sviluppo programmi
Librerie standard del C++ (cenni).
Sviluppo di semplici programmi in C++.
Progettazione ed implementazione di un'applicazione in C++.
Testi consigliati
-
Per la Parte I:
-
Per l'intero corso:
-
H.M. Deitel, P.J. Deitel. C++ Fondamenti di programmazione, Apogeo,
2003, 696 pp.
[il piu' "didattico"]
oppure
-
S. Lippman, J. Lajoie. C++: Corso di programmazione, 3a Ed., Addison-Wesley,
2000.
[completo, ma
un po' piu' "ostico" del precedente; adatto ad un corso completo su C++]
(per una corrispondenza
tra argomenti della PARTE I del corso e capitoli di questo libro vedere
qui)
oppure
-
B. Stroustrup. Il linguaggio C++, Addison-Wesley.
[dal "padre"
del linguaggio: completo e preciso, ma piuttosto "ostico"]
Vai alla pagina
principale del corso