Pętla (for, while, do while, foreach) | Kurs Java

Pętla for, while, do while

Pętle są jednym z podstawowych narzędzi wykorzystywanych przez programistę. Dzięki nim można wywołać określoną funkcjonalność podaną ilość razy, zamiast za każdym razem wywoływać ją ręcznie.

Przykładowo, zamiast wypisywać kolejno dni tygodnia w 7 instrukcjach, możemy wykorzystać do tego pętlę. W przypadku tygodnia mamy tylko 7 instrukcji, ale gdybyśmy chcieli wyświetlić dni z miesiąca, roku albo nawet kilku lat? W takich sytuacjach pętlę okazują się niezrównane.

W Javie mamy do dyspozycji kilka rodzajów pętli: while, do while, for i foreach. Funkcjonalność wszystkich jest wymienna, a decyzja, którą należy użyć w danym momencie, zależy głównie od kontekstu, w jakim ma być wykorzystana oraz od preferencji programisty.

While

Pętla while najczęściej jest wykorzystywana, gdy nie możemy określić konkretnej ilości powtórzeń do wykonania. Znamy jednak warunki określające, jak długo dana sytuacja będzie zachodziła. Przykładowo: „dopóki licznik nie przekroczy zakresu tablicy, wypisz jej kolejny element”.

Pętla jest wykonywana tak długo, póki warunek jest spełniony. Jeżeli warunek od początku nie będzie spełniony, taka pętla nie zostanie wywołana ani razu.

Na przykładzie widać, że najpierw została zadeklarowana tablica przechowujące wszystkie dni tygodnia oraz zmienna pomocnicza index przechowująca aktualnie wyświetlany klucz z tablicy. W zmiennej days.length przechowana jest ilość elementów tablicy, czyli w tym wypadku 7.

W pierwszym kroku sprawdzany jest warunek pętli (czy indeks jest mniejszy od rozmiaru tablicy), jeżeli tak, to wyświetlany jest element z tego indeksu, a sam indeks jest zwiększany o 1. Następnie znowu sprawdzany jest warunek pętli i tak dalej, aż do momentu niespełnienia warunku.

Do while

Pętla do while jest to modyfikacja pętli while. Głowna różnica polega na tym, że ciało pętli zostanie wykonane przynajmniej raz, nawet jeżeli warunek zawsze jest niespełniony. Najpierw wykonywane są instrukcje zdefiniowane wewnątrz pętli, a dopiero potem sprawdzany jest jej warunek.

Przykład powyżej realizuje to samo zadanie co poprzednio pętla while. Tym razem najpierw wywoływane jest ciało pętli, a dopiero potem sprawdzany jest jej warunek.

Warto zwrócić uwagę, że po warunku pętli niezbędny jest średnik, o którym na początku często się zapomina.

For

Pętla for zazwyczaj wykorzystywana jest, gdy z góry znamy ilość wykonania kolejnych iteracji pętli.
Jej schematyczny zapis wygląda w ten sposób:

Wszystkie cztery elementy pętli są opcjonalne, jednak dla wygody i czytelności kodu warto z nich korzystać.

  1. inicjalizacja – służy do zainicjowania zmiennych początkowymi wartościami, np. utworzenie i zainicjowanie licznika;
  2. warunek – w warunku należy sprawdzić, czy ciało pętli ma być wykonane;
  3. modyfikacja – ten element pętli jest wykonywany po ciele funkcji, można tu np. zmodyfikować licznik pętli;
  4. ciało pętli – czyli wszystkie instrukcje, które chcemy, żeby były wykonane określoną ilość razy;

Na listingu poniżej pokazane są dwa przykłady z wykorzystaniem pętli for. W pierwszym wykorzystano wszystkie elementy pętli, w drugim natomiast wszystkie instrukcje zostały umieszczone w ciele pętli. Oba przykłady podobnie jak poprzednie realizuję to samo zadanie i różnią się głównie czytelnością.

Foreach

Pętla for each jest modyfikacją pętli for. Za jej pomocą w bardzo prosty i czytelny sposób można przeglądać wszystkie elementy różnych zbiorów, np. tablic.

Pętlę można przeczytać jako: „dla każdego elementu tablicy zrób coś…”.

Na przykładzie widać jak dla każdego elementu tablicy tworzona jest zmienna lokalna: day. Dzięki wykorzystaniu tego rodzaju pętli kod uprościł się o licznik oraz o warunek sprawdzający rozmiar pętli.

Polecenia break i continue

Korzystając z pętli, czasami zachodzi potrzeba ominięcia wykonywania danej iteracji lub przerwanie całej pętli. W takim przypadku z pomocą przychodzą nam dwie instrukcje: break oraz continue.

  • continue – kończy wykonywanie aktualnej iteracji pętli. Jeżeli warunek w pętli będzie dalej spełniony, aplikacja przejdzie do wykonywania dalszych iteracji.
  • break – po wykonaniu instrukcji break kończone jest wykonywanie aktualnej iteracji oraz całej pętli. Niezależnie od wartości warunku pętli kolejna iteracja nie będzie już wykonana – warunek pętli nie będzie w tym wypadku już nawet sprawdzany.
Fragment kodu przedstawia pętlę for z licznikiem i o wartościach od 1 do 10 oraz dwoma warunkami w ciele pętli.

  1. Pierwszy warunek: i % 2 == 0 sprawdza, czy licznik jest parzysty, jeżeli tak, kończy wykonywanie aktualnej iteracji.
  2. Drugi warunek: i >= 5 sprawdza, czy licznik nie przekroczył liczby 5, jeżeli tak, kończy wykonywanie całej pętli.

Podsumowując, przedstawiony przykład wyświetla liczby nieparzyste od 1 do 10, ale nie większe niż 5, czyli program wyświetli tylko liczbę: 1 i 3.

Nieskończona pętla

Na koniec jeszcze mała przestroga. Korzystając z pętli, trzeba uważać określając warunki zakończenia wykonywania iteracji. Jeżeli zrobimy to niewłaściwie, możemy otrzymać nieskończoną pętlę.

Powyższy kod nigdy nie zakończy swojego działania i doprowadzi do zawieszenia się aplikacji.

Programista – Pytania rekrutacyjne

Lista pytań rekrutacyjnych, które pozwolą przygotować Ci się na rozmowę kwalifikacyjną.

Brak komentarzy
Share:

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *