Istruzione if in C#

I programmi più complessi, oltre ad eseguire istruzioni in maniera sequenziale, ossia dall'inizio alla fine, devono essere in grado di prendere decisioni in base a certe condizioni.

Per far questo, i linguaggi di programmazione mettono a disposizione delle istruzioni condizionali che permettono di eseguire un'istruzione solo se una certa condizione è vera.

Il linguaggio C# non è da meno e mette a disposizione l'istruzione if che consente di eseguire un'istruzione soltanto se una condizione è vera.

In questa lezione inizieremo lo studio delle istruzioni condizionali in C# partendo dall'istruzione if. Inizieremo a scrivere un programma che completeremo poi nelle prossime lezioni.

Istruzione if

Supponiamo di voler scrivere un programma che prende in ingresso il voto medio dato ad un film e lo converta in una valutazione da 1 a 5 stelle. Il voto di ingresso è espresso con un numero da 0, ossia un film orribile, fino a 100, ossia un film eccezionale. La valutazione in stelle è la seguente:

  • Voto da 0 a 20: ★☆☆☆☆
  • Voto da 21 a 40: ★★☆☆☆
  • Voto da 41 a 60: ★★★☆☆
  • Voto da 61 a 80: ★★★★☆
  • Voto da 81 a 100: ★★★★★

Con le conoscenze acquisite finora, non c'è modo di scrivere un programma del genere.

Dobbiamo introdurre un nuovo concetto: l'istruzione if.

Mentre prima i nostri programmi eseguivano le proprie istruzioni dall'inizio alla fine, con l'istruzione if possiamo introdurre la possibilità di eseguire un'istruzione solo se una certa condizione è vera. Per questo motivo, l'istruzione if appartiene a quel gruppo di istruzioni che prende il nome di istruzioni condizionali.

Proviamo a scrivere una prima versione del nostro programma. Sappiamo che dobbiamo richiedere all'utente di inserire il voto medio del film e poi convertirlo in stelle. Per fare ciò dobbiamo memorizzare il voto in una variabile di tipo int e poi agire su di essa.

Console.WriteLine("Inserisci il voto medio del film:");
int voto = Convert.ToInt32(Console.ReadLine());

/* Convertiamo il voto in stelle */

Adesso utilizziamo l'istruzione if per mostrare il punteggio in stelle nel caso in cui il film abbia ottenuto il voto massimo: 100.

Console.WriteLine("Inserisci il voto medio del film:");
int voto = Convert.ToInt32(Console.ReadLine());

/* Convertiamo il voto in stelle */
if (voto == 100)
    Console.WriteLine("Il film ha ottenuto ★★★★★");

Utilizzando l'istruzione if, in questo caso, stiamo dicendo al programma di eseguire l'istruzione Console.WriteLine("Il film ha ottenuto ★★★★★"); solo se la variabile voto è uguale a 100. In caso contrario, non mostriamo nulla.

La sintassi di un'istruzione if è la seguente:

if (condizione)
    istruzione;

Dove condizione è un'espressione di tipo bool, ossia un'espressione che restituisce un valore vero o falso. Le parentesi attorno alla condizione sono obbligatorie.

Nel programma di sopra abbiamo introdotto un primo operatore di confronto: l'operatore di uguaglianza ==. Questo operatore confronta due valori e restituisce true se i due valori sono uguali, false altrimenti. Da notare che l'operatore di uguaglianza è diverso dall'operatore di assegnamento: è composto da due simboli di uguale == e, infatti, viene spesso chiamato operatore doppio uguale.

Ancora non abbiamo completato il nostro programma. Ci mancano ancora dei tasselli per poter convertire il voto in stelle. Tuttavia, abbiamo introdotto alcuni concetti importanti:

Definizione

Istruzione if in C#

L'istruzione if consente di eseguire un'istruzione soltanto se una condizione risulta vera.

La sintassi è:

if (condizione)
    istruzione;

Dove:

  • condizione è un'espressione di tipo bool che restituisce true o false.
  • istruzione è l'istruzione da eseguire se la condizione è vera.
Definizione

Operatore di uguaglianza ==

L'operatore di uguaglianza == confronta due valori e restituisce true se i due valori sono uguali, false altrimenti.

Indentazione

Nel codice di esempio, sopra, abbiamo scritto l'istruzione if inserendo degli spazi prima dell'istruzione da eseguire.

Questa pratica è molto comune e prende il nome di indentazione. Si tratta di inserire degli spazi o dei caratteri di tabulazione, premendo cioè il tasto tab, in maniera tale da evidenziare la struttura del codice. In questo caso, l'istruzione Console.WriteLine("Il film ha ottenuto ★★★★★"); è indentata rispetto all'istruzione if (voto == 100) e, ad occhio, subito siamo in grado di capire che essa è collegata all'istruzione if.

Nel linguaggio C# l'indentazione non ha alcun valore per il compilatore che la ignora. Ma risulta fondamentale per una questione di leggibilità.

Avremmo potuto, infatti, scrivere il nostro codice in questo modo:

if (voto == 100)
Console.WriteLine("Il film ha ottenuto ★★★★★");

Ma il codice risulta molto più difficile da leggere.

Infatti, chi legge il codice di sopra potrebbe concludere, in maniera erronea, che l'istruzione WriteLine venga sempre eseguita.

Un'altro modo di legare un'istruzione all'istruzione if è quello di scrivere il tutto su di un'unica riga:

if (voto == 100) Console.WriteLine("Il film ha ottenuto ★★★★★");

Si tratta di un altro stile utilizzato spesso quando l'istruzione da eseguire è molto breve.

L'indentazione viene molto usata non solo per le istruzioni condizionali ma anche per i cicli e per i metodi, come vedremo nelle prossime lezioni.

Definizione

Indentazione

L'indentazione è la pratica di inserire degli spazi o dei caratteri di tabulazione per evidenziare la struttura del codice. L'indentazione non ha alcun valore per il compilatore ma è fondamentale per la leggibilità del codice.

In Sintesi

In questa lezione abbiamo introdotto l'istruzione if che consente di eseguire un'istruzione soltanto se una condizione è vera. Abbiamo visto la sintassi di base dell'istruzione if e l'operatore di uguaglianza ==. Abbiamo anche introdotto il concetto di indentazione.

Ci siamo limitati, però, ad eseguire una singola istruzione condizionata e non abbiamo ancora completato il nostro programma. Nelle prossime lezioni vedremo come completare il programma e come gestire più condizioni.

In particolare, nella prossima lezione introdurremo il concetto di blocco di codice che ci permette di racchiudere più istruzioni all'interno di un'istruzione if.