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 (...) THENdeve essere scritto su un'unica riga.- Le istruzioni da eseguire devono essere su righe separate sotto
IF (...) THEN. END IFdeve essere scritto su una riga separata.- Per leggibilità, il blocco di codice tra
IFedEND 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
IFconsente di eseguire un blocco di codice solo se una condizione è vera, evitando l'esecuzione quando la condizione è falsa. - La sintassi dell'istruzione
IFprevede l'uso diIF (...) THENseguito daEND IF, con le istruzioni da eseguire su righe separate. - Per migliorare la leggibilità, il codice all'interno dell'istruzione
IFdovrebbe 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.