Clausola ELSE e ELSE IF in Fortran
Le clausole ELSE
ed ELSE IF
in Fortran permettono di gestire più condizioni in un'istruzione IF
, eseguendo blocchi di codice diversi in base al valore di espressioni logiche.
Questo approccio consente di controllare il flusso del programma in modo strutturato ed efficiente, evitando annidamenti complessi di IF
.
In questa lezione analizziamo la sintassi di ELSE
ed ELSE IF
, le regole di utilizzo e un esempio pratico applicato alla classificazione delle radici di un'equazione quadratica.
Le Clausole ELSE
ed ELSE IF
All'interno di un blocco IF
, un blocco di codice viene eseguito solo se l'espressione logica di controllo è vera.
Se l'espressione logica è falsa, tutte le istruzioni nel blocco vengono saltate.
Tuttavia, in molti casi, potremmo voler eseguire diverse istruzioni a seconda di condizioni differenti.
Per gestire più condizioni, possiamo usare le clausole ELSE
e ELSE IF
, che estendono l'istruzione IF
.
La sintassi di un blocco IF
che contiene anche le clausole ELSE
ed ELSE IF
è la seguente:
IF (espressione_logica_1) THEN
! Blocco 1
Istruzione 1.1
Istruzione 1.2
...
ELSE IF (espressione_logica_2) THEN
! Blocco 2
Istruzione 2.1
Istruzione 2.2
...
ELSE
! Blocco 3
Istruzione 3.1
Istruzione 3.2
...
END IF
Quando si utilizzano ELSE
ed ELSE IF
, il programma esegue le seguenti operazioni:
- Se
espressione_logica_1
è vera, viene eseguito Blocco 1 e il resto viene saltato. - Se
espressione_logica_1
è falsa, il programma controllaespressione_logica_2
. - A questo punto, se
espressione_logica_2
è vera, viene eseguito Blocco 2 e il resto viene saltato. - Se nessuna delle espressioni logiche è vera, viene eseguito Blocco 3 (clausola
ELSE
).
Il diagramma di flusso per questa costruzione è mostrato nella figura che segue:
Nel realizzare un blocco IF
che contiene anche le clausole ELSE
ed ELSE IF
devono essere rispettate alcune regole fondamentali:
ELSE
edELSE IF
devono essere scritte su righe separate.- Non devono avere un numero di istruzione sulla stessa riga.
- Può esserci un numero qualsiasi di clausole
ELSE IF
, ma solo un'istruzioneELSE
alla fine. - Una volta trovata un'espressione vera, il codice associato viene eseguito e il programma salta le condizioni successive.
Esempio: Verifica del Discriminante di un'Equazione Quadratica
Riprendiamo il calcolo del discriminante
Vogliamo determinare se l'equazione ha radici complesse, reali distinte o reali uguali.
Una possibile implementazione in Fortran utilizzando le clausole ELSE
ed ELSE IF
è la seguente:
PROGRAM ControllaRadici2
REAL :: a, b, c, discriminante
! Inserimento dei coefficienti dell'equazione
WRITE (*,*) 'Inserisci i coefficienti dell''equazione quadratica:'
READ (*,*) a, b, c
! Calcolo del discriminante
discriminante = b**2 - 4. * a * c
! Verifica del discriminante
IF (discriminante > 0.) THEN
WRITE (*,*) 'L''equazione ha due radici reali distinte.'
ELSE IF (discriminante == 0.) THEN
WRITE (*,*) 'L''equazione ha una radice reale ripetuta.'
ELSE
WRITE (*,*) 'L''equazione ha due radici complesse.'
END IF
END PROGRAM ControllaRadici2
In Sintesi
In questa lezione abbiamo studiato che:
- Un'istruzione
IF
esegue un blocco di codice solo se la condizione è vera, altrimenti il codice viene saltato. - La clausola
ELSE IF
permette di valutare più condizioni alternative, eseguendo il primo blocco di codice corrispondente a una condizione vera. - La clausola
ELSE
definisce un blocco di codice eseguito se nessuna condizione precedente è vera, garantendo una gestione completa dei casi possibili. - La sintassi richiede che
ELSE
edELSE IF
siano su righe separate, senza numeri di istruzione. - Si può usare un numero qualsiasi di
ELSE IF
, ma solo unELSE
alla fine, che viene eseguito solo se tutte le condizioni precedenti risultano false. - Un esempio pratico applica
ELSE
edELSE IF
alla classificazione delle radici di un'equazione quadratica, distinguendo tra radici reali distinte, uguali o complesse. - L'uso di
ELSE IF
evita il bisogno di piùIF
annidati, migliorando la leggibilità e la struttura del codice.