FONDAMENTI DI PROGRAMMAZIONE A - FONDAMENTI DI PROGRAMMAZIONE B
cod. 1000753

Anno accademico 2010/11
1° anno di corso - Primo semestre
Docente responsabile dell'insegnamento
ROSSI Gianfranco
insegnamento integrato
12 crediti
sede:
insegnamento
in - - -

Insegnamento strutturato nei seguenti moduli:

Obiettivi formativi

I due corsi ('integrati', con unico esame finale) si propongono di fornire le basi sia teoriche che pratiche della programmazione imperativa e di quella 'orientata agli oggetti', utilizzando come linguaggio di riferimento il linguaggio di programmazione C++.

Prerequisiti

Nessuno

Contenuti dell'insegnamento

Fondamenti di programmazione. Programmazione imperativa e object-oriented. Linguaggio di programmazione C++.

Programma esteso

FONDAMENTI DI PROGRAMMAZIONE A.
FONDAMENTI.
Problemi e algoritmi - La nozione di algoritmo. I diagrammi di flusso.
Risoluzione di semplici problemi.
Linguaggi di programmazione - Linguaggi esistenti (cenni). Struttura generale
di un programma. Convenzioni di programmazione. Ambienti integrati di sviluppo programmi (IDE).
Variabili: caratteristiche, dichiarazione. Identificatori. Dichiarazione di costante.
Assegnamento. Espressioni: sintassi, valutazione (associativita' e precedenza), tipo.
Programmazione strutturata - Strutture di controllo. Teorema di Bohm-Jacopini. Statement goto. Progetto "top-down" e sviluppo programmi "per raffinamenti successivi".
Nomi, ambienti e regole di "scope": struttura a blocchi, ambiente locale e non-locale, variabili globali.
Ricorsione - Definizioni e funzioni ricorsive. Esempi. Implementazione ricorsione (cenni).

LINGUAGGIO C++.
Dichiarazione di variabile. Tipi semplici primitivi: valori, costanti, operazioni.
Dichiarazione di costante.
Input/output di base. Operatori di estazione ed inserimento. Input/output a caratteri
(funzioni get e put).
Assegnamento e statement composto. Espressioni.
Statement per il controllo di sequenza: if, switch, while, do_while, for, break.
Esempio. Verifica dell'input.
Tipi strutturati. Array: dichiarazione, selezione elementi, memorizzazione, operazioni.
Array bi-dimensionali. Matrici. Esempi operazioni su matrici e vettori (in partic.,
ordinamento per selezione). Stringhe: realizzazione tramite array, operazioni,
funzioni di libreria. struct: dichiarazione, selezione elementi, operazioni.
Tabelle: definizione, realizzazione tramite array di struct.
Dichiarazione e chiamata di funzione. Passaggio parametri: per valore, per riferimento.
Passaggio parametri di tipo array. Funzioni void.
Strutturazione di un programma e regole di "scope".
Input/output su file. Creazione ed apertura di uno stream. Lettura/scrittura "tipata" e a caratteri.
Sviluppo di semplici programmi nel frammento imperativo del C++. Utilizzo di funzioni di libreria.

FONDAMENTI DI PROGRAMMAZIONE B.
FONDAMENTI.
Paradigmi di programmazione (cenni).
Introduzione alla programmazione orientata agli oggetti. Classi, oggetti ed "incapsulamento". "Information hiding". Ereditarieta'.
Tipi di dato astratti (ADT). Definizione e caratteristiche. ADT
in C e C++.
Tipi di dato - Utilita' dei tipi. Equivalenza di tipi. Compatibilita' e conversione di
tipo.
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) .
Modularizzazione - "Programming-in-the-large" vs. "Programming-in-the-small".
La nozione di modulo. La modularizzazione nella fase di progettazione e di
realizzazione. Classi e modularizzazione in C++. Programmi divisi in piu'
file.

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 di input/output.
La classe string.
Puntatori ed allocazione dinamica della memoria (new). Operazioni su puntatori.
Puntatori ed array. Esempio: classe int_vett. 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++.

Bibliografia

L.J. Aguilar. Fondamenti di programmazione in C++ , McGraw-Hill, 2008.

Metodi didattici

Lezioni frontali in aula, esercitazioni assistite in aula attrezzata, progettazione e sviluppo assistito di un'applicazione in linguaggio C++.

Modalità verifica apprendimento

Esame scritto ed orale, piu' dimostrazione e discussione dell'applicazione sviluppata.

Altre informazioni

Sito Web: http://www.math.unipr.it/~gianfr/Teaching/FondProgr/index.html