* * Per completare la panoramica sull'IF, vedremo come annidarlo. * Con cio' si intende mettere una condizione IF all'interno di altre * condizioni IF. Ossia fissare piu' di una condizione per l'esecuzione * delle istruzioni. Ad esempio: * * if (pippo>10) * { * if (pippo<20) * printf("\nPippo e' compreso tra 11 e 19\n"); * } * else printf ("\nPippo non mi interessa\n"); * * La traduzione potrebbe essere: "se pippo e' maggiore di 10, esegui * la seconda condizione if: se anche questa e' vera, ossia se pippo e' * minore di 20, allora esegui il printf relativo. Altrimenti stampiamo * il printf relativo al nostro scarso interesse per pippo". * In pratica pippo deve superare 2 condizioni if per passare "l'esame". * Da notare che l'esempio qua sopra ha un "errore", infatti se pippo fosse * maggiore di 10, sarebbe eseguito cio' che e' tra parentesi graffe, ossia * l'altro if, che se risultasse falso, non avendo un else, porterebbe * all'uscita, senza stampare che pippo non ci interessa. Infatti se * ricordate l'if/else fa eseguire O cio' che segue l'if, O cio' che segue * l'else. L'unico else presente nel listatino si riferisce all'if "padre", * il primo, per cui se questo risulta vero non sara' eseguito il messaggio * dopo l'else. Se si vuole che sia stampato un messaggio di disinteresse * anche quando e' falso il secondo if, occorre mettergli un else: * * if (pippo>10) * Prima condizione da superare * * { * if (pippo<20) * Seconda * * printf("\nPippo e' compreso tra 11 e 19\n"); * else printf("\nPippo e' grande, non mi interessa\n"); * } * else printf ("\nPippo e' piccolo, non mi interessa\n"); * * In questo modo possiamo anche dare un messaggio piu' preciso, dicendo * se l'esame e' fallito al primo o al secondo if, ossia se il numero * e' troppo piccolo o troppo grande. * Quindi occorre stare attenti a non "annodarsi" con gli annidamenti, * specialmente se si usano piu' istruzioni else: potremmo perdere il * senso dell'orientamento ed ottenere risultati inattesi. */ #include <stdio.h> /* Includiamo la libreria standard */ main() /* Funzione principale, eseguita per prima */ { /* Inizio della funzione main() */ int pippo; /* Definiamo una variabile intera pippo che servira' * per il costrutto if */ printf("\nDammi il valore per Pippo: "); scanf("%d",&pippo); if (pippo>10) /* Prima condizione da superare */ { if (pippo<20) /* Seconda */ printf("\nPippo e' compreso tra 11 e 19\n"); else printf("\nPippo e' grande, non mi interessa\n"); } else printf ("\nPippo e' piccolo, non mi interessa\n"); } /* Fine della funzione main() */ /* Ci sono altri tipi di diramazione tramite il costrutto if/else, ma li * vedremo in seguito quando serviranno effettivamente. */