Programmazione I (P-Z) a.a. 2004/05
|
|
Prof. R. Silvestri e Dott. I. Salvo
|
|
Finalità
L'obiettivo del corso è fornire
le basi della programmazione dei
calcolatori con linguaggi imperativi.
Tali basi sono esemplificate tramite l'apprendimento del
linguaggio C.
|
Programma
Nozioni di base
Cenni sulla struttura e funzionamento di un calcolatore. Esecuzione
di un programma. Linguaggi assemblativi e linguaggi ad alto livello. Il
linguaggio C. Gli algoritmi, lo pseudocodice, i diagrammi di flusso. 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.
Funzioni
I vantaggi della programmazione strutturata. La direttiva #include. Definizione di funzione. Il tipo void. Prototipo di funzione. Passaggio di parametri
per valore. 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.
Alcuni algoritmi di ordinamento: per inserzione, per selezione, a bolle.
L'algoritmo della ricerca binaria. 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. 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. Le funzioni fopen,
fclose,
fflush, fgetc, fputc, fgets, fputs, rewind. Lettura e scrittura
formattata con fprintf e fscanf.
Introduzione alle strutture di dati dinamiche
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
Testo di riferimento
Testi di approfondimento
|
|
|