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).

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Ã