Programmazione I
a.a. 2002/2003 (P - Z)
|
|
Prof. R. Silvestri e
Dott. A. Sterbini |
|
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 [cap. 2,3,4,9]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 [cap. 5]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 [cap.
6,7,8,10]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.
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 [cap. 11]I file ad accesso
sequenziale ed i file ad accesso diretto. Le funzioni fopen, fclose,
fflush, feof. Lettura e scrittura formattata con
fprintf e fscanf. Lettura e scrittura di file ad
accesso diretto: ftell, fseek, fwrite,
fread.
Introduzione alle strutture di dati dinamiche [cap.
12]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
|
| |