Informazioni sulla logica condizionale con istruzioni per rami e cicli
Questa esercitazione descrive come scrivere codice che esamina le variabili e modifica il percorso di esecuzione in base a queste variabili. Si userà il browser per scrivere codice C# in modo interattivo e visualizzare i risultati della compilazione ed esecuzione del codice. L'esercitazione contiene una serie di lezioni che esplorano i costrutti per rami e cicli in C#. Queste lezioni presentano le nozioni fondamentali del linguaggio C#.
Suggerimento
Per incollare un frammento di codice nella modalità messa a fuoco è consigliabile usare le scelte rapide da tastiera (CTRL + V o CMD + V).
Prendere decisioni usando l'istruzione if
Eseguire il codice seguente nella finestra interattiva. Selezionare il pulsante Attiva modalità messa a fuoco. Digitare quindi il blocco di codice seguente nella finestra interattiva e selezionare Esegui:
int a = 5;
int b = 6;
if (a + b > 10)
Console.WriteLine("The answer is greater than 10.");
Se si esegue il codice nell'ambiente personale, è consigliabile seguire invece le istruzioni per la versione locale.
Modificare la dichiarazione di b
in modo che la somma sia minore di 10:
int b = 3;
Fare di nuovo clic sul pulsante Esegui. Dato che la risposta è minore a 10, non viene visualizzato nulla. La condizione testata è false. Non esiste codice da eseguire perché è stato scritto solo uno dei possibili rami per un'istruzione if
, ovvero il ramo true.
Suggerimento
Mentre si impara a usare C# (o qualsiasi linguaggio di programmazione) sicuramente si commetteranno errori durante la scrittura del codice. Il compilatore troverà questi errori e li segnalerà. Quando l'output contiene messaggi di errore, esaminare attentamente il codice di esempio e il codice nella finestra interattiva per scoprire cosa correggere. Questo esercizio sarà utile per imparare la struttura del codice C#.
Questo primo esempio dimostra le potenzialità di if
e dei tipi booleani. Un valore booleano è una variabile che può avere uno di due valori: true
o false
. C# definisce un tipo speciale, bool
per le variabili booleane. L'istruzione if
controlla il valore di un bool
. Quando il valore è true
, viene eseguita l'istruzione che segue if
. In caso contrario, viene ignorato.
Questo processo di controllo di condizioni ed esecuzione di istruzioni in base a queste condizioni offre molte potenzialità. L'esplorazione continua nelle prossime lezioni.
Usare insieme if ed else
Per eseguire codice diverso per i rami true e false, è necessario creare un ramo else
che viene eseguito quando la condizione è false. Provare a eseguire quanto segue:
int a = 5;
int b = 3;
if (a + b > 10)
Console.WriteLine("The answer is greater than 10");
else
Console.WriteLine("The answer is not greater than 10");
L'istruzione che segue la parola chiave else
viene eseguita solo quando la condizione testata è false
. La combinazione di if
e else
con condizioni booleane offre tutte le potenzialità necessarie.
Importante
Il rientro applicato alle righe successive alle istruzioni if
e else
è pensato per i lettori umani.
Nel linguaggio C# i rientri o gli spazi vuoti non sono significativi.
L'istruzione che segue la parola chiave if
o else
verrà eseguita in base alla condizione. Tutti gli esempi in questa esercitazione seguono una procedura comune che prevede il rientro delle righe in base al flusso di controllo delle istruzioni.
Poiché il rientro non è significativo, è necessario usare {
e }
per indicare quando si vuole includere più di un'istruzione nel blocco con esecuzione condizionale. I programmatori C# usano in genere le parentesi graffe in tutte le clausole if
e else
. L'esempio seguente è identico a quello appena creato. Provare.
int a = 5;
int b = 3;
if (a + b > 10)
{
Console.WriteLine("The answer is greater than 10");
}
else
{
Console.WriteLine("The answer is not greater than 10");
}
Suggerimento
Nelle parti restanti di questa esercitazione, tutti gli esempi di codice includono le parentesi graffe conformemente alle consuetudini comuni.
È possibile testare condizioni più complesse:
int a = 5;
int b = 3;
int c = 4;
if ((a + b + c > 10) && (a == b))
{
Console.WriteLine("The answer is greater than 10");
Console.WriteLine("And the first number is equal to the second");
}
else
{
Console.WriteLine("The answer is not greater than 10");
Console.WriteLine("Or the first number is not equal to the second");
}
Il simbolo ==
verifica l'uguaglianza. Il simbolo ==
distingue il test per l'uguaglianza dall'assegnazione, illustrata in a = 5
.
&&
rappresenta "e" e significa che entrambe le condizioni devono essere true per eseguire l'istruzione nel ramo true. Questi esempi mostrano anche che è possibile includere più istruzioni in ogni ramo condizionale, a condizione di racchiuderle tra {
e }
.
È anche possibile usare ||
per rappresentare "o".
int a = 5;
int b = 3;
int c = 4;
if ((a + b + c > 10) || (a == b))
{
Console.WriteLine("The answer is greater than 10");
Console.WriteLine("Or the first number is equal to the second");
}
else
{
Console.WriteLine("The answer is not greater than 10");
Console.WriteLine("And the first number is not equal to the second");
}
Modificare i valori di a
, b
e c
e passare da &&
a ||
per esplorare. Si otterranno più informazioni sul funzionamento degli operatori &&
e ||
.
Usare i cicli per ripetere le operazioni
I cicli rappresentano un altro concetto importante per la creazione di programmi di più grandi dimensioni. I cicli vengono usati per ripetere istruzioni che si vuole eseguire più volte. Provare questo codice nella finestra interattiva:
int counter = 0;
while (counter < 10)
{
Console.WriteLine($"Hello World! The counter is {counter}");
counter++;
}
L'istruzione while
verifica una condizione ed esegue l'istruzione che segue while
. Ripeterà la verifica della condizione e l'esecuzione di tali istruzioni fino a quando la condizione è false.
Questo esempio include un altro operatore nuovo. I caratteri ++
dopo la variabile counter
rappresentano l'operatore di incremento. Questo operatore aggiunge 1 al valore del contatore e archivia il valore nella variabile contatore.
Importante
Assicurarsi che la condizione del ciclo while
passi a false quando si esegue il codice. In caso contrario, si crea un ciclo infinito in cui il programma non termina mai. Non è prevista una dimostrazione di questo scenario, perché in questo caso si verifica il timeout del motore che esegue il codice e il programma non produrrà alcun output.
Il ciclo while
testa la condizione prima di eseguire il codice dopo while
. Il ciclo do
... while
esegue prima il codice e poi controlla la condizione, Avrà l'aspetto seguente:
int counter = 0;
do
{
Console.WriteLine($"Hello World! The counter is {counter}");
counter++;
} while (counter < 10);
Questo ciclo do
e il ciclo while
precedente funzionano allo stesso modo.
Nella prossima lezione verrà presentata un'ultima istruzione di ciclo.
Usare il ciclo for
Un'altra istruzione di ciclo comune nel codice C# è il ciclo for
. Provare questo codice nella finestra interattiva:
for (int counter = 0; counter < 10; counter++)
{
Console.WriteLine($"Hello World! The counter is {counter}");
}
Questo codice esegue le stesse operazioni di ciclo while
e do
già usate. L'istruzione for
è composta da tre parti che ne controllano il funzionamento.
La prima parte è l'inizializzatore for: int counter = 0;
dichiara che counter
è la variabile di ciclo e imposta il valore iniziale su 0
.
La parte centrale è la condizione for: counter < 10
dichiara che questo ciclo for
continua l'esecuzione fino a quando il valore del contatore è minore di 10.
La parte finale è l'iteratore for: counter++
specifica come modificare la variabile di ciclo dopo l'esecuzione del blocco successivo all'istruzione for
. In questo caso, specifica che counter
deve essere incrementato di 1 a ogni esecuzione del blocco.
Sperimentare da soli questi elementi. Eseguire queste prove:
- Cambiare l'inizializzatore in modo che inizi da un valore diverso.
- Cambiare la condizione in modo che si interrompa in corrispondenza di un valore diverso.
Al termine, passare alla prossima lezione che prevede la scrittura di codice per usare quanto finora appreso.
In questa esercitazione non è illustrata un'altra istruzione di ciclo: l'istruzione foreach
. L'istruzione foreach
ripete l'istruzione per ogni elemento in una sequenza di elementi. Viene spesso usato con le raccolte, quindi viene trattato nell'esercitazione successiva.
Creazione di cicli annidati
Un ciclo while
, do
o for
può essere annidato all'interno di un altro ciclo per creare una matrice usando la combinazione di ogni elemento nel ciclo esterno con ogni elemento nel ciclo interno. A questo scopo, creare un set di coppie alfanumeriche per rappresentare righe e colonne.
Un ciclo for
può generare le righe:
for (int row = 1; row < 11; row++)
{
Console.WriteLine($"The row is {row}");
}
Un altro ciclo può generare le colonne:
for (char column = 'a'; column < 'k'; column++)
{
Console.WriteLine($"The column is {column}");
}
È possibile annidare un ciclo all'interno dell'altro per formare coppie:
for (int row = 1; row < 11; row++)
{
for (char column = 'a'; column < 'k'; column++)
{
Console.WriteLine($"The cell is ({row}, {column})");
}
}
Si noterà che il ciclo esterno viene incrementato una volta per ogni esecuzione completa del ciclo interno. Invertire l'annidamento di righe e colonne e visualizzare le modifiche.
Combinare rami e cicli
Dopo aver esaminato l'istruzione if
e i costrutti per i cicli nel linguaggio C#, provare a scrivere codice C# per ottenere la somma di tutti i numeri interi da 1 a 20 divisibili per 3. Ecco alcuni suggerimenti:
- L'operatore
%
restituisce il resto di un'operazione di divisione. - L'istruzione
if
offre la condizione per stabilire se un numero deve fare parte della somma. - Il ciclo
for
può essere utile per ripetere una serie di passaggi per tutti i numeri da 1 a 20.
Sperimentare e quindi controllare i risultati. Come risposta si riceverà il valore 63.
Completare l'esercizio
I risultati ottenuti sono simili a questi?
int sum = 0;
for (int number = 1; number < 21; number++)
{
if (number % 3 == 0)
{
sum = sum + number;
}
}
Console.WriteLine($"The sum is {sum}");
Complimenti.
È stata completata l'esercitazione interattiva "Rami e cicli". Selezionare il collegamento raccolte di elenchi qui sotto per avviare la prossima esercitazione interattiva oppure visitare il sito Web .NET per scaricare .NET SDK, creare un progetto nel proprio computer e continuare a scrivere codice. La sezione "Passaggi successivi" consente di tornare a queste esercitazioni.
Maggiori informazioni su questi concetti sono disponibili in questi articoli:
Hai un problema con questa sezione? In caso di problemi, fornisci feedback per contribuire al miglioramento della sezione.