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.

Tarcza z trzech kwadratów

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.

Pas z kwadratów

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:

Efekt wywołania pasek(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:

Efekt wywołania pas(5)

Przekopiuj funkcje z poprzedniego przykładu. Zastanów się jak zmienić funkcję schodki(), by różnica długości stopni wynosiła 2.

| Back to top