Instrukcja iteracyjna for jest bardzo elastyczną instrukcją (tak jak cała struktura języka C++). Złożona jest z trzech części oddzielonych średnikami:
for(część a; część b; część c)
{
//blok instrukcji, który będzie powtarzany
}
W części pierwszej najczęściej inicjujemy licznik lub liczniki pętli for. Inicjacja licznika, w tym przypadku polega na stworzeniu zmiennej i nadaniu jej wartości początkowej. Popatrzmy na przykład, gdzie "i" jest licznikiem:
//inicjalizajca jednego licznika
for(int i = 0; i < 100 ; i++)
{
//ciąg instrukcji
}
//inicjalizacja dwóch liczników - separatorem jest znak przecinka
for(int i = 0, j = 10; i < j; i++, j--)
{
//ciąg instrukcji
}
W części drugiej definiujemy warunek, lub warunki, które wpływają na ilość powtórzeń pętli. Instrukcja for będzie powtarzać ciąg instrukcji tak długo, jak długo zdefiniowane warunki będą prawdziwe.
|
Źle sformułowane warunki mogą spowodować zapętlenie instrukcji for, to znaczy, że pętla będzie wykonywać się w nieskończoność. Np: |
for(unsigned int i = 5; i >= 0; i++)
{
//ta pętla nigdy się nie zakończy, ponieważ
//warunek będzie zawsze prawdziwy
}
Część c określa operacje (najczęściej na liczniku), od których zależy zachowanie się pętli. Jeśli chcemy, aby licznik zwiększał się o jeden, wtedy ustawiamy operację w trzeciej części na i++.
Żeby dobrze operować na pętli for należy wiedzieć w jakiej kolejności wykonują się poszczególne jej części. W pierwszej kolejności i tylko raz wykona się część inicjująca liczniki, czyli część a. Następnie cyklicznie wykonują się:

Dla przykładu zrealizujmy następujące zadanie:
Wyświetl n kolejnych liczb parzystych, gdzie n podajemy z klawiatury.
#include <iostream>
using namespace std;
int main()
{
unsigned int n;
cout<<"Podaj ile liczb parzystych chcesz wyświetlić: ";
cin>>n;
//licznik "i" kontroluje ilość wykonań pętli -
//pętla musi wyświetlić "n" liczb parzystych,
//przy każdym przejściu pętli zwiększamy "i" o 1 (i++),
//licznik "j" przechowuje kolejne liczby parzyste,
//dlatego w tym przypadku zwiększenie
//jest o 2 (i+=2)
for(int i = 0, j=0; i < n; i++, j+=2)
//przy każdym przejściu pętli wyświetlamy wartość licznika "j"
cout<<j<<" ";
cout<<endl;
return 0;
}
#include <iostream>
using namespace std;
int main()
{
unsigned int n;
cout<<"Podaj ile liczb parzystych chcesz wyświetlić: ";
cin>>n;
for(int i = 0; i<2*n; i++)
// gdybyśmy sformułowali warunek i<2, to
//program wyświetliłby o połowę mniej liczb
if(i%2==0) //lub if(!(i%2))
cout<<i<<" ";
cout<<endl;
return 0;
}
Konstrukcja pętli for dopuszcza sytuację, w której, jakaś część (a, b lub c) pętli może być pusta np.:
int i = 0;
for(; i < 10; ) // w tym przypadku część a i c są puste
{
i+=2;
cout<<i-1;
}
Zauważmy, że inicjacja licznika następuje przed pętlą for (wtedy ma ona większy zasięg - patrz. zasięg zmiennych), natomiast operacje na liczniku wykonywane są w bloku należącym do for.
Więcej przykładów w części - zadania.