Introduzione
Concetti introduttivi. Calcolatore, modello astratto. Problema, input, output,
specifiche, algoritmo, correttezza, programma, linguaggi di programmazione,
compilatori, interpreti, esecuzione.
Elementi di Base
Elementi di base di logica. Connettivi, tavole di verità, assiomi logici,
quantificatori, formalizzazione, variabili, espressioni.
Elementi di base di un linguaggio di programmazione. Tipi, valori, variabili,
costanti, operatori (aritmetici, booleani, relazionali), espressioni, priorità.
Identificatori, parole chiave.
Laboratorio (CFU 0.25)
Input e Output nel linguaggio di riferimento. Familiarizzando con l’ambiente di
programmazione, l’editor, Stampare su schermo, scrittura di semplici programmi.
Flusso del Controllo (CFU 1)
Dichiarazioni, espressioni, assegnamento, Istruzione. Costruzione sequenziale
di istruzioni, flusso di controllo, istruzione composta. Istruzione condizionale, If-
then-else. Iterazione. Pre e post condizione di una istruzione. Cenni di verifica.
Cenni su invariante e costruzioni di cicli a partire da invariante. Progetto di un
ciclo.
Laboratorio (CFU 0.25)
Leggere dati dall’input e iterazione applicata a dati di tipo scalare.
Procedure, Funzioni, programmazione ricorsiva (CFU 1.25)
Funzioni, procedure, parametri attuali e formali, chiamata di funzione, passaggio
dei parametri.Distinzione tra parametri di input e di output. Pre-condizione e
Post-condizione di una funzione.Dichiarazione di funzione e prototipi.
Scomposizione di un programma in più funzioni. Visibilità delle variabili
Funzioni di libreria. Programmazione ricorsiva
Laboratorio (CFU 0.25)
Scomposizione di programmi in una o più funzioni, ricorsione su dati di tipo
scalare.
Vettori, Stringhe Puntatori (CFU 1,25)
Array, Puntatori, array come parametri di funzione. Relazione tra array e
puntatori. Aritmetica dei puntatori. Schemi iterativi di scansione di un vettore.
Schemi iterativi di ricerca in un vettore.
Ricorsione su vettori. Array multidimensionali. Stringhe e puntatori. Funzioni di
libreria per la gestione di stringhe.
Laboratorio (CFU 0.25)
Esempi di iterazione e ricorsione su vettori e stringhe.
Primi Esempi di Algoritmi fondamentali (CFU 0.75)
Su vettori: Ordinamenti (bubble-sort, selezione, inserzione), fusione di vettori,
merge sort, ricerca binaria
Laboratorio (CFU 0.25)
Implementazione di varianti di algoritmi di ordinamento su vetto
Gestione memoria in C e strutture dinamiche di dati (Liste) (CFU 1.25)
Tipo enumerativi e loro uso. Strutture, unioni, Strutture autoreferenzianti.
Allocazione dinamica della memoria. Liste concatenate lineari, doppie e circolari.
Operazioni fondamentali sulle liste (inserimento, cancellazione). Algoritmi
ricorsivi e iterativi su liste.
Laboratorio (CFU 0.25)
Implementazioni di funzioni su liste.