Istruzioni write Formattate in Fortran
Nei capitoli precedenti, abbiamo letto valori e li abbiamo scritti nei nostri programmi utilizzando istruzioni read
e write
in formato libero.
Il formato libero è specificato dal secondo asterisco nelle istruzioni read (*,*)
e write (*,*)
. Come abbiamo visto, i risultati della scrittura dei dati in formato libero non sono sempre esteticamente gradevoli. Spesso ci sono molti spazi extra nell'output. A partire da questa lezione, impareremo a scrivere i dati utilizzando le cosiddette stringhe di formato che specificano esattamente il modo in cui i numeri devono essere stampati.
Le stringhe di formato possono essere usati sia per scrivere che per leggere i dati. Poiché sono più utili durante l'output, esamineremo prima le istruzioni write
formattate, e rimanderemo le istruzioni read
formattate alle prossime lezioni.
Istruzioni write
formattate
Una stringa di formato può essere utilizzata per specificare l'esatto modo in cui le variabili devono essere stampate da un programma.
In generale, una stringa di formato può specificare sia la posizione orizzontale che quella verticale delle variabili sulla console, e anche il numero di cifre significative da stampare. Una tipica istruzione write
formattata per un intero i
e una variabile reale risultato
è mostrata qui sotto:
write (*,100) i, risultato
100 format ("Il risultato per ", I3," è ", F7.3)
L'istruzione format
contiene le informazioni di formattazione usate dall'istruzione write
. Il numero 100
che appare tra parentesi nell'istruzione write è l'etichetta dell'istruzione format
che descrive come i valori contenuti in i
e risultato
devono essere stampati.
I3
e F7.3
sono i descrittori di formato associati rispettivamente alle variabili i
e risultato
. In questo caso, l'istruzione format
specifica che il programma deve prima scrivere la frase "Il risultato per "
, seguita dal valore della variabile i
. Il descrittore di formato I3
specifica che deve essere utilizzato uno spazio largo tre caratteri per stampare il valore della variabile i
. Il valore di i
sarà seguito dalla frase " è "
e quindi dal valore della variabile risultato
. Il descrittore di formato F7.3
specifica che deve essere utilizzato uno spazio largo sette caratteri per stampare il valore della variabile risultato
, e che deve essere stampato con tre cifre dopo il punto decimale.
Supponendo che la variabile i
valga 21
mentre la variabile risultato
valga 3.141593
, la riga di output risultante è mostrata qui sotto, confrontata con la stessa riga stampata in formato libero.
-
Risultato formattato:
Il risultato per 21 è 3.142
-
Risultato in formato libero:
Il risultato per 21 è 3.14159298
Istruzione format
e Stringhe di Formato
Un'istruzione format
permette di definire il formato di output di un'istruzione write
. La sua sintassi è la seguente:
etichetta format (stringa_di_formato)
Dove:
etichetta
è un numero intero che identifica l'istruzioneformat
;stringa_di_formato
è una stringa di caratteri che specifica come le variabili devono essere stampate.
Si noti che siamo stati in grado di eliminare sia gli spazi vuoti extra sia le cifre decimali indesiderate usando l'istruzione format
.
Si noti anche che il valore della variabile risultato
è stato arrotondato prima di essere stampato nel formato F7.3
. (Solo il valore stampato è stato arrotondato; il contenuto della variabile risultato
è rimasto invariato.) L'I/O formattato ci permetterà di creare output ordinati nei nostri programmi.
Oltre alle istruzioni format
, i formati possono essere specificati in costanti o variabili di tipo carattere.
Se si utilizza una costante o variabile di tipo carattere per contenere il formato, allora la costante o il nome della variabile compare tra parentesi nell'istruzione write
. Per esempio, le seguenti tre istruzioni write sono equivalenti:
-
Stringa di formato in un'istruzione
format
:write (*,100) i, risultato 100 format ("Il risultato per ", I3," è ", F7.3)
-
Stringa di formato in una costante di tipo carattere:
character(len=30) :: fmt fmt = "(A, I3, A, F7.3)" write (*,fmt) "Il risultato per ", i, " è ", risultato
-
Stringa di formato direttamente nell'istruzione
write
:write (*,"(A, I3, A, F7.3)") "Il risultato per ", i, " è ", risultato
Mescoleremo stringhe di formato in istruzioni format
, costanti di tipo carattere e variabili di tipo carattere negli esempi che vedremo nelle prossime lezioni.
Negli esempi di sopra, ogni descrittore di formato era separato dai suoi vicini da virgole. Con poche eccezioni, più descrittori di formato in un singolo formato devono essere separati da virgole.
Analizzeremo nel dettaglio i descrittori di formato e le stringhe di formato nelle prossime lezioni.
Ricapitolando:
Istruzioni write
formattate in Fortran
Un'istruzione write
formattata in Fortran permette di scrivere i dati su console in modo ordinato e formattato. La sintassi generale di un'istruzione write
formattata è la seguente:
write (*,formato) *lista di output*
Dove formato
può essere:
- L'etichetta numerica di un'istruzione
format
; - Una costante o variabile di tipo carattere contenente il formato;
- Una stringa di formato direttamente nell'istruzione
write
.
L'istruzione print
Finora abbiamo usato l'istruzione write
per scrivere i dati su console. Esiste un'altra forma di istruzione di output formattata: l'istruzione print
.
print formato, *lista di output*
L'istruzione print
è equivalente all'istruzione write
formattata discussa sopra, dove formato
è o il numero di un'istruzione format
o una costante/variabile di tipo carattere.
L'istruzione print
è più breve e più facile da scrivere rispetto all'istruzione write
, ma è meno flessibile. L'istruzione print
è stata introdotta in Fortran 77 e può essere utilizzata solo per l'output formattato. L'istruzione write
è più flessibile e può essere utilizzata per l'input e l'output formattato.
Istruzione print
in Fortran
L'istruzione print
in Fortran permette di scrivere i dati su console in modo ordinato e formattato. La sintassi generale di un'istruzione print
è la seguente:
print formato, *lista di output*
Dove formato
può essere:
- L'etichetta numerica di un'istruzione
format
; - Una costante o variabile di tipo carattere contenente il formato.
In Sintesi
In questa lezione abbiamo introdotto alcuni concetti fondamentali riguardanti l'output dei nostri programmi Fortran. Abbiamo visto che:
- Le stringhe di formato possono essere utilizzate per specificare l'esatto modo in cui le variabili devono essere stampate;
- Le istruzioni
write
formattate possono essere utilizzate per scrivere i dati su console in modo ordinato e formattato; - Le istruzioni
print
sono equivalenti alle istruzioniwrite
formattate, ma sono più brevi e meno flessibili.
Nelle prossime lezioni, esamineremo i descrittori di formato e le stringhe di formato in dettaglio. Ma prima, studieremo il concetto dei dispositivi di output in Fortran.