Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 19 di 47
  • livello principiante
Indice lezioni

Switch e operatori ternari: controlli condizionali in C

Controllare il flusso dei dati con lo switch e l'operatore ternario "? :".
Controllare il flusso dei dati con lo switch e l'operatore ternario "? :".
Link copiato negli appunti

Operatore Ternario: come funziona

L'operatore ternario "? :" è una forma sintetica dell'istruzione if-else, e per questo viene usata per ragioni di comodità e sinteticità del codice. L'operatore "? :" è l'unico operatore ternario

[!] Ci sono problemi con l'autore. Controllare il mapping sull'Author Manager

, infatti opera su tre parametri a differenza degli altri operatori che spesso operano su uno o due parametri.

Di seguito presentiamo la sintassi dell'operatore e la corrispondente sintassi di un blocco if-else:

// Operatore ternario ?
espressione1 ? espressione2 : espressione3

// Corrispondente blocco if-else
if (espressione1)
{
espressione2;
} else {
espressione3;
}

Quindi se l'espressione1 risulta vera, si esegue l'espressione2, altrimenti si esegue l'espressione3. Per esempio il seguente codice assegna, nelle due forme equivalenti, alla variabile "max" il massimo tra "alfa" e "beta":

if (alfa > beta)
max = alfa;
else
max = beta;

// che corrisponde a...
max = (alfa > beta) ? alfa : beta;

Switch Case in C, la sintassi

Come annunciato, l'istruzione switch ha delle differenze dall'if-else, infatti può essere usata solo in alcuni casi dove:

  • Viene valutata solamente una variabile, tutte le scelte dipenderanno, infatti, da questa variabile. La variabile deve essere un tipo int, shor, long o char;
  • Ogni singolo valore della variabile può controllare solo una scelta. Una scelta finale, chiamata default è incaricata di catturare tutti i valori dei casi non specificati;

L'istruzione switch ha la seguente struttura:

switch (espressione) {
case elem1:
istruzione1;
break; opt
case elem2:
istruzione2;
break; opt

...

case elemn:
istruzionen;
break; opt
default:
istruzione;
break; opt
}

Notiamo che lo switch ha, inoltre, una struttura abbastanza particolare, è a cascata, cioè se eseguo il primo caso (avendo sotto degli altri) e non metto un break per uscire, continua ad eseguire anche le istruzioni successive che fanno parte di altre casistiche; questa struttura ricorda molto quella adottata nei file batch (.bat) utilizzati con il DOS e permette di ottenere effetti interessanti sulla selezione del codice, risparmiandone quando è comune a più casistiche. Ma vediamo l'esempio pratico, assumendo di avere la variabile intera "numero" che può assumere valori maggiori od uguali a zero.

switch (numero) {
case 0:
printf("Nessuno");
break;
case 1:
printf("Uno");
break;
case 2:
printf("Due");
break;
case 3:
case 4:
case 5:
printf("Valore positivo piccolo");
break;
default:
printf("Valore positivo grande");
break;
}

Esempio Pratico Switch Case in C

(Visualizza il sorgente completo)

L'IF, all'interno del programma, viene usato in larga misura; ad esempio, per avviare le scelte adeguate del menu si utilizza una serie di IF-ELSE:

101  else if (scelta == 1) // Visualizzo i contatti presenti
102  { // ELSEIF 1 - OPEN
103
104  visualizzaContatto(lista);
105
106  } // ELSEIF 1 - CLOSE
107  else if (scelta == 2) // Aggiungo un nuovo contatto
108  { // ELSEIF 2 - OPEN
109
110  lista = aggiungiContatto(lista);
111
112  } // ELSEIF 2 - CLOSE

Questo articolo contiene link di affiliazione: acquisti o ordini effettuati tramite tali link permetteranno al nostro sito di ricevere una commissione nel rispetto del codice etico. Le offerte potrebbero subire variazioni di prezzo dopo la pubblicazione.

Ti consigliamo anche