Obiettivi formativi
Il corso si propone di fornire un'introduzione alla programmazione imperativa utilizzando come linguaggio di riferimento il linguaggio di programmazione C++.
Prerequisiti
Nessuno
Contenuti dell'insegnamento
Introduzione alla programmazione imperativa. Linguaggio di programmazione C++.
Programma esteso
Il concetto di algoritmo. Rappresentazione di algoritmi: i diagrammi di flusso. Risoluzione di problemi: esempi.
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: nozione di stream, operatori >> e <<, input/output a caratteri (funzioni get e put).
Espressioni e operatori. Espressioni booleane.
Le strutture di controllo: selezione, cicli, salto. Gli statement del C++: if, switch, while, do_while, for, break.
Array in C++. Dichiarazione, selezione elementi, operazioni su array. Ordinamento array con selezione del minimo. Array bi-dimensionali.
Matrici. Realizzazione in C++ tramite array. Operazioni di base su matrici.
Stringhe. Stringhe come array di caratteri. Operazioni su stringhe. Funzioni di libreria.
Il costruttore struct: dichiarazione, selezione elementi, operazioni. Tabelle (realizzazione tramite array di struct)..
Sottoprogrammi: significato, motivazioni.Dichiarazione e chiamata di funzione in C++.
Modalità di passaggio parametri: per valore, per riferimento. Passaggio parametri di tipo array. Funzioni void.
Funzioni ricorsive.
Visibilità identificatori: regole di "scope" in C++. Dichiarazioni globali e locali.
Input/output su file. Creazione ed apertura di uno stream. Lettura/scrittura tramite >> e << e a caratteri.
Puntatori ed allocazione dinamica della memoria (new). Operazioni su puntatori. Puntatori ed array. Liste concatenate.
Ambiente di sviluppo: editor, compilatore, linker (cenni).
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.
R. Miller, D. Clark, B. White, e W. Knottenbel: An Introduction to the Imperative Part of C++, 1999, disponibile su WEB all'indirizzo http://www.doc.ic.ac.uk/~wjk/C++Intro/CourseStructure.html#S
Metodi didattici
Lezioni frontali in aula e esercitazioni assistite in aula attrezzata.
Modalità verifica apprendimento
Esame scritto (esercizi C++) con prova pratica ed eventuale colloquio orale.
Altre informazioni
Sito Web: http://www.math.unipr.it/~gianfr/Teaching/Programmazione/index.html