*
 * Ora analizzeremo il costrutto switch, che permette di fare facilmente
 * test multipli ad una variabile. Abbiamo visto come fare dei test
 * multipli tramite molti if annidati, ma quando i test sono molti, ossia
 * sono molti i "casi" in cui agiamo diversamente, e' meglio usare switch.
 * Ecco la sua forma:
 *
 *	switch(variabile)
 *	{
 *	   case costante1:
 *	     istruzione1;
 *           break;
 *	   case costante2:
 *	     istruzione2;
 *           break;
 *	   case costante3:
 *	     istruzione3;
 *           break;
 *	   default:
 *	     istruzione4;
 *	}
 *
 * In questo caso faremmo 3 confronti. Se la variabile non soddisfa nessuno
 * dei 3 confronti viene eseguita l'istruzione sotto "default".
 * I break servono per fermare il confronto qualora uno dei casi fosse
 * risultato vero. Se non si mettono i break i confronti continuano al case
 * successivo. Se non si mette la parte default, nel caso in cui nessun
 * confronto sia vero, non viene fatto niente.
 * Vediamo un'esempio pratico:
 *
 *	switch(pippo);
 *      {
 *	   case 1:
 *            printf("Pippo vale 1");
 *	      break;
 *	   case 2:
 *            printf("Pippo vale 2");
 *	      break;
 *	   case 3:
 *            printf("Pippo vale 3");
 *	      break;
 *	   default:
 *           printf("Pippo non mi interessa");
 *	}
 *
 * Da notare che lo switch puo' verificare solo l'uguaglianza, a differenza
 * degli if che possono verificare condizioni qualsiasi.
 * Potremmo usare lo switch per fare una specie di menu' di selezione,
 * in cui controlliamo quale voce di menu' (corrispondente ad un numero),
 * e' stata selezionata.
 */

#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 lo switch */

	printf("\n Scegli il canto dell'inferno che ti interessa:\n\n");
	printf(" 1)  Canto primo. \n");
	printf(" 2)  Canto secondo. \n");
	printf(" 3)  Canto terzo. \n");
	printf(" 4)  Canto quarto. \n");
	printf(" 5)  Canto quinto. \n");
	printf(" 6)  Canto sesto. \n");
	printf(" 7)  Canto settimo. \n");
	printf(" 8)  Canto ottavo. \n");
	printf(" 9)  Canto nono. \n");
	printf(" 10) Canto decimo. \n");
	scanf("%d",&pippo);		  /* Prendiamo pippo da tastiera */
	switch(pippo)			  /* e usiamolo per il confronto */
	{
	   case 1:
	      printf("Nel mezzo del cammin di nostra vita\n");
	      printf("Mi ritrovai per una selva oscura,\n");
	      printf("Che la diritta via era smarrita.\n");
	      break;
	   case 2:
	      printf("Lo giorno se n'andava, e l'aer bruno\n");
	      printf("Toglieva gli animai, che sono in terra.\n");
	      break;
	   case 3:
	      printf("Per me si va nella citta' dolente,\n");
	      printf("Per me si va nell'eterno dolore,\n");
	      printf("Per me si va tra la perduta gente.\n");
	      break;
	   case 4:
	      printf("Ruppemi l'alto sonno nella testa\n");
	      printf("Un greve tuono, si ch'io mi riscossi,\n");
	      printf("Come persona che per forza e' desta\n");
	      break;
	   case 5:
	      printf("Cosi' discesi del cerchio primaio\n");
	      printf("Giu' nel secondo, che men loco cinghia,\n");
	      printf("E tanto piu' dolor, che pugne a guaio.\n");
	      break;
	   case 6:
	      printf("Al tornar della mente, che si chiuse\n");
	      printf("Dinnanzi alla pieta' de' due cognati\n");
	      printf("Che di tristizia tutto mi confuse,\n");
	      printf("Nuovi tormenti e nuovi tormentati\n");
	      printf("Mi veggo intorno, come c'io mi muova\n");
	      break;
	   case 7:
	      printf("Pape Satan, pape Satan aleppe,\n");
	      printf("Comincio' Pluto colla voce chioccia\n");
	      printf("E quel Savio gentil, che tutto seppe\n");
	      printf("Disse per confortarmi: Non ti noccia\n");
	      printf("La tua paura, che', poter ch'egli abbia,\n");
	      printf("Non ti torra' lo scender questa roccia.\n");
	      break;
	   case 8:
	      printf("Io dico seguitando, ch'assai prima\n");
	      printf("Che noi fossimo al pie' dell'alta torre,\n");
	      printf("Gli occhi nostri n'andar suso alla cima\n");
	      break;
	   case 9:
	      printf("Quel color che vilta' di fuor mi pinse\n");
	      printf("Veggendo il Duca mio tornare in volta\n");
	      printf("Piu' tosto dentro il suo nuovo ristrinse\n");
	      break;
	   case 10:
	      printf("Ora sen va per uno stretto calle\n");
	      printf("Tra il muro della terra e li martiri\n");
	      printf("Lo mio Maestro, ed io dopo le spalle.\n");
	      break;
	   default:
	     printf("Selezione sbagliata!\n");
	}
} 			/* Fine della funzione main() */

/* L'unico "difetto" che ha questo programma e' che se si volessero vedere
 * tutti e 10 gli inizi di canto si dovrebbe eseguire 10 volte.
 * In pratica, bisognerebbe fare in modo che si ritorni al menu' di
 * selezione ogni volta fino a che non si voglia uscire dal programma,
 * magari inserendo 0. Vedremo dei sistemi per fare cio'.
 */