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.

126 Array<br />

E’ anche possibile definire una costante di array. Una costante di array è formata interamente<br />

da valori costanti ed è definita inserendo i valori delle costanti fra speciali delimitatori<br />

chiamati costruttori di array. <strong>Il</strong> delimitatore iniziale del costruttore di array è formato da<br />

una parentesi tonda aperta seguita dal simbolo di slash, ”(/”. <strong>Il</strong> delimitatore finale, invece, è<br />

formato dalla coppia slash e parentesi tonda chiusa, ”/)”. Ad esempio, la seguente istruzione<br />

definisce una costante di array contenente cinque elementi interi:<br />

(/1,2,3,4,5/)<br />

Se le dimensioni degli array vengono cambiate spesso per adattare il programma a diversi<br />

problemi o per eseguire il programma su processori differenti, allora è consigliabile dichiarare<br />

le dimensioni degli array utilizzando costanti con nome. Queste ultime, infatti, semplificano<br />

enormemente l’operazione di modifica delle dimensioni di un array, come dimostra il seguente<br />

frammento di codice nel quale una variazione della sola costante isize permette di modificare<br />

le dimensioni di tutti gli array dichiarati:<br />

INTEGER, PARAMETER :: isize=1000<br />

REAL, DIMENSION(isize) :: array1<br />

LOGICAL, DIMENSION(isize,2*isize) :: array2<br />

INTEGER, DIMENSION(isize,isize,-isize:isize) :: array3<br />

Al fine di meglio comprendere tutti i variegati aspetti associati agli array, è bene chiarire il<br />

significato di alcuni termini di cui si farà largo uso nel prosieguo:<br />

• <strong>Il</strong> rango di un array coincide, per definizione, con il numero delle sue dimensioni. Così, ad<br />

esempio, una variabile scalare ha rango 0, un vettore ha rango 1 e una matrice ha rango<br />

2. Si noti che il rango di un array non ha nulla in comune con la omonima grandezza<br />

algebrica.<br />

• L’estensione (extent) è riferita, invece, alla particolare dimensione, e rappresenta il numero<br />

di elementi in tale dimensione.<br />

• La forma (shape) di un array è un vettore i cui elementi rappresentano le estensioni di<br />

ciascuna dimensione. La forma di un array è, in qualche modo, una combinazione del<br />

rango e dell’estensione dell’array in ogni dimensione. Così due array avranno la stessa<br />

forma se e solo se hanno lo stesso rango e la stessa estensione in ciascuna dimensione.<br />

• L’ampiezza (size) di un array è il numero totale di elementi che costituiscono l’array.<br />

Questo numero può essere zero, nel qual caso si parla di array di ampiezza nulla.<br />

Due array sono detti compatibili (conformable) se hanno la stessa forma. Si noti che tutti<br />

gli array sono compatibili con uno scalare, poiché lo scalare può sempre essere riguardato come<br />

un array avente la stessa forma dell’array dato e caratterizzato da tutti gli elementi uguali (e<br />

pari al valore scalare di partenza).<br />

A chiarimento di quanto detto, si considerino i seguenti array:

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

Saved successfully!

Ooh no, something went wrong!