Inizializzazione delle variabili in Fortran
L'inizializzazione delle variabili in Fortran è un passaggio fondamentale per garantire il corretto funzionamento dei programmi.
Le variabili non inizializzate possono contenere valori imprevedibili, causando comportamenti inaspettati o errori di runtime.
Per evitare questi problemi, esistono tre tecniche principali per assegnare valori iniziali alle variabili: l'uso di istruzioni di assegnazione, l'inizializzazione con READ
e la definizione diretta del valore nella dichiarazione del tipo.
In questa lezione analizziamo ciascun metodo con esempi pratici e buone pratiche per scrivere codice più sicuro ed efficiente.
Inizializzazione delle Variabili
Consideriamo il seguente programma:
PROGRAM init
INTEGER :: i
WRITE (*,*) i
END PROGRAM init
Qual è il valore memorizzato nella variabile i
? Cosa verrà stampato dall'istruzione WRITE
?
La risposta è: Non possiamo saperlo.
La variabile i
, infatti, è un esempio di variabile non inizializzata. È stata dichiarata con l'istruzione INTEGER :: i
, ma non le è stato assegnato alcun valore.
Il valore di una variabile non inizializzata non è definito dallo standard Fortran. Alcuni compilatori impostano automaticamente le variabili non inizializzate a zero, altri assegnano valori arbitrari.
Nelle versioni più vecchie di Fortran, il compilatore poteva lasciare il valore già presente nella memoria in cui la variabile è stata allocata. Alcuni compilatori generano persino un errore di esecuzione se una variabile viene utilizzata senza essere inizializzata.
Le variabili non inizializzate possono causare problemi seri, perché il loro comportamento varia tra diverse macchine. Un programma che funziona correttamente su un computer può fallire su un altro, oppure potrebbe funzionare in modo imprevedibile a seconda dei dati rimasti in memoria da esecuzioni precedenti.
Questa situazione è inaccettabile, e per evitarla dobbiamo sempre inizializzare le variabili nei nostri programmi.
Inizializzare sempre le variabili di un programma
Una buona prassi di programmazione in Fortran è quella di inizializzare sempre le variabili del programma.
Vediamo, ora, quali sono i metodi che possiamo usare per inizializzare le variabili
Metodi di Inizializzazione delle Variabili
Esistono tre tecniche principali per inizializzare le variabili in un programma Fortran:
- Istruzioni di assegnazione
- Istruzioni
READ
- Inizializzazione nella dichiarazione del tipo
Inizializzazione con un'istruzione di assegnazione
Un'istruzione di assegnazione attribuisce un valore a una variabile utilizzando il simbolo =
.
Ad esempio, nel codice seguente la variabile i
viene inizializzata a 1
, quindi sappiamo con certezza che l'istruzione WRITE
stamperà 1
.
PROGRAM init_1
INTEGER :: i
i = 1
WRITE (*,*) i
END PROGRAM init_1
Inizializzazione con READ
Un'istruzione READ
può essere utilizzata per assegnare valori a una variabile in fase di esecuzione, permettendo all'utente di inserire il valore manualmente.
A differenza dell'assegnazione diretta, questa tecnica permette di modificare il valore della variabile ogni volta che il programma viene eseguito.
PROGRAM init_2
INTEGER :: i
READ (*,*) i
WRITE (*,*) i
END PROGRAM init_2
Inizializzazione nella Dichiarazione del Tipo
Fortran permette di specificare il valore iniziale di una variabile direttamente nella sua dichiarazione.
Questa tecnica carica un valore nella variabile durante la compilazione, garantendo che la variabile abbia un valore definito prima dell'esecuzione del programma.
La sintassi è la seguente:
type :: var1 = valore, [var2 = valore, ...]
Si possono inizializzare più variabili in una singola istruzione separandole con virgole:
REAL :: time = 0.0, distance = 5128.
INTEGER :: loop = 10
In questo caso:
time
viene inizializzato a0.0
distance
viene inizializzato a5128.
loop
viene inizializzato a10
Nel seguente codice, la variabile i
viene inizializzata direttamente nella dichiarazione, quindi all'avvio del programma avrà il valore 1
, che verrà stampato dall'istruzione WRITE
:
PROGRAM init_3
INTEGER :: i = 1
WRITE (*,*) i
END PROGRAM init_3
In Sintesi
In questa lezione abbiamo studiato che:
- Le variabili non inizializzate possono contenere valori imprevedibili, portando a errori di runtime o comportamenti anomali.
- Fortran non assegna automaticamente un valore alle variabili, e il comportamento delle variabili non inizializzate dipende dal compilatore.
- Esistono tre modi per inizializzare una variabile:
- Assegnazione diretta con il simbolo
=
per impostare un valore iniziale. - Istruzione
READ (*,*)
per permettere all'utente di inserire il valore in fase di esecuzione. - Inizializzazione nella dichiarazione del tipo per pre-caricare un valore già alla compilazione.
- Dichiarare un valore iniziale direttamente nella dichiarazione della variabile garantisce che essa sia sempre definita prima dell'esecuzione del programma.
- È buona pratica inizializzare sempre le variabili per evitare problemi legati all'allocazione di memoria e garantire il corretto funzionamento del codice.