PROGRAMMAZIONE I
cod. 13464

Anno accademico 2008/09
1° anno di corso - Secondo semestre
Docente
Settore scientifico disciplinare
Informatica (INF/01)
Field
Discipline informatiche
Tipologia attività formativa
Base
32 ore
di attività frontali
4 crediti
sede:
insegnamento
in - - -

Obiettivi formativi

<p>Fornire un'introduzione agli strumenti ed alle tecniche di base per la progettazione e sviluppo di semplici programmi in un linguaggio imperativo sequenziale. In particolare, verrà considerato il frammento imperativo del linguaggio C++.</p>

Prerequisiti

- - -

Contenuti dell'insegnamento

<p>Problemi, istanze, algoritmi ed esecutori. Rappresentazioni di algoritmi: diagrammi di flusso, linguaggi di programmazione e programmi e pseudo-codici. Sintassi e semantica. <br />
Introduzione al sottoinsieme imperativo del linguaggio C++: tipi di dato, valori, identificatori, variabili, espressioni, istruzioni e funzioni; input ed output. Struttura di un programma. <br />
Tipi di dato elementari: tipi numerici interi ed in virgola mobile, tipi booleani, tipi carattere, enumerazioni; le costanti letterali. Dichiarazioni e definizioni: variabili ed inizializzazione; le costanti simboliche. <br />
Espressioni ed istruzioni: assegnamento, operatori, aritmetica mista e conversioni di tipo; istruzioni semplici e composte, sequenze di istruzioni, istruzioni condizionali ed iterative. Input ed output. <br />
Tipi di dato composti: array, strutture, stringhe in stile C. <br />
Astrazione procedurale: dichiarazione, definizione ed uso di funzioni. Modalità di passaggio dei parametri e del valore di ritorno. Variabili locali e variabili globali: campo d'azione e ciclo di vita. Funzioni ricorsive. <br />
Puntatori e loro aritmetica. <br />
Cenni sui tipi di dato e le funzionalità offerte dalla libreria standard. <br />
Gestione dei file di testo e di file binari mediante stream. <br />
Esecuzione di un programma: approccio interpretativo, compilativo e misto. Ambienti di programmazione: editor, compilatori, linker, debugger. Le fasi della compilazione di un programma. Strutturazione del codice in file sorgenti: direttive di inclusione.</p>
<p>Utilizzo del frammento imperativo del C++ per la codifica di semplici algoritmi di: </p>
<ul>
<li>
<div>analisi numerica: soluzione di equazioni polinomiali mediante bisezione, calcolo dell'integrale definito mediante metodo dei rettangoli, approssimazioni successive di serie convergenti; </div>
</li>
<li>
<div>manipolazione di vettori nello spazio; </div>
</li>
<li>
<div>la creazione e manipolazione di immagini in formato BMP; </div>
</li>
<li>
<div>manipolazione di strutturati in formato CSV e di archivi binari.</div>
</li>
</ul>

Programma esteso

- - -

Bibliografia

<p>Il corso non adotta nessun libro di testo in particolare. Qui di seguito si segnalano alcune risorse liberamente disponibili sul Web ed altri testi che, essendo stati adottati in altri corsi, dovrebbero essere facilmente reperibili presso le biblioteche per la consultazione. </p>
<p>Disponibili sul web: <br />
A. Ficarra, M. Murgia. Il linguaggio di programmazione C++ standard, 2003. <br />
R. Miller, D. Clark, B. White, W. Knottenbel. An Introduction to the Imperative Part of C++, 1999 (in lingua inglese). <br />
B. Eckel. Thinking in C++ (2nd edition), Volumes 1 & 2 (in lingua inglese). </p>
<p>Libri per la consultazione: <br />
H.M. Deitel, P.J. Deitel. C++ Fondamenti di programmazione, Apogeo, 2003. <br />
S. Lippman, J. Lajoie. C++: Corso di programmazione, terza edizione, Addison-Wesley, 2000. <br />
P. Marotta. C++: una panoramica sul linguaggio (seconda edizione) <br />
B. Stroustrup. C++: Linguaggio, libreria standard, principi di programmazione, terza edizione, Addison-Wesley, 2000. <br />
</p>

Metodi didattici

- - -

Modalità verifica apprendimento

- - -

Altre informazioni

- - -