Programmazione I (P-Z) a.a. 2007/2008
|
|
Docente R. Silvestri
|
|
Finalità
L'obiettivo del corso è
fornire le basi della programmazione dei calcolatori tramite linguaggi imperativi.
Tali basi sono esemplificate mediante l'apprendimento del linguaggio C.
|
Programma
I calcolatori e la programmazione
Cenni sulla struttura e funzionamento di un calcolatore. Esecuzione
di un programma. Linguaggi assemblativi e linguaggi ad alto livello.
Compilatori e interpreti. Gli algoritmi, lo pseudocodice, i diagrammi di flusso.
Cenni storici sul linguaggio C.
Le basi del linguaggio C
Dichiarazione di variabili numeriche. Operatori matematici, operatori relazionali,
operatori logici. Assegnamenti. Conversioni implicite e conversioni esplicite.
Istruzioni di selezione. Istruzioni iterative. Contatori e sentinelle. Formattazione
dell'input con printf. Formattazione dell'output
con scanf. I vantaggi della programmazione strutturata.
Funzioni
Definizione di funzione e passaggio di parametri. Prototipo di funzione e la
direttiva #include. Il tipo
void. Regole di visibilità. Funzioni ricorsive.
Tipi semplici e tipi strutturati
Il tipo carattere e il tipo stringa. Dichiarazione, inizializzazione
e utilizzo di vettori. La direttiva #define.
Vettori multidimensionali. Vettori a dimensione variabile. Dichiarazione,
inizializzazione ed utilizzo di strutture (struct).
Dichiarazione, inizializzazione ed utilizzo di unioni (union).
Strutture che contengono altre strutture od unioni. Strutture che contengono vettori.
Vettori di strutture. Le enumerazioni (enum). La parola
chiave typedef.
Puntatori e allocazione dinamica
Dichiarazione, inizializzazione e utilizzo di puntatori. Passaggio di parametri per
riferimento: l'operatore di indirizzo & e l'operatore
di deriferimento *. Il qualificatore const.
Allocazione dinamica della memoria: sizeof,
malloc, free. Il tipo
void *.
La relazione tra puntatori e vettori. I vettori di puntatori. L'aritmetica dei puntatori.
I file su disco
I file ad accesso sequenziale e i file ad accesso diretto. Le funzioni
fopen, fclose,
fflush, fgetc,
fputc, fgets,
fputs, rewind. Lettura e scrittura
formattata con fprintf e fscanf.
Lettura e scrittura di file ad accesso diretto: fseek,
fwrite, fread.
Implementazione di algoritmi e strutture dati di base
Alcuni algoritmi di ordinamento: per inserzione, per selezione, a bolle.
L'algoritmo della ricerca binaria. Strutture dati lineari: liste, pile, code.
Implementazione tramite strutture e puntatori. Linee guida per la realizzazione
di piccole librerie: decomposizione
in moduli, separazione interfaccia-implementazione, compilazione di più
file e compilazione separata. I specificatori static
ed extern.
|
Testi
Testi consigliati
Testi di approfondimento
|
|
|