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:

Diagramma di flusso dell'istruzione if
Figura 1: Diagramma di flusso dell'istruzione 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 ed END IF è solitamente indentato di un certo numero di spazi, anche se non è obbligatorio.
Consiglio

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:

ax^2 + bx + c = 0

La soluzione è data da:

x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}

Il termine \Delta = b^2 - 4ac è chiamato discriminante dell'equazione:

  • Se \Delta > 0, l'equazione ha due radici reali distinte.
  • Se \Delta = 0, l'equazione ha una radice reale ripetuta.
  • Se \Delta < 0, 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 di IF (...) THEN seguito da END 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.