LOGO #8 – Zagnieżdżanie procedur

Sty 21
2010

Jeśli chcemy wykonać jakiś zaawansowany rysunek (np. Glider) możemy to zrobić na dwa sposoby.

 

 

 

 

Zagnieżdżanie procedur

Poniżej rysunek przedstawiający Glider:

Gldter

Więc po pierwsze możemy jechać na ‚żywca’, że tak powiem. Narysować jeden duży kwadrat, a następnie podzielić go na mniejsze oraz odpowiednie z nich zamalowując. Jednakże można to zrobić w inny sposób. Zagnieżdżenie procedur. Jak to zrobić? Stworzyć procedurę, która rysuje kwadrat oraz drugą, która ten kwadrat zamalowuje. Kod przedstawia się następująco:

oto kwadrat :a
 powtórz 4 [np :a pw 90]
 pw 90
 np :a
 lw 90
już

Zapis powinien być już dla wszystkich zrozumiały. Ale dla utrwalenia opiszę co do czego służy.
W pierwszej linii deklarujemy procedurę o nazwie kwadrat z parametrem :a. Następnie pętla ma za zadanie narysować kwadrat o długości boku podanej w tym parametrze. Dzięki:

pw 90
 np :a
 lw 90

Żółw ustawi się w prawym dolnym rogu figury, skierowany ku górze.

oto kwadrat2 :a
 kwadrat :a
 pod
 np 1
 lw 90
 np 1
 zamaluj
 ws 1
 pw 90
 ws 1
 opu
już

Jest to nic innego jak kwadrat zamalowany. Aby stworzyć nasz cel, którym jest Glider należy w odpowiedniej kolejności wpisać procedurę rysującą kwadrat (kwadrat2), a następnie ustawić się po lewej stronie figury przodem ku góry oraz :a kroków niżej, aby ‚dobudować’ kolejne piętro. W tym przypadku rysujemy z góry do dołu.

oto glider :a
kwadrat :a
kwadrat2 :a
kwadrat :a
lw 90
np 3*:a
pw 90
pod
ws :a
opu
kwadrat :a
kwadrat :a
kwadrat2 :a
lw 90
np 3*:a
pw 90
pod
ws :a
opu
kwadrat2 :a
kwadrat2 :a
kwadrat2 :a
już

Myślę, że zbytnio nie zagmatwałem.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *