Rodzaje pętli w C++

MZ | 19-06-2017 | 17:56:16

Pętle (ang. loop) to konstrukcje językowe służące do zdefiniowania szeregu instrukcji, które będą powtarzane wielokrotnie. Poznamy trzy podstawowe rodzaje pętli: for, while oraz do .. while. Po jeszcze więcej informacji na ten temat odsyłam do trzeciego odcinka kursu video (tak naprawdę artykuł ten stanowi pomocne notatki do tegoż epizodu). Zaczynajmy!

Pętla for

Pierwszą pętlą, którą zazwyczaj poznajemy jest konstrukcja for. W przypadku pętli for z góry powinniśmy wiedzieć ile razy instrukcje mają się wykonać. Aby zdefiniować w C++ pętlę for wykonującą się 10 razy zapiszemy:

 for(int i=1; i<=10; i++)
{
[instrukcje, które będą się powtarzać]
}

Zmienna i to liczba typu całkowitego nazywana zmienną sterująca pętlą albo iteratorem pętli. W powyższym przykładzie w pierwszym wywołaniu pętli przypisujemy jej wartość startową i=1. W każdym przebiegu pętli inkrementujemy jej wartość (zapis i++), czyli zwiększamy o dokładnie jeden. Warunek i<=10 określa koniec iterowania (powtarzania) instrukcji. Aby najlepiej to zrozumieć, zapamiętajmy prostą regułę: pętla wykonuje się dopóki warunek w środku zwraca wartość true.

Pętla for może także zliczać w dół:

 for(int i=10; i>=1; i--)
{
[instrukcje, które będą się powtarzać]
}

Wówczas dokonujemy w każdym kroku zmniejszenia wartości zmiennej i o jeden – dekrementujemy jej wartość. Zmienił się też sprawdzany warunek, tak aby był prawdziwy tak długo, jak wartość i jest większa lub równa jeden.

Oczywiście możemy także dodawać bądź odejmować w każdym wywołaniu pętli dowolną wartość całkowitą, zamiast inkrementować lub dekrementować (czyli zmienić wartość o dokładnie jeden):

 for(int i=1; i<=10; i=i+2)
{
cout << endl << i;
}

Podobnie jak przy instrukcji warunkowej, na końcu linii definiującej pętlę nie może znajdować się średnik. Wobec tego poniższy zapis jest niepoprawny (zmieni działanie instrukcji – 10 razy wykonana zostanie pusta instrukcja (średnik), zaś linie kodu między klamrami wykonają się zawsze jeden raz):

 for(int i=1; i<=10; i=i+2); //średnik zmienił działanie programu!
{
cout << endl << i; //wykona się zawsze i to dokładnie jeden raz!
}

Pętla while, oraz do..while

Pora na pozostałe dwa rodzaje pętli. Tym razem sterowane są warunkiem, a zatem instrukcje powtarzane są wielokrotnie dopóki warunek w nawiasie jest spełniony (prawdziwy). W przeciwieństwie do pętli for nie musimy od razu definiować po ilu iteracjach pętla zakończy działanie. Różnica między pętlą while i do..while polega na tym, iż w przypadku pętli while warunek sprawdzany jest na początku, zaś w do..while na końcu bloku instrukcji. Stąd linie kodu zawarte w pętli do..while wykonają się zawsze przynajmniej jeden raz:

Porównanie pętli

Oto składnia pętli while ukazana na przykładzie odgadywania liczby "pomyślanej" przez komputer:

 while(strzal != liczba)
{
[instrukcje realizujące odgadywanie liczby]
}

Dopóki (while) liczba którą wpisaliśmy z klawiatury (strzal) jest różna od wylosowanej przez komputer liczby (liczba) powtarzaj instrukcje odpowiedzialne za odgadywanie. Taka sama pętla do..while ma następującą składnię:

 do
{
[instrukcje realizujące odgadywanie liczby]
} while(strzal != liczba);

Zwróćmy też uwagę, że tym razem wymagany jest na końcu średnik. Na koniec zapamiętajmy jeszcze następującą definicję - występuje na wielu egzaminach oraz w literaturze:

Instrukcja iteracyjna
jest to każda pętla (while, do..while, for) czyli instrukcja powtarzania pewnego zestawu poleceń. Nazwa wzięła się od łacińskiego słowa iteratio, itero ("powtarzanie" w wolnym tłumaczeniu). Iteracja oznacza także pojedyncze wykonanie pętli.

Zobacz także

Daj się zaskoczyć! Poniżej wylosowałem dla Ciebie pięć wpisów z całego archiwum bloga:

Komentarze

Disqus
Facebook
Pasja informatyki