i i “849-Batagelj-Logo” — 2010/5/28 — 10:55 — page 1 — #1 i i i i i i List za mlade matematike, fizike, astronome in računalnikarje ISSN 0351-6652 Letnik 14 (1986/1987) Številka 4 Strani 232–239 Vladimir Batagelj, Boris Horvat in Tomaž Pisanski: LOGO NA RAČUNALNIKU COMMODORE 64 Ključne besede: matematika, računalništvo, programski jezik logo. Elektronska verzija: http://www.presek.si/14/849-Batagelj.pdf c© 1987 Društvo matematikov, fizikov in astronomov Slovenije c© 2010 DMFA – založništvo Vse pravice pridržane. Razmnoževanje ali reproduciranje celote ali posameznih delov brez poprejšnjega dovoljenja založnika ni dovo- ljeno. LOGO NA RAČUNALNIKU COMMODaRE 64 Uvod LOGO za računalnik Commodore 64 so razvili pri firmi Commodore. Obstaja samo ver-zaja na disketi, kjer so poleg tolmača še demonstracijski programi, napisani v logu in dodatni ukazi za delo z zvokom in s figuricami, tako da se možnosti računalnika lahko popolnoma izkoristijo. Kasetna verzija tolmača za logo, ki kroži po Ljubljani, vsebuje samo tolmač brez dodatnih programov, posnet v načinu turbo. Zato dodatnih ukazov nismo opisali. Tudi ukazov za delo z disketno enoto, kot so CATALOG, READ in SAVE, ne moremo uporabljati. V zadnjem času se ponekod dobi tudi nekoliko predelana kasetna verzija, ki se predstavlja z LOGO - SLOVENIJA, ki ima dodana ukaza READ in SAVE za delo s kasetnikom, tako da je omogočeno hranjenje uporabnikovih ukazov. Delo s tolmačem je zelo preprosto. Računalnik nas sproti opozarja na naše napake. Ukaze tolmač takoj izvede. Če je ukaz izraz, tolmač izračuna in izpiše njegovo vrednost, pred katero napiše Result:. Vse ukaze lahko torej neposredo preizkušamo. Če se kak ukaz zaplete, si lahko pomagamo s G (prekinemo izvajanje), v skrajni sili pa moramo z logo ponovno pognati. Preberite še uvod v "Logo na računalniku Spectrum" v prejšnji številki Preseka. Osnove in posebnosti Logo pozna naslednje vrste objektov: nizi znakov besede: "ABeD " •ABC DEF GH' " 123 " števila: cela števila so na intervalu -2!<31> . . +2!<31> - 1 , pri realnih številih je najmanjše 1.00000N38 in največje 1.99999E38 logični vrednosti sta "TRUE in "FALSE seznami l ) II AB 12 ) 34 EFR [)J Spremenljivke 1 ABe X33 123 "1 ime spremenljivke - uporabljamo pri prirejanju : 1 vrednost spremenljivke, kadar uporabljamo spremenljivko v izrazih Ločila in posebni znaki lOČUje oznako vrstice od ukazov v vrstici (pri GO ukazu) lOČUje ukaze od komentarja razumi znake do naslednjega • dobesedno Ukazi ABC VAJA E99 .SYS001 PRAZNO? Kote merimo v stopinjah. Barve določamo z njihovimi številkami (O .. 15), ki imajo enak pomen kot v basicu. 232 Načini delovanja Osnovna načina delovanja sta ? EDIT ED sprotni način in urejanje. znak (pozornik), da je LOGO v sprotnem načinu in da čaka naših ukazov vključi urejanje ukazov in spremenljivk V sprotnem načinu dela lahko izbiramo vključi grafični naCln ND vključi tekstovni način lahko izbiramo: DRAW NODRAW V grafičnem načinu TEXTSCREEN SPLITSCREEN FULLSCREEN < Fl > < F3 > < F5 > ves zaslon je namenjen za izpisovanje spodnjih pet vrstic za izpisovanje ves zaslon je namenjen za sliko kontroliramo s: (Gone) (Wait) (Zigzag) Izvajanje G W Z dokončno prekinemo izvajanje začasno prekinemo izvajanje (stikalo) začasno prekinemo izvajanje in lahko vnašamo svoje ukaze CONTINUE CO nadaljUjemo izvajanje (po uporabi Z) ponovno poženemo LOGO, če G ne pomaga Vse funkcijske in kontrolne tipke delujejo tudi med izvajanjem ukazov, razen če jih z .OPTION "RC ne izključimo. tečko vrstice znakov. začetek vrstice konec vrstice briši znak pod briši do konca en znak desno en znak levo dela - tolmačenje) briši znak pred tečko ponOVi prejšnjo vrstico briši tekočo in prejšnje vrstice (za sestavljanje ukazov - programiranje) Vključi urejevalnik definiraj urejani ukaz definiraj urejani ukaz prekine urejanje, ukaz ostane nespremenjen prejšnja stran (ali začetek teksta) naslednja stran (ali konec teksta) briši znak pred tečko prejšnja vrstica naslednja vrstica T (cursor up) ED (Complete) (Gone) (Back) (Forward) T (cursor up) (cursar dawn) , 1> B F O. Urejevalnik Pri urejanju je vključeno samodejno vrivanje (INSERT) Splošni kontrolni znaki za urejanje A (prva črka) L (Line) D (Delete) K (Kill) (cursor right) (cursor left) Vrstični urejevalnik (za sprotni način dNST/DEL> zaslonski urejevalnik EDIT ime parametri C G 233 o (Open) M vključi eno prazno vrstico končaj vrstico centriraj tekst omogoči vključitev kontrolnih znakov v tekst (" v BASICU) + + + + + + + + + + + + + + li: li li: + + + li: li 1. Žel vja grafika Na zaslon je postavljen koordinatni sistem (x,y) , -160~X~159, -129~y~130 BACK n BK želva n korakov vzvratno BACKGROUND n BG določi barvo podlage (n = O •• 15) CLEARSCREEN CS počisti zaslon, pusti želvo DOUBLECOLOR dvojna debelina želvine sledi DRAW vključi grafični način F DRAWSTATE seznam podatkov o stanju želve ITEM 1 DRAWSTATE TRUE, če je eero spuščeno (PD) ITEM 2 DRAWSTATE TRUE, če je zelva vidna (ST) ITEM 3 DRAWSTATE barva Eodlage na sliki (BG) lTEM ij DRAWSTATE barva crnila na sliki (PC) lT~l 5 DRAWSTATE način (SINGLE- ali DOUBLECOLOR) lTEM 6 DRAWSTATE način (TEXT-, SPLIT-, ali FULLSCREEN) lTEM 7 DRAWSTATE barva podlage v tekstu (TEXTBG) ITEM 8 DRAWSTATE barva teksta (TEXTCOLOR) FORWARD n FD želva n korakov naprej F HEADING absolutna smer želve v stopinjah HIDETURTLE HT skrij; ne riše želve, sled pa HOME premakne želvo v koordinatno izhodišče LEFT n LT zasuk želve za n stopinj v levo NODRAW ND vključi tekstovni način NOh~AP omeji gibanje želve na zaslonu PENCOLOR n PC določi barvo sledi (n = -1 15) PENERASE PC -1 želva briše dele sledi, čez katere gre PENDOWN PD spusti pero; želva pušča sled PENUP PU dVigni pero; želva ne pušča sledi RIGHT n RT obrat želve za n stopinj v desno SETHEADlNG n SETH zasuk aj želvo v smer n (absolutno) SETX n premik želve do koordinate x = n SETXY x y premik želve v točko (x,y) . SETY n premik želve do koordinate y = n SHOWTURTLE ST riši želvo, je vidna SINGLECOLOR enojna debelina črte STAMPCHAR x želva natisne znak x TEXTBG n določi barvo podlage teksta ( n = 0.• 15 TEXTCOLOR n določi barvo teksta ( n = 0.• 15 ) F TOWARDS x y sner v stopinjah proti točki (x, y) WRAP zaslon je "zvit" v svitek (torus) F XCOR želvina trenutna x - koordinata F YCOR želvina trenutna y - koordinata 2. Operacije in fUnkcije F + F - F li: F / seštevanje odštevanje; če se uporablja kot predznak, potem v oklepajihl (- 5) množenje deljenje (rezultat realen) + + + + 234 F < F > F F ATAN a b F BITANO nl n2 F BITOR nl n2 F BITXOR nl n2 F cas x F INTEGER x F QUOTIENT a b F RANro-l n RANro-lIZE (RANDa-1IZE n) F REMAINDER a b FRaUNO x F SIN x F SQRT x relacija večji relacija manjši relacija enak areus tangens izraza alb konjunkcija po bitih disjunkcija po bitih ekskluzivni OR po bitih kosinus celoštevilski del od x celoštevilski kvocient a in b naključno število med O in n-l izbere naključno začetno število postavi začetno število za generator celoštevilski ostanek zaokroži x sinus kvadratni koren + + + il + il il + + + + + + + + il + + + + + + il + il • + + + + • + objekt brez prvega elementa objekt brez zadnjega elementa število elementov v objektu ali je objekt x prazen prvi element objekta dodaj objekt na začetek seznama n-ti element objekta zadnji element objekta ustvari seznam z objektoma obl in ob2 ustvari seznam iz danih objektov ali je objekt seznam dodaj objekt na konec seznama ali je x element objekta ob ali je objekt število ustvari seznam iz elerr~ntov obeh objektov ustvari seznam iz elementov danih objektov stik besed xl in x2 stik danih besed ali je objekt beseda 3. Seznamski ukazi ob objekt (beseda ali seznam) F BUTFIRST ob BF F BUTLAST ob BL F COUNT ob F EMPTY? ob F FIRST ob F FPUT ob seznam F ITE~l n ob F LAST ob F LIST obl ob2 F (LIST obl ob2ob3 •.• ) F LIST? ob F LPUT ob seznam F MEMBER? x ob F NUI-1BER? ob F SENTENCE obl ob2 SE F (SE obl ob2 ob3 ) F WORD xl x2 F (WORD xl x2 x3 F WORD? ob 4. Definiranje ukazov (programiranje) DEFINE ime llpar] lVl] lv2] ••• lvn]] sestavi ukaz z imenom ime, s parametri par in z vrsticami vl, v2, .•. , vn EDIT x ED Vključi urejanje x ALL vseh ukazov in sprerr~nljivk (imen obj.) x NAMES imen objetkov in njihovih vrednosti • X = PROCEDURES vseh ukazov x ime ukaza ime + x = lime 1 ime2 ukazov v seznamu ime1, ime2 + x zadnjega urejanega ukaza + END konec ukaza + 235 ERASE x ER x = ALL x = NAMES x = PROCEDURES x ime x = limel ime2 ... J TEXT "i ma TO ime parametri C brisanje definicij zbriši vse ukaze in imena zbriši imena objektov zbriši vse ukaze zbriši ukaz z danim imenom zbriši ukaze v seznamu seznam s ss znamrm parametrov in seznami vrstic ukaza ime (nasprotno od DEFINE) vključi urejanje ukaza ime končamo urejanje (difiniranje) ••• + + + • 5. Prireditveni stavek in spremenljivke LOCAL "ime definicijsko območje spremenljivke ime je omejeno na tekoči ukaz MAKE "ime izraz spremenIjivki ime priredi vrednost izraza MAKE :ime izraz spremenljivki, na katero kaže ime, priredi vrednost izraza F THING "ime vrednost spremenljivke ime (isto kot :ime) F THING :ime vrednost spremenljivke, na katero kaže ime F THING? "ime ali je spremenljivka ime že definirana 6. Pogojni stavek in pogoji F ALLOF a b konjunkcija (logični IN) F (ALLOF al a2 an konjunkicja F ANYOF a b disjunkcija (logični ALI) F (ANYOF al a2 an disjunkcija IF pogojni stavek; primeri: IF IF THEN IF THEN ELSE IFFALSE aSE varianta za kretnico TEST IFTRUE THEN varianta za kretnico TEST F NOT a negacija a TEST logična kretnica + + + + • o o + o 7. Krmilni stavki GO n GOODBYE OUTPUT ob OP REPEAT n lul u2 RUN l ul u2 ••• J STOP TOPLEVEL 8. Branje in izpis .CHO n F ASCII x F CHAR n CLEARTEXT CLEARINPUT 236 nadaljuje izvajanje v vrstici z oznako n oznake lOČUjemo od vrstic z : ponovno poženemo logo vrni objekt ob v klicoči ukaz ponovi n krat ukaze v seznamu izvedi ukaze v seznamu vrni se v klicoči ukaz vrni se v osnovni nivo (sprotni način) izpiši znak s kodo ASCII n koda ASCII znaka x znak s kodo ASCII n zbriše tekstovni zaslon zbriši "character input buffer" (koristno pred uporabo RC ukaza) • + + + + + o + + + CURSOR x y pos tavi tečko na koordinato (x,y) i[ (x = O •• 39, y = O •• 24) F CURSORPOS seznam z x in y koordinato tečke i[ FPRINT ob isto kot PRINT vendar dobesedno ;1( (tudi • pri besedah in LJ pri seznamih) (FPRINT obl ob2 isto kot PRINT vendar dobes edno ;1( NOPRINTER izključ i t iskalnik ;1( PRINT ob PR izpiši objekt in se postavi v novo vrstico + (PRINT obl ob2 izpiši objekte; med objekti po en pr esledek + PRINTl ob izpiši objekt ;1( (PRINTl obl ob2 •.• ) izpiši objekte brez presledkov ;1( PRINTER vključi t i skalnik ;1( F RC? ali je pritisnjena kakšna tipka ;1( F READCHARACTER RC preberi en znak (brez Z začasno prekini izvajanje lahko vnašamo svoje ukaze izklj uči sledenje vključi sledenje; sledenje nadaljUjemo s pritiskom kake tipke, končamo s G 237 + li + + li li za pra ukaze- umeri velikost zaslona v navpični smeri vgrajena vrednost n=0.768 za 260 korakov poženi strojno kodo na naslovu n seznam vseh imen, ki jih LOGO pozna shrani vrednost x na naslov n (POKE) vredn03& na na31 0vu n (PEEK) garbage collection število trenutno praznih členov spreminjanje vgrajenih vrednosti 11. Sistemski ukazi .ASPECT n .CALL n F .CONTENTS .DEPOSIT n x F .nAMINl::: n . GCOLL F .NODES .OPTION 12. Spreminjanje vgrajenih vrednosti .OPTION "DRAW O n spremeni osnovno barvo podlage na n .OPTION "DRAW 1 n spremeni osnovno barvo črnila na n .OPTION "EDIT O n spremeni barvo podlage v urejevalniku .OPTION "EDIT 1 n spremeni barvo črnila v urejevalniku .OPTION "PRINTER O n spremeni številko tiskalnika (vgrajeno n=4) .OPTION "PRINTER 1 n spremeni drugo številko tiskalnika (vgrajeno n=O - velike črke/grafični znaki; n=7 - velike črke/male črke) .OPTION "PRINTER 2 n usmeri izpis za tiskalnik (vgrajeno n=O - izpis tudi na zaslon; n=l - izpis samo na tiskalnik) .OPTION "RC O n ali se znaki za kontrolo izvajanja lahko prestrežejo z RC (ustrezni bit postavimo na 1) ali ne (ustrezni bit je O - vgrajeno) G 1 < Fl > 8 Z 2 < F3 > 16 W 4 < FS > 32 .OPTION "READ O n način včitavanja datoteke (vgrajeno n=O - datoteka z ukazi; n=l - besedilo) .OPTION "SAVE O n način shranjevanja datoteke (vgrajeno n=O - delovni prostor; n=l - urejevalnikov prostor) .OPTION "STAMPCHAR 1 n množica znakov za ukaz STAMPCHAR (vgrajeno n=O - velike črke/grafični znaki; n=l - velike črke/male črke) .OPrION "STAMPCHAR 2 n običajni in inverzni znaki za ukaz STAMPCHAR (vgrajeno n=O - običajni; n=l - inverzni) 13. Sporočila o napakah DIDN"T OUTPUT : ni vrnil objekta; srno uporabili kot parameter nekega drugega ukaza cpr-aukaz» DOESN"T LIKE AS INPUT : ni pravi parameter za DOESN'T LIKE AS INPUT, IT EXPECTS TRUE OR FALSE : praukaz IF zahteva logično vrednost oziroma pogoj , IN LINE AT LEVEL OF : napaka se je pojavila v določeni vrstici ukaza na določenem nivojU IS A LOGO PRIMITIVE : je praukaz Loga; hoteli srno definirati ukaz z imenom, ki je že ime praukaza NEEDS MORE INPUTS : potrebuje več parametrov; večina praukazov in vsi ukazi, ki jih definiramo zahteva točno določeno število parametrov 238 (operacija> NEEDS SOMETHI NG BEFORE IT : coper-aci ja» pot r ebuj e še nekaj ; ~ritmetične operacije ob~čajno zahtevajo dva parametra ~O STORAGE LEFTI : ni več prostega prostora; rekurzivni klici so zasedli ves prostor - sklad ~UMBER TOO LARGE OR TOO SMALL : število preveliko ali premajhno; pri ~ritmetični operaciji je prišlo do prekoračitve obsega števil ?ROCEDURE NESTING TO DEEP : pregloboko gneZdenje ukazov (omejitev okrog 200) qESULT: : opozori nas, če v sprotnem načinu uporabljamo izraze; Jbičaj no izraze uporabljamo kot parametre drugih ukazov - proc edur fHE : IS OUT OF PLACE AT : znak ":" pri besedi je na napačnem nestu; običajno pravopisna napaka fHE DISK IS FULL : disketa je polna fHE DISK IS WHITE PROTECTED : disketa je zaščitena pred pisanjem fHERE I S NO DISK IN DISK DRIVE : v disketni enoti ni diskete (pr aukaz> SHOULD BE USED ONLY INSIDE A PROCEDURE lahko Jporabljarno samo v jedru procedure (OUTPUT, STOP, LOCAL in GO smo hoteli Jporabiti v sprotnem načinu) :AN' T DIVIDE BY ZERO: ne morem deliti z nič )I SK ERROR : napaka na disketi (disketa je poškodovana ali zaščitena pred :ATALOG) ::ND SHOULD BE USED ONLY IN THE EDITOR : END lahko uporabljamo samo v Jrejevalniku - uporabili smo ga v sprotnem načinu ali v DEFINE ali ni bil v samostojni vrstici ::LSE IS OUT OF PLACE : ELSE je na napačnem mestu; manjka IF ali THEN ~ILE NOT FOUND : datoteke ni na disketi _INE GIVEN TO DEFINE TOO LONG "INE GIVEN TO REPEAT TOO LONG _INE GIVEN TO RUN TO LONG: predolga vrstica (seznam) za ukaze DEFINE, REPEAT .li RUN (omejitev 256 znakov) "J:SSI NG INPUTS INSIDE () ' S : manjkajo parametri med oklepaji fHEN IS OUT OF PLACE : THEN je na napačnem mestu; verjetno manj ka IF fHERE IS NO LABEL : oznaka ni definirana fHERE IS NO NAME : s premenljivka ni definirana fHERE IS NO PROCEDURE NAPiliD : ukaz ni definiran fHERE' S NOTHING TO SAVE : ničesar ni mogoče shraniti; delovni prostor je cr-azen fOO MANY PROCEDURE INPUTS : ukaz ima preveč parametrov fOO MUCH I NSIDE PARENTHESES : preveč notranj i h oklepajev; logo ne zna ~nali zirati izraza fURTLE OUT OF BOUNDS : žel va je zunaj zaslona; omejili smo jo z NOWRAP W U DON'T SAY II'HAT TO DO WITH : ne poveš kaj stor iti z objektom; noral bi biti vhodni parameter Jladirrdr Batagelj, Boris Horvat, Tomaž Pisanski 239