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.

6.6 Procedure intrinseche per gli array 341<br />

Un esempio appena più complesso è il seguente. Se TSOURCE è l’array:<br />

1 3 5<br />

2 4 6<br />

FSOURCE è l’array:<br />

8 9 0<br />

1 2 3<br />

e MASK è l’array:<br />

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

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

allora l’istruzione:<br />

MERGE(TSOURCE,FSOURCE,MASK)<br />

produce il risultato:<br />

8 3 5<br />

2 4 3<br />

PACK(ARRAY,MASK[,VECTOR])<br />

Legge gli elementi di un array e li ”compatta” in un array di rango unitario sotto il controllo di<br />

una maschera.<br />

L’argomento ARRAY è un array di tipo qualsiasi.<br />

MASK è un array logico compatibile con ARRAY. Esso determina quali elementi vengono<br />

acquisiti da ARRAY.<br />

L’argomento opzionaleVECTOR è un array monodimensionale avente lo stesso tipo e parametri<br />

di kind di ARRAY e la cui dimensione deve essere almeno t , essendo t il numero di elementi<br />

.TRUE. di MASK.<br />

Se MASK è uno scalare con valore .TRUE., VECTOR deve avere un numero di elementi almeno<br />

pari adARRAY. Gli elementi diVECTOR sono inseriti nell’array risultante se non esistono sufficienti<br />

elementi selezionati da MASK.<br />

<strong>Il</strong> risultato è un array di rango unitario avente stesso tipo e stessi parametri di kind di<br />

ARRAY.<br />

Se VECTOR è presente, l’ampiezza dell’array risultante coincide con quella di VECTOR. In caso<br />

contrario, l’ampiezza dell’array risultante è pari al numero di elementi .TRUE. di MASK, o al<br />

numero degli elementi di ARRAY (se MASK è uno scalare con valore .TRUE.).<br />

Gli elementi di ARRAY vengono processati secondo l’array element order, per formare l’array<br />

risultante, in modo tale che l’elemento i del risultato coincida con l’elemento di ARRAY<br />

corrispondente all’i_mo elemento .TRUE. di MASK. Se VECTOR è presente ed ha un numero di<br />

elementi maggiore del numero di elementi .TRUE. di MASK, tutti gli elementi mancanti vengono<br />

acquisiti dalle corrispondenti posizioni in VECTOR.<br />

Ad esempio, se mat è il seguente array:

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

Saved successfully!

Ooh no, something went wrong!