[Logo]  Seminar
 Logo

 21-23. januar 1999
[SEN]

Ukazi


THING

THING imesprem vrne vrednost (najglobje lokalne) spemenljivke imesprem.

: je okrajšava za thing "

RUN in RUNRESULT

Ukaz RUN seznamukazov izvede dani seznamukazov. Ukaz vrne neko vrednost, če seznam vsebuje nek izraz. Torej omogoča, da podatki postanejo ukazi.

Podobno, RUNRESULT seznamukazov izvede dani seznamukazov. Ukaz vrne prazen seznam; ali pa seznam z vrednostjo, če seznam ukazov vsebuje nek izraz.

TO in END

TO imeukaza :vhod1 :vhod2 ... je poseben ukaz za uvedbo novega ukaza imeukaza z vhodi (podatki) :vhod1 :vhod2 .... Tej vrstici sledijo vrstice z opisom delovanja ukaza. Opis zaključuje vrstica end. Prekinitev izvajanje ukaza zahtevamo z ukazom STOP; v funkcijskih ukazih (vračajo vrednost) pa z ukazom OUTPUT vrednost. Namesto OUTPUT lahko uporabimo okrajšavo OP.

Število vhodov je lahko spremenljivo. Vsak ukaz ima določena tri števila: najmanjše, privzeto in največje število vhodov.
Če pri uporabi ukaza število podanih vhodov ni enako privzetemu številu, obdamo uporabo ukaza z oklepaji in tako določimo nad katerimi podatki deluje.

( ukaz pod1 pod2 ... podk )

Najmanjše število vhodov je določeno s prvimi nekaj obveznimi vhodi oblike :imevhoda. Tem sledijo neobvezni vhodi oblike [:imevhoda začetna_vrednost]. Začetna_vrednost je določena z izrazom, ki se izračuna, če pri uporabi ukaza vrednost vhoda ni podana. Pri tem lahko uporabimo tudi vrednosti vhodov pred tem vhodom.
Na koncu spiska vhodov lahko podamo še en vhod oblike [:ostanek], ki shrani v seznam [:ostanek] vse morebitne dodatne vrednosti vhodov. V tem primeru je največje število vhodov neomejeno.
Če je privzeto število vhodov različno od najmanjšega, ga navedemo na koncu spiska vhodov.

Primer:

to prikaz :ob [:nob first :ob] [:ost] 2 (show "|obvezni = | :ob ) (show "|neobvezni = | :nob) (show "|ostanek = | :ost) end (prikaz "Ljubljana) obvezni = Ljubljana neobvezni = L ostanek = [] prikaz "Maribor "X obvezni = Maribor neobvezni = X ostanek = [] (prikaz "Kranj "Z "Gorenjska 1 2 3) obvezni = Kranj neobvezni = Z ostanek = [Gorenjska 1 2 3]

MSWLogo omogoča sprotni vnos ukaza v ukazni vrstici. Vnašamo ga po vrsticah do vrstice end.

Primer: Največji skupni delitelj

TO .ND :a :b ; Evklidov algoritem OP IFELSE :b=0 [:a] [.ND :b REMAINDER :a :b] END TO NAJDEL :a :b ; najvecji skupni delitelj OP .ND ABS :a ABS :b END

Poizvedbe

PROCEDUREP ime   Ali je ime ime ukaza ?
DEFINEDP   ime   Ali je ime ime uporabnikovega ali uporabljenega
                 knjižničnega ukaza ?
PRIMITIVEP ime   Ali je ime ime vgrajenega ukaza ?
NAMEP      ime   Ali je ime ime spremenljivke ?
MACROP     ime   Ali je ime ime makroja ?
REDEFP           Vgrajena spremenljivka, ki dovoljuje/prepoveduje (TRUE / FALSE)
                 spremembe ali brisanje opisov vgrajenih ukazov.

COPYDEF, TEXT in DEFINE

Ukaz COPYDEF novi stari ustvari nov ukaz novi z enakim opisom delovanja, kot ga ima ukaz stari.

Uporaba: copydef "levo "left

Ukaz TEXT imeukaza vrne seznam, ki vsebuje opis delovanja ukaza imeukaza oblike [[vhodi]opis]. Pri tem opis sestavlja zaporedje seznamov s posameznimi vrsticami opisa delovanja ukaza. Ukaz TEXT ne ohrani oblike zapisa ukaza - to omogoča ukaz FULLTEXT imeukaza.

show text "prikaz [[ob [nob first :ob] [ost] 2] [(show "obvezni = :ob )] [(show "neobvezni = :nob)] [(show "ostanek = :ost)]]

Pozor - druga vrstica je zlomljena.

Nasprotni učinek ima ukaz DEFINE imeukaza opis, ki ustvari ukaz z imenom imeukaza in opisom delovanja opis. Slednji mora biti v obliki, kakršno vrne ukaz TEXT.

Miška in tipkovnica

Miška

to miska home pu ht mouseon [setpos mousepos pd setpc [255 0 0]] [pu] ~ [setpos mousepos pd setpc [0 0 255]] [pu] ~ [setpos mousepos] end

Tipkanje

to tipkaj setlabelfont[[Courier New] -24 0 0 700 0 0 0 0 3 2 1 49] make "x -100 make "y 200 clearscreen rt 90 keyboardon [ setx :x sety :y make "c keyboardvalue ifelse :c = 13 [make "x 100][label char :c] make "x :x + 14 if :x > 100 [ make "x -100 make "y :y - 20 ] ] setfocus [MSWLogo Screen] end to koncaj mouseoff keyboardoff end

Risanje s tipkovnico

to hodi make "x 0 make "y 0 clearscreen home st pu setpensize [3 3] keyboardon [ make "c lowercase char keyboardvalue~ if memberp :c "xsedwrzcop1234567 [ run (word "z. :c) ] (pr :c :x :y) setpos (list :x :y) ] setfocus [MSWLogo Screen] end to z.1 setpc [255 0 0] end to z.2 setpc [0 255 0] end to z.3 setpc [0 0 255] end to z.4 setpc [255 255 0] end to z.5 setpc [255 0 255] end to z.6 setpc [0 255 255] end to z.7 setpc [0 0 0] end to z.c make "y (:y - 10) make "x :x + 10 end to z.d make "x :x + 10 seth 90 end to z.e make "y :y + 10 seth 0 end to z.o pu end to z.p pd end to z.r make "y (:y + 10) make "x :x + 10 end to z.s make "x :x - 10 seth -90 end to z.w name :y + 10 "y name :x - 10 "x end to z.x make "y :y - 10 seth 180 end to z.z make "y (:y - 10) make "x :x - 10 end

Slike v PostScriptu

Opis. Ukazi Logo2PS. Primer1. Primer2.


[Kazalo] [Ro] [SLO]
21. januar 1999 ; Pošlji sporočilo / Send message