1. Wprowadzenie
Wyobraź sobie, że masz zadanie: wypisać na ekran „Cześć!” dziesięć razy. Oczywiście można napisać dziesięć linii z System.out.println("Cześć!"); — ale przecież znasz już pętlę while, więc bez problemu sobie z tym poradzisz.
Ale jest jeszcze jedna pętla — for, która powtarza potrzebną czynność wymaganą liczbę razy. Co więcej, potrafi liczyć sama!
Oto typowy przykład:
for (int i = 0; i < 10; i++)
{
System.out.println("Cześć!");
}
Co robi ten kod? Wypisuje na ekran słowo „Cześć!” dokładnie 10 razy. Bez kopiuj-wklej i bólu nadgarstka.
2. Składnia pętli for
Pętla for składa się z trzech podstawowych części, które zapisuje się w nawiasach okrągłych po słowie kluczowym for:
for (initialization; condition; change)
{
// Treść pętli
}
for
Przeanalizujmy każdy element szczegółowo:
- Inicjalizacja — zazwyczaj utworzenie zmiennej‑licznika, od której zaczyna się zliczanie powtórzeń (int i = 0).
- Warunek — sprawdzany przed każdą iteracją. Jeśli jest prawdziwy — wykonywane jest ciało pętli. Jeśli fałszywy — pętla się kończy. Na przykład i < 10.
- Zmiana — operator uruchamiany po każdej iteracji. Zwykle zwiększa lub zmniejsza wartość licznika (i++).
Można to przedstawić na schemacie:
3. Porównanie for i while
Być może stanie się to jaśniejsze, jeśli powiem, że for to po prostu inny zapis pętli while.
Mieliśmy pętlę while:
int i = 0; // Inicjalizacja zmiennej dla pętli
while(i<10) // Sprawdzenie warunku kontynuacji pętli
{
System.out.println(i); // Pożyteczna czynność (ciało pętli)
i++; // Zwiększenie licznika
}
Możemy zapisać to jako pętlę for, po prostu przenosząc wszystkie działania, które sterowały logiką pętli:
for (int i = 1; i <= 10; i++) // Inicjalizacja; Sprawdzenie warunku; Zwiększenie licznika
{
System.out.println(i); // Pożyteczna czynność (ciało pętli)
}
Kroki działania obu pętli:
- Inicjalizacja int i = 0; wykonywana jest 1 raz przed pętlą.
- Następnie wykonywane jest sprawdzenie warunku i <= 10
- Potem pożyteczna czynność pętli System.out.println(i);
- Później zwiększenie licznika i++
- Następnie przejście do kroku 2.
4. Przykłady użycia pętli for
Najprostszy przykład
Wypiszmy liczby od 1 do 5:
for (int i = 1; i <= 5; i++)
{
System.out.println(i);
}
Wynik:
1
2
3
4
5
Uwaga: gdybyś napisał i < 5, ostatnią wypisaną liczbą byłaby 4.
Odliczanie wsteczne
Chcesz poczuć się jak kosmonauta? Zróbmy odliczanie wsteczne!
for (int i = 5; i > 0; i--)
{
System.out.println(i);
}
System.out.println("Start!");
Wynik:
5
4
3
2
1
Start!
Krok pętli różny od 1
Licznik można zmieniać nie tylko o 1, lecz o dowolną inną wartość:
for (int i = 0; i <= 10; i += 2)
{
System.out.println(i);
}
// Wypisze: 0 2 4 6 8 10
5. Wariacje pętli for
Wiele zmiennych w pętli
Czasem wygodnie jest śledzić dwie zmienne naraz. Na przykład wypiszmy liczby od lewej do prawej i od prawej do lewej:
for (int left = 1, right = 10; left <= 10; left++, right--)
{
System.out.println(left + " " + right);
}
Wynik:
1 10
2 9
3 8
...
10 1
Nieskończona pętla for
Jeśli przypadek jest bardzo ciężki (np. Twój projekt to perpetuum mobile w IT), można zrobić „nieskończoną” pętlę for:
for (;;) // ani inicjalizacji, ani warunku, ani zmiany
{
System.out.println("Pracować, pracować i jeszcze raz pracować!");
}
Uwaga: taka pętla zakończy się tylko wtedy, gdy w ciele znajduje się break, return lub throw. Nie używaj jej bez powodu, bo możesz obudzić pradawnego demona — „Proces nie odpowiada”.
GO TO FULL VERSION