Powtórzenie informacji na temat pętli for

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:

  1. 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.
  1. 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.
  1. 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: AAKTTPKAZRE

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

zagnieżdżone pętle
zagnieżdżone pętle

wywołanie pętli wewnątrz innej pętli