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 349<br />

4 0 -3 2<br />

3 1 -2 6<br />

-1 -4 5 -5<br />

MINLOC(mat,MASK=mat>-5) fornisce il valore (/3,2/) poiché questi sono gli indici<br />

che puntano all’elemento di valore minimo (-4) fra tutti quelli maggiori di -5.<br />

MINLOC(mat,DIM=1) fornisce il valore (/3,3,1,3/), essendo 3 l’indice di riga del<br />

minimo valore di mat nella prima colonna (-1), 3 l’indice di riga del minimo valore<br />

di mat nella seconda colonna (-4), e così via.<br />

MINLOC(mat,DIM=2) fornisce il valore (/3,3,4/), essendo 3 l’indice di colonna del<br />

minimo valore di mat nella prima riga (-3), 3 l’indice di colonna del minimo valore<br />

di mat nella seconda riga (-2), e così via.<br />

6.6.6 Procedure di manipolazione<br />

CSHIFT(ARRAY,SHIFT[,DIM])<br />

Esegue uno shift circolare su un array di rango unitario o, se applicato ad un array di rango<br />

superiore, uno shift circolare ad intere sezioni di rango uno (vettore) lungo una data dimensione<br />

dell’array.<br />

Gli elementi shiftati al di fuori delle dimensioni dell’array vengono spostati all’altra estremità<br />

dell’array.<br />

Sezioni differenti possono essere shiftate in misura diversa oltre che in differenti direzioni.<br />

Per quanto concerne gli argomenti, ARRAY può essere un array di qualsiasi rango e tipo;<br />

SHIFT può essere uno scalare o anche un array (nel qual caso deve avere rango minore di<br />

un’unità rispetto ad ARRAY) di tipo INTEGER; il parametro opzionale DIM è, invece, uno scalare<br />

intero con valore compreso tra 1 ed n , con n il rango di ARRAY (DIM è assunto, per default, pari<br />

ad uno).<br />

<strong>Il</strong> risultato della funzione è un array avente stesso tipo, parametri di kind e forma di ARRAY.<br />

In particolare:<br />

• Se ARRAY ha rango unitario, allora l’i_mo elemento dell’array risultante sarà pari a<br />

ARRAY(1+MODULO(i+SHIFT-1,SIZE(ARRAY))). (<strong>Il</strong> medesimo shift è applicato a ciascun<br />

elemento).<br />

• Se ARRAY ha rango maggiore di uno, ciascuna sezione dell’array risultante è shiftato del<br />

valore di SHIFT se quest’ultimo è uno scalare, oppure del corrispondente valore in SHIFT,<br />

se SHIFT è un array.<br />

• <strong>Il</strong> valore di SHIFT determina l’entità e la direzione dello shift. Un valore positivo di SHIFT<br />

provoca uno spostamento a sinistra (nelle righe) o verso l’alto (nelle colonne). Un valore<br />

negativo di SHIFT, al contrario, provoca uno spostamento a destra (nelle righe) o verso<br />

il basso (nelle colonne). Un valore nullo di SHIFT, chiaramente, non determina alcuna<br />

variazione.

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

Saved successfully!

Ooh no, something went wrong!