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