if … then … elif … else

Uno dei costrutti più facili da capire in F# è il costrutto if … then, anche perché è estremamente simile all’istruzione If … Then di Visual Basic.

La forma più semplice è quella che potete vedere in questo frammento di codice:

System.Console.Write("Inserisci la tua età: ")
let eta = System.Console.ReadLine()
let numero = int eta
if numero < 18 then
   System.Console.WriteLine("Sei minorenne!")
else
   System.Console.WriteLine("Sei maggiorenne")

System.Console.ReadLine() |> ignore

    Il funzionamento è il seguente:

  1. nella prima riga viene mostrata una stringa che rappresenta il “prompt”, cioè la richiesta all’utente;

  2. nella seconda riga leggiamo una stringa di input dall’utente e la associamo all’identificatore “eta”;

  3. nella terza riga effettuiamo una conversione della stringa in intero (int) e associamo il risultato all’identificatore numero;

  4. nella quarta riga inizia il costrutto “if … then” con il test sul numero inserito. Il test verifica se l’età è inferiore a 18. Notare che il test fornisce un risultato che è un booleano (vero o falso);

  5. la quinta riga viene eseguita se l’età è inferiore a 18 e quindi visualizza la stringa “Sei minorenne!”;

  6. nella sesta riga troviamo la parola “else” che indica un ramo alternativo del costrutto “if … then” che viene percorso se il test è falso;

  7. nella settima riga viene visualizzata la stringa “Sei maggiorenne”;

  8. infine, nell’ultima riga, attendiamo la pressione di un tasto per chiudere la finestra della Console (altrimenti non vedremmo il risultato del programma). Notare l’operatore di “pipe” |> che invia il risultato della funzione a “ignore”, per ignorarlo ed evitare segnalazioni di errore da parte del compilatore.

    1. Una possibile variante del costrutto “if … then” prevede l’aggiunta di ulteriori “rami” di scelta, con la parola “elif” (che in Visual Basic si leggerebbe Else If).

      System.Console.Write("Inserisci la tua età: ")
      let eta = System.Console.ReadLine()
      let numero = int eta
      if numero < 18 then
         System.Console.WriteLine("Sei minorenne!")
      elif numero > 64 then
         System.Console.WriteLine("Sei anziano")
      else
         System.Console.WriteLine("Sei maggiorenne")
      
      System.Console.ReadLine() |> ignore

      Come potete vedere abbiamo aggiunto il ramo “elif” che verifica se l’età è superiore a 64 e, in tal caso, visualizza la stringa “Sei anziano” (il termine “anziano” viene comunemente utilizzato per definire le persone da 65 anni in su, mentre “grande anziano” è la persona con un’età uguale o superiore a 75 anni).

      Esploriamo anche la possibilità di aggiungere un numero indefinito di “elif”:

      System.Console.Write("Inserisci la tua età: ")
      let eta = System.Console.ReadLine()
      let numero = int eta
      if numero < 18 then
         System.Console.WriteLine("Sei minorenne!")
      elif numero > 74 then
         System.Console.WriteLine("Sei un 'grande anziano'")
      elif numero > 64 then
         System.Console.WriteLine("Sei anziano")
      else
         System.Console.WriteLine("Sei maggiorenne")
      
      System.Console.ReadLine() |> ignore

      Una cosa che si può fare in F#, diversamente da Visual Basic e da C#, è utilizzare il costrutto “if … then” come funzione, all’interno di un’istruzione di assegnazione. Ecco un esempio:

      System.Console.Write("Inserisci la tua età: ")
      let eta = System.Console.ReadLine()
      let numero = int eta
      let risposta = 
          if numero < 18 then
             "Sei minorenne!"
          elif numero > 74 then
             "Sei un 'grande anziano'"
          elif numero > 64 then
             "Sei anziano"
          else
             "Sei maggiorenne"
      System.Console.WriteLine(risposta)
      System.Console.ReadLine() |> ignore

      Come potete vedere, nella quarta riga abbiamo definito l’identificatore “risposta” e gli abbiamo assegnato il risultato del costrutto “if … then”. Inoltre, nei vari rami di questo costrutto abbiamo inserito solamente la stringa da restituire e che sarà il valore che verrà assegnato all’identificatore “risposta”. Subito dopo abbiamo inserito un’istruzione per scrivere il risultato nella Console.

      Pubblicato il 24 luglio 2015 su Novità. Aggiungi ai preferiti il collegamento . Lascia un commento.

      Lascia un commento

      Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

      Logo WordPress.com

      Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

      Foto Twitter

      Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

      Foto di Facebook

      Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

      Google+ photo

      Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

      Connessione a %s...

      %d blogger cliccano Mi Piace per questo: