* * Vediamo il listato precedente reso un po piu' "elegante". * Ricordiamoci la forma del for: * * for(inizializzazione ; condizione ; incremento) * istruzione da eseguire; * * Che avevamo imprementato cosi': * * for(pippo=1 ; pippo<10 ; pippo=pippo+1) * printf("Tanti saluti\n"); * * Innanzitutto possiamo indrodurre un paio di nuovi operatori: oltre ai * noti operatori +, -, *, /, abbiamo una coppia di operatori speciali * che servono ad incrementare o decrementare di 1 una variabile: * * ++ ; incremento di 1, ad esempio pippo++ * -- ; decremento di 1, ad esempio pippo-- * * Da notare che e' possibile mettere il ++ o -- sia prima che dopo la * variabile, e l'unica differenza e' che l'incremento/decremento avviene * prima o dopo che la variabile stessa sia utilizzata. Nel nostro caso * questo e' indifferente, vedremo in seguito casi in cui questa differenza * e' significativa. Per ora basta ricordarsi che: * * pippo++ equivale a pippo=pippo+1 * pippo-- equivale a pippo=pippo-1 * * A questo punto il nostro for diventa cosi': * * for(pippo=1 ; pippo<10 ; pippo++) * * Gia' che ci siamo, proviamo ad usare il for in modo inverso, ossia * decrementando ogni volta la variabile aspettando che arrivi ad 1: * * for(pippo=10 ; pippo>1 ; pippo--) * * Come si vede, si inizializza la variabile pippo a 10, ogni volta si * decrementa di 1 aspettando che non sia piu' maggiore di 1, ossia che * sia uno. Cio' fa eseguire 9 volte il loop, esattamente come la versione * che incrementa pippo. A questo punto, se facciamo stampare ad ogni loop * il valore di pippo, possiamo verificare che il conto e' "alla rovescia". * Giusto per dare un'altro tocco di eleganza, possiamo dichiarare la nostra * variabile non prima il main(), ma dopo. Cosa cambia? Che la definiamo * locale anziche' globale. Infatti, se definiamo una variabile all'esterno * di tutte le funzioni, da esempio tra #include e main(), come abbiamo * fatto fino ad ora, la variabile e' di tipo globale, ossia puo' essere * usata da qualsiasi funzione del listato, in qualsiasi punto. * Invece, se definiamo una variabile all'interno di una funzione, ossia * all'interno delle parentesi { e } che ne definiscono il corpo, la * variabile e' locale, ossia e' accessibile solo dalle istruzioni * all'interno del blocco {....} in cui sono state dichiarate. */ #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' * come contatore per il numero di cicli FOR. * Da notare che e' una variabile locale, essendo * all'interno della funzione main() */ /* Stampiamo il valore di pippo, che andra' da 10 a 2 durante il loop */ for(pippo=10 ; pippo>1 ; pippo--) /* Notare il -- */ printf("Pippo e' %d\n", pippo); } /* Fine della funzione main() */ /* Risultato del listato: stampa del valore di pippo (da 10 a 2). * Abbiamo visto l'operatore x++, che ci risparmia di scrivere x=x+1. * Esistono degli operatori di assegnamento, oltre ad "=", che permettono * di risparmiare spazio e "fatica", abbreviando la sintassi: * * pippo *= pluto; -> pippo = pippo * pluto; * pippo /= pluto; -> pippo = pippo / pluto; * pippo %= pluto; -> pippo = pippo % pluto; * pippo += pluto; -> pippo = pippo + pluto; * pippo -= pluto; -> pippo = pippo - pluto; * * Quando cioe' ad una variabile si assegna il valore della stessa variabile * +,-,*,/,% qualche altra variabile, o costante, anziche' riscrivere il suo * nome si preferisce abbreviare in questo modo. * Esempi: * * pippo = pippo+3; -> pippo += 3; * x = x*pluto; -> x *= pluto; * */