Sokszor találkoztál már az Imagine Logo teknőcével. Tudsz új szavakat tanítani neki. Már ismered a véletlen fogalmát, és tudod, hogyan használhatod a tetszőleges és a véletlenszám szavakat. Készíts egy mikrovilágot, melyben a teknőc véletlenszerűen sétál a rajzlapon!
Nyisd meg az Imagine Logo-t és kezdj egy új projektet!
Először adj ki egy utasítást, melyben megy előre valamennyit a teknőc, majd véletlenszerűen fordul valamerre. Hogy látványos is legyen, ismételtesd meg mindezt a teknőccel legalább tízszer!
A mi megoldásunk:
ismétlés 10 [előre 15 jobbra véletlenszám 360]
Természetesen te többször is megismételtetheted az utasításokat, és többet vagy akár kevesebbet is léptetheted a teknőcöt.
Eljárásban önmaga hívása
De mit tegyél, ha azt szeretnéd, hogy a teknőc ne csak tízszer, hússzor menjen előre, hanem folytassa mindezt addig, amíg le nem akarod állítani?
Azaz mindig újra és újra végre akarod a teknőccel hajtatni az előre lépést és a véletlen jobbra fordulást.
Erre (is) jó az úgynevezett rekurzió, amikor egy eljárásban meghívod önmagát esetleg kisebb eltéréssel.
Írj is egy eljárást (legyen a neve véletlen_séta), mely semmi mást nem csinál, csak kiadja a teknőcnek az előrelépés és a jobbrafordulás utasításait, majd meghívja önmagát, ahol ismét kiadja a teknőcnek az előrelépés és a jobbrafordulás utasításait, majd meghívja önmagát ...
Hogy is néz ez ki?
eljárás véletlen_séta
előre 5
jobbra véletlenszám 360
véletlen_séta
vége
Most írd be a parancssorba, az új szavadat:
Ha le akarod állítani, kattints a Mindent megállít gombra, vagy írd be a parancssorba, hogy stopmind.
Ezt a fajta rekurziót hívják végtelen rekurziónak, mivel az eljárás mindig újra és újra meghívja önmagát, és semmilyen megállási (kilépési) feltételt nem adtál neki, ezért önmagától nem fog leállni.
Művészet és rekurzió
Ha körbenézel, rengeteg rekurzióval kapcsolatos dolgot láthatsz a környezetedben. Ez az eljárás a művészeket is megihlette mind az irodalom, a képzőművészet, a zene területén.
Olvasd el Szabó Lőrinc Dsuang Dszi álma című versét, mely gyönyörű példa az egymásra hivatkozásra:
Szabó Lőrinc – Dsuang Dszi álma
Kétezer évvel ezelőtt Dsuang Dszi,
a mester, egy lepkére mutatott.
- Álmomban - mondta - ez a lepke voltam
és most egy kicsit zavarban vagyok.
- Lepke - mesélte, - igen, lepke voltam,
s a lepke vigan táncolt a napon,
és nem is sejtette, hogy ő Dsuang Dszi...
És felébredtem... És most nem tudom,
most nem tudom - folytatta eltünődve -,
mi az igazság, melyik lehetek:
hogy Dsuang Dszi álmodta-e a lepkét
vagy a lepke álmodik engemet? -
Én jót nevettem: - Ne tréfálj, Dsuang Dszi!
Ki volnál? Te vagy: Dsuang Dszi! Te hát! -
Ő mosolygott: - Az álombeli lepke
épp így hitte a maga igazát! -
Ő mosolygott, én vállat vontam. Aztán
valami mégis megborzongatott,
kétezer évig töprengtem azóta,
de egyre bizonytalanabb vagyok,
és most már azt hiszem, hogy nincs igazság,
már azt, hogy minden kép és költemény,
azt, hogy Dsuang Dszi álmodja a lepkét,
a lepke őt és mindhármunkat én.
Nézd meg Escher képeit: az Örvényt és a Rajzoló kezeket!
Hallgasd meg Alvin Lucier monológját: I am sitting in a room (http://www.lovely.com/titles/cd1013.html), mely már szinte zene, vagy Johann Sebastian Bach Kis harmóniai labirintusát:
Keress te is rekurzív (önmagára hivatkozó) képeket, zenéket, verseket!
Spirál rajzolása
Készíts egy olyan rekurzív eljárás, melyben van kilépési feltétel: rajzoltass a teknőccel egy spirált!
Mivel ez egy négyzetes spirál, induljunk abból ki, hogyan rajzolnál négyzetet: tudod, hogy megy valamennyit előre a teknőc, aztán jobbra fordul 90°-ot, azután azonban nem ugyanannyit megy előre, hanem egy kicsit többet, és minden fordulás után egy kicsit többet:
Azaz az eljárás:
eljárás spirál :h
előre :h
jobbra 90
spirál :h + 5
vége
Ha azt akarod, hogy leálljon, az eljárás elejére kell írnod egy feltételt, ami ha teljesül, leállítja az eljárást. Ez a feltétel lehet például egy adott méret elérése, azaz ha :h egy bizonyos méretnél nagyobb, vagy egy adott szint elérése:
eljárás spirál :h
ha :h > 60 [stop]
előre :h
jobbra 90
spirál :h + 5
vége
Próbáld is ki az új eljárásodat! Írd be a parancssorba:
spirál 10
Mindezt megnézheted az alábbi videón: Spirál eljárás készítése.
Megforgatott spirál
Próbáld ki az előző eljárásodat úgy, hogy egy kicsivel nagyobb, illetve kisebb szögeket adsz meg az elfordulásnál, mint 90°! Ha valóban kis különbséget használsz, olyan, mintha jobbra, illetve balra kicsavartad volna a négyzetes spirálodat:
Vajon melyiknél mennyire változtattuk a fordulás szögét? Hogy látványosabb legyen az ábránk, az első oldalhosszt és a lépéseknél az oldalak növelésének értékét is kisebbre vettük.
Nézd meg az alábbi videón az első ábra elkészítését: Spirál eljárás készítése.