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.

184 Operazioni di I/O interattive<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 m rappresenta il numero minimo di cifre da visualizzare.<br />

In input non vi è alcuna differenza fra i descrittori Iw.m e Iw; inoltre non ha importanza la<br />

posizione in cui viene inserito il valore intero (nel senso che eventuali bianchi di testa vengono<br />

completamente ignorati) purché il valore venga inserito all’interno del campo di w caratteri ad<br />

esso riservato.<br />

In output il dato intero viene rappresentato in un campo di w caratteri con almeno m cifre,<br />

di cui le prime uguali a zero se il numero da rappresentare è composto da meno di m cifre. Se,<br />

però, l’ampiezza di campo w non è sufficiente per contenere tutte le cifre del valore intero da<br />

produrre, il campo sarà riempito con w asterischi.<br />

Come esempio di istruzione di uscita formattata si consideri il seguente ramo di codice:<br />

INTEGER :: a = 3, b = -5, c = 128 ... WRITE(*,"(3I4.2)") a, b, c<br />

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

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

stampata in accordo con lo specificatore I4.2 ottenendosi il risultato seguente:<br />

bb03b-05b128<br />

dove con il simbolo b si è indicato uno spazio bianco mentre la presenza degli zeri è giustificata<br />

dalla presenza del termine ”.2” in coda allo specificatore che richiede un minimo di 2 cifre<br />

significative.<br />

Come ulteriore esempio, si osservino le seguenti istruzioni:<br />

INTEGER :: i=-12, j=4, number=-12345 WRITE(*,100) i, i+12, j, number<br />

WRITE(*,110) i, i+12, j, number WRITE(*,120) i, i+12, j, number 100<br />

FORMAT(1X,2I5,I7,I10) 110 FORMAT(1X,2I5.0,I7,I10.8) 120<br />

FORMAT(1X,2I5.3,I7,I5)<br />

<strong>Il</strong> risultato prodotto questa volta è, chiaramente, il seguente:<br />

-12 0 4 -12345<br />

-12 4 -00012345<br />

-012 000 4*****<br />

<br />

<br />

dove la presenza degli asterischi che riempiono l’intero campo finale dipende dal fatto che<br />

il valore intero -12345 richiede sei caratteri ossia uno in più rispetto a quanti ne riserva lo<br />

specificatore I5 utilizzato per la variabile number nell’ultima istruzione FORMAT (a margine<br />

dell’ultimo record si sono evidenziate graficamente le ampiezze dei campi associati a ciascuno<br />

specificatore di formato in modo da rendere più chiara l’interpretazione del risultato).<br />

Nelle istruzioni di ingresso, invece, i valori interi possono essere inseriti ovunque all’interno<br />

dei campi ad essi destinati e saranno letti sempre correttamente. Così, ad esempio, data<br />

l’istruzione di lettura:

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

Saved successfully!

Ooh no, something went wrong!