back to top

Istruzioni condizionali C#: i costrutti switch e if/else

Le istruzioni condizionali, in qualsiasi linguaggio di programmazione, permettono di verificare determinate condizioni come ad esempio lโ€™uguaglianza, la disuguaglianza o semplicemente se un elemento รจ maggiore di un altro. Sono utilizzate per consentire al programma di "prendere decisioni" a seconda del verificarsi o meno di una data condizione. In C# esistono due costrutti fondamentali, ovvero switch e if/else. Vediamoli nel dettaglio.

Switch

Per prima cosa osserviamo il costrutto usato da C# quando vogliamo testare un certo valore e procedere in diversi modi a seconda delle varie possibilitร , ovvero il cosiddetto comando switch (in altri linguaggi noto anche come Select Case).

Pubblicitร 

Osserviamo questo codice di esempio:

using System;
namespace test1
{
 class Program
 {
  public static void Main(string[] args)
  {
   Console.WriteLine("Scegli: inserire un valore da 1 a 2");
   int scelta = int.Parse(Console.ReadLine());
   string output="Nessuno";
   
   switch(scelta)
   {
    case 0:
     goto default;
    case 1:
     output="Hai scelto l'opzione numero 1";
     break;
    case 2:
     output="Hai scelto l'opzione numero 2";
     break;
    default:
     output="Inserire un valore corretto!";
     break;   
   }
   Console.WriteLine(output);
   Console.ReadKey(true);
  }
 }
}

Il costrutto switch รจ molto semplice: viene valutata unโ€™espressione, nel nostro caso viene valutato il valore della variabile scelta, inserita dallโ€™utente; nel caso che valga 0 diciamo al compilatore tramite il comando goto di spostarsi alla porzione di codice identificata da default; nel caso valga 1 valorizziamo la variabile output, e con il comando break, diciamo di uscire da tutto il costrutto switch; allโ€™interno di ogni case dobbiamo per forza usare o break o goto.

If / Else

Osserviamo ora il costrutto if / else, che ci serve per valutare se una espressione รจ vera o falsa. Vediamo un semplice esempio:

if(1==5)   
  Console.WriteLine ("1 รจ uguale a 5");
else 
  Console.WriteLine ("1 รจ diverso da 5");

In questo caso viene valutata una espressione racchiusa tra le parentesi e se si verifica viene eseguito il codice subito sotto, mentre se non si verifica viene eseguito il codice subito sotto else.

Se vogliamo eseguire piรน istruzioni allโ€™interno dello stesso blocco possiamo usare ancora una volta le parentesi graffe, in questo modo:

if(1==5)   
  Console.WriteLine ("1 รจ uguale a 5");
else
{
  Console.WriteLine ("1 รจ diverso da 5");
  Console.WriteLine ("Forse era ovvio!");
}

Possiamo utilizzare per la comparazione dei valori anche altri operatori

  • > maggiore
  • == uguale
  • < minore
  • != diverso

Possiamo usare gli operatori and

if(5==5 && 1==1)

e or

if(5==5 || 1==1)

infine possiamo usare anche else if

if(5!=5 && 1==1)   
  Console.WriteLine ("Impossibile");
else if (1==3)
  Console.WriteLine ("1 รจ diverso da 5");
else
    Console.WriteLine ("Ultima opzione");

In questโ€™ultimo caso il codice dopo lโ€™else viene eseguito se non si verifica nessuna delle altre condizioni, come avveniva in switch con default.

Il costrutto if con else if, ha piรน o meno la stessa funzione dello switch.

Lโ€™operatore ternario in C#

Possiamo anche usare una forma abbreviata (si parla di operatore ternario) per valutare unโ€™espressione

int c = (d < 10) ? 5 : 15

In questo esempio viene assegnato un valore alla variabile c in base al valore di d: se รจ minore di 10 si assegna il valore 5, altrimenti il 15. In pratica a seconda che la condizione sia vera o falsa viene restituita la prima espressione (quella dopo il punto di domanda) o la seconda (quella dopo i due punti).

Pubblicitร