LOGO IMAGINE Obsah 1. Příkazy 1.1. Základní příkazy 1.2. Vestavěné příkazy Imagine 1.2.1.Příkaz mnohoúhelník 1.2.2.Náhodná procházka 2. Matematické operace 3. Funkce 4. Predikáty 5. Konstruktory 6. Selectory Monika Riedlová 1/7
1. Příkazy Obecně v Logo Imagine jsou příkazy procedury, které vykonávají nějakou činnost, např. vypisují text do plochy výpisů, posouvají želvy, mění některá nastavení, mažou plochu atd. 1.1. Základní příkazy Řada nejčastěji používaných příkazů jazyka používá zkratky, které mají stejný efekt jako příkazy psané celými slovy. Např. do 100 znamená totéž jako dopředu 100 zkratka bp! "oranžová totéž jako barvapera! "oranžová (tedy nastav barvu pera). Příkaz Zkratka příkazu Poznámka dopředu do vzad vz vlevo vl vpravo vp ukaž uk skryj sk barvapera bp barvavýplně bv opakuj op pero nahoru pn pero dolů pd tloušťka pera tp výsledek vý zobraz zo uprav up editace objektu zruš zr libovolně lib náhodné číslo odmocnina odm je možno též sqrt celočíselnýpodíl cpodíl je možno též div maximum max minimum min azároveň a logický součin první pr první prvek seznamu poslední po poslední prvek seznamu vložprvní vložpr vložposlední vložpo bezprvního bezpr bezposledního bezpo souborpřečtený? sp? textsposunem textsp grafickáplocha gp bez zobrazení výpisů rozdělenáplocha rp grafická plocha i s výpisy pouzevýpisy pv bez grafické plochy vytisknistránku tisks Monika Riedlová 2/7
vytisknivýpisy velikostvýpisů tiskv velikostv 1.2. Vestavěné příkazy Imagine 1.2.1.Příkaz mnohoúhelník Mnohoúhelník je polygon. Pomocí příkazu mnohoúhelník nakreslí želva ve svém místě uzavřený mnohoúhelník. Želva nakreslí uzavřený mnohoúhelník např. s definovanou barvou pera, barvou výplně, tloušťkou pera. Pokud zadaný mnohoúhelník není uzavřený, Imagine do něj automaticky přidá propojení počátečního bodu s koncovým a tím ho uzavře. Vytvořím proceduru s názvem čtverec s parametrem : v ctverec příkaz čtverec : v tp! 3 bp! lib bv! lib mnohouhelnik [opakuj 4 [do : v vl 90] ]? ctverec 15 // Želva nakreslí čtverec vyplněný libovolnou barvou a libovolnou tloušťkou pera a libovolnou výplní o délce strany : v (v tomto případě o délce strany 15).? mnohouhelnik [opakuj 3 [do 100 vp 120]] // Želva nakreslí trojúhelník//? mnohouhelnik [opakuj 5 [do 100 vp 144]] // Želva nakreslí pěticípou hvězdu// 1.2.2.Náhodná procházka prochazka příkaz prochazka tp! 3 bp! červená pořád [vp lib do 5 cekej 100] //Želva kreslí pořád červenou barvou čáru dopředu o hodnotu 5 a točí se libovolně vpravo. Želvu musíme zastavit pomocí tlačítka Zastavit vše.// prochazka příkaz prochazka vp! lib Monika Riedlová 3/7
do 5 když abs poz > 50 [vz 5] prochazka // abs poz je absolutní hodnota pozice, příkaz prochazka je rekurzivní procedura, volá sama sebe želva nevyjde z kruhu o poloměru 50// 2. Matematické operace Operace jsou procedury, které něco vypočítají a dají výsledek (mají hodnotu). Zápis operací: a) infixový zápis pro čísla základní a aritmetické operace (např. sčítání a odečítání).? zo 5 + 2 (kde 5 je první operand a 2 je druhý operand)? 7 b) prefixový zápis (znaménko sčítání se píše před operandy, proto prefixový zápis jako před) modulo, div (celočíselné dělení)? zo mod 50 2? 0? zo div 156 3? 52 c) postfixový zápis (moc se nepoužívá, znaménko sčítání se píše za operandy, proto postfixový zápis jako za) např. 5 2 + 3. Funkce Funkce jsou uživatelem definované operace, které vrací hodnotu např. číslo. Funkce je procedura, která pomocí klíčového slova výsledek vrací hodnotu. Pro zobrazení navrácené hodnoty je možno použít příkaz zobraz, zkratka zo. soucet_dvou_cisel příkaz soucet_dvou_cisel :a :b vysledek :a + :b? zobraz soucet_dvou_cisel 10 10 20 Monika Riedlová 4/7
odecitani_tri_cisel příkaz odecitani_tri_cisel :a :b :c vysledek :a - :b - :c? zobraz odecitani_tri_cisel 10 5 3 2 mojiabs příkaz mojiabs :c kdyz :c < 0 [vysledek = : c] vysledek : c? zo mojiabs 5 5 sude příkaz sude :c kdyz mod :c 2=0 [vy ano] vy ne? zo sude 14 ano? zo sude 13 ne 4. Predikáty Operace, jejichž výsledkem je ano nebo ne, nazýváme podmínky nebo predikáty. Příkladem podmínek jsou číselné operace <, >, <=, >=, <>, a = nebo podmínky slovo?, obrázek?, seznam? atd. Slovo ano znamená, že určitá podmínka je pravdivá, ne znamená, že podmínka je nepravdivá. Některé procedury prostředí Imagine očekávají jako jeden ze svých vstupů ano nebo ne, např. když, kdyžjinak nebo otestuj, a získávají je testováním určitých podmínek. Procedury jako slovo? nebo stejné? nebo prázdný? jsou jednoduché, základní podmínky. Občas ale potřebujeme otestovat složitější podmínku složenou z více jednoduchých. Imagine poskytuje několik operací, kterými můžeme spojovat jednoduché podmínky do složitějších, kterými jsou: a, nebo, není a xor. - predikáty? zo cislo? 5+2? ano? zo cislo? zaba ne? zo slovo? zaba ano Monika Riedlová 5/7
5. Konstruktory Konstruktory jsou procedury, které umožňují spojovat slova a také čísla. Konstruktory slouží pro sestavení (poskládání) prvků. Patří mezi ně například slovo, veta nebo seznam.? zo slovo za ba? zaba? zo slovo zaba 5+2? zaba 7? zo seznam z [a b]? [z [a b]]? zo seznam z a? [z a] 6. Selektory Selektory jsou procedury, které umožňují vybírat slova z věty např. vybere první slovo, poslední slovo, bez prvního, bez posledního, prvek 3. Selektory slouží pro rozdělení (rozdělení) vět. Text rozdělí na pole. Název procedury Zkratka Popis První Pr Jestliže vstupem není prázdné slovo, výsledkem první je slovo obsahující pouze jeho první znak. Jestliže vstupem je neprázdný seznam, výsledkem první je jeho první prvek. Poslední po Jestliže vstupem není prázdné slovo, výsledkem poslední je slovo obsahující pouze jeho poslední znak. Jestliže vstupem není prázdný seznam, výsledkem poslední je jeho poslední prvek. bezprvního bezpr Jestliže něco není prázdné slovo, výsledkem bezprvního je slovo obsahující všechny jeho znaky kromě prvního znaku. Jestliže něco není prázdný seznam, výsledkem bezprvního je seznam obsahující všechny jeho prvky Monika Riedlová 6/7
kromě prvního bezposledního bezpo Jestliže něco není prázdné slovo, výsledkem bezposledního je slovo obsahující všechny jeho znaky kromě posledního. Jestliže něco není prázdný seznam, výsledkem bezposledního je seznam obsahující všechny jeho prvky bez posledního prvek Jestliže první vstup je číslo, výsledkem prvek je prvek na pozici číslo druhého vstupu. Jestliže druhý vstup je slovo, výsledkem je jeho znak na pozici číslo. Jestliže druhý vstup je seznam, výsledkem je jeho prvek na pozici číslo. V obou případech, číslo musí být mezi 1 a počtem prvků něco. (Jestliže číslo není celé číslo, jeho desetinná část se odtrhne.) Např. prvek 3 něco poskytne 3. prvek vstupu něco.? dosad mojeveta [Draci podzimniho soumraku] // definovali jsme globální proměnnou: mojeveta//? opakuj 5 [pn do 10 pd vl 2 text :mojeveta] // věta je napsána do 5 řádků 5-krát pod sebou//? opakuj 10 [bp! lib text :mojeveta vl 36] // věta je napsána 10-krát do kruhu// vypis příkaz vypis :text kdyz prazdny? :text [ukonci] text prvni :text pn vz 20 pd vypis bezpr :text Želva vypíše Draci podzimního soumraku // rekurzívní volání, volá sebe sama// Monika Riedlová 7/7