Liczymy powtórzenia¶
Zaczynając rozwiązywać zadania graficzne wyszukujemy powtarzające się elementy rysunku. Zwykle możemy wskazać fragment, który został kilkukrotnie powielony tworząc regularny wzór. Typowym zadaniem tego typu są kwadratowe i prostokątne posadzki. Jednak niekiedy zadanie okazuje się nieco trudniejsze - co prawda łatwo odnajdujemy powtarzany element, ale liczba powtórzeń zależy od parametru zadania w nieco bardziej skomplikowany sposób. W innym przypadku elementy są bardzo do siebie podobne, ale nie identyczne. Obie te sytuacje wymagają nieco innego podejścia do instrukcji iteracji.
Rosnące kwadraty¶
Wyobraźmy sobie zadanie, w którym należy napisać funkcję rysującą pewną figurę złożoną z kwadratów różnej wielkości. Już wiemy, że wystarczy napisać jedną funkcję kwadrat() z parametrem określającym długość boku kwadratu, a następnie ją wywołać podając właściwe wartości parametru. W wywołaniu funkcji możemy wykorzystać zmienną sterującą pętlą, na przykład, by otrzymać coraz większe długości boków kwadratu.
Ćwiczenie 1¶
Poniższy kod tworzy pawie oczko złożone z kwadratów. Najmniejszy kwadrat ma długość boku równą 20, każdy kolejny ma bok o 20 dłuższy. Zmodyfikuj funkcję pawieO() w taki sposób, by kolejne kwadraty miały boki dłuższe o 10.
Ćwiczenie 2¶
Przygotuj funkcję rysującą tarczę złożoną ze współśrodkowych kwadratów, podobną do widocznej poniżej. Najmniejszy kwadrat ma długość boku równą 20, każdy kolejny ma bok o 40 dłuższy.
Dla ułatwienia rozwiązania zadania możesz zmodyfikować funkcję kw() tak, by kwadraty były rysowane ze środka.
Ćwiczenie 3¶
Kolejne zadanie jest nieco trudniejsze. Rysujemy kolejne kwadraty o coraz krótszych bokach tworzące układ taki, jak na poniższym rysunku. Największy kwadrat ma długość boku 100, najmniejszy 20.
Popraw funkcję pas(), by kwadraty były rysowane jeden za drugim. Co trzeba zmienić w otrzymanym kodzie, aby najmniejszy kwadrat w pasie był narysowany jako pierwszy od lewej? Jak zmienią się wzory, jeśli największy kwadrat ma bok 180, a najmniejszy 30?
Paski i schodki¶
Spróbujmy zbudować układy kwadratów, w których każdy kwadrat ma taką samą wielkość, ale liczba kwadratów zależy od podanego parametru.
Ćwiczenie 4¶
Napisz jednoparametrową funkcję pasek(), po wywołaniu której powstanie rysunek paska złożonego z n kolorowych kwadratów.
Wynik dla parametru 4:
Długość boku kwadratu wynosi 15. Po zakończeniu rysowania paska, żółw powinien wrócić do położenia startowego.
Ćwiczenie 5¶
Poniższy kod rysuje schodki wykorzystując napisaną wcześniej funkcję pasek(), każdy kolejny schodek jest o jeden kwadrat krótszy:
Przekopiuj funkcje z poprzedniego przykładu. Zastanów się jak zmienić funkcję schodki(), by różnica długości stopni wynosiła 2.