Istruzione equivalence in Fortran
L'istruzione EQUIVALENCE del linguaggio Fortran mi consente di collegare due nomi di variabili tra loro.
EQUIVALENCE ( nome1, nome2 )
I due argomenti indicano il nome della prima e della seconda variabile separati da una virgola e posti tra parentesi tonde.
A cosa serve?
Quando modifico la prima variabile, si modifica automaticamente anche la seconda. E viceversa.
Un esempio pratico
Esempio 1
Questo programma definisce due variabili intere e le lega tra loro tramite l'istruzione EQUIVALENCE.
PROGRAM hello
INTEGER a,b
EQUIVALENCE (a,b)
a=5
WRITE(*,*) "a=",a
WRITE(*,*) "b=",b
END
Quando assegno alla variabile a il valore 5, lo stesso valore è assegnato alla variabile b.
Infine stampo il contenuto della variabile a e b.
a=5
b=5
E viceversa.
Esempio 2
L'istruzione EQUIVALENCE è molto utile anche per creare delle variabili alias in un array.
In particolar modo, se un numero indice del vettore registra un'informazione, posso modificarla tramite la variabile alias.
PROGRAM hello
INTEGER a,b,v(20)
EQUIVALENCE (v(1),a)
a=5
WRITE(*,*) "a=",a
WRITE(*,*) "v(1)=",v(1)
END
Quando assegno il valore 5 alla variabile a, viene assegnato indirettamente anche all'elemento v(1) dell'array.
a=5
v(1)=5
In questo modo il programma diventa più leggibile ed evito di sbagliarmi.
E così via.