Obiettivi formativi
Il corso si propone di fornire le basi sia teoriche che pratiche
della programmazione imperativa utilizzando come linguaggio
di riferimento il linguaggio di programmazione C++.
Contenuti dell'insegnamento
Fondamenti di programmazione. Programmazione imperativa. Linguaggio di programmazione C++
Programma esteso
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.
Bibliografia
L.J. Aguilar. Fondamenti di programmazione in C++ , McGraw-Hill, 2008.
Metodi didattici
Lezioni frontali in aula e esercitazioni assistite in
laboratorio informatico
Altre informazioni
Il corso prevede una sua pagina Web per tutte le informazioni generali, gestita direttamente dal docente (http://people.math.unipr.it/gianfranco.rossi/Teaching/FondProgr/index.html) e una pagina sul sistema dii Web Learning dell'Ateneo per la gestione delle esercitazioni (http://lea.unipr.it/course/view.php?id=324).