Corso tenuto dal Prof Vicario Enrico (fino al 2012/2013). Strutturato nel seguente modo:
PARTE I: INTRODUZIONE
Problemi di elaborazione dell’informazione, algoritmo risolutivo, rappresentazione, esecuzione automatica.
Introduzione al linguaggio c: tipi elementari, espressioni, strutture di controllo e organizzazione di un programma.
Relazione tra linguaggio c, assembler, e linguaggio macchina: compilatore e assemblatore, linker, loader.
Rappresentazione e elaborazione dei tipi elementari del linguaggio c: interi con e senza segno, caratteri, float e double; precisione e dinamica; errori di precisione finita.
PARTE II: LINGUAGGIO C
Sintassi e semantica di un linguaggio, grammatica, BNF; albero sintattico.
Linguaggio c, rappresentazione in clausole sintattiche e semantiche: costanti, variabili, dichiarazione delle variabili, espressioni, operatori, puntatori, arrays, allocazione dinamica, strutture di controllo, flow-chart, funzioni, definizione dichiarazione e riferimento, tecniche di legame dei parametri, stack di sistema, tempo di vita e visibilità delle variabili, funzioni di libreria, definizione e dichiarazione di dati strutturati.
Ambiente di sviluppo integrato (DJGPP), editor, compilatore, linker, debugger.
PARTE III: STRUTTURE DATI
Stack su array, buffer circolare.
Liste, implementazione sequenziale e collegata, con indici e puntatori, rappresentazione e funzioni elementari, visita, ricerca, inserimento e cancellazione in testa, in ordine, in coda; cenni su liste circolari e doppiamente linkate.
Ricorsione e iterazione, principi di progetto e relazione tra i due schemi.
PARTE IV: ALGORITMI E COMPLESSITA’
Complessità.
Algoritmi di ricerca, sequenziale, binaria, a salti.
Problema dell’ordinamento, permutazione, principi di operazione analisi della complessità e rappresentazione di algoritmi di ordinamento: selection sort, bubble sort, insertion sort, merge sort, quicksort; Complessità minima di un problema, il caso del problema di ordinamento.
Materiale Utile :
Esami con soluzioni :