Obiettivi del Corso

Il corso si pone come obiettivo quello di portare gli allievi ad un buon livello di conoscenza della programmazione degli elaboratori utilizzando il linguaggio C. L'illustrazione delle principali istruzioni e costrutti supportati dal linguaggio sarà affiancata da un cospicuo numero di esempi commentati in aula dal docente e da esercizi da svolgere a casa e/o in laboratorio a cura degli allievi.

Programma

Architettura e principi di funzionamento degli elaboratori.

Principi di programmazione degli elaboratori.

La programmazione in linguaggio C.

Architettura di un programma. La rappresentazione dei dati, i tipi, le variabili e le costanti. L'istruzione di assegnazione, gli operatori e le espressioni. I costrutti di condizione. I costrutti di ciclo. Le variabili multi dimensionali (vettori, matrici). Il trattamento delle stringhe di caratteri.

Le funzioni. I file e la loro gestione. Gli indirizzi e i puntatori.

La gestione della memoria dinamica. Le strutture dati dinamiche e la loro applicazione al trattamento dei dati astratti. Le liste lineari.



BIBLIOGRAFIA
a) Note e dispense distribuite dal docente.
b) Al Kelley Ira Pohl  C: Didattica e Programmazione, Addison - Wesley.
c) B. Kernighan, D. Ritchie, Linguaggio C - seconda edizione, Gruppo Editoriale Jackson.
d) A. Macii, E. Macii, M. Poncino, R. Scarsi, Fondamenti di Informatica – 100 Esercizi d’Esame Svolti, Edit ric e Esculapio Bologna.


CONTROLLO DELL’APPRENDIMENTO E MODALITÀ D’ESAME

L’esame consta di una prova scritta, di una prova di laboratorio  e di una prova orale. La prova scritta consiste nella risposta a quesiti sul programma svolto e nella realizzazione di algoritmi fondamentali analizzati a lezione. La prova di laboratorio consiste nella realizzazione di un progetto di media complessità.

La prova orale parte dall’analisi della  prova di laboratorio e verte su tutti gli argomenti trattati durante il corso.

Prerequisiti

Conoscenze di base di matematica discreta e di logica matematica.

Competenze attese

Capacità di realizzare programmi software in linguaggio C di media complessità.