Array: introduzione

Un array in F90 ha le seguenti caratteristiche (non indipendenti) calcolabili con le funzioni intrinseche indicate:
  • rango (rank) o numero di dimensioni: SIZE(SHAPE(array))
  • forma (shape) o n. di elementi per dimensione: SHAPE(array) restituisce un vettore con tutte le dimensioni, SIZE(array,ndim) restituisce solo la dimensione ndim
  • estremi inferiore e superiore per ogni dimensione: LBOUND(array), UBOUND(array) restituiscono un vettore con tutte le dimensioni, LBOUND(array,ndim), UBOUND(array,ndim) restituiscono solo la dimensione ndim
  • dimensione complessiva SIZE(array)
Il rango è determinato in fase di compilazione per scopi di ottimizzazione, il resto, a seconda del tipo di array, può essere anche deciso in fase di esecuzione.
PROGRAM vettori

INTEGER :: a(3,5,8), b(-1:1,-2:2,8)

PRINT*,'SHAPE RANK:'
PRINT*,SHAPE(a),SIZE(SHAPE(a))
PRINT*,SHAPE(b),SIZE(SHAPE(b))
PRINT*,'SIZES:'
PRINT*,SIZE(a),SIZE(a,1),SIZE(a,2),SIZE(a,3)
PRINT*,SIZE(b),SIZE(b,1),SIZE(b,2),SIZE(b,3)
PRINT*,'BOUNDS:'
PRINT*,LBOUND(a,1),LBOUND(a,2),LBOUND(a,3)
PRINT*,UBOUND(a,1),UBOUND(a,2),UBOUND(a,3)
PRINT*,LBOUND(b,1),LBOUND(b,2),LBOUND(b,3)
PRINT*,UBOUND(b,1),UBOUND(b,2),UBOUND(b,3)

END PROGRAM vettori