PROGRAMMIAMO
C++ - Ciclo for
Ciclo for

Il ciclo for è un'altra istruzione che permette di realizzare cicli standard in C. La sua sintassi è la seguente:

for (inizializzazione;condizione;incremento/decremento)
    {
   istruzione1;
   istruzione2;
   ...
    }

In pratica il ciclo for è già predisposto per contenere le operazioni più comunemente utilizzate per i cicli. In particolare risulta particolarmente utile per realizzare i cicli a contatore, cioè quei cicli in cui c'è una variabile intera (contatore) che viene incrementata o decrementata a ogni ripetizione del ciclo.

Si noti che:

In pratica il ciclo for realizza il seguente algoritmo:

Esempio

Consideriamo nuovamente il ciclo per il calcolo del fattoriale di un numero num intero:

Si confrontino fra loro la traduzione con l'istruzione while e la traduzione con l'istruzione for dello stesso ciclo:

fat = 1;                     for (fat=1 ; num>1; num = num -1)
while (num>1)                       {
    {                                   fat = fat * num;          
   fat = fat*num ;                  }     
   num = num - 1 ;
    }

Si osservi come la scrittura ottenuta usando il for risulti più compatta e breve di quella col while. Per giunta è possibile compattare ulteriormente il ciclo for omettendo in questo caso le parentesi graffe (dal momento che il blocco di istruzioni contiene una sola istruzione). Indicando inoltre il decremento della variabile num con la notazione abbreviata num--, il risultato è il seguente:

for (fat=1 ; num>1; num--)
   fat = fat * num;

 

Omissione di parti del ciclo

L'inizializzazione, la condizione e/o l'incremento possono essere omessi in un ciclo for.

Per esempio si consideri il seguente ciclo senza inizializzazione:

cout<<"Quanti numeri devo acquisire? ";
cin>>n;

for ( ; n>0 ; n--)
   {
   cout<<"Fornisci un numero: ";
   cin>>val;
   ...
   }

Si osservi che l'inizializzazione è stata omessa, ma il primo punto e virgola nell'istruzione è rimasto (i due punti e virgola fungono da separatori non possono mai essere cancellati in un'istruzione for).

Viceversa si consideri il seguente for (per calcolare la somma fra più numeri) in cui manca l'incremento/decremento finale:

cout<<"Inserire un numero negativo per terminare il ciclo\n";
num=0;
tot=0;

for (n=0 ; num>=0 ;)
   {
   tot = tot + num;
   cout<<"Fornisci un numero: ";
   cin>>num;
   }

Si noti l'inizializzazione num=1 necessaria per essere certi che il ciclo venga eseguito almeno una volta (infatti in assenza di inizializzazione esplicita il valore di una variabile in C è indeterminato e potrebbe benissimo succedere che num contenga inizialmente il valore zero). Si noti anche che la somma tot = tot + num viene effettuata prima di acquisire un nuovo numero, in modo tale che il valore negativo usato per terminare il ciclo non venga sommato agli altri.

Notiamo inoltre, come nel caso precedente, il fatto che il punto e virgola finale non è stato cancellato.

Vedremo nel capitolo dedicato ai cicli infiniti l'uso di cicli for senza la condizione di ripetizione.

 

link precedente - successiva link

Sito realizzato in base al template offerto da

http://www.graphixmania.it