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.

344 Array Processing<br />

FIELD deve essere un array dello stesso tipo e parametri di kind di VECTOR e compatibile con<br />

MASK. Gli elementi di FIELD vengono inseriti nell’array risultante in corrispondenza dei valori<br />

.FALSE. di MASK.<br />

<strong>Il</strong> risultato è un array avente stessa forma di MASK e stesso tipo e parametri di kind di<br />

VECTOR. I suoi elementi vengono inseriti, nell’array element order, al modo seguente:<br />

• Se l’elemento i di MASK ha valore .TRUE., il corrispondente elemento del risultato è<br />

acquisito dal successivo elemento di VECTOR.<br />

• Se l’elemento i di MASK ha valore .FALSE., il corrispondente elemento del risultato è pari<br />

a FIELD (se FIELD è uno scalare) oppure è pari all’i_mo elemento di FIELD (se FIELD è<br />

un array).<br />

Esempi:<br />

Siano n l’array:<br />

0 0 1<br />

1 0 1<br />

1 0 0<br />

p l’array: (/2,3,4,5/), e q l’array:<br />

.TRUE. .FALSE. .FALSE.<br />

.FALSE. .TRUE. .FALSE.<br />

.TRUE. .TRUE. .FALSE.<br />

L’istruzione UNPACK(p,MASK=q,FIELD=n) produrrà il risultato:<br />

2 0 1<br />

1 4 1<br />

3 5 0<br />

mentre l’istruzione UNPACK(p,MASK=q,FIELD=1) produrrà il risultato:<br />

2 1 1<br />

1 4 1<br />

3 5 1<br />

Un interessante esempio di utilizzo della funzione PACK è offerto dal seguente programma<br />

che valuta tutti i numeri primi compresi tra 1 100 secondo il criterio noto come crivello di<br />

Eratostene:<br />

PROGRAM Crivello_di_Eratostene<br />

! Scopo: valutare i numeri primi secondo<br />

! il metodo di Eratostene<br />

IMPLICIT NONE

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

Saved successfully!

Ooh no, something went wrong!