Vai al contenuto principale

Università degli Studi di Parma, il mondo che ti aspetta

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

Insegnamento di INFORMATICA (Corsi di Laurea)

Facoltà di Corsi di Laurea triennale (D.M. 270/04)

 
Lingua Insegnamento: 
Italiano
 

Insegnamento strutturato nei seguenti moduli:



Obiettivi

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

PARTE A. FONDAMENTI Problemi e algoritmi - La nozione di algoritmo. I diagrammi di flusso. Risoluzione di semplici problemi. Linguaggi e ambienti di programmazione - Linguaggi esistenti (cenni). Modalita' d'esecuzione (cenni). Ambienti integrati di sviluppo programmi (IDE). Variabili: caratteristiche, dichiarazione. Identificatori. Costanti. Espressioni: sintassi, valutazione (associativita' e precedenza), tipo. Assegnamento. Tipi di dato: definizione, tipi semplici e strutturati, primitivi e definiti da utente. Costruttori di tipo. Strutture dati astratte e concrete. Utilita' dei tipi. Compatibilita' e conversioni di tipo. Nomi, ambienti e regole di "scope": struttura a blocchi, ambiente locale e non-locale, variabili globali. Programmazione strutturata - Strutture di controllo. Teorema di Bohm-Jacopini. Statement goto. Progetto "top-down" e sviluppo programmi "per raffinamenti successivi". LINGUAGGIO C++ Dichiarazione di variabile. Tipi semplici primitivi: valori, costanti, operazioni. Dichiarazione di costante. Input/output di base. Operatori di estrazione 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. Puntatori ed allocazione dinamica della memoria (operatore new). Operazioni su puntatori. Puntatori ed array. Esempio: liste concatenate. Sviluppo di semplici programmi nel frammento imperativo del C++. Utilizzo di funzioni di libreria. PARTE B. COSTRUTTI E MECCANISMI Il costrutto class: dichiarazione, creazione di oggetti, funzioni proprie ed invocazione di funzioni, inizializzazione di oggetti (costruttori), es. classe data semplificata. Nozioni di "information hiding" e "incapsulamento". Overloading di funzioni ed operatori. Ridefinizione operatori di inserimento ed estrazione. Parametri "const reference" e "reference return". Parametri di default. Gestione delle eccezioni. Motivazioni, meccanismi. Classi e funzioni template: dichiarazione, istanziazione. TIPI DI DATO ASTRATTI(ADT) La nozione di tipo di dato astratto. Esempi di tipi di dato astratti realizzati in C++. Classe razionale. Classe intLista. Classe predefinita string. Classe intPila e pila: con allocazione statica e con allocazione dinamica; definizione e uso distruttore. Classe vett: ridefinizione operatori [] e = (assegnamento); definizione e uso costruttore di copia. Standard Template Library (STL). Cenni ai "contenitori" della STL, in particolare vector. PROGRAMMAZIONE "OBJECT-ORIENTED" (O-O) Nozione di oggetto, classe (attributi, metodi), istanza, sistema ad oggetti. Ereditarietà: dichiarazione, ridefinizione funzioni e dati. Campi protected. Ereditarieta' multipla (cenni). Esempio classe persona e classe studente. PROGETTAZIONE E PROGRAMMAZIONE MODULARE Ciclo di sviluppo dei programmi (cenni). "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

Bibliografia Consigliata

L.J. Aguilar. Fondamenti di programmazione in C++ , McGraw-Hill, 2008.
Metodi di valutazione: 
Esame scritto ed orale, piu' dimostrazione e discussione dell'applicazione sviluppata.

Metodi didattici

Lezioni frontali in aula, esercitazioni assistite in aula attrezzata, progettazione e sviluppo assistito di un'applicazione in linguaggio C++.
Anno accademico: 
2012
Anno di corso: 
1
Semestre: 
1
Numero CFU: 
12