Switch e operatori ternari: controlli condizionali in C
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 del C, 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
Se vuoi aggiornamenti su Switch e operatori ternari: controlli condizionali in C inserisci la tua email nel box qui sotto:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
La tua iscrizione è andata a buon fine. Se vuoi ricevere informazioni personalizzate compila anche i seguenti campi opzionali:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
I Video di HTML.it
Ottenere il meglio dal Material Design, intervista a Taylor Ling
Taylor Ling ha ricevuto un riconoscimento ai Material Design Awards per la sua app Fabulous, ci racconta cos’è e qual’è […]