Blue Flower

La struttura di alternativa

Per la selezione nel linguaggio C si usa l’istruzione if che ha la sintassi seguente:

if (condizione)
istruzioni-a;
else
istruzioni-b;

Si noti che la condizione è racchiusa tra due parentesi tonde.
Se la condizione è vera, vengono eseguite le istruzioni-a, altrimenti vengono eseguite le istruzioni-b.

ESEMPIO: Scrivere in ordine crescente due numeri

Si tratta di scegliere tra due numeri il minore e di scrivere prima il minore e poi il maggiore.

Programma C

/* Ordina.c : due numeri in ordine crescente */
#include <stdio.h>
main()
{

/* input */
int a, b;
printf("Due numeri: ");
scanf("%d %d",&a, &b);
if (a < b)
{

printf("%d \n",a);
printf("%d \n",b);
}
else {
printf("%d \n",b);
printf("%d \n",a);
}
}

Nel caso in cui la condizione a < b sia verificata, devono essere eseguite in sequenza le istruzioni:

printf("%d \n",a);
printf("%d \n",b);

Pertanto, in accordo con quanto detto nel paragrafo precedente, le due istruzioni sono state raggruppate tra due parentesi graffe.
Analoghe considerazioni vanno fatte per la sequenza:

printf("%d \n",b);
printf("%d \n",a);

Nel caso in cui dopo la condizione o dopo else ci sia un’unica istruzione, le parentesi graffe possono essere omesse:

if (condizione) istruzione-a;
else istruzione-b;

Se si ha una selezione a una sola via, si omette il ramo else:

if (condizione) istruzione-a;


La condizione è un’espressione booleana di cui viene valutata la verità: vengono quindi utilizzati i segni del confronto: ==, <, >, >=, <=, !=, e gli operatori booleani && (And), || (Or), ! (Not) per costruire espressioni logiche combinando tra loro più condizioni.
Per esempio, nel seguente frammento di programma, la struttura di selezione:

if (classe == 5 && anni > 18) printf("%s \n", nome);


produce in output il nome di uno studente, soltanto nel caso in cui si verifichino entrambe le condizioni, perché viene usato l’operatore && (And): frequenta la quinta classe e ha più di 18 anni di età.