Różnica między pętlą for a while dotyczy przede wszystkim tego, co steruje powtarzaniem:
- for jest pętlą iteracyjną: jej naturalnym zastosowaniem jest przechodzenie po kolejnych elementach pewnej kolekcji lub po wartościach generowanych przez konstrukcję iterowalną (np. zakres). Dzięki temu typowo nie musisz ręcznie zwiększać licznika ani pilnować, kiedy skończyć — mechanizm iteracji "podaje" kolejne elementy.
- while jest pętlą sterowaną warunkiem: wykonuje blok kodu dopóki warunek jest prawdziwy. To programista odpowiada za to, aby warunek kiedyś przestał być spełniony (np. przez zmianę zmiennej, odczyt danych, obsługę zdarzenia). W przeciwnym razie łatwo o pętlę nieskończoną.
Dlatego odpowiedź "Pętla for jest używana do iteracji przez sekwencje, natomiast pętla while jest używana do wykonywania bloku kodu dopóki spełniony jest określony warunek" oddaje kluczową ideę: for wiąże się z iteracją po elementach, a while z warunkiem kontynuacji.
Dlaczego pozostałe propozycje są błędne?
- Stwierdzenie, że "while jest używana do iteracji przez sekwencje" odwraca typowe role pętli. Owszem, da się iterować używając while (np. przez indeks), ale nie jest to podstawowy, najczytelniejszy wzorzec.
- Opis "while … określoną liczbę razy" jest mylący: while nie ma wbudowanego "licznika powtórzeń". Można go dopisać, ale wtedy liczba iteracji nadal wynika z warunku.
- Teza, że pętle są identyczne i zamienne, jest fałszywa: choć czasem da się przepisać jedną na drugą, różnią się stylem, czytelnością oraz typowym ryzykiem błędów (np. pominięcie aktualizacji warunku w while).
Wskazówka egzaminacyjna: gdy w treści zadania pojawia się "dla każdego elementu z listy/zbioru/zakresu" — zwykle pasuje for. Gdy pojawia się "dopóki", "aż do momentu, gdy", "czekaj, aż" — zwykle pasuje while.