In questa lezione parleremo del costrutto a condizione doppia, meglio conosciuto come switch – case in C. (Clicca qui per il pdf della lezione)
Il costrutto a condizione doppia, in funzione dei valori dell’espressione (condizione), vuole eseguire azioni diverse. Il diagramma a blocchi corrispondente è il seguente:

La utilizziamo per compattare la struttura condizionale semplice di if annidati.
switch (espressione) //Per espressione si intende anche una variabile
{
case 1:
//azione
break; //se non mettiamo il break, il programma esegue tutti i case
case 2;
//azione
break;
default: //se nessuno dei casi sopra elencati è valido
//azione
}
Il seguente programma è una semplice calcolatrice con il costrutto a condizione doppia:
#include <stdio.h>
int main()
{
int op1, op2; //I due numeri con cui eseguire le operazioni
char oper; //operando + - * /
int ris; //risultato
printf("Inserisci i due numeri con i quali eseguire le operazioni");
scanf("%d, %d", &op1, &op2);
printf("Inserisci l'operando");
scanf("%c", &oper);
switch (oper)
{
case '+': //Gli apici singoli identificano un carattere
ris = op1 + op2;
break; //se non mettiamo il break, il programma esegue tutti i case
case '-':
ris = op1 - op2;
break;
case '*':
ris = op1 * op2;
break;
case '/':
ris = op1 / op2;
break;
default:
printf("ATTENZIONE, Inserisci un operando valido");
}
printf ("Il risultato di %d %c %d e' = a %d", op1, oper, op2, ris);
return 0;
}
In C, il valore vero è ≠ 0 mentre il valore falso è = 0.
int a = 5;
if (a == 3) //falso, si esce dall'if il valore della condizione è 0
if (a = 3) //vero, si entra nell'if perchè il valore dell'espressione è != 0 (in questo caso 3), quindi vero
if (a){ azione } //se a è diverso da 0, entra nell'if, altrimenti no
Per espressione intendiamo: una qualsiasi forma che valutata, dia un valore.
La condizione è un’espressione relazionale che ha solo due risultati: vero o falso. Le espressioni invece hanno infiniti risultati. Anche l’assegnamento è un’espressione.
— Clicca qui per scaricare il pdf della lezione