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:
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 tipobool
che restituiscetrue
ofalse
.istruzione
è l'istruzione da eseguire se la condizione è vera.
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 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.
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
.