P r o c e d u r y r e k u r e n c y j n e S t r o n a 1 Procedury rekurencyjne Procedura rekurencyjna to taka procedura, która wywołuje samą siebie. Schemat procedury rekurencyjnej: oto nazwa_procedury :parametr jeśli :parametr<10 *stop+ treśd procedury nazwa_procedury :parametr-1 lub oto nazwa_procedury :parametr jeśli :parametr=0 *stop+ treśd procedury nazwa_procedury :parametr-1 1. kwadraty oto kwadraty :bok jeśli :bok < 30 *stop+ powtórz 4 *np :bok pw 90+ kwadraty :bok - 10 kwadraty 100 powtórz 4 [np :bok pw 90] tworzenie kwadratu, kwadraty :bok 10 każdy kolejny kwadrat będzie miał bok mniejszy o 10 od poprzedniego lub (jeżeli mamy wcześniej zdefiniowaną procedurę kwadrat) oto kwadrat :bok powtórz 4 *np :bok pw 90+ oto kwadraty :bok jeśli :bok < 30 *stop+ kwadrat :bok kwadraty :bok - 10
P r o c e d u r y r e k u r e n c y j n e S t r o n a 2 2. wieża oto wieża :bok :ilekwadratów powtórz 4 [np :bok pw 90] np :bok wieża :bok :ilekwadratów - 1 jeżeli parametr :ile kwadratów przyjmie np. wartośd 3, to program będzie po każdej operacji powtórz 4 [np :bok pw 90] np :bok odejmował od :ilekwadratów 1.tzn na początku program wie, że operację powtórz 4 [np :bok pw 90] np :bok ma wykonad 3 razy. Po pierwszym wykonaniu od :ilekwadratów 1 i będzie wiedział, że operację powtórz 4 [np :bok pw 90] np :bok ma wykonad jeszcze 2 razy. I tak w koło aż dojdzie do zera, w tym momencie zakooczy swoje działanie. Procedura wieża jeżeli mamy wcześniej zdefiniowaną procedurę kwadrat oto wieża :bok :ilekwadratów kwadrat :bok np :bok wieża :bok :ilekwadratów - 1 3. schody oto schody :bok :ilekwadratów powtórz 4 *np :bok pw 90+ np :bok pw 90 np :bok lw 90 schody :bok :ilekwadratów - 1 schody 40 3 instrukcja powtórz 4 *np :bok pw 90+ np :bok pw 90 np :bok lw 90 powoduje narysowanego kwadratu jak na rysunku poniżej
P r o c e d u r y r e k u r e n c y j n e S t r o n a 3 procedura schody gdy mamy zdefiniowaną procedurę kwadrat oto schody :bok :ilekwadratów kwadrat :bok np :bok pw 90 np :bok lw 90 schody :bok :ilekwadratów - 1 4. spirala oto spirala :bok np :bok pw 90 spirala :bok - 2 spirala 100 5. spirala1 oto spirala1 :bok np :bok pw 120 spirala1 :bok - 2 spirala1 100 6. spirala2 oto spirala2 :bok pw 30 np :bok pw 90 spirala2 :bok - 4 spirala2 100 7. spirala3 oto spirala3 :bok :kąt np :bok pw :kąt spirala3 :bok - 2 :kąt spirala3 244 244 Spirala3 200 122 Spirala3 200 135
P r o c e d u r y r e k u r e n c y j n e S t r o n a 4 8. piramida oto piramida :bok :n jeśli :n = 0 *stop+ powtórz :n *powtórz 4 *np :bok pw 90+ pw 90 np :bok lw 90+ pw 90 ws :n * :bok lw 90 np :bok pw 90 np :bok / 2 lw 90 piramida :bok :n - 1 piramida 40 5 :bok oznacza długośd boku kwadratu :n oznacza liczbę kwadratów w warstwie (to liczba początkowa kwadratów podstawie) *powtórz 4 *np :bok pw 90] tworzenie kwadratu pw 90 np :bok lw 90 zmiana pozycji żółwia tak by w po prawej stronie mogły byd dorysowywane kolejne :n kwadraty powtórz :n *powtórz 4 *np :bok pw 90+ pw 90 np :bok lw 90+ rysowana jest pierwsza warstwa piramidy dla n (w tym przypadku dla 5) powtórzeo pw 90 ws :n * :bok lw 90 np :bok pw 90 np :bok / 2 lw 90 ustawienie pozycji żółwia do rysowania kolejnej warstwy Powtórzenia są wykonywane do momentu gdy liczba n kwadratów w warstwie wyniesie zero. Procedura piramida może mied inną postad gdy zdefiniujemy odpowiednią procedurę kwadrat do której się odwołamy: oto kwadrat :bok powtórz 4 *np :bok pw 90+ pw 90 np :bok lw 90
P r o c e d u r y r e k u r e n c y j n e S t r o n a 5 oto piramida :bok :n jeśli :n = 0 *stop+ powtórz :n *kwadrat :bok+ pw 90 ws :n * :bok lw 90 np :bok pw 90 np :bok / 2 lw 90 piramida :bok :n - 1 9. szachownica (gdy mamy zdefiniowane procedury kwadrat i warstwa) oto kwadrat :bok powtórz 4 *np :bok pw 90+ pw 90 np :bok lw 90 oto warstwa :bok :a powtórz :a *kwadrat :bok+ np :bok lw 90 np :bok * :a pw 90 oto szachownica :bok :a :c jeśli :c = 0 *stop+ warstwa :bok :a szachownica :bok :a :c - 1 szachownica 40 4 6
P r o c e d u r y r e k u r e n c y j n e S t r o n a 6 :bok długośd boku kwadratu :a liczba kwadratów w warstwie :c liczba warstw (ilośd powtórzeo warstwy) 10. pawie oczko oto pawieoczko :r jeśli :r < 6 *stop+ powtórz 36 [np :r pw 10] pod pw 90 np :r / 2 opu ukm losowa 15 zamaluj pod ws :r / 2 lw 90 opu pawieoczko :r - 2 pawie oczko 40 :r - średnica koła powtórz 36 [np :r pw 10] rysowanie koła pod pw 90 np :r / 2 opu ukm losowa 15 zamaluj pod ws :r / 2 lw 90 opu instrukcje mające na celu zamalowanie koła losowa 15 instrukcja ustalająca losowy kolor