# C sharp/Strutture di controllo

C sharp
Copertina Tutti i moduli · Sviluppo
    CopertinaC sharp/Copertina
* IntroduzioneC sharp/Introduzione
* Basi del linguaggio
** SintassiC sharp/Sintassi
** VariabiliC sharp/Variabili
** OperatoriC sharp/Operatori
** Strutture dati
** Strutture di controlloC sharp/Strutture di controllo
** Funzioni
** Delegati ed eventiC sharp/Delegati ed eventi
** Eccezioni
* Classi e oggetti
** ClassiC sharp/Classi
** Oggetti
** Namespace
* Il framework .NET
** Introduzione al frameworkC sharp/Ambiente di sviluppo
** Applicazioni per la console
** Applicazioni grafiche per Windows
* Visual C sharp
Modifica il sommario
In questo capitolo verranno trattate le strutture di controllo (o istruzioni di flusso) che, tramite una particolare sintassi, permettono di modificare la normale struttura sequenziale del programma. Il C# eredita grosso modo le sue strutture di controllo dal C. Esse comprendono:

## Strutture alternative

Le strutture di selezione binaria comportano l'esecuzione di una o più operazioni se una data condizione è vera ed eventualmente un'altra serie di operazioni nel caso tale condizione sia falsa.

### If - else if - else

Nel C sharp, la selezione binaria è rappresentata dal blocco if (se):
Se si vuole fare eseguire al programma un'istruzione anche nel caso la condizione sia falsa, si aggiunge il blocco else (altrimenti) seguito dall'istruzione da eseguire.
Il programma verifica la condizione contenuta tra parentesi e, se è vera, esegue l'istruzione A; se la condizione risulta falsa, invece, esegue l'istruzione B.
Una condizione è solitamente il risultato di una espressione in cui compaiono operatori logici o relazionali o che comunque restituiscono un valore booleano. Ad esempio:
Se le istruzioni sono più di una, si racchiudono tra parentesi graffe:
È possibile fare gestire al programma condizioni multiple utilizzando la sintassi seguente:
Il programma verifica la condizione 1. Se è vera esegue le istruzioni A e esce dalla struttura di controllo, se è falsa passa a verificare la condizione 2 (else if, altrimenti se), e così via. Se nessuna delle condizioni indicate risulta essere vera, il programma esegue le istruzioni che seguono la dichiarazione else.
Le condizioni vengono quindi verificate nell'ordine in cui sono scritte e, una volta incontrata una condizione vera, le altre, anche se vere, vengono ignorate.
Se si vuole che tutte le condizioni vengano verificate, occorre utilizzare blocchi if separati.

### switch - case

L'istruzione switch è una forma compatta della struttura di selezione alternativa, che, dopo aver valutato un'espressione, esegue il codice contenuto in seguito all'etichetta case che specifica il risultato ottenuto.

#### Sintassi

La sintassi è la seguente:

#### Spiegazione del codice

Nella parentesi seguente la parola chiave switch è indicata un'espressione da valutare, che può essere una variabile, un'operazione aritmetica o logica.
Il programma confronta il risultato dell'espressione con i valori indicati nelle varie etichette case presenti nel blocco di parentesi graffe e il controllo viene trasferito all'istruzione case che corrisponde al valore dello switch, fino al raggiungimento di un'istruzione break che segna l'uscita dal blocco switch. È necessario inserire l'istruzione break al termine di ogni blocco case.
Se non esiste etichetta case corrispondente al risultato dell'espressione, il programma eseguirà le istruzioni contenute nel blocco default, se questo è presente, altrimenti uscirà dal blocco switch.

## Strutture iterative

Le strutture iterative sono quelle di looping, ovvero ripetizione fino a che non si verifichi qualcosa che interrompe il ciclo.

### Ciclo while

Espressione è una condizione booleana, ovvero può essere o vera, o false. Se vera, il blocco istruzioni sarà eseguito, altrimenti no. La differenza tra while e if sta nel fatto che if (se l'espressione è vera) esegue solo una volta, mentre while esegue il blocco finché la condizione non diventerà falsa.

### Ciclo for

Il ciclo for viene usato per ripetere un blocco di istruzioni un numero di n volte, prestabilite. Sintassi:
Osserviamo che è della forma for (istruzione; espressione; istruzione). Quindi nei campi istruzione possiamo mettere qualsiasivoglia istruzione, ma deve sempre essere presente l'espressione booleana.

### Iterazione basata su collezioni (foreach)

L'istruzione foreach (letteralmente: per ciascun elemento) è un'istruzione tipica del linguaggio C#, e molto recente. Essa sarebbe un'alternativa più veloce ed elegante al ciclo for. È stata pensata come un supporto veloce per i cicli che scansionano un array, per esempio. L'esempio che segue scansiona gli elementi di un array strighe di stringhe e li stampa su schermo, uno per uno:
Abbiamo definito una stringa s che serve come appoggio per le stringhe contenute nell'array.