25.06.2013 Views

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

Il Linguaggio Fortran 90/95

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

3.10 Operazioni di I/O con array 159<br />

3.10 Operazioni di I/O con array<br />

<strong>Il</strong> <strong>Fortran</strong> <strong>90</strong>/<strong>95</strong> consente di effettuare operazioni di input/output sia sui singoli elementi di un<br />

array sia, in forma globale, sull’intero array.<br />

3.10.1 Input e output degli elementi di un array<br />

Come è noto, un elemento di array è da riguardarsi come una comune variabile per cui è possibile<br />

utilizzarlo nelle istruzioni READ, WRITE ePRINT nel modo consueto. Ad esempio, per visualizzare<br />

il contenuto di determinati elementi di un array basta specificarli nella lista degli argomenti di<br />

una istruzione WRITE, come dimostra il seguente blocco di istruzioni in cui l’istruzione WRITE è<br />

utilizzata per riprodurre a video i primi cinque elementi dell’array reale a:<br />

REAL, DIMENSION(10) :: a<br />

...<br />

WRITE(*,100) a(1),a(2),a(3),a(4),a(5)<br />

100 FORMAT(1X,’a = ’,5F10.2)<br />

Allo stesso modo, l’istruzione:<br />

READ(*,*) a(3)<br />

permette di inserire da tastiera il valore dell’elemento a(3).<br />

<strong>Il</strong> ciclo DO implicito<br />

Nelle istruzioni di I/O è possibile inserire un ciclo DO implicito. Questo costrutto permette di<br />

visualizzare più volte una lista di argomenti in funzione di un indice. Ogni argomento della<br />

lista viene visualizzato una volta per ogni valore dell’indice del ciclo implicito.<br />

La forma generale di un’istruzione WRITE in presenza di un ciclo DO implicito è la seguente:<br />

WRITE(...) (arg_1, arg_2, ..., indice = inizio, fine [, incremento])<br />

dove gli argomentiarg_1 ,arg_2 , ...sono i valori da leggere in input o da visualizzare in output.<br />

La variabile intera indice è l’indice del ciclo implicito, mentre inizio, fine e incremento<br />

rappresentano, rispettivamente, il limite inferiore, superiore e l’incremento della variabile indice<br />

(si noti che la variabile opzionale incremento è pari ad uno per default). Chiaramente, l’indice<br />

e tutti i parametri di controllo del ciclo devono avere valori di tipo intero. (La sintassi è<br />

perfettamente analoga nel caso di istruzione READ o PRINT).<br />

Pertanto, facendo uso di un ciclo DO implicito, l’esempio precedente può essere riscritto in<br />

forma più compatta al modo seguente:<br />

REAL, DIMENSION(10) :: a<br />

...<br />

WRITE(*,100) (a(i), i=1,5 )<br />

100 FORMAT(1X,’a = ’,5F10.2)

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

Saved successfully!

Ooh no, something went wrong!