* * Non potevamo lasciare il programma dantesco senza funzioni! */ #include <stdio.h> /* Includiamo la libreria standard */ /* Forniamo una dichiarazione anticipata (prototipo) delle nostre funzioni */ void stampamenu(void); void canto1(void); void canto2(void); void canto3(void); void canto4(void); void canto5(void); void canto6(void); void canto7(void); void canto8(void); void canto9(void); void canto10(void); /* Funzione principale e inizio del programma */ int main(void) /* Funzione principale, eseguita per prima */ { /* Inizio della funzione main() */ int pippo; /* Definiamo una variabile intera pippo */ do /* Usiamo il loop do-while */ { stampamenu(); /* Una funzione che stampa il menu */ scanf("%d",&pippo); /* Prendiamo pippo da tastiera */ switch(pippo) /* e usiamolo per il confronto */ { case 1: canto1(); break; case 2: canto2(); break; case 3: canto3(); break; case 4: canto4(); break; case 5: canto5(); break; case 6: canto6(); break; case 7: canto7(); break; case 8: canto8(); break; case 9: canto9(); break; case 10: canto10(); break; case 0: printf("\nUscita.\n"); default: printf("\nSelezione sbagliata!\n"); } /* Fine del costrutto switch */ } /* Fine del blocco do-while che viene rieseguito */ while(pippo!=0); /* Se pippo e' diverso (!=) da zero, cicla */ return(0); /* la funzione main restituisce uno 0 intero */ } /* Fine della funzione main() */ /* Queste funzioni non hanno parametri ne' in entrata, ne' in uscita. */ void stampamenu(void) { 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"); printf(" 0) Esci\n\n"); } /* canto 1 */ void canto1(void) { printf("\nNel mezzo del cammin di nostra vita\n"); printf("Mi ritrovai per una selva oscura,\n"); printf("Che la diritta via era smarrita.\n"); } /* canto 2 */ void canto2(void) { printf("\nLo giorno se n'andava, e l'aer bruno\n"); printf("Toglieva gli animai, che sono in terra.\n"); } /* canto 3 */ void canto3(void) { printf("\nPer 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"); } /* canto 4 */ void canto4(void) { printf("\nRuppemi 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"); } /* canto 5 */ void canto5(void) { printf("\nCosi' discesi del cerchio primaio\n"); printf("Giu' nel secondo, che men loco cinghia,\n"); printf("E tanto piu' dolor, che pugne a guaio.\n"); } /* canto 6 */ void canto6(void) { printf("\nAl 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"); } /* canto 7 */ void canto7(void) { printf("\nPape 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"); } /* canto 8 */ void canto8(void) { printf("\nIo 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"); } /* canto 9 */ void canto9(void) { printf("\nQuel 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"); } /* canto 10 */ void canto10(void) { printf("\nOra 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"); } /* Abbiamo dotato di funzioni il nostro programmino dantesco. Dato che * questo programma era gia' piuttosto lungo, si sono visti allcuni dei * vantaggi delle funzioni, tra cui quello di rendere piu' compatto e * chiaro il loop principale. */