Pętle. Rodzaje pętli

Mirosław Zelent | 08-01-2018

Pętle (ang. loop) to konstrukcje językowe służące do zdefiniowania szeregu instrukcji, które będą powtarzane wielokrotnie. Poznajmy trzy najbardziej podstawowe rodzaje pętli: for, while oraz do .. while.

Pętla for

W przypadku tej pętli z góry powinniśmy wiedzieć, ile razy instrukcje mają się wykonać. Aby zdefiniować w JS pętlę for wykonującą się np. 10 razy zapiszemy:

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

Zmienna i to liczba 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 (jest spełniony). Jeśli choć raz ten warunek się nie spełni, pętla zostaje zerwana (zakończona).

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

 for (i=10; i>=0; i--)
{
  // instrukcje, które będą się powtarzać
}

Wówczas dokonujemy w każdym kroku zmniejszenia wartości iteratora o jeden – dekrementujemy jego wartość. Zmienił się też sprawdzany warunek, tak aby był prawdziwy tak długo, jak wartość iteratora 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 (i=0; i<=10; i=i+2)
{
  alert(i);
}

Pętla while, do..while

Tym razem pętle 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:

while vs. do while

Oto składnia pętli while ukazana na przykładzie odgadywania liczby ("strzelamy" w skrypcie, jaka to wartość może znajdować się w zmiennej liczba):

 while (strzal != liczba)
{
  // instrukcje realizujące dalsze odgadywanie
  // liczby, gdy nie trafiono i liczby nie są równe!
}

Dopóki (while) liczba, którą wpisaliśmy do zmiennej “strzal” (np. pobierając ja z pola edycyjnego) jest różna od liczby w zmiennej liczba, to powtarzamy instrukcje odpowiedzialne za odgadywanie. Taka sama pętla do..while ma następującą składnię:

 do
{
  // instrukcje realizujące dalsze odgadywanie
  // liczby, gdy nie trafiono i liczby nie są równe!
}

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.