C# Language
Dichiarazioni condizionali
Ricerca…
Istruzione If-Else
La programmazione in generale richiede spesso una decision
o una branch
all'interno del codice per tenere conto di come il codice opera in presenza di input o condizioni differenti. All'interno del linguaggio di programmazione C # (e della maggior parte dei linguaggi di programmazione per questo argomento), il modo più semplice e talvolta più utile di creare un ramo all'interno del programma è attraverso un'istruzione If-Else
.
Supponiamo di avere un metodo (ovvero una funzione) che accetta un parametro int che rappresenterà un punteggio fino a 100, e il metodo stamperà un messaggio che dice se passiamo o meno.
static void PrintPassOrFail(int score)
{
if (score >= 50) // If score is greater or equal to 50
{
Console.WriteLine("Pass!");
}
else // If score is not greater or equal to 50
{
Console.WriteLine("Fail!");
}
}
Osservando questo metodo, si può notare questa linea di codice ( score >= 50
) all'interno dell'istruzione If
. Questo può essere visto come una condizione boolean
, dove se la condizione viene valutata uguale a true
, allora viene eseguito il codice che si trova tra if
{ }
.
Ad esempio, se questo metodo è stato chiamato in questo modo: PrintPassOrFail(60);
, l'output del metodo sarebbe una stampa console che dice Pass! poiché il valore del parametro 60 è maggiore o uguale a 50.
Tuttavia, se il metodo è stato chiamato come: PrintPassOrFail(30);
, l'output del metodo verrebbe stampato dicendo Fail! . Questo perché il valore 30 non è maggiore o uguale a 50, quindi viene eseguito il codice tra else
{ }
anziché l'istruzione If
.
In questo esempio, abbiamo detto che il punteggio dovrebbe arrivare a 100, che non è stato affatto calcolato. Per tenere conto del punteggio che non va oltre il 100 o eventualmente scendere al di sotto di 0, vedere l'esempio dell'istruzione If-Else If-Else .
If-Else If-Else Statement
Seguendo l'esempio dell'istruzione If-Else , è giunto il momento di introdurre l'istruzione Else If
. L'istruzione Else If
segue direttamente dopo l'istruzione If
nella struttura If-Else If-Else , ma intrinsecamente ha una sintassi simile all'istruzione If
. È usato per aggiungere più rami al codice di quello che può fare una semplice istruzione If-Else .
Nell'esempio di If-Else Statement , l'esempio ha specificato che il punteggio sale a 100; tuttavia non ci sono mai stati controlli contro questo. Per risolvere questo problema, è possibile modificare il metodo dall'istruzione If-Else in modo che assomigli a questo:
static void PrintPassOrFail(int score)
{
if (score > 100) // If score is greater than 100
{
Console.WriteLine("Error: score is greater than 100!");
}
else if (score < 0) // Else If score is less than 0
{
Console.WriteLine("Error: score is less than 0!");
}
else if (score >= 50) // Else if score is greater or equal to 50
{
Console.WriteLine("Pass!");
}
else // If none above, then score must be between 0 and 49
{
Console.WriteLine("Fail!");
}
}
Tutte queste affermazioni funzioneranno in ordine dall'alto verso il basso fino a quando una condizione non sarà soddisfatta. In questo nuovo aggiornamento del metodo, abbiamo aggiunto due nuovi rami per ospitare ora il punteggio in uscita .
Ad esempio, se ora chiamiamo il metodo nel nostro codice come PrintPassOFail(110);
, l'output sarebbe una stampa della console che dice Errore: il punteggio è maggiore di 100! ; e se abbiamo chiamato il metodo nel nostro codice come PrintPassOrFail(-20);
, l'output direbbe Errore: il punteggio è inferiore a 0! .
Cambia istruzioni
Un'istruzione switch consente di verificare una variabile per l'uguaglianza rispetto a un elenco di valori. Ogni valore è chiamato caso e la variabile che viene attivata viene controllata per ogni caso di commutazione.
Un'istruzione switch
è spesso più concisa e comprensibile rispetto a if...else if... else..
istruzioni quando si testano più valori possibili per una singola variabile.
La sintassi è la seguente
switch(expression) {
case constant-expression:
statement(s);
break;
case constant-expression:
statement(s);
break;
// you can have any number of case statements
default : // Optional
statement(s);
break;
}
ci sono cose settarie che devono essere considerate mentre si usa l'istruzione switch
- L'espressione utilizzata in un'istruzione switch deve avere un tipo integrale o enumerato oppure essere di un tipo di classe in cui la classe ha una singola funzione di conversione in un tipo integrale o enumerato.
- È possibile avere un numero qualsiasi di istruzioni caso all'interno di un interruttore. Ogni caso è seguito dal valore da confrontare con e dai due punti. I valori da confrontare devono essere unici all'interno di ciascuna istruzione switch.
- Un'istruzione switch può avere un caso predefinito facoltativo. Il caso predefinito può essere utilizzato per eseguire un'attività quando nessuno dei casi è vero.
- Ogni caso deve terminare con un'istruzione
break
meno che non sia un'istruzione vuota. In tal caso l'esecuzione continuerà nel caso sottostante. L'istruzione break può anche essere omessa quando viene utilizzata un'istruzionegoto case
return
,throw
ogoto case
.
L'esempio può essere dato con i gradi saggi
char grade = 'B';
switch (grade)
{
case 'A':
Console.WriteLine("Excellent!");
break;
case 'B':
case 'C':
Console.WriteLine("Well done");
break;
case 'D':
Console.WriteLine("You passed");
break;
case 'F':
Console.WriteLine("Better try again");
break;
default:
Console.WriteLine("Invalid grade");
break;
}
Se le condizioni dell'istruzione sono espressioni e valori booleani standard
La seguente dichiarazione
if (conditionA && conditionB && conditionC) //...
è esattamente equivalente a
bool conditions = conditionA && conditionB && conditionC;
if (conditions) // ...
in altre parole, le condizioni all'interno dell'istruzione "if" formano semplicemente un'espressione booleana ordinaria.
Un errore comune durante la scrittura di istruzioni condizionali è di confrontare esplicitamente con true
e false
:
if (conditionA == true && conditionB == false && conditionC == true) // ...
Questo può essere riscritto come
if (conditionA && !conditionB && conditionC)