Go to the first, previous, next, last section, table of contents.


Uvod u ucblogo

Pregled

Berkeley Logo User Manual

Copyright (C) 1993 by the Regents of the University of California

Ovaj program je slobodni software; mozete ga redistribuirati i/ili modificirati uz uvjete navedene u GNU General Public License, izdane od Free Software Foundation; verzija 2 Licence ili (po vasem izboru) bilo koje kasnije verzije.

Ovaj program se distribuira u nadi da ce biti koristan, ali BEZ IKAKOVE GARANCIJE; cak i bez garancije koja se podrazumijeva, o TRGOVINSKOJ VRIJEDNOSTI ili POGODNOSTI ZA NEKU ODREDJENU SVRHU. Vidi GNU General Public License za detalje. Uz ovaj program trebali ste dobiti i kopiju GNU General Public License; ako niste, pisite Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

Ovo je program koji se jos pise. Mnoge stvari nedostaju, ukljucujuci i adekvatnu dokumentaciju. Ovaj manual pretpostavlja da vec znate programirati u Logu, i samo predstavlja detalje ove implementacije.

Procitajte _Computer_Science_Logo_Style, _Volume_1: _Symbolic_Computing_ by Brian Harvey (MIT Press, 1997) kao tutorial o Logo programiranju, sa naglaskom na simbolicko racunanje.

Ovdje su specijalne osobine ovoga dijalekta Loga:


        Source file kompatibilan izmedju Unix, DOS, Win95 i Mac 
        platformi.

        Slucajni pristup nizovima.

        Promjenjivi broj inputa user-definiranim procedurama.

        Mutatori za list strukture (opasno).

        Pauza nakon greske, i druga poboljsanja rukovanja greskama.

        Primjedbe i kontinuacijske linije; formatiranje se sacuva, kada
        se definicije procedura spremaju ili editiraju.

        Terrapin-stil tokenizacuje (tj., [2+3] je lista sa jednim
        clanom) ali LCSI-stil sintaksa (nema specijalnih formi, osim
        TO). Najbolje od oba stila.

        First-class instrukcije i expression templates (vidi APPLY).

        Makroi.

Osobine kojih Berkeley Logo nema, ukljucuju robotiku, muziku, GUI (Graficki User Interface), animaciju i multimedije. Ako zelite to, kupite komercijalni Logo.

Pokretanje i izlazenje iz ucbloga

Nacin pokretanja Loga ovisi o vasem operativnom sistemu:

`Unix:'
Upisite rijec logo u shell-u. (Direktorij u kojem je instaliran Logo mora biti u vasem path-u.)
`DOS:'
Udjite u direktorij koji sadrzi Logo (vjerojatno C:\UCBLOGO). Zatim napisite UCBLOGO za verziju sa prosiremom memorijom, ili BL za 640K verziju.
`Mac:'
Dvostruki klik na LOGO ikonu u "UCB Logo" mapi.
`Windows:'
Dvostruki klik na UCBWLOGO ikonu u UCBLOGO mapi.

Za izlazak iz Loga, upisite komandu bye.

Pod Unix-om ili DOS-om, ako dopisete jedan ili vise imena file-ova na komandnoj liniji prilikom pokretanja Loga, ti ce file-ovi biti ukrcani prije no sto interpreter pocne citati komande sa vaseg terminala. Ako ukrcate neki file koji pokrene program koji sadrzi bye komandu, Logo ce izvrsiti taj program i vratiti vas u operativni sistem. Na taj nacin mozete pisati samostojece programe u Logu i pokretati ih sa shell/batch scriptovima. Kako bi podrzao tu tehniku, Logo ne ispise svoj uobicajeni pozdrav na startu/izlasku, ako mu date file argumente na komandnoj liniji.

Ako pritisnete vas znak za interrupt (prekid -- vidi tablicu dolje), Logo ce stati sa onim sto radi i vratiti se u toplevel (interaktivnu komandnu liniju Loga), kao da ste napravili THROW "TOPLEVEL. Ako utipkate svoj quit (zaustavi) znak, Logo ce pauzirati kao da ste napravili PAUSE.


                        Unix           DOS/Windows          Mac

        toplevel    obicno  ctrl-C       ctrl-Q      command-. (tocka)

        pause       obicno  ctrl-\       ctrl-W      command-, (zarez)

Ako imate environment (okruzenje ili sistemsku) varijablu LOGOLIB cija vrijednost je ime direktorija, tada ce Logo upotrijebiti taj direktorij, a ne default (standardni) library. Ako pozovete proceduru koja nije bila definirana, Logo prvo potrazi u aktivnom direktoriju file proc.lg gdje je proc ime procedure malim slovima. Ako takav file postoji, Logo ce ga ukrcati. Ako ga ne nadje, ili procedura jos uvijek nije definirana, Logo ce tada potraziti u library (biblioteka) direktoriju file proc (bez .lg) i ako postoji, ukrcati ga. Ako nigdje ne nadje definiciju procedure, tada prijavi gresku. Nekoliko procedura, koje su primitivi u vecini drugih verzija Loga su ukljucene u default library, tako da ako upotrebljavate neki drugi library, morati cete ukljuciti nesto (ili sve) iz standarne library.

Tokenizacijska pravila

Imena procedura, varijabli i property lista su case-insensitive (neosjetljiva na velika/mala slova). Takove su i specijalne rijeci END, TRUE, i FALSE. Case (velicina) slova je ipak sacuvana u svemu sto utipkate.

Unutar uglatih zagrada, rijeci su delimitirane (odijeljene) samo sa razmacima i uglatim zagradama. [2+3] je lista koja sadrzi jednu rijec. Ipak, pazite; Logo primitivi koji interpretiraju takovu listu kao Logo instrukcije ili izraze (RUN, IF, itd.) reparsiraju listu kao da nije bila unesena u uglatim zagradama.

Iza kvotacije (dvostrukih navodnika), a izvan uglatih zagrada, rijec je delimitirana sa razmakom, uglatom zagradom ili zagradom.

Rijec koja nije iza kvotacije ili unutar uglatih zagrada, je delimitirana sa razmakom, uglatom zagradom, zagradom ili infix operatorom +-*/=<>. Pazite, rijeci iza dvotocke (:) su u toj kategoriji. Kvotacija (") i dvotocka (:) nisu delimiteri.

Rijec koja se sastoji od upitnika kojeg slijedi broj (npr., ?37), kada se runparsira (tj., gdje se ocekuje ime procedure), tretira se kao sekvenca

	( ? 37 )

gdje broj postaje input ? proceduri. (Vidi diskusiju o template-ima dolje.) Ovaj specijalni tretman se ne odnosi na rijeci ucitane kao podaci, na rijeci u kojima ne-broj slijedi upitnik, ili ako je upitnik backslash-iran (\?).

Linija (instrukcijska linija ili linija ucitana sa READLIST ili READWORD) moze biti nastavljena na slijedecu liniju ako je zadnji znak na njoj tilde (~). READWORD sacuva tilde i newline znakove; READLIST ne sacuva.

Instrukcijska linija ili linija ucitana sa READLIST (ali ne sa READWORD) se automatski nastavlja na slijedecu liniju, kao da je zavrsena sa tilde (~), ako sadrzi nezatvorene uglate, viticaste, ili obicne zagrade, ili vertikalne linije (|). Ipak, greska je ako nastavljena linija sadrzi samo rijec END; time se sprecava definiranje "odbjeglih" procedura. Linije koje explicitno sadrze tilde, nemaju tu restrikciju.

Ako se linija koja se upisuje interaktivno sa tipkovnice nastavi, bilo sa tilde ili automatski, Logo ce ispisati tilde (~) kao prompt znak za nastavljenu liniju.

Tocka-zarez pocinju komentar na instrukcijskoj liniji. Logo ignorira znakove nakon (;) do kraja linije. Tilde (~) na kraju linije i dalje oznacava nastavak linije, ali ne i nastavak komentara. Na primjer, unoseci instrukciju

	print "abc;comment ~
	def

ce ispisati rijec abcdef. Tocka-zarez nema specijalno znacenje u data linijama ucitanim sa READWORD ili READLIST, ali takova linija moze naknadno biti reparsed (re-analizirana) sa RUNPARSE i tada ce komentar biti prepoznat.

Kako bi ukljucili u rijec delimitirajuci znak (ukljucujuci ; i ~), upisite prije njega backslash (\). Ako je zadnji znak na liniji backslash (\), tada ce newline znak koji slijedi iza backslash-a postati dio zadnje rijeci na liniji, i linija se nastavlja na slijedecu liniju. Kako bi ukljucili backslash u rijec, upotrijebite \\. Ako se kombinacija backslash-newline unese na terminalu, Logo ce ispisati backslash kao prompt znak za nastavljenu liniju. Sve ovo vrijedi i za data linije ucitane sa READWORD ili READLIST kao i za instrukcijske linije. Znak unesen sa backslash-em je EQUALP istom znaku bez bacslash-a, ali se razlika moze ustanoviti pomocu BACKSLASHEDP predikata. (Ipak, BACKSLASHEDP prepoznaje backslash-iranje jedino na znakovima gdje je to potrebno: whitespace (razni razmaci), zagrade, uglate zagrade, infix operatori, backslash, vertical bar, tilde, quote ("), upitnik, dvotocka, i tocka-zarez.)

Alternativna notacija za ukljucivanje inace delimitirajucih znakova u rijeci je stavljanje grupe znakova u vertical bars (|). Svi znakovi unutar vertical bars se tretiraju kao da su slova. U podacima ucitanim sa READWORD vertical bars su sacuvane u rijeci. U podacima ucitanim sa READLIST (ili onima koji rezultiraju anliziranjem rijeci sa PARSE ili RUNPARSE) vertical bars se ne pojavljuju eksplicitno; svi potencijalni delimitirajuci znakovi (ukljucujuci razmake, zagrade, uglate zagrade i infix operatore) izgledaju kao da su uneseni sa backslash-em. Unutar vertical bars, backslash se moze upotrijebiti. Jedini znakovi koji ne smiju biti backslash-irani u tom kontekstu su backslash i vertical bar.

Znakovi uneseni izmedju vertical bars su uvijek specijalni, cak i kada se rijec ili lista koja ih sadrzi kasnije obradi sa PARSE ili RUNPARSE. Znakovi utipkani nakon backslash-a se tretiraju nesto drugacije. Kada se kvotirana rijec koja sadrzi backslash-irani znak RUNPARSE-ira, backslash-irani znak gubi svoje specijalno znacenje i nakon toga se ponasa kao da je unesen normalno. Ova razlika je vazna jedino ako gradite Logo izraze od dijelova, da ih izvrsite kasnije, a zelite upotrijebiti zagrade. Na primjer,

	PRINT RUN (SE "\( 2 "+ 3 "\))

ce ispisati 5, ali

	RUN (SE "MAKE ""|(| 2)

ce stvoriti varijablu cije ime je otvorena-zagrada "(". (Oba primjera bi pala, da zamijenimo vertical bar i backslash.)


Go to the first, previous, next, last section, table of contents.