Teoria e Laboratorio
Algoritmi e linguaggi
Linguaggi e macchine
- Concetti fondamentali – Informazione e comunicazione • Linguaggi • Dati ed elaborazione • Sistema e modello • Processo e processore • Comunicazione con il computer e linguaggi informatici
- Paradigmi di programmazione
- Concetto intuitivo di dispositivo automatico
- Definizione formale di automa – Grafo dell’automa • Rappresentazione dell’automa attraverso le tabelle
- Sistema di elaborazione come automa – Hardware
- Algoritmi e Macchina di Turing
- Computabilità e tesi di Church-Turing
Progettazione degli algoritmi
- Modello del problema – Variabili e costanti • Dati e azioni
- Algoritmi per soluzioni di problemi – Analisi del problema • Stesura dell’algoritmo
- Acquisizione e comunicazione dei dati
- Operatori
- Strumenti per la stesura di un algoritmo – Linguaggio di pseudocodifica • Diagramma di flusso
- Strutture di controllo – Teorema di Böhm-Jacopini
- Struttura di selezione – Struttura di selezione multipla
- Struttura di iterazione – Iterazioni con controllo della condizione • Iterazione enumerativa
- Tabella di traccia
Programmazione in C e C++
Basi dei linguaggi C e C++
- Linguaggi C e C++
- Codifica di programmi in C e C++
- Ambiente di programmazione – Errori nella programmazione
- Istruzioni dichiarative e istruzioni esecutive – Dichiarazioni delle variabili • Dichiarazioni delle costanti • Frasi di commento • Assegnamento dei valori alle variabili • Operatori di assegnamento composti • Operatori di confronto e connettivi logici • Funzioni matematiche predefinite • Parentesi delle espressioni • Incompatibilità di tipi
- Casting per la conversione di tipo
- Istruzioni di ingresso e uscita nel linguaggio C – scanf • printf
- Istruzioni di ingresso e uscita nel linguaggio C++
- Strutture di sequenza e di selezione – Struttura di selezione multipla
- Strutture di iterazione con controllo della condizione – Iterazione postcondizionale • Iterazione precondizionale
- Struttura di iterazione enumerativa
- Strutture annidate di selezione e iterazione – Selezioni annidate • Iterazioni annidate
Funzioni in C++
- Sviluppo top-down
- Funzioni – Tipo e valore del dato restituito • Chiamata della funzione • Funzione main
- Funzioni e parametri
- Passaggio di parametri
- Documentazione del programma
- Dichiarazione delle funzioni con i prototipi
- Funzioni predefinite
Array e strutture di dati in C e C++
- Array – Stringhe e array di caratteri • Passaggio di array come parametri alle funzioni
- Ricerca e ordinamento di elementi di un array – Ricerca • Ordinamento
- Array a due dimensioni – Array di stringhe nel linguaggio C
- Strutture
Programmazione avanzata in C++
Logica iterativa e logica ricorsivi
- Algoritmi iterativi
- Ricorsione
- Algoritmi ricorsivi
Flussi di dati
- Classi di input/output
- Input e output standard
- Archivi – File di testo e file binari • Operazioni e accesso agli archivi
- Lettura e scrittura in un file di testo
- Apertura esplicita dei file
- Errori nelle operazioni sui file
- Gestione strutturata delle eccezioni – Funzione membro
- Controllo della fine dei file
- Accesso sequenziale per gli archivi con record a lunghezza fissa
- Iteratori per gli stream
Materiale di approfondimento
Deitel, H. M., & Deitel, P. J. (2010). C++. How to program. Pearson