#include #include #include //#define SUM //#define PROD #define N 5 main(){ int i,sum,prod; //Il comando ifdef serve per effetturare una compilazione selettiva del codice, // in particolare ifdef NOME significa: qualora NOME sia stata definita con // l opportuna direttiva al precompilatore allora compila oltre al resto tutto cio // che e incluso tra ifdef NOME e endif. Cio significa che qualora si omettesse // define NOME, il compilatore saltera a pie pari quella sezione //COMPITO PER CASA: prima di compilare predirre il comportamento del codice, cioe' cosa accade se: // 1)DEFINIAMO SUM MA NON PROD ? (togliere i commenti a #define SUM) // 2)DEFINIAMO PROD MA NON SUM ? (togliere i commenti a #define PROD) // 3)DEFINIAMO PROD & SUM ? (togliere i commenti a #define SUM e #define PROD) #ifdef SUM //SOMMA printf("Un problema gaussiano:la somma dei primi N numeri interi \n"); /*Forma canonica for( espressione iniziale ; espressione di controllo; espressione di iterazione) */ sum=0; for (i=1;i<=N ;i++){ sum+=i; } printf("Forma canonica %i \n",sum); #endif //Il comando ifndef e lo speculare di ifdef...la parte compresa tra #ifndef NOME e #endif //verra compilata solo se la variabile SUM NON E STATA DEFINITA. #ifndef SUM //PRODOTTO printf("VERSIONE UNO DELLA PRODUTTORIA \n"); prod=1; for(i=1;i<=N;i++){ prod=prod*i; } printf("Prodotto n interi %i \n",prod); printf("GAMMA FUNCTION(N+1) %lf \n",gamma(N+1)); #endif #ifdef PROD //PRODOTTO printf("VERSIONE DUE DELLA PRODUTTORIA \n"); prod=1; for(i=1;i<=N;i++){ prod=prod*i; } printf("Prodotto n interi %i \n",prod); printf("GAMMA FUNCTION(N+1) %lf \n",gamma(N+1)); #endif } //PER UN ESEMPIO SIMILE PROGRAMMAZIONE SCIENTIFICA LISTATO 3.7