******************************************** * P R O G R A M L O G O * ******************************************** Program LOGO má podobnou logiku jako program KAREL, a je tedy vhodny pro výuku programování. Vzhledem ke KARLOVI má však mnohem větší možnosti. Jeho základem je bodová grafika, v níž jsou grafické struktury vytvářeny pohybem "ŽELVY", jejíž pozice může být zobrazena aniž by narušovala vytvořenou kresbu. Mimo to může program pracovat také v textovém režimu v němž se vytváří procedury, z nichž se skládá vlastní program. * 1. R E Ž I M Y * ************************ LOGO má čtyři režimy. Jsou to GRAFICKÝ REŽIM do něhož se přechází stisknutím klávesy [F2] nebo příkazem CS nebo provedením jakéhokoliv grafického příkazu. Do TEXTOVÉHO REŽIMU se přejde klávesou [F1] nebo příkazem TS. Příkazem PS se vyvolá kombinovaný texto-grafický režim. Čtvrtý režim je editovací a volá se příkazem ED + speifikace. V tomto režimu je možno editovat procedury, funkce a proměnné. Při přechodu do jiného režimu se vždy smaže obrazovka. G R A F I C K Ý R E Ž I M OBRAZOVKA v základním stavu obsahuje souřadný systém 320 x 200 bodů překrývaný zdola pěti dialogovými řádky. Bod [0,0] je uprostřed s běžnou orientací osy X a Y. Příkazem SETSPLIT je možno nastavit počet dialogových řádků a příkazem SETSCRUNCH poměr mezi požadovaným a základním počtem bodů na ose Y. Na obrazovce je možno volit barvu podkladu příkazem SETBG ze 16 barev a kreslit čtyřmi až šestnácti barvami (VRAM). Barvy se ukládají příkazem SETPAL do jednotlivých palet, přičemž TEXTY mají barvu palety 3 a mohou být zobrazeny v libovolné části obrazovky. Grafický režim obsahuje podrežimy WINDOW, WRAP a FENCE různě ošetřující snahu o kreslení mimo obrazovku. T E X T O V Ý R E Ž I M V textovém režimu je možno využívat celé obrazovky k psaní textu. Nelze v tomto případě pracovat s grafikou. T E X T O - G R A F I C K Ý R E Ž I M Jedná se o spojení textového a grafického režimu. Nevýhodou tohoto režimu je scrolling obrazovky způsobující posun grafiky po ukončení posledního řádku. E D I T O V A C Í R E Ž I M Tento režim vyvolá na obrazovku specifikovaný výpis s možností jeho editace. Kursorovými klávesami se pohybuje kursorem po textu, klávesou [DEL] se maže znak před kursorem, klávesou [INST] se vkládá řádek před kursor, klávesou [CR] se vkládá řádek za kursor. Vlastní text se vkládá přímo. Ukončení editace je buď klávesou [ESC], přičemž se editace ruší nebo klávesou [F3], kdy je editace akceptována. Po ukončení editace se přejde do textového režimu. * 2. G R A F I K A * ************************** Do grafického režimu se přejde při provádění jakéhokoliv grafického příkazu. Souřadný systém má rozsah 16 000 jednotek na ose X v obou směrecha 15978 jednotek na ose Y. Obrazovka obsahuje v základním tvaru 320 bodů na ose X a 200 bodů na ose Y s bodem [0,0] uprostřed a běžnou orientací kvadrantu (pravý horní je +X +Y). PŘÍKAZY: WINDOW - želva se pohybuje i mimo obrazovku, její pohyb mimo je ale pomalejší. FENCE - při snaze opustit rámeček je hlášena chyba. WRAP - okraje rámečku obrazovky navazují na sebe. Opustí-li želva obrazovku, kreslí dále od opačného okraje. CS - smazání obrazovky a nastavení želvy do středu s natočením do úhlu 0 (svisle nahoru). CLEAN - smazání obrazovky (také SS). SETSCRUNCH A - číslo A v rozsahu od 0.1 do 10 udává, v jakém poměru se změní na ose Y velikost souřadnicové jednotky vzhledem k základní velikosti ST - zobrazení želvy HT - želva není zobrazována. FD A - pohyb želvy vpřed o délku A BK A - pohyb želvy vzad o délku A LT A - otočení želvy o A stupňů vlevo RT A - otočení želvy o A stupňů vpravo DOT [A,B] - nakreslí bod o souřadnicích [A,B] HOME - návrat želvy do základní polohy (bod [0,0], úhel 0) SETX A - posun želvy o délku A v ose X SETY A - posun želvy o délku A v ose Y SETPOS [A,B] - posun želvy na bod o souřadnicích [A,B] SETH A - otočení želvy do absolutního úhlu A (ve směru hodin od nuly) TOWARDS [A,B] - vrací hodnotu úhlu mezi současnou pozicí a bodem [A,B] SETPC A - čára se kreslí barvou palety číslo A SETBG A - barva podkladu je A (0 - 16) SETPAL A [B 0 0] - barva B do palety číslo A, zbyvající nuly budou zřejmě parametry pro ěestnáctibarevný režim SETSPLIT R - číslo R v rozsahu od 1 do 25 udává počet řádků od dolního okraje obrazovky, v nichž se vypisuje běžný text PD - položení pera, pohyb želvy se vykresluje PU - zvednutí pera, želva při pohybu nekreslí PE - kreslení barvou palety číslo = (3 - číslo pal. bodu, přes nějž se kreslí) PX - totéž jako PE FILL - vyplní plochy až po jakoukoliv vykreslenou čáru, barva výplně dána aktuální barvou pera, příkazu fill musí předcházet položení pera na bod, který má podkladovou barvu. * 3. A R I T M E T I K A * ******************************** Aritmetika pracuje s přesností na ěestnáct míst s rozsahem od 5.237e-151 do 5.237e151. běžné operátory jsou: + - * / QUOTIENT A B - celočíselné dělení (A div B) REMAINDER A B - zbytek celočíselného dělení (A mod B) ROUND(A) - zaokrouhlení čísla A na celé číslo INT(A) - celočíselná hodnota A (běžná funkce INTEGER) SIN(A) - funkce simus, A ve stupních COS(A) - funkce cosinus, A ve stupních ARCTAN(A) - funce arcustangens, A ve stupních RANDOM(A) - náhodné celé číslo z intervalu (0 až A-1) * 4. L O G I K A * ************************ LOGO rozlišuje malá a velká písmena. Základní procedury a funkce se píší zásadně malými písmeny. Klávesa [CR] ukončuje řádek a uzavírá všechny závorky. LOGO zná proměnné, funkce a procedury. Základní procedury a funkce nazývá primitivními. Z nich se editací tvoří vlastní procedury a proměnné,které mohou být ihned užívány v dalších procedurách. Názvy procedur a proměnných jsou znakové řetězce začínající písmenem. Proměnná se od procedury liší uvedením dvojtečky před názvem. AbC je název procedury AbC, uvedeným názvem se procedura volá. :j4 je hodnota proměnné j4 "okNa je jméno proměnné okNa Jako oddělovače používá LOGO mezeru nebo základní aritmetické operátory a závorky. * P R O M Ě N N É * *********************** Proměnnou tvoří název, jemuž se příkazem MAKE přiřadí hodnota. Ve výrazu může být uvedena absolutní hodnota, hodnota funkce nebo aritmetické, logické a řetězcové operace. Hodnota proměnné může být číselná nebo řetězcová, což znamená seznam prvků uzavřený v hranatých závorkách. MAKE "P výraz proměnné P je přiřazena hodnota výrazu. * F U N K C E * ******************* LOGO obsahuje tyto primitivní funkce: NODES - vrací hodnotu počtů bytů volné paměti TOWARDS - je číselná hodnota úhlu mezi dvěma body CURSOR - je seznam souřadnic kursoru ve tvaru [SL RA] PAL - je seznam barev v dané paletě ve tvaru [B 0 0] ASCII "A - je ascii kód prvního znaku řetězce A CHAR A - je ascii znak odpovídající číslu A COUNT A - je počet prvků proměnné A LISTP A - je logická hodnota TRUE, je-li A seznam, jinak FALSE WORDP A - je logická hodnota TRUE, je-li A číslo, jinak FALSE THING "A - je hodnota proměnné A (totéž jako :A) EMTYP A - TRUE, je-li A prázdný seznam EQUALP A B - TRUE, je-li A rovno B TF - seznam hodnot stavu želvy ve tvaru [X Y U K B V], kde X a Y = souřadnice želvy na osách X a Y U = absolutní úhel, v němž je želva otočena K = stav pera (PD, PU, PE, PX) B = barva, kterou želva kreslí (implicitně PAL 1) V = viditelnost želvy (FALSE nebo TRUE) SF - seznam hodnot stavu obrazovky ve tvaru [P R S M X], kde P = barva podkladu (PAL 0) R = režim obrazovky (graf., text.,text.-graf.) S = počet textových řádků (SETSPLIT S) M = grafický mod obrazovky (WRAP, WINDOW, FENCE) X = poměr velikosti jednotky na ose Y vzhledem k jednotce na ose Y FUNKCE PRACUJÍCÍ SE SEZNAMY FIRST :A - první prvek seznamu A LAST :A - poslední prvek seznamu A ITEM K :A - A je K-tý prvek seznamu A BF :A - seznam A bez prvního prvku BL :A - seznam A bez posledního prvku FPUT :A :B - vložení proměnné A do seznamu B zepředu LPUT :A :B - vložení proměnné A do seznamu B zezadu SE :A :B - spojení hodnot proměnných A a B do seznamu WORD :A :B - spojení hodnot A a B které nesmí být seznam * P R O C E D U R Y * ************************* Procedury jsou řetězce příkazu, procedur a funkcí, které mají hlavičku uvozenou slovem TO obsahující název a případně soupis formálních parametrů, tělo procedury jež je vlastně funkční částí procedury a ukončení slovem END. U procedury s parametry je nutno při volání procedury tyto parametry zadat. V těle procedury je možno používat všechny existující funkce, procedury a příkazy. Procedury lze volat rekurzí. V procedurách je možno využít podmíněného příkazu a příkazu cyklu FORMÁT PROCEDURY TO název [formální parametry] tělo procedury END PODMÍNĚNÝ PŘÍKAZ IF A [B] [C] při splnění podmínky A se vykoná obsah závoky [B], při nesplnění se vykoná obsah závorky [C], závorka [C] je nepovinná. PODMÍNKA A může být FUNKCE nabývající hodnot TRUE nebo FALSE nebo RELACE. RELACE využívají relační operátory < > = AND OR NOT FORMÁT relace: A < B operátor je mexi operandy [< > =] AND A B operátor je před operandy [AND OR NOT] PŘÍKAZ CYKLU REPEAT N [výraz] výraz v závorce se N-krát opakuje, závorka může mít libovolnou délku ZÁKLADNÍ PŘÍKAZY ***************** BYE příkaz nenávratného přechodu do monitoru RUN [seznam] spustí program daný seznamem STOP příkaz ukončující průběh procedury (návrat do místa volání) PAUSE program se zastaví za příkazem PAUSE s výpisem zprávy CO pokračování programu zastaveného příkazem PAUSE WAIT T zastavení programu asi na 2 ms*T sec. (T může být 1 až 5.237e151 TONES [V D] tén výšky V a délky D TO příkaz uvozující proceduru END příkaz ukončující proceduru RC zastavení programu a očekávání vstupu znaku z klávesnice, znak se na obrazovce nevypisuje RL zastavení programu a očekávání vstupu slova ukončeného [CR], slovo se vypisuje na obrazovce RQ totéž jako RL OP A ??? příkaz přiřazující hodnotu funkcí A ??? PADDLE X ??? pro X=(-!,3) vrací hodnotu 0 ??? * T E X T O V Ý R E Ž I M * ********************************* V textovém režimu lze využít tyto příkazy: TS smazání obrazovky a přechod do textového režimu CT smazání textu PR :A tisk hodnoty A s přechodem na další řádek TYPE :A tisk hodnoty A ukončený za posledním znakem hodnoty SHOW :A tisk hodnoty A včetně závorek v případě seznamu TEXT "A výpis textu procedury A SETCURSOR [S R] nastavení kursoru do sloupce S a radku R * E D I T A C E * ********************* Editor pracuje v textovém režimu a po jeho volání se na posledním řádku vypíše způsob ukončení editace. Editovat lze veskrze vytvořené celky. Do editoru se vstupuje těmito příkazy: EDALL editace všeho ED [seznam] editace procedur daných seznamem ED "A editace procedury A ERALL smazání všeho, co bylo vytvořeno ER [seznam] smazání procedur daných seznamem ERN [seznam] smazání proměnných daných seznamem POALL výpis všeho, co bylo vytvořeno PONS výpis všech proměnných POTS výpis názvu všech procedur POPS výpis všech procedur PO [seznam] výpis procedur a funkcí daných seznamem Při editaci je možno využít funkce klávesy [CTRL] ve spojení s další klávesou: A - skok na začátek řádku B - o jeden znak zpět C - opuštění editoru D - mazání znaku na pozici kursoru E - skok na konec řádku F - o jeden znak vpřed G - opuštění editoru (BREAK) H - mazání znaku před kursorem I - vložení čtyř mezer K - mazání části řádku za kursorem L - posun textu tak, že řádek s kursorem je na jedenáctém řádku M - vložení řádku před kursor N - posun o jednu pozici dolů O - vložení řádku za kursor P - posun o jednu pozici nahoru R - skok na začátek editovaného textu U - skok o stránku zpět V - skok o stránku dopředu X - skok na konec editovaného textu Y - výpis posledně vloženého textu - - část řádku před kursorem ?? ! - ??