25.06.2013 Views

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

186 Operazioni di I/O interattive<br />

4.4.3 <strong>Il</strong> descrittore F<br />

<strong>Il</strong> descrittore di formato F è utilizzato per controllare il formato di rappresentazione dei valori<br />

reali secondo la notazione decimale. La sua sintassi è:<br />

Fw.d<br />

dove w rappresenta la larghezza di campo, ossia il numero di caratteri da utilizzare per rappresentare<br />

i dati di input e output, mentre d rappresenta il numero di cifre da visualizzare a<br />

destra del punto decimale. Se necessario, il numero sarà arrotondato prima di essere rappresentato;<br />

ciò accade, chiaramente, quando il numero rappresentato richiede meno cifre significative<br />

della sua rappresentazione interna. Al contrario, se il numero rappresentato richiede più cifre<br />

significative della sua rappresentazione interna, saranno aggiunti degli zeri extra alla destra del<br />

numero.<br />

La dimensione del campo w deve essere valutata con molta attenzione quando si fa uso del<br />

descrittore F nelle operazioni di uscita; in particolare, detto n il numero di cifre della parte<br />

intera del valore da produrre, si deve far sì che w e d soddisfino alla condizione:<br />

w ≥ n + d + 2<br />

ossia, fatte salve le n cifre per la parte intera, per stampare un valore con d cifre decimali<br />

occorre un campo di almeno d+2 caratteri (infatti occorrono, oltre ai d caratteri per le cifre<br />

che seguono la virgola, anche un carattere per l’eventuale segno, ed uno per il punto decimale).<br />

Nel caso in cui questa condizione non sia soddisfatta, il campo destinato all’output del valore<br />

reale sarà riempito di asterischi.<br />

Un esempio di utilizzo del descrittore F in operazioni di uscita è fornito dalle seguenti<br />

istruzioni:<br />

REAL :: x = 12.34, y = -0.945, z = 100.0 ... WRITE(*,"(3F6.2)") x,<br />

y, z<br />

<strong>Il</strong> descrittore di formato utilizzato è 3F6.2 che è equivalente a (F6.2,F6.2,F6.2) per via<br />

della presenza del contatore di ripetizione 3. Pertanto, ciascuna delle tre variabili reali verrà<br />

stampata in accordo con lo specificatore F6.2 ossia nel formato a virgola fissa in un campo<br />

di sei caratteri di cui due destinati ad ospitare le prime due cifre dopo la virgola. <strong>Il</strong> risultato<br />

prodotto sarà, pertanto:<br />

b12.34b-0.<strong>95</strong>100.00<br />

dove, evidentemente, il valore di y viene troncato dell’ultima cifra decimale in accordo con<br />

quanto imposto dallo specificatore di formato adottato, così come al valore di z viene aggiunto<br />

”in coda” uno zero supplementare. Ancora una volta con il simbolo b si è voluto rappresentare<br />

un carattere blank. Come ulteriore esempio di operazioni di uscita formattate che impieghino<br />

il descrittore F si guardi il seguente frammento di codice:<br />

REAL :: x=-12.3, y=.123, z=123.456 WRITE(*,100) x,y,z WRITE(*,200)<br />

x,y,z WRITE(*,300) x,y,z 100 FORMAT(1X,2F6.3,F8.3) 200<br />

FORMAT(1X,3F10.2) 300 FORMAT(1X,F7.2,F6.3,F5.0)

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!