Istruzione IF in Fortran
L'istruzione IF
in Fortran è una delle strutture di controllo più utilizzate per eseguire blocchi di codice solo quando una condizione logica risulta vera.
Questa struttura consente di implementare decisioni nei programmi, migliorando la gestione del flusso di esecuzione.
In questa lezione analizziamo la sintassi dell'istruzione IF
, il suo funzionamento, le buone pratiche per scrivere codice leggibile e un esempio pratico applicato alla verifica delle equazioni quadratiche.
Istruzione IF
La forma più comune dell'istruzione IF
in Fortran è il cosiddetto Blocco IF
.
Questa struttura specifica che un blocco di codice verrà eseguito solo se una determinata espressione logica è vera.
La sintassi del Blocco IF
è la seguente:
IF (espressione_logica) THEN
Istruzione 1
Istruzione 2
...
END IF
Se l'espressione logica è vera, il programma esegue tutte le istruzioni tra IF
ed END IF
.
Se l'espressione logica è falsa, il programma salta il blocco di istruzioni e prosegue con l'istruzione successiva dopo END IF
.
La che segue mostra il diagramma di flusso di un blocco IF
:
Per realizzare un blocco IF
devono essere rispettate alcune regole fondamentali:
IF (...) THEN
deve essere scritto su un'unica riga.- Le istruzioni da eseguire devono essere su righe separate sotto
IF (...) THEN
. END IF
deve essere scritto su una riga separata.- Per leggibilità, il blocco di codice tra
IF
edEND IF
è solitamente indentato di un certo numero di spazi, anche se non è obbligatorio.
Usare l'indentazione per evidenziare le istruzioni che appartengono ad un Blocco IF
Indentiamo sempre il corpo di un Blocco IF
di almeno due spazi per migliorare la leggibilità del codice.
Esempio: Controllo delle radici di un'equazione di secondo grado
Consideriamo l'equazione quadratica nella forma:
La soluzione è data da:
Il termine
- Se
, l'equazione ha due radici reali distinte. - Se
, l'equazione ha una radice reale ripetuta. - Se
, l'equazione ha due radici complesse.
Se vogliamo verificare se un'equazione ha radici complesse e notificare l'utente, possiamo usare l'istruzione IF
PROGRAM ControllaRadici
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
IF ( discriminante < 0. ) THEN
WRITE (*,*) 'L''equazione ha due radici complesse.'
END IF
END PROGRAM ControllaRadici
Istruzione IF
su singola riga
In Fortran è possibile anche utilizzare un'altra forma di istruzione IF
su singola riga, che risulta più compatta.
La sintassi da adoperare in tal caso è la seguente:
IF (espressione_logica) Istruzione
Dove Istruzione
è l'istruzione da eseguire se l'espressione logica è vera.
Usando l'istruzione IF
in questa forma, il programma esegue l'istruzione solo se l'espressione logica è vera, senza la necessità di specificare THEN
e END IF
. In caso contrario, il programma salta l'istruzione e prosegue con l'esecuzione.
Questa forma è del tutto equivalente al caso di un blocco IF
con una sola istruzione. Per cui è da preferire quando si ha una sola istruzione da eseguire.
In Sintesi
In questa lezione abbiamo studiato che:
- L'istruzione
IF
consente di eseguire un blocco di codice solo se una condizione è vera, evitando l'esecuzione quando la condizione è falsa. - La sintassi dell'istruzione
IF
prevede l'uso diIF (...) THEN
seguito daEND IF
, con le istruzioni da eseguire su righe separate. - Per migliorare la leggibilità, il codice all'interno dell'istruzione
IF
dovrebbe essere rientrato di almeno due spazi, anche se non è obbligatorio. - L'uso dell'istruzione
IF
è essenziale per il controllo del flusso nei programmi, consentendo decisioni basate su espressioni logiche. - Un esempio pratico di Block IF è la verifica del discriminante di un'equazione quadratica, per determinare se ha radici reali o complesse.
- Il diagramma di flusso aiuta a visualizzare l'esecuzione della condizione, mostrando come il programma esegue o salta il blocco di codice in base al risultato della condizione logica.
Nella prossima lezione analizzeremo la clausola ELSE
per gestire condizioni alternative all'interno di un blocco IF
.