14.Rekurzia

Na hodine "Korytnačka sa učí" sme videli ako ju môžeme naučiť nové slová použitím príkazu k. Taktiež môžeme naučiť korytnačku novému príkazu používajúc k nasledovane parametrom, ako napríklad - k advance :MENO_PARAMETRA dp :MENO_PARAMETRA. Korytnačka teraz bude očakávať aby prijala parameter (hodnotu) po tom, keď dostane nový "advance" príkaz. Napríklad: advance 40.
Nauč korytnačku čo je advance s parametrom nazývaným "rozmer"
Ako sme videli v minulom kroku, môžeme naučiť korytnačku aby robil akcie ktoré ho donútia očakávať parametre (hodnoty). Ako sme videli na minulej hodine na to aby sme naučili korytnačku ako kresliť štvorec musíme napísať inštrukcie:k štvorec opakuj 4 [dp NEJAKÉ_ČÍSLO np 90] koniec.
Nauč korytnačku príkazu štvorca. Prinúť ju aby očakávala parameter "rozmer". Parameter "rozmer" určí rozmer štvorca.
Už sme vytvorili nový príkaz nazývaný štvorec ktorý očakáva parameter. Preverme či to funguje. Môžeš napísať príkaz štvorec 60 alebo príkaz štvorec 80 a tak ďalej.
Napíš príkaz štvorec 100
Keď príkaz vyvolá samého seba, taký proces sa volá 'rekurzia' Pri používaní rekurzie musíme mať stopovaciu podmienku (nechceme mať nekonečnú slučku) a vyvolanie nového príkazu snovými parametrami. Znie komplikovane? Neboj sa, pôjdeme na to krok za krokom. Poďme naučiť korytnačku príkazu Zštvorec' používajúc rekruziu.
Nauč korytnačku následujuce: k štvorec :rozmer ak :rozmer > 90 [stop] opakuj 4 [ dp :rozmer np 90] štvorec :rozmer + 20]
Pozrime sa ako to funguje v zákulisí, keď používame príkaz štvorec 40 . Ako prvé vyvolávame príkaz štvorec. To znamená, že premenná :rozmer ktorá je v štvorcovom príkaze získava hodnotu 40. Potom použijeme if podmienku. Vlastne čo robíme je to, že sa pýtame korytnačky: Je hodnota :rozmer väčšia než 90 (:rozmer > 90)? Ak je tak potom zastav program. Ak nie je, tak potom nasleduj tieto inštrukcie - Nakresli štvorec s premennou :rozmer. Nazvi štvorec s :rozmer = :rozmer + 20. Teraz premenná :rozmer je 60. Je to stále < 90 takže nakreslíme štvorec ktorý je 60 bodov veľký a povedz štvorcu :rozmer = :rozmer + 20. Teraz premenná :rozmer sa rovná 80, čo je stále menej než 90, takže korytnačka nakreslí štvorec ktorý je 80 bodov veľký a povie štvorcu :rozmer = :rozmer + 20. Teraz :rozmer je 100 > 90, takže zastavíme program.
Napíš príkaz štvorec 40
Vytvorme príkaz na vytváranie špirále, ktorý sa korytnačka naučí. Špirála dostane 1 premennú ktorá sa nazýva :rozmer. Podmienka na zastavenie bude, keď :rozmer > 30. S každým vyzvaním pôjdeme dopredu podľa premennej rozmeru, dp :rozmer a potom sa otočíme doprava na 15 stupňov, np 15. Posledná inštrukcia bude vyzvať špirálu s :rozmer * 1.02.
Nauč korytnačku čo je špirála
TurtleAcademy learn programming for freeYour browser is not supporting canvas We recomand you to use Chrome or Firefox browsers