Pętle (ang. loops) – Wyobraź sobie sytuację, w której musisz odświeżyć dane wszystkich uczniów w szkole 🏫. Mogą to być nawet setki uczniów 👩🎓👨🎓 – a co jeżeli jakiś uczeń odejdzie ze szkoły? A może ktoś nowy przeniesie się z innego miasta 🏢? Brzmi jak syzyfowa praca 🤯, i to w dodatku podatna na błędy… Nie zachęca? Całe szczęście, że Java oferuję różne pętle ➿ – narzędzie, które pozwala wykonać fragment kodu określoną ilość razy.
W tym materiale poopowiadam Ci o pętlach. Dowiesz się o dostępnych rodzajach pętli i sposobach ich przerywania.
Spis treści
- 1 Java – Pętle – wprowadzenie
- 2 Java – Pętla (ang. loop)
- 3 Java – Rodzaje pętli
- 4 Java – Pętla while (ang. while loop)
- 5 Java – Pętla do while (ang. do while loop)
- 6 Java – Pętla for (ang. foor loop)
- 7 Java – Pętla foreach (ang. foreach loop)
- 8 Java – Polecenia break i continue
- 9 Java – Nieskończona pętla (ang. infinite loop)
- 10 Java – Pętle – podsumowanie
- 11 Kierunek Java
- 12 20+ BONUSOWYCH materiałów z programowania
Java – Pętle – wprowadzenie
Z tego materiału dowiesz się:
- Czym jest pętla?
- Jak działa pętla while?
- Jak działa pętla do while?
- Jak działa pętla for?
- Jak działa pętla for each?
- Jak działają słowa kluczowe break i continue?
- Czym jest nieskończona pętla?
- oraz – dlaczego pętle są podstawowym narzędziem programisty.
Java – Pętla (ang. loop)
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ętle okazują się niezrównane.
System.out.println("Poniedziałek"); System.out.println("Wtorek"); System.out.println("Środa"); System.out.println("Czwartek"); System.out.println("Piątek"); System.out.println("Sobota"); System.out.println("Niedziela");
Java – Rodzaje pętli
W Javie mamy do dyspozycji kilka rodzajów pętli:
- while,
- do while,
- for,
- 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.
Java – Pętla while (ang. while loop)
Pętlę while najczęściej wykorzystuję się, gdy nie można określić konkretnej ilości powtórzeń do wykonania. Znane są nam 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.
String[] days = {"Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota", "Niedziela"}; int index = 0; while (index < days.length) { System.out.println(days[index]); index++; }
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.
Java – Pętla do while (ang. do while loop)
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.
int index = 0; do { System.out.println(days[index]); index++; } while (index < days.length);
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.
Java – Pętla for (ang. foor loop)
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:
for([inicjalizacja]; [warunek]; [modyfikacja]){
[ciało pętli – instrukcje do wykonania] }
Wszystkie cztery elementy pętli są opcjonalne, jednak dla wygody i czytelności kodu warto z nich korzystać.
- inicjalizacja – służy do zainicjowania zmiennych początkowymi wartościami, np. utworzenie i zainicjowanie licznika;
- warunek – w warunku należy sprawdzić, czy ciało pętli ma być wykonane;
- modyfikacja – ten element pętli jest wykonywany po ciele funkcji, można tu np. zmodyfikować licznik pętli;
- 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ą.
// 1 for (int index = 0; index < days.length; index++) { System.out.println(days[index]); } // 2 int index = 0; for (;;) { if (index < days.length) { System.out.println(days[index]); index++; } else { break; } }
Java – Pętla foreach (ang. foreach loop)
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ś…”.
for (String day : days) { System.out.println(day); }
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.
Java – 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.
for (int i = 1; i <= 10; i++) { if (i % 2 == 0) { continue; } if (i >= 5) { break; } System.out.println(i); }
Fragment kodu przedstawia pętlę for z licznikiem i o wartościach od 1 do 10 oraz dwoma warunkami w ciele pętli.
- Pierwszy warunek: i % 2 == 0 sprawdza, czy licznik jest parzysty, jeżeli tak, kończy wykonywanie aktualnej iteracji.
- 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.
Java – Nieskończona pętla (ang. infinite loop)
Pętle to super narzędzie, jednak chcę przestrzec Cię ⚠️ przed błędem, który może wydać się banalny, ale w skutkach już taki nie jest.
⚠️ 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ę ♾️.⚠️
// 1 while (true) { } // 2 for (;;) { } // 3 int i = 0; while (i > 10) { }
Powyższy kod nigdy nie zakończy swojego działania i doprowadzi do zawieszenia się aplikacji.
Java – Pętle – podsumowanie
W ramach tego materiału dowiedzieliśmy się, czym są pętle. Bliżej poznaliśmy ich różne rodzaje oraz dwa istotne słowa kluczowe: break i continue . Jeżeli chcesz kontynuować swoją przygodę z Javą i poznać inne struktury, które oferuję ten język programowania – to zapraszam do kolejnego tematu z serii o Javie. Przedstawię Ci instrukcję warunkową „if” i jej różne wariacje.
➡ ZOBACZ 👉: Instrukcja warunkowa IF ELSE
Kierunek Java
W serii o Javie zapoznajesz się z podstawowymi tematami o Javie. Jeżeli chcesz bardziej kompleksowo zagłębić się w temat Javy, poczytać, posłuchać o Javie, to zachęcam Cię do zapoznania się z moim kursem „Kierunek Java”:
➡ ZOBACZ 👉: Kierunek Java
20+ BONUSOWYCH materiałów z programowania
e-book – „8 rzeczy, które musisz wiedzieć, żeby dostać pracę jako programista”,
e-book – „Java Cheat Sheet”,
checklista – „Pytania rekrutacyjne”
i wiele, wiele wiecej!
5 Comments
dzięki tomek
Cześć Janek. Polecam się 🙂
Dzięki. Super wytłumaczone !
Super stronka! Bardzo fajnie i przystepnie wszystko wytlumaczone. Wpadlem tu we wlasciwym czasie- akorat zaczalem szkole kodowania i taka pomoc spadla mi wprost z nieba! Dzieki wielkie i wielki szacun z a to ze chcesz dzielic sie swoja wiedza i doswiadzeniem! pozdrawiam serdecznie!
Cześć Mariusz. Mega dzięki za komentarz, super 🙂