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.

6.6 Procedure intrinseche per gli array 343<br />

NCOPIES è uno scalare di tipo INTEGER. Esso rappresenta l’estensione della dimensione<br />

addizionale.<br />

<strong>Il</strong> risultato è un array dello stesso tipo diSOURCE e di rango pari a quello diSOURCE aumentato<br />

di un’unità. In particolare, valgono le seguenti regole:<br />

• Se SOURCE è un array, ciascun elemento dell’array risultante nella dimensione DIM è pari<br />

al corrispondente elemento di SOURCE.<br />

• Se SOURCE è uno scalare, il risultato è un array di rango unitario formato da NCOPIES<br />

elementi, ciascuno con il valore di SOURCE.<br />

• Se NCOPIES è minore o uguale a zero, il risultato è un array di ampiezza nulla.<br />

Un esempio di utilizzo della funzione SPREAD è fornito dalla seguente istruzione:<br />

SPREAD ("c",1,4)<br />

la quale produce l’array di caratteri: (/c,c,c,c/). Ancora, se vet è l’array (/3,4,5/) ed nc<br />

ha valore 4, allora l’istruzione:<br />

SPREAD(vet,DIM=1,NCOPIES=nc)<br />

produrrà l’array:<br />

3 4 5<br />

3 4 5<br />

3 4 5<br />

3 4 5<br />

mentre l’istruzione:<br />

SPREAD(vet,DIM=2,NCOPIES=nc)<br />

produce l’array:<br />

3 3 3 3<br />

4 4 4 4<br />

5 5 5 5<br />

UNPACK(VECTOR,MASK,FIELD)<br />

Legge gli elementi di un array monodimensionale e li ”scompatta” in un altro array (possibilmente<br />

maggiore) sotto il controllo di una maschera.<br />

L’argomento VECTOR è un array monodimensionale di tipo qualsiasi e la cui dimensione deve<br />

essere almeno t , essendo t il numero di elementi .TRUE. di MASK.<br />

MASK è un array logico. Esso determina dove saranno disposti gli elementi di VECTOR una<br />

volta scompattati.

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

Saved successfully!

Ooh no, something went wrong!