Controlli condizionali: If-Else in C
Nella programmazione, come già detto, le istruzioni vengono eseguite dalla prima fino all’ultima. Per deviare il flusso delle scelte (ad esempio per scegliere tra l’opzione A e l’opzione B) basta porre delle condizioni che, se verificate, eseguono un pezzo di codice o altrimenti ne eseguono un altro; queste istruzioni particolari che permettono di incanalare il flusso si chiamano strutture di controllo condizionale o, più genericamente, istruzioni condizionali. Nel linguaggio di programmazione C, esistono due tipi di strutture di controllo condizionale, l’if-else e lo switch. L’if-else e lo switch hanno, sostanzialmente, comportamenti simili, ed anche se il primo è largamente il più usato, hanno delle differenze per quanto riguarda il tipo di operazione che vogliamo svolgere; ma vediamo nel dettaglio come funzionano.
Nota: in C, a differenza del C++ e del Java, non esiste il tipo booleano (che può assumere valore vero -true- o falso -false-), per questo quando deve essere verificata una condizione essa risulta falsa se vale zero e vera altrimenti.
If-Else in C
L’istruzione if permette di verificare determinate condizioni ed ha la seguente sintassi:
[… altre istruzioni …] if (espressione) istruzione [… altre istruzioni …]
In questo caso se l’espressione risulta vera, fa eseguire l’istruzione immediatamente successiva, altrimenti (se la condizione è falsa) si salta l’istruzione (od il blocco di istruzioni) facenti parti dell’if e si procede nell’esecuzione delle istruzioni successive, che possono essere la prosecuzione del programma o un semplice else, ad indicare la possibile alternativa all’if:
if (espressione) istruzione1 else istruzione2
o un else if che permette di verificare una o più condizioni:
if (espressione) istruzione1 else if (espressione) istruzione2 else istruzione3
Così si può comandare il flusso del programma decidendo di eseguire una parte di codice oppure no (nel caso del solo if), di fare una scelta tra due parti di codice (nel caso if – else) o di fare una scelta tra più parti di codice (nel caso if – else if – else). Facciamo un esempio pratico nel codice sottostante, assumendo che sia stato definito, nel codice soprastante all’if, il valore della variabile intera “risultato_esame”, che può assumere un valore compreso tra 0 e 30:
if (risultato_esame >=18) printf (“Complimenti hai superato l’esame”); else if (risultato_esame >=15) printf (“Devi sostenere l’orale per questo esame”); else printf (“Non hai superato l’esame”);
Generalmente dopo un if o un else viene eseguita solo la prima istruzione più vicina, regola che può creare dei problemi quando ci sono due o più istruzioni, ma alla quale si può porre rimedio ponendo tutte le istruzioni tra due parentesi graffe, la graffa di apertura ( { ) andrà sotto all’if, allineata con la prima lettera, mentre la graffa di chiusura ( } ) andrà posta dopo l’ultima istruzione, su una nuova riga ed allineata con quella di apertura. Per chiarire meglio, ecco un if-else abbastanza semplice che spiega come utilizzare le parentesi graffe per raccogliere istruzioni:
if (risultato_esame >=18) { printf (“Complimenti hai superato l’esame”); int passato = 1; } else { printf (“Non hai superato l’esame”); int passato = 0; }
Dobbiamo fare particolare attenzione all’uso dei blocchi if annidati, come quello dell’esempio:
if (risultato_esame < 18) if (risultato_esame < 15) printf (“Non hai superato l’esame”); else printf (“Sei stato ammesso all’orale”);
In questo caso risulta difficile capire esattamente quale sia il significato reale di questo else, e soprattutto ci si potrebbe domandare se realmente il programmatore abbia voluto porre determinate condizioni o se abbia semplicemente sbagliato a strutturare il costrutto if. Se non capiamo esattamente il codice, conviene ricordarsi la regola secondo la quale “l’else si riferisce sempre all’if più vicino, a meno che non sia diversamente specificato da eventuali parentesi graffe”, ma è comunque buona norma usare sempre le parentesi graffe anche quando si tratta di eseguire una sola istruzione, magari indentando (mettendo opportune spaziature) correttamente il codice. L’esempio precedente risulta sicuramente più chiaro se strutturato in questo modo:
if (risultato_esame < 18) { if (risultato_esame < 15) { printf (“Non hai superato l’esame”); } else { printf (“Sei stato ammesso all’orale”); } }
Se vuoi aggiornamenti su Controlli condizionali: If-Else 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
Creare apps Android di qualità
Alfredo Morresi di Google indica alcuni accorgimenti per migliorare la progettazione delle applicazioni