Istruzioni di entrata ed uscita (input/output o I/O)
Tutti i linguaggi di programmazione per gestire l'input-output dei dati
utilizzano un'idea astratta di
periferica che riassume le caratteristiche fondamentali di ogni tipo di
periferica (come schermo, stampante, tastiera, dischetto, ...), indicata di
solito con il nome FILE.
Un file può essere pensato come una sequenza ordinata di
lunghezza qualsiasi di
valori tutti di uno stesso tipo; pertanto può anche essere vuoto (nessun
elemento).
Inoltre esiste una testina di scrittura/lettura astratta posizionata in un
punto della sequenza.
Ogni linguaggio di programmazione permette di dichiarare in un programma
quali file si useranno, definendo un nome simbolico per identificarli,
il tipo dei loro valori, e associandoli a
delle periferiche.
Inoltre sono sempre dichiarati implicitamente due file speciali per
l'input e l'output standard (connessi alle periferiche tastiera e stampante
o schermo), e i loro nomi possono essere dimenticati nelle
istruzioni di entrata ed uscita.
In questa prima parte di introduzione alla programmazione
consideriamo solo l'uso di questi file standard.
Il C ammette solo l'uso di file di caratteri, mentre, ad esempio, in Pascal
è possibile avere file di ogni tipo.
Le istruzioni elementari di I/O del C sono
- putchar
- putchar(c); scrive sul file di output standard il carattere
corrispondente al valore dell'espressione c
- getchar
- (precisamente getchar()
è un'espressione); l'istruzione di assegnazione cx =
getchar(); corrisponde a leggere il prossimo carattere dal file di input standard
e ad assegnarlo alla variabile cx.
Se il file è vuoto (non ci sono più caratteri) allora getchar()
ritorna un valore speciale EOF (End Of File).
All'inizio dell'esecuzione del programma
i file standard di input/output sono pronti per la lettura/scrittura a
partire dall'inizio del file.
Controllo di file vuoto.
Ogni linguaggio permette di controllare se un file è vuoto (o
meglio siamo arrivati alla fine durante la lettura).
Nel caso del C se si legge un file vuoto (alla fine) la funzione
getchar
ritorna un valore speciale,
indicato da EOF
(End Of File).
Le due istruzioni viste sopra sono sufficienti per leggere e scrivere ogni cosa, ma
sono
piuttosto elementari, così il C (come gli altri linguaggi) offre anche altre istruzioni.
- printf
- printf("stringa") stampa tutti i caratteri che compongono
stringa uno dopo l'altro; si ricorda che stringa è
semplicemente
una sequenza di caratteri.
Può anche stampare valori di altri tipi usandola come segue
printf(" ...%info ...", e)
dove info è d (per decimale) o f (per float)
ed e un'espressione del tipo corrispondente.
In questo caso %info sarà rimpiazzata da una stringa che
rappresenta il valore di e.
- scanf
- scanf("%info", &x) legge la prossima sequenza di
caratteri sullo standard input che rappresentano un valore di tipo info e assegna
tale valore alla variabile x; occorre premettere al
nome della variabile &. Il significato di tale simbolo sarà
chiarito in seguito nella parte sui puntatori).
Per utilizzare le istruzioni di input\output in C occorre
premettere al programma la dicitura
#include <stdio.h>
così lo schema di programma elementare avrà forma
#include <stdio.h>
main()
{
DECLARATIONS
STATEMENTS
}