Il costrutto if
è il blocco di controllo più semplice in C. Ecco la sua struttura base:
if (condizione) {
/* codice da eseguire se la condizione è vera */
}
Nel diagramma, "Vera" significa qualsiasi valore diverso da zero, mentre "Falsa" significa zero. Questo è il comportamento standard in C per le condizioni.
int numero = 5;
if (numero > 0) {
printf("Il numero è positivo\n");
}
Le condizioni in C utilizzano operatori di confronto che ritornano 0 (falso) o 1 (vero).
/* Operatori di confronto */
int x = 5;
int y = 3;
int risultato = (x == y); /* Uguaglianza (0) */
int diverso = (x != y); /* Diversità (1) */
int maggiore = (x > y); /* Maggiore di (1) */
int minore = (x < y); /* Minore di (0) */
int maggioreuguale = (x >= y); /* Maggiore o uguale (1) */
int minoreuguale = (x <= y); /* Minore o uguale (1) */
Gli operatori logici combinano più condizioni.
/* Operatori logici */
int risultato = (x > 0 && y < 10); /* AND logico (1) */
risultato = (x > 0 || y < 10); /* OR logico (1) */
risultato = !(x == y); /* NOT logico (1) */
Il costrutto if-else permette di eseguire un blocco di codice alternativo quando la condizione è falsa:
if (condizione) {
/* codice da eseguire se la condizione è vera */
} else {
/* codice da eseguire se la condizione è falsa */
}
int numero = 5;
if (numero > 0) {
printf("Il numero è positivo\n");
} else {
printf("Il numero è negativo o zero\n");
}
Per controllare più condizioni sequenzialmente:
if (condizione1) {
/* codice da eseguire se condizione1 è vera */
} else if (condizione2) {
/* codice da eseguire se condizione1 è falsa e condizione2 è vera */
} else {
/* codice da eseguire se tutte le condizioni sono false */
}
int numero = 5;
if (numero > 0) {
printf("Il numero è positivo\n");
} else if (numero == 0) {
printf("Il numero è zero\n");
} else {
printf("Il numero è negativo\n");
}
Il costrutto switch è una struttura di controllo che permette di eseguire uno dei molti blocchi di codice in base al valore di un'espressione. È particolarmente utile quando si devono gestire molte condizioni diverse su un singolo valore.
switch (espressione) {
case valore1:
/* codice da eseguire per valore1 */
break;
case valore2:
/* codice da eseguire per valore2 */
break;
default:
/* codice da eseguire se nessun caso corrisponde */
break;
}
int giorno = 2;
switch (giorno) {
case 1:
printf("Lunedì\n");
break;
case 2:
printf("Martedì\n");
break;
case 3:
printf("Mercoledì\n");
break;
case 4:
printf("Giovedì\n");
break;
case 5:
printf("Venerdì\n");
break;
case 6:
printf("Sabato\n");
break;
case 7:
printf("Domenica\n");
break;
default:
printf("Giorno non valido\n");
break;
}