W ramach każdej metody, w tym również w metodzie startowej
main, program Java zwyczajowo wykonywany jest linia po linii.
Możemy wpłynąć na działanie domyślne poprzez zastosowanie instrukcji, które
zmieniają naturalny porządek wykonywania operacji. Mieliśmy już do czynienia z instrukcjami, które wykonywały bądź pomijały pewne linie kodu (a nawet całe bloki), takie
jak na przykład instrukcja
if ...
else czy
switch.
Teraz przedstawimy instrukcję
while, która umożliwi nam wykonywanie określonego fragmentu kodu wielokrotnie (powtarzając wykonanie tych samych linii),
aż do momentu zaistnienia warunku, który przerwie taką pętle.
Pętla while - jak to działa
Instrukcja
while wykonuje blok kodu, do momentu w którym warunek jest prawdziwy.
Najlepiej będzie zobaczyć jak wygląda działanie tej instrukcji w praktyce:
Wydruk wartości zmiennej
itemCounter będzie wykonywany tak długo, dopóki wartość ta będzie mniejsza od
5, przy czym naszą początkową wartością jest
0.
Pojedyncze sprawdzenie czy zmienna jest mniejsza od liczby 5 nie różni sie niczym od sprawdzenia wykonywanego za pomocą instrukcji warunkowej
if.
Oczywiście
0 jest mniejsze od
5 więc program wejdzie do bloku i wydrukuje na konsoli wartość
0:
Zasadnicza różnica w stosunku do pojedynczej instrukcji warunkowej polega na tym, że po zakończeniu bloku instrukcja
while
rozpoczyna swoje działanie od początku (jest restartowana) i tak się dzieje za każdym razem gdy kończony jest blok. Program zaczyna kręcić się w kółko i dlatego bardzo ważne jest, aby
można było znaleźć sposób na wyjście z takiej pętli. W tym celu za każdym razem gdy zbliżamy sie do końca bloku inkrementujemy (zwiększamy o 1) wartość zmiennej
itemCounter:
Tak więc po całym pierwszym wykonaniu kodu w bloku,
itemCounter równa się 1.
Dla tej wartości pętla wykonywana jest po raz kolejny, czyli wracamy do początku – do momentu sprawdzenia warunku:
Program sprawdza czy 1 < 5. Oczywiście jest to prawda, więc kod będzie wykonywany. Na ekranie zostanie wydrukowane 1,
a następnie wartość
itemCounter zostanie zwiększona o 1 – czyli będzie wynosić 2.
Dokładnie tak samo system zachowa się dla wartości zmiennej 2, 3, 4.
W momencie wykonania pętli dla wartości zmiennej równej 4, w ostatnim kroku, podobnie jak w poprzednich,
wartość zostanie zwiększona o 1 - czyli teraz będzie równa 5.
Po raz kolejny wracamy do wykonania pętli
while i w tym momencie warunek 5 < 5 nie jest już prawdziwy.
Zatem blok kodu umieszczony w pętli
while nie zostanie już wykonany.
Pętla do ... while
W Javie oprócz podstawowego wariantu wersji pętli
while, jaki przedstawiliśmy powyżej,
wyróżniamy także pętlę
do ... while. Ta pętla wykona blok kodu raz, przed sprawdzeniem czy warunek jest prawdziwy.
Jeśli jest, wtedy pętla będzie powtarzana dopóty, dopóki warunek jest prawdziwy. Pętla zakończy swoje działanie.
Przejdźmy do przykładu:
Pętla
do ... while zawsze będzie wykonana na pewno raz – nawet jeśli warunek jest
fałszywy, ponieważ najpierw wykonywany jest fragment kodu, a dopiero później
sprawdzany jest warunek. W tym przykładzie pętla wykona się, jeśli wartość zmiennej będzie równa 0, 1, 2, 3, 4.
Weźmy teraz pod uwagę
nieco inny przykład:
Mimo, że 0 jest równe 0 to program i tak wejdzie do bloku kodu umieszczonego w nawiasach klamrowych
po instrukcji
do i wykona wydruk wartości zmiennej:
czyli wydrukuje
0, oraz zwiększy wartość o
1.
Dopiero w tym momencie zostanie sprawdzony warunek:
Będzie on fałszywy, ponieważ zmienna ma wartość 1.
Dla porównania gdybyśmy ustawili wartość zmiennej
itemCounter na
0
i próbowali wykonać ten sam warunek z użyciem pętli
while:
Program Java nie wejdzie do bloku kodu, ponieważ warunek 0 < 0 jest fałszywy.
W związku z tym na ekranie nie zostanie wydrukowana żadna wartość.
Przykład w programie
Teraz zobaczmy jak te pętle wyglądają w praktyce po wpięciu ich do naszego programu z rozdziału
Hello JavAPPa:
[Film z dźwiękiem] [1080p]
Linki
https://www.w3schools.com/java/java_while_loop.asp
https://docs.oracle.com/javase/tutorial/java/nutsandbolts/while.html
Masz pytanie dotyczące prezentowanego materiału?
Coś jest dla Ciebie niejasne i Twoje wątpliwości przeszkadzają Ci w pełnym zrozumieniu treści?
Napisz do nas maila, a my chętnie znajdziemy odpowiednie rozwiązanie.
Najciekawsze pytania wraz z odpowiedziami będziemy publikować pod rozdziałem.
Nie czekaj. Naucz się programować jeszcze lepiej.