// uso non banale del for (e altre peculiarità del linguaggio)) #include int main() { int i, j, n; // normale sommatoria dei quadrati di i da 1 a 9 n=0; for (i=1; i<=10; i++) n += i*i; printf(" Primo metodo: n = %d\n", n); for (i=1, n=0; i<=10; n+=i*i, i++) ; // notare il solo punto e virgola! printf("Secondo metodo: n = %d\n", n); // provare a toglierlo... printf("(Ma l'ordine è importante: provare con \"i++, n+=i*i\""); for (i=1, n=0; i<=10; i++, n+=i*i) ; printf(" --> n = %d\n", n); puts(""); // a proposito, "i++;" è diverso da "++i" i = 1; printf("i=1; \"10 + i++\" --> %d\n", 10 + i++); i = 1; printf("i=1; \"10 + ++i\" --> %d\n", 10 + ++i); puts(""); // somma di i, finché è inferiore a 100 // A) metodo 'normale' i = n = 0; // <- altra peculiarità while (n < 100) n += i++; i -=2; // era stato aumentato una volta di troppo! printf("i affinché Sum_i i < 100: %d\n", i); // A) usando il for for(i=n=0; n < 100; n +=i, i++) ; i -= 2; printf("i affinché Sum_i i < 100: %d\n", i); puts("\n Ma anche la leggibilità del codice ha un suo valore!"); puts("\nAddendum (dopo la lezione): for() usato come fosse un while"); for(i=n=0; 1; n +=i, i++) if(n>100) break; printf("i = %d; n = %d\n", i, n); puts(" -> Questo esempio serve anche a mostrare come la variabile"); puts(" del loop esiste anche finito il for(), con l'ultimo incremento"); return 0; }