Karta pracy Procedury rekurencyjne
Rekurencja jest to wywołanie podprogramu (procedury) samej przez siebie. W logo zapis rekurencji będzie wyglądał tak:
oto nazwa_funkcji
czynności_wykonywane_przez_procedurę
nazwa_funkcji
już
W zależności od zastosowania, często należy taką procedurę zaopatrzyć w mechanizm zatrzymania – gdyż w innym przypadku program mógłby sam się zapętlić na skutek niepoprawnego działania takiej procedury. Jako mechanizmu kontroli procedury rekurencyjnej stosuje się instrukcje warunkową z odpowiednio skonstruowanym warunkiem logicznym. Jest to komenda JEŚLI, która ma następującą składnię:
JEŚLI warunek_logiczny [procedury do wykonania jeśli prawda] [procedury do wykonania jeśli fałsz]
Jeśli pominiemy ostatni nawias, czyli warunek logiczny jest fałszem, wówczas procedura jest wykonywana dalej.
Ćwiczenie 1
Zredaguj procedurę spirala o następującej treści:
oto spirala :bok :kąt
jeśli :bok < 10 [stop]
np :bok pw :kąt
spirala :bok – 2 :kąt
już
Wywołaj ją z parametrami 200 i 122 oraz 250 i 135. Spróbuj znaleźć inne ciekawe kształty spirali wywołując ją wielokrotnie z różnymi parametrami.
Ćwiczenie 2
Zredaguj procedurę piramida o następującej treści:
oto piramida :n
jeśli :n = 0 [stop]
powtórz :n [powtórz 4 [np 50 pw 90]pw 90 np 50 lw 90]
pw 90 ws 50 * :n lw 90 np 50 pw 90 np 25 lw 90
piramida :n - 1
już
Wywołaj tę procedurę z parametrami 1, 2, 3, 4.
Ćwiczenie 3
Zredaguj procedurę tarcza o następującej treści:
oto tarcza :n :s
jeśli :n = 0 [stop]
ukp jld
kropka :s
tarcza :n-1 0.8*:s
już
gdzie n - liczba kół tarczy, s - średnica największego koła. Wywołaj tę procedurę kilkukrotnie, najpierw z parametrami 10 400.
Ćwiczenie 4
Na podstawie procedury tarcza napisz procedurę pawie rysującą „pawie oczka”.