Fortran 2
Fortran 2
INPUT E OUTPUT
1
Il FILE come dispositivo di input o output
Gli enunciati WRITE e READ consentono al calcolatore di scrivere in
un dispositivo di output o di leggere da un dispositivo di input
FILE
READ *,A,B,C
PRINT *,A,B,C
Il dispositivo di input/output è fissato in modo univoco dal simbolo *.
Esso dice al calcolatore che l’input è la tastiera del calcolatore e
che l’output è lo schermo
3
SINTASSI DEGLI ENUNCIATI WRITE E READ
Per consentire agli enunciati di input e output di leggere o scrivere i
risultati su un dispositivo diverso dal dispositivo di default (tastiera
per l’input e lo schermo per l’output) essi sono stati progettati con la
seguente forma sintattica:
READ(spec1,spec2)
WRITE(spec1,spec2)
5
SINTASSI DEGLI ENUNCIATI WRITE E READ
7
OPERAZIONI DI INPUT-OUTPUT
Per consentire al calcolatore di leggere i dati j,k in DATI.txt occorrerà
usare il seguente enunciato:
READ(10,*) j,k
dove 10 specifica il dispositivo di INPUT rappresentato dal file DATI.txt
8
OPERAZIONI DI INPUT-OUTPUT
Supponiamo ora di voler modificare questo programma per
consentire al calcolatore di SCRIVERE IN un archivio di memoria
denominato
RESULTS.txt
i numeri interi j, k,l,m,n
10
INPUT A FORMATO- SPECIFICHE DI CAMPO
Nei ragionamenti precedenti non abbiamo richiesto che i numeri di
input avessero un particolare formato. Gli enunciati di READ e
WRITE in cui la seconda specifica spec2 è posta eguale a *
realizzano tale tipo di esigenze.
READ(10,20)J,K
20 FORMAT(I3,I5)
Questa coppia di enunciati dice al calcolatore di leggere nel dispositivo
identificato da 10 due numeri interi J e K con il formato descritto
dall’istruzione di FORMAT identificata dalla label 20. L’istruzione di
FORMAT dice che il numero intero J deve essere associato alle prime tre
cifre poste nel dispositivo 20 mentre il numero intero K deve essere
associato alle cifre poste nelle successive 5 colonne 14
CODICE I: SPECIFICHE DI CAMPO INTERE
15
CODICE I: SPECIFICHE DI CAMPO INTERE
Se il file di input è quello sotto, il calcolatore non funziona.
Infatti solo le prime 4 cifre della prima riga sono state
utilizzate nella scrittura del file e quindi la larghezza
complessiva di campo utilizzata nella scrittura del file è di 4
caratteri mentre l’enunciato di FORMAT ne richiede
complessivamente 8
16
CODICE I: SPECIFICHE DI CAMPO INTERE
17
CODICE I: SPECIFICHE DI CAMPO INTERE
18
CODICE I: SPECIFICHE DI CAMPO INTERE
OUTPUT:
J=-10 K=70908
23
CODICE F: SPECIFICHE DI CAMPO REALI
Il codice per specificare la lettura o la scrittura di un numero reale è
Fw.d
F6.2
OUTPUT:
-10.4700003
25
CODICE F: SPECIFICHE DI CAMPO REALI
Se, nell’eseguire l’istruzione di formato FORMAT(Fw.d) il numero
presente nelle w colonne ha un punto decimale in posizione
diversa dalla posizione che precede le ultime d colonne allora il
numero viene letto con IL SUO FORMATO.
OUTPUT:
-1.04700005
26
CODICE F: SPECIFICHE DI CAMPO REALI
Occorre però che siano presenti cifre sino alla colonna w, altrimenti
si avrà un messaggio di errore:
F6.2
OUTPUT:
Messaggio di errore
27
CODICE F: SPECIFICHE DI CAMPO REALI
Nel caso in cui nel file di input non vi sia il punto decimale il
calcolatore, con una specifica di formato FORMAT Fw.d
leggerà w caratteri, d dei quali saranno considerati come parte
decimale. Inserirà automaticamente un punto decimale tra i
primi w-d caratteri e i restanti d.
INPUT
OUTPUT:
-100.4700001
E’ comunque buona regola evitare di scrivere nei files dei numeri reali
senza il punto decimale
28
CODICE E: SPECIFICHE DI CAMPO REALI
Il codice per specificare la lettura o la scrittura di un numero reale in
forma esponenziale è
Ew.d
READ(10,20)A
20 FORMAT(E11.2)
Questa coppia di enunciati dice al calcolatore di leggere nel dispositivo
identificato da 10 un numero reale A con il formato descritto
dall’istruzione di FORMAT identificata dalla label 20. L’istruzione di
FORMAT dice che il numero reale A deve essere associato alle prime 11
cifre poste nel dispositivo 20 e ha 2 cifre decimali
29
CODICE E: SPECIFICHE DI CAMPO REALI
OUTPUT:
1.23454001E+20
30
CODICE E: SPECIFICHE DI CAMPO REALI
OUTPUT:
123.454002
OUTPUT:
MESSAGGIO di ERRORE
31
CODICE E: SPECIFICHE DI CAMPO REALI
OUTPUT:
-1.23400002E+20
32
CODICE E: SPECIFICHE DI CAMPO REALI
FILE DI INPUT
Output:
Messaggio di errore
33
CODICE E: SPECIFICHE DI CAMPO REALI
FILE DI INPUT
FILE DI INPUT
Output:
-100 7388
35
SEQUENZA OPERAZIONI DI LETTURA
FILE DI INPUT
Output:
-100 1234
36
ENUNCIATO WRITE A FORMATO
Così come la lettura a formato avviene attraverso la coppia READ-
FORMAT la scrittura a formato avviene attraverso la coppia
WRITE-FORMAT
WRITE (M,N) LISTA DELLE VARIABILI
N FORMAT (LISTA DEI FORMATI)
ALFA <->F8.2
KUN <->I3
41
ENUNCIATO WRITE A FORMATO
42
ENUNCIATO WRITE A FORMATO
E’ tuttavia possibile che tra le diverse specifiche di campo si utilizzino
altri simboli che consentono:
44
ENUNCIATO WRITE A FORMATO
3 Nella lista dei formati è possibile utilizzare anche la
specifica che consente di avanzare di una riga prima di
scrivere una informazione. Tale specifica è rappresentata
dal simbolo /
Ad esempio
WRITE (10,20) ALFA
20 FORMAT (/F6.2)
45
ENUNCIATO WRITE A FORMATO
46
ENUNCIATO WRITE A FORMATO
47