STRUTTURE CONDIZIONALI IN C SHARP
Nei programmi capita sovente di eseguire blocchi di codice quando si presentano determinate condizioni. Supponiamo ad esempio, per introdurre le strutture condizionali, che il nostro programma chieda all’utente la sua età e stabilisca in base a questa se può guidare o meno.
int age = 0;
Console.WriteLine(“Inserisci la tua età….”);
String eta = Console.ReadLine();
age = Convert.ToInt32(eta);
Console.WriteLine($”Hai introdotto {age} anni.”);
Il pezzo di codice che ti ho riportato sopra chiede tramite una istruzione Console.WriteLine di inserire l’età, poi con una istruzione Console.ReadLine() che ancora non hai mai visto ma che fondamentalmente non fa altro che prendere il valore in input che è stato digitato dall’utente e lo pone in una stringa. L’età di una persona è un valore numerico quindi con l’istruzione Convert.ToInt32(eta) trasformiamo l’input dell’utente in un intero. Ovviamente per motivi di semplicità il programma non controlla volutamente se l’utente anziché digitare un numero digita altre cose. In tal caso viene generata una eccezione dal metodo Convert.ToInt32 e il programma termina.
LO STATEMENT IF (SE)
if(condizione booleana){
Blocco di codice eseguito se la condizione è vera (true);
}
Una condizione booleana è una qualsiasi condizione che alla fine della valutazione restituisce un valore booleano (vero o falso, true o false) usando gli operatori logici che abbiamo già visto e gli operatori di confronto. In base a quanto detto il nostro programma potrebbe proseguire facendo un test condizionale per stabilire se l’utente è maggiorenne o meno.
int age = 0;
Console.WriteLine(“Inserisci la tua età….”);
String eta = Console.ReadLine();
age = Convert.ToInt32(eta);
Console.WriteLine($”Hai introdotto {age} anni.”);
if(age>= 18)
Console.WriteLine(“Sei maggiorenne quindi puoi guidare.”);
NB: Se il blocco di codice contiene solo una riga allora le parentesi graffe si possono omettere.
Ma rendiamo il codice ancora più specifico introducendo la clausola else (altrimenti) e la clausola else if (altrimenti se). Queste due clausole sono opzionali tuttavia se presente un’istruzione else questa va posta alla fine del blocco di codice.
int age = 0;
Console.WriteLine(“Inserisci la tua età….”);
String eta = Console.ReadLine();
age = Convert.ToInt32(eta);
Console.WriteLine($”Hai introdotto {age} anni.”);
if(age<18)
Console.WriteLine(“Sei minorenne quindi non puoi guidare.”);
else if(age==18)
Console.WriteLine(“Sei maggiorenne quindi puoi guidare.”);
else if(age>18 && age<90)
Console.WriteLine(“Sei maggiorenne quindi puoi guidare.”);
else
Console.WriteLine($”Valore non valido hai {age} anni”);
NB: Ti ho messo l’operatore di uguaglianza == per farti comprendere la differenza con l’operatore di assegnazione =
TAVOLE VERITA’ OPERATORI LOGICI
OPERATORE LOGICO AND (&&)
A |
B |
Y |
false |
false |
false |
false |
true |
false |
true |
false |
false |
true |
true |
true |
OPERATORE LOGICO OR (||)
A |
B |
Y |
false |
false |
false |
false |
true |
true |
true |
false |
true |
true |
true |
true |
OPERATORE LOGICO NOT (!)
A |
Y |
false |
true |
true |
false |
STRUTTURE CONDIZIONALI IN C SHARP L’OPERATORE CONDIZIONALE
Abbiamo detto che in C# gli operatori hanno nella maggior parte dei casi due operandi, poi ci sono gli operatori unari che abbiamo già visto e abbiamo accennato al fatto che il C# mette a disposizione un operatore ternario (o operatore condizionale) che agisce su tre operandi. Ora lo vedremo in dettaglio semplificando il codice precedentemente scritto in una sola istruzione.
(condizione booleana) ? valore true : valore false;
Il ? viene chiamato operatore ternario.
int age = 0;
Console.WriteLine(“Inserisci la tua età….”);
String eta = Console.ReadLine();
age = Convert.ToInt32(eta);
Console.WriteLine($”Hai introdotto {age} anni.”);
if(age<18)
Console.WriteLine(“Sei minorenne quindi non puoi guidare.”);
else if(age==18)
Console.WriteLine(“Sei maggiorenne quindi puoi guidare.”);
else if(age>18 && age<90)
Console.WriteLine(“Sei maggiorenne quindi puoi guidare.”);
else
Console.WriteLine($”Hai immesso un valore non valido hai {age} anni”);
//OPERATORE TERNARIO
String s = ((age==18 || (age>18 && age<90)) ? “Sei maggiorenne puoi guidare”:”Non hai l’età per guidare.”);
Come vedi l’operatore ternario ? diminuisce notevolmente la quantità di codice da scrivere, questo però va a scapito della leggibilità.
STRUTTURE CONDIZIONALI IN C SHARP LO STATEMENT SWITCH
Tipi ammessi nello switch:
- Boolean
- Integral Types
- String
- Enumeration
Se il valore della variabile è uguale al valore specificato in una istruzione case allora viene eseguito quel blocco di codice. È importante sottolineare che ogni case deve avere alla fine del blocco di codice un’istruzione break che interrompe immediatamente lo switch e il flusso del programma passa ad eseguire l’istruzione che si trova subito dopo lo switch. Anch’esso va racchiuso in una coppia di parentesi graffe. E’ possibile specificare l’istruzione default che viene eseguita quando nessuna istruzione case è andata in esecuzione.
CODICE VISUAL STUDIO CODE DEL POST
using System; namespace StruttureCondizionali { class Program { static void Main(string[] args) { int age = 0; Console.WriteLine("Inserisci la tua età...."); String eta = Console.ReadLine(); age = Convert.ToInt32(eta); Console.WriteLine($"Hai introdotto {age} anni."); if(age<18) Console.WriteLine("Nello stato Italiano sei minorenne quindi non puoi guidare."); else if(age==18) Console.WriteLine("Nello stato Italiano sei maggiorenne quindi puoi guidare."); else if (age>18 && age<90) Console.WriteLine("Nello stato Italiano sei maggiorenne quindi puoi guidare."); else Console.WriteLine($"Hai immesso un valore non valido hai {age} anni"); //L'OPERATORE TERNARIO */ Console.WriteLine((age==18 || (age>18 && age<90))? "Sei maggiorenne puoi guidare":"Non hai l'età per guidare."); //LO STATEMENT SWITCH int myVar = 50; switch (myVar) { case 10: { Console.WriteLine(10); break; } case 20: case 30: case 40: { Console.WriteLine("20 ,30, 40"); break; } case 50: { Console.WriteLine(50); break; } default: { Console.WriteLine("un altro valore"); break; } } /*--VEDIAMO COME POSSIAMO USARE LO SWITCH PER GESTIRE L'ETA' DI UNA PERSONA.*/ switch(age) { case <18: { Console.WriteLine("Nello stato Italiano sei minorenne quindi non puoi guidare."); break; } case 18: case int when (age > 18 && age < 90 ): { Console.WriteLine("Nello stato Italiano sei maggiorenne quindi puoi guidare."); break; } default: { Console.WriteLine($"Hai immesso un valore non valido {age} anni."); break; } } } } }
APPROFONDIMENTO SULLE STRUTTURE CONDIZIONALI
In C#, le strutture condizionali sono utilizzate per eseguire blocchi di codice diversi in base a determinate condizioni. Le principali strutture condizionali in C# sono if, else if, else, switch, e l’operatore ternario (?:). Ecco una panoramica di ciascuna di queste strutture:
If, Else If, Else
La struttura condizionale più comune è l’istruzione if, spesso combinata con else if e else.
Sintassi:
if (condizione)
{
// Codice da eseguire se la condizione è vera
}
else if (altraCondizione)
{
// Codice da eseguire se altraCondizione è vera
}
else
{
// Codice da eseguire se nessuna delle condizioni precedenti è vera
}
Esempio:
int x = 10;
if (x > 0)
{
Console.WriteLine(“x è positivo”);
}
else if (x < 0)
{
Console.WriteLine(“x è negativo”);
}
else
{
Console.WriteLine(“x è zero”);
}
Switch
La struttura switch è utile quando si desidera confrontare il valore di una variabile con molteplici valori possibili.
Sintassi:
switch (variabile)
{
case valore1:
// Codice da eseguire se variabile è uguale a valore1
break;
case valore2:
// Codice da eseguire se variabile è uguale a valore2
break;
// Altri casi…
default:
// Codice da eseguire se nessuno dei casi precedenti è soddisfatto
break;
}
Esempio:
int giorno = 3;
switch (giorno)
{
case 1:
Console.WriteLine(“Lunedì“);
break;
case 2:
Console.WriteLine(“Martedì“);
break;
case 3:
Console.WriteLine(“Mercoledì“);
break;
case 4:
Console.WriteLine(“Giovedì“);
break;
case 5:
Console.WriteLine(“Venerdì“);
break;
case 6:
Console.WriteLine(“Sabato“);
break;
case 7:
Console.WriteLine(“Domenica“);
break;
default:
Console.WriteLine(“Giorno non valido“);
break;
}
Operatore Ternario
L’operatore ternario (?:) è una forma concisa di scrivere un’istruzione if-else.
Sintassi:
condizione ? espressione1 : espressione2;
Esempio:
int x = 10;
string risultato = (x > 0) ? “x è positivo” : “x è negativo o zero“;
Console.WriteLine(risultato);
Lascia un commento