Pętle pozwalają wielokrotnie wykonywać określone polecenia zapisane w kodzie programu. Pętli for używamy w sytuacjach, w których wiemy, ile razy należy wykonać pewną czynność (czyli wtedy, gdy znaczenie ma liczba powtórzeń) oraz w przypadku przechodzenia po zbiorze elementów (liście, tablicy lub kolekcji), bez potrzeby znajomości liczby jego elementów (jest to możliwe np. w języku Python).
Oto przykładowe zastosowania pętli for:
wypisanie pewnej wartości dokładnie pięć razy:
Linia 1. napis ← cudzysłów pies cudzysłów.
Linia 3. dla i znak równości 0 przecinek kropka kropka kropka przecinek 4 wykonuj dwukropek.
Linia 4. wypisz napis.
wypisanie dokładnie dwóch pierwszych liter pewnego napisu:
Linia 1. napis ← cudzysłów pies cudzysłów.
Linia 3. dla i znak równości 0 przecinek 1 wykonuj dwukropek.
Linia 4. wypisz napis otwórz nawias kwadratowy i zamknij nawias kwadratowy.
przypisanie wartości każdemu elementowi tablicy:
Linia 1. tablica otwórz nawias kwadratowy 0 kropka kropka 4 zamknij nawias kwadratowy.
Linia 3. dla i znak równości 0 przecinek kropka kropka kropka przecinek 4 wykonuj dwukropek.
Linia 4. tablica otwórz nawias kwadratowy i zamknij nawias kwadratowy ← i.
Przykładowe zadania maturalne
Zadanie 1. Bitwa podwórkowa
Bartek i Tomek bawią się w bitwę podwórkową z dziećmi z pobliskiego osiedla. Ich kolega Maciek pilnuje trzepaka kilka bloków dalej. Chłopcy chcą przekazać mu wiadomość o nadchodzącym ataku na jego posterunek. Sami nie mogą jednak opuścić swojego posterunku.
Bartkowi udało się zwerbować do drużyny młodszego brata, Kacpra, w roli posłańca. Chłopcy boją się jednak, że Kacper zostanie złapany wraz z wiadomością. Żeby temu zaradzić, Tomek wymyślił algorytm, dzięki któremu przeciwnik nie będzie umiał odczytać wymienianych wiadomości.
Przedstawiony algorytm przekształca wiadomość s o długości n za pomocą odpowiednich przestawień. Po wykonaniu algorytmu przekształcona wiadomość znajdzie się w zmiennej s:
Algorytm:
Linia 1. s otwórz nawias kwadratowy 0 kropka kropka n minus 1 zamknij nawias kwadratowy kratka wiadomość do przekształcenia.
Linia 2. dla i znak równości n minus 1 przecinek n minus 2 przecinek kropka kropka kropka przecinek 0 wykonuj dwukropek.
Linia 3. jeżeli i mod 2 znak równości 0 dwukropek.
Linia 4. a ← s otwórz nawias kwadratowy i zamknij nawias kwadratowy.
Linia 5. s otwórz nawias kwadratowy i zamknij nawias kwadratowy ← s otwórz nawias kwadratowy i div 2 zamknij nawias kwadratowy.
Linia 6. s otwórz nawias kwadratowy i div 2 zamknij nawias kwadratowy ← a.
Linia 7. w przeciwnym wypadku dwukropek.
Linia 8. a ← s otwórz nawias kwadratowy i zamknij nawias kwadratowy.
Linia 9. s otwórz nawias kwadratowy i zamknij nawias kwadratowy ← s otwórz nawias kwadratowy i mod 2 zamknij nawias kwadratowy.
Linia 10. s otwórz nawias kwadratowy i mod 2 zamknij nawias kwadratowy ← a.
Operator mod oznacza resztę z dzielenia, natomiast div – dzielenie całkowitoliczbowe.
Podaj wynik działania przedstawionego algorytmu Tomka dla słów ATAK oraz TRZEPAK.
Specyfikacja problemu:
Dane:
n – długość łańcucha s; liczba naturalna
s[0..n‑1] – łańcuch znaków o długości zawierający wiadomość do przekształcenia
Wynik:
s[0..n‑1] – łańcuch znaków o długości zawierający przekształconą wiadomość
Praca domowa
Zapisz algorytm w postaci programu w języku C++, Java lub Python.
Rozwiązanie
Przeanalizujmy działanie algorytmu.
Zacznijmy od słowa ATAK. Wypiszmy etapy przekształceń z zastosowaniem przedstawionego algorytmu:
Linia 1. n ← 4.
Linia 2. s otwórz nawias kwadratowy 0 kropka kropka n minus 1 zamknij nawias kwadratowy ← apostrof ATAK apostrof.
Linia 4. i ← 3.
Linia 5. a ← s otwórz nawias kwadratowy 3 zamknij nawias kwadratowy znak równości apostrof K apostrof.
Linia 6. s otwórz nawias kwadratowy 3 zamknij nawias kwadratowy ← s otwórz nawias kwadratowy 1 zamknij nawias kwadratowy znak równości apostrof T apostrof.
Linia 7. s otwórz nawias kwadratowy 1 zamknij nawias kwadratowy ← a.
Linia 8. kratka s znak równości apostrof AKAT apostrof.
Linia 10. i ← 2.
Linia 11. a ← s otwórz nawias kwadratowy 2 zamknij nawias kwadratowy znak równości apostrof A apostrof.
Linia 12. s otwórz nawias kwadratowy 2 zamknij nawias kwadratowy ← s otwórz nawias kwadratowy 1 zamknij nawias kwadratowy znak równości apostrof K apostrof.
Linia 13. s otwórz nawias kwadratowy 1 zamknij nawias kwadratowy ← a.
Linia 14. kratka s znak równości apostrof AAKT apostrof.
Linia 16. i ← 1.
Linia 17. a ← s otwórz nawias kwadratowy 1 zamknij nawias kwadratowy znak równości apostrof A apostrof.
Linia 18. s otwórz nawias kwadratowy 1 zamknij nawias kwadratowy ← s otwórz nawias kwadratowy 1 zamknij nawias kwadratowy znak równości apostrof A apostrof.
Linia 19. s otwórz nawias kwadratowy 1 zamknij nawias kwadratowy ← a.
Linia 20. kratka s znak równości apostrof AAKT apostrof.
Linia 22. i ← 0.
Linia 23. a ← s otwórz nawias kwadratowy 0 zamknij nawias kwadratowy znak równości apostrof A apostrof.
Linia 24. s otwórz nawias kwadratowy 0 zamknij nawias kwadratowy ← s otwórz nawias kwadratowy 0 zamknij nawias kwadratowy znak równości apostrof A apostrof.
Linia 25. s otwórz nawias kwadratowy 0 zamknij nawias kwadratowy ← a.
Linia 26. kratka s znak równości apostrof AAKT apostrof.
Analogicznie analizujemy kolejne iteracjeiteracjaiteracje pętli dla słowa TRZEPAK:
Linia 1. n ← 7.
Linia 2. s otwórz nawias kwadratowy 0 kropka kropka n minus 1 zamknij nawias kwadratowy ← apostrof TRZEPAK apostrof.
Linia 4. i ← 6.
Linia 5. a ← s otwórz nawias kwadratowy 6 zamknij nawias kwadratowy znak równości apostrof K apostrof.
Linia 6. s otwórz nawias kwadratowy 6 zamknij nawias kwadratowy ← s otwórz nawias kwadratowy 3 zamknij nawias kwadratowy znak równości apostrof E apostrof.
Linia 7. s otwórz nawias kwadratowy 3 zamknij nawias kwadratowy ← a.
Linia 8. kratka s znak równości apostrof TRZKPAE apostrof.
Linia 10. i ← 5.
Linia 11. a ← s otwórz nawias kwadratowy 5 zamknij nawias kwadratowy znak równości apostrof A apostrof.
Linia 12. s otwórz nawias kwadratowy 5 zamknij nawias kwadratowy ← s otwórz nawias kwadratowy 1 zamknij nawias kwadratowy znak równości apostrof R apostrof.
Linia 13. s otwórz nawias kwadratowy 1 zamknij nawias kwadratowy ← a.
Linia 14. kratka s znak równości apostrof TAZKPRE apostrof.
Linia 16. i ← 4.
Linia 17. a ← s otwórz nawias kwadratowy 4 zamknij nawias kwadratowy znak równości apostrof P apostrof.
Linia 18. s otwórz nawias kwadratowy 4 zamknij nawias kwadratowy ← s otwórz nawias kwadratowy 2 zamknij nawias kwadratowy znak równości apostrof 1 apostrof.
Linia 19. s otwórz nawias kwadratowy 2 zamknij nawias kwadratowy ← a.
Linia 20. kratka s znak równości apostrof TAPKZRE apostrof.
Linia 22. i ← 3.
Linia 23. a ← s otwórz nawias kwadratowy 3 zamknij nawias kwadratowy znak równości apostrof K apostrof.
Linia 24. s otwórz nawias kwadratowy 3 zamknij nawias kwadratowy ← s otwórz nawias kwadratowy 1 zamknij nawias kwadratowy znak równości apostrof A apostrof.
Linia 25. s otwórz nawias kwadratowy 1 zamknij nawias kwadratowy ← a.
Linia 26. kratka s znak równości apostrof TKPAZRE apostrof.
Linia 28. i ← 2.
Linia 29. a ← s otwórz nawias kwadratowy 2 zamknij nawias kwadratowy znak równości apostrof P apostrof.
Linia 30. s otwórz nawias kwadratowy 2 zamknij nawias kwadratowy ← s otwórz nawias kwadratowy 1 zamknij nawias kwadratowy znak równości apostrof P apostrof.
Linia 31. s otwórz nawias kwadratowy 1 zamknij nawias kwadratowy ← a.
Linia 32. kratka s znak równości apostrof TPKAZRE apostrof.
Linia 34. i ← 1.
Linia 35. a ← s otwórz nawias kwadratowy 1 zamknij nawias kwadratowy znak równości apostrof P apostrof.
Linia 36. s otwórz nawias kwadratowy 1 zamknij nawias kwadratowy ← s otwórz nawias kwadratowy 1 zamknij nawias kwadratowy znak równości apostrof P apostrof.
Linia 37. s otwórz nawias kwadratowy 1 zamknij nawias kwadratowy ← a.
Linia 38. kratka s znak równości apostrof TPKAZRE apostrof.
Linia 40. i ← 0.
Linia 41. a ← s otwórz nawias kwadratowy 0 zamknij nawias kwadratowy znak równości apostrof T apostrof.
Linia 42. s otwórz nawias kwadratowy 0 zamknij nawias kwadratowy ← s otwórz nawias kwadratowy 0 zamknij nawias kwadratowy znak równości apostrof T apostrof.
Linia 43. s otwórz nawias kwadratowy 0 zamknij nawias kwadratowy ← a.
Linia 44. kratka s znak równości apostrof TPKAZRE apostrof.
Wynik: AAKT i TPKAZRE
Schemat oceniania
2 pkt – za obie poprawne odpowiedzi
1 pkt – za jedną poprawną odpowiedź
0 pkt – za błędną odpowiedź lub brak odpowiedzi
Słownik
dekrementacja
dekrementacja
zmniejszenie wartości zmiennej o jeden
inkrementacja
inkrementacja
zwiększenie wartości zmiennej o jeden
iteracja
iteracja
technika programowania polegająca na powtarzaniu tej samej operacji w pętli określoną liczbę razy lub aż do spełnienia określonego warunku; termin ten używany jest także w węższym znaczeniu - nazywa się nim operacje wykonywane wewnątrz takiej pętli
nieskończona pętla
nieskończona pętla
pętla, która nigdy nie zostanie zakończona, ponieważ warunek wyjścia z pętli nigdy nie zostaje spełniony