Listruzione protagonista di questa puntata è listruzione FOR.
Vediamo quando é possibile ed opportuno utilizzarla. Non vi sarà difficile trovarvi in una situazione nella quale avete bisogno di ripetere una stessa operazione un determinato numero di volte. Ad esempio se dovete aggiungere piu volte una certa cifra ad un totale.
Vediamo la struttura di questo costrutto:
for (espressione1; espressione2; espressione3)
istruzione;
Dove espressione1 inizializza, espressione2 e' il test di termine ed espressione3 e' il modificatore (che puo' anche essere piu' di un semplice incremento).
Per farvi capire meglio i vantaggi di questa istruzione vi porto un semplice esempio: supponiamo di avere la variabile X che vale 1 e vogliamo aggiungervi per 10 volte 2.
Con le istruzioni apprese finora di certo scrivereste un listato simile al seguente:
#include <stdio.h>
main() {
int x = 1;
x = x +2;
x = x +2;
x = x +2;
x = x +2;
x = x +2;
x = x +2;
x = x +2;
x = x +2;
x = x +2;
x = x +2;
printf("%d",x);
}
Loutput sara 1 + (2*10 ) = 21
Vediamo come il tutto viene reso estremamente piu compatto mediante luso del FOR.
#include <stdio.h>
main() {
int x = 1,i;
for(i=1; i<=10; i=i+1)
x=x+2;
printf("%d",x);
}
Loutput sarà sempre 21. Ma vediamo cosa é cambiato. Innanzitutto nella dichiarazione delle variabili , alla X è stata aggiunta una variabile i (che fungerà da punto di riferimento per gli incrementi). Piu sotto vediamo apparire listruzione FOR seguita da ben tre espressioni allinterno delle parentesi tonde. Tradotto in uno schema a punti (i=1; i<=10; i=i+1) x=x+2 significa:
1. se i è uguale a o maggiore di 1 allora vai al punto 2 altrimenti fine
2. aggiungi 2 alla variabile x
3. incrementa i di 1 (i = i+1)
In questo caso, poiché lespressione2 è i<=10, allora i 3 punti dello schema saranno eseguiti fintanto che la variabile i é minore o uguale a 10. Quindi i é usata come un indice, come un punto di riferimento per far capire
al computer quante volte deve ancora eseguire una determinata istruzione ; in questo caso per fargli capire quante volte deve sommare 2 a x che ad ogni ciclo aumenta appunto di 2.
Vediamo ora unapplicazione di questa istruzione in contesto piu reale.
Con il seguente listato potrete ottenere il totale di un massimo di 4 spese. Per avere a disposizione un maggior numero di spese calcolabili, è sufficiente che voi modifichiate la quarta linea di codice sostituendo i<=4 con i<=x dove x è il numero di spese da voi scelto.
#include <stdio.h>
main() {
int spesa, totale=0,i;
for(i=1; i<=4; i=i+1) {
printf("Spesa: ");
scanf("%d", &spesa);
totale = totale + spesa;
} /*fine del ciclo FOR */
printf("nSpesa totale: %d",totale);
} /*fine del main() */
La struttura di questultimo listato segue lo schema di cui sopra basato sulle 3 istruzioni del ciclo FOR. Sono solo state aggiunte delle graffe dopo le tre espressioni del ciclo. Questo perché dopo il FOR non abbiamo una singola istruzione, ma un blocco costituito da printf(), scanf() e totale=totale+spesa.
Naturalmente, oltre a poter sfruttare listruzione FOR per un incremento, potete sfruttarla per un decremento (non é infatti questa che cambia, cambia semplicemente listruzione dopo di essa, non é obbligatorio che listruzione da ripetere sia aritmetica...) . E allora perché non provare a scrivere un listato che da un totale iniziale X sottragga, in base a quanto stabilito di volta in volta dallutente, una determinata somma?
Io ho lanciato il sasso, ora vedete voi ...=)
Come sempre ripeto che la lezione deve essere seguita dallesercizio proposto e dallinventiva personale. Sbizzarrite sempre la fantasia! Con poche istruzioni di è possibile scrivere un numero pressoché illimitato di listati differenti!
E se trovate difficoltà potete comunque scrivermi.