Fondamenti di Programmazione
A
Docente: Prof. Gianfranco Rossi
Programma del corso
Anno accademico 2016-17
Fondamenti di programmazione
Ciclo di sviluppo dei programmi (cenni) [5,
par. 1.2, 2.1.1].
"Programming-in-the-large" vs. "Programming-in-the-small"
[6, cap. 7 fino a p. 206].
Problemi e algoritmi - La nozione di algoritmo. I diagrammi di
flusso. Risoluzione di semplici problemi.
Linguaggi e ambienti di programmazione.
Ambiente di sviluppo integrato (IDE) [3a].
Descrizione della sintassi di un linguaggio: grammatiche
(cenni) [v. ad es. qui]).
Diagrammi sintattici [v. ad es. qui]
e BNF [v. ad es. qui].
Espressioni: sintassi, albero di derivazione e sintattico, valutazione (associativita' e precedenza), tipo.
Astraszioni nei linguaggi di programmazione: su dati, operazioni, controllo.
Tipi di dato: definizione, tipi semplici e strutturati, primitivi
e definiti da utente. Costruttori di tipo. Strutture dati astratte e concrete.
Compatibilita' e conversioni di tipo.
Nomi, ambienti e regole di "scope": struttura a blocchi,
ambiente locale e non-locale, variabili globali.
Programmazione strutturata [3b] -
Strutture di controllo. Teorema di Bohm-Jacopini. Statement goto.
Sviluppo "top-down" e "bottom-up" (cenni).
Ricorsione - Definizioni e funzioni ricorsive. Esempi. Implementazione
ricorsione (cenni).
Il linguaggio C++
Dichiarazione di variabile. Tipi
semplici primitivi: valori, costanti, operazioni.
Dichiarazione di costante.
Input/output di base. Operatori >> e <<.
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 [3c]).
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
tramite >> e << e a caratteri.
Puntatori ed allocazione dinamica della memoria (operatore new). Operazioni
su puntatori. Puntatori ed array. Liste concatenate.
Sviluppo di semplici programmi nel frammento imperativo del C++. Utilizzo
di funzioni di libreria.
Materiale didattico
-
[1] Uno dei seguenti testi:
-
[2] Dispense del corso (qui)
-
[3] Materiale vario disponibile on-line:
- a. Integrated development environment (Ide)
[qui]
- b. Programmazione strutturata
[qui]
- c. Ordinamento vettori per selezione
[qui]
-
[4] Programmi C++ mostrati a lezione.
-
[5] M.Cadoli,
M.Lenzerini, P.Naggar, A.Schaerf. Fondamenti della progettazione di
programmi. Principi, tecniche e loro applicazioni in C++, CittaStudiEdizioni
di UTET Libreria, 1997.
-
[6] C.Ghezzi, M.Jazayeri.
Programming Language Concepts. J.Wiley & Sons, 1987.