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
    
Definizione

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'istruzione format;
  • 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:

  1. Stringa di formato in un'istruzione format:

    write (*,100) i, risultato
    100 format ("Il risultato per ", I3," è ", F7.3)
    
  2. 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
    
  3. 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:

Definizione

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:

  1. L'etichetta numerica di un'istruzione format;
  2. Una costante o variabile di tipo carattere contenente il formato;
  3. 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.

Definizione

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:

  1. L'etichetta numerica di un'istruzione format;
  2. 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 istruzioni write 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.