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.

3.3 Uso degli array 129<br />

arr=RESHAPE((/((i+j,i=1,3),j=1,2)/),SHAPE=(/3,2/),ORDER=(/2,1/))<br />

allora il risultato sarebbe la creazione della matrice: arr = ⎣<br />

⎡<br />

2 3<br />

4 3<br />

4 5<br />

3.3.3 Inizializzazione degli elementi di un array<br />

Esattamente come avviene con le comuni variabili, prima di poter usare un array è necessario<br />

inizializzare i suoi elementi. Se un array non viene inizializzato, il contenuto dei suoi elementi<br />

risulta indefinito. Lo standard del linguaggio non definisce i valori degli elementi di un array<br />

non inizializzato, sicché alcuni compilatori impostano automaticamente a zero gli elementi di<br />

un tale array, altri li impostano con valori del tutto casuali (ad esempio i valori precedentemente<br />

immagazzinati nei registri di memoria corrispondenti), altri ancora generano un errore al tempo<br />

di esecuzione. A causa di queste differenze, un programma che sembri funzionare bene su un<br />

processore potrebbe non funzionare su un altro sistema. Per ovviare ad una tale evenienza è<br />

opportuno inizializzare i valori di un array prima di utilizzarlo.<br />

Gli elementi di un array possono essere inizializzati in uno dei seguenti modi:<br />

• Inizializzazione mediante istruzione di assegnazione.<br />

• Inizializzazione attraverso l’istruzione di dichiarazione di tipo.<br />

• Inizializzazione mediante un’istruzione READ.<br />

Rimandando l’ultima modalità di inizializzazione al paragrafo relativo alle operazioni di I/O<br />

con gli array, si descriveranno ora le prime due tecniche elencate.<br />

Inizializzazione mediante istruzioni di assegnazione<br />

I valori iniziali di un array possono essere assegnati durante la fase esecutiva del programma<br />

utilizzando delle opportune istruzioni di assegnazione, un elemento alla volta mediante un ciclo<br />

DO, oppure globalmente attraverso un costruttore di array. I due metodi sono esemplificati di<br />

seguito:<br />

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

REAL, DIMENSION(5) :: array2<br />

...<br />

DO i=1,5<br />

array1(i)=i**2<br />

END DO<br />

...<br />

array2=(/1,4,9,16,25/)<br />

⎤<br />

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

Saved successfully!

Ooh no, something went wrong!