FONDAMENTI DI PROGRAMMAZIONE B
cod. 1000749

Anno accademico 2009/10
1° anno di corso - Primo semestre
Docente
Settore scientifico disciplinare
Informatica (INF/01)
Field
Formazione informatica
Tipologia attività formativa
Base
52 ore
di attività frontali
6 crediti
sede: PARMA
insegnamento
in - - -

Obiettivi formativi

Il corso  si  propone di fornire le basi sia teoriche che pratiche della programmazione 'orientata agli oggetti', utilizzando come linguaggio di riferimento il linguaggio di programmazione C++. 

Prerequisiti

- - -

Contenuti dell'insegnamento

FONDAMENTI DI PROGRAMMAZIONE<br />
Linguaggi di programmazione - Linguaggi a basso ed alto livello. Paradigmi di programmazione (cenni). Descrizione della sintassi di un linguaggio. Diagrammi sintattici e BNF. <br />
Traduzione ed esecuzione programmi- Compilazione ed interpretazione. Struttura e funzionamento di un compilatore. <br />
Gestione della memoria - Allocazione statica. Allocazione "automatica": record d'attivazione, pila di sistema. Tempo di vita di una variabile. <br />
Introduzione alla programmazione orientata agli oggetti.  Classi, oggetti ed "incapsulamento". "Information hiding". Ereditarieta' . <br />
Tipi di dato - Utilita' dei tipi. Equivalenza di tipi. Compatibilita' e conversione di tipo. Tipi di dato astratti (ADT). ADT in C e C++ . <br />
Ciclo di sviluppo dei programmi. <br />
La nozione di modulo - "Programming-in-the-large" vs. "Programming-in-the-small" . Forme di modularizzazione. La modularizzazione nella fase di progettazione e di realizzazione. Classi e modularizzazione in C++. Programmi divisi in piu' file (cenni). <br />
  <br />
IL LINGUAGGIO C++<br />
Dichiarazione di classe. Creazione di oggetti. Accesso ai campi di un oggetto. <br />
Funzioni proprie ed invocazione di funzioni. <br />
Inizializzazione di oggetti: costruttori. <br />
Esempio: classe Razionale. <br />
Overloading di funzioni ed operatori. Ridefinizione operatori >> e <<. <br />
La classe string. <br />
Puntatori ed allocazione dinamica della memoria. Esempio: classe int_vett. Ridefinizione operator[]. <br />
Ridefinizione assegnamento e costruttore di copia. Distruttori. <br />
Parametri "const reference" e "reference return". <br />
Gestione delle eccezioni. Motivazioni, meccanismi. <br />
Classi parametriche (template): dichiarazione, istanziazione. Esempio: classe pila<t>. Funzioni parametriche. <br />
Ereditarietà: dichiarazione, ridefinizione funzioni e dati. Campi protected. Ereditarieta' multipla (cenni). <br />
Sviluppo di semplici programmi in C++. Librerie standard del C++ (cenni). <br />
Progettazione ed implementazione di un'applicazione in C++.

Programma esteso

- - -

Bibliografia

H.M. Deitel, P.J. Deitel. C++ Fondamenti di programmazione, Apogeo, 2003, 696 pp.

Metodi didattici

Metodo d'insegnamento: lezioni frontali in aula (ca. 4 CFU), esercitazioni assistite in aula attrezzata (ca. 1 CFU), progettazione e sviluppo assistito di un'applicazione in linguaggio C++ (ca. 1 CFU).<br />
<br />
Metodo di valutazione: Esame scritto ed orale, piu' dimostrazione e discussione dell'applicazione sviluppata

Modalità verifica apprendimento

- - -

Altre informazioni

- - -