Pętla

Konstrukcja powtarzająca blok kodu wielokrotnie, dopóki spełniony jest określony warunek. Typowe rodzaje to for i while.

Pętla to konstrukcja sterująca, która powtarza ten sam blok kodu wiele razy — tak długo, jak spełniony jest określony warunek, albo dopóki nie przejdziesz przez wszystkie elementy jakiegoś zbioru. Dzięki niej nie musisz pisać tej samej linijki sto razy: piszesz ją raz i mówisz komputerowi „rób to, aż skończysz”. To jeden z fundamentów programowania imperatywnego, obok instrukcji warunkowych.

W praktyce spotkasz głównie dwa rodzaje. Pętla for sprawdza się, gdy z góry wiesz, ile razy chcesz coś powtórzyć albo masz gotową kolekcję do przejścia (lista, tablica, zakres liczb). Pętla while jest dla sytuacji, gdy liczba powtórzeń zależy od warunku obliczanego w trakcie — „czytaj dane, dopóki użytkownik nie wpisze quit„. Jest jeszcze do...while (w językach jak C, Java, JavaScript), która gwarantuje co najmniej jedno wykonanie, bo warunek sprawdza dopiero na końcu.

Każda pętla ma trzy elementy, o których warto myśleć: stan początkowy, warunek kontynuacji i krok, który zmienia stan tak, żebyś kiedyś z niej wyszedł. Do tego masz instrukcje break (natychmiast przerywa pętlę) i continue (przeskakuje do następnej iteracji).

Przykład z praktyki

Najprostsza pętla for w Pythonie, która wypisuje liczby od 0 do 4:

for i in range(5): print(i)

A bardziej życiowo: przejście po plikach w katalogu i policzenie tych z rozszerzeniem .log. Zamiast klikać ręcznie, pętla zrobi to w ułamku sekundy dla pięciu plików albo pięciu tysięcy — kod jest dokładnie ten sam.

Częste błędy

  • Pętla nieskończona — zapominasz zmienić warunek, więc while True kręci się w kółko i zżera procesor. Klasyk debiutanta i sprawdzony sposób na zawieszenie programu.
  • Off-by-one — pomyłka o jeden, najczęściej przez mylenie < z <=. Przelatujesz o element za daleko albo o jeden za mało.
  • Modyfikacja kolekcji w trakcie iterowania — usuwanie elementów z listy, po której właśnie chodzisz, kończy się pominiętymi danymi albo wyjątkiem.

Warto też wiedzieć, że w wielu językach pętlę da się zastąpić bardziej deklaratywnym podejściem: map, filter czy list comprehension robią to samo zwięźlej.

Pojęcia powiązane: iteracja, instrukcja warunkowa (if), rekurencja, tablica, kolekcja, warunek logiczny, break i continue.