A.7 La laborspaco

La laborspaco konsistas el ĉiu objekto difinita de l’ uzulo. Tio enhavas:

A.7.1 La proceduroj

Prezentado

Proceduroj estas iaj «prograoj». Per voki ĝiajn nomojn, oni rulas l’ instrukciojn enhavatajn en la korpo de la proceduro. Por difini proceduron oni uzu la ŝlosilvorton pour.

por nomo_de_la_proceduro :v1 :v2 :v3 .... [:v4 ....] [:v5 ....]  
  Korpo de la proceduro  
fino

Ekz:

por kvadrato :c  
  ripetu 4 [an :c dn 90]  
fino

La proceduro nomiĝas kvadrato kaj havas parametron nomiĝantan c. kvadrato 100 produktos do kvadraton je latero 100. (Rigardu l’ ekzemplojn de proceduroj ĉe la fin’ de la libro.)

Post la versio 0.7c eblas aldoni komentariojn en la kodo per antaŭigi la signon # al ili.

por kvadrato :c
# ĉi tiu proceduro ebligas grafiki kvadraton je latero :c
ripetu 4 [an :c dn 90] # praktika, ĉu ne?
fino

Malnepraj variabloj

Nun estas eble en XLogo uzi «apriorajn»valorojn por argumentoj. Konsideru la jenan proceduron:

por poli :n [:l 10]  
ripetu :n [an :l dn 360/:n]  
fino  
 
# Tio grafikas poligonon (plurlateron) kies  
# 20 lateroj mezuras 10 testudpaŝojn  
poli 20

Dum l’ interpretado, la variablon :l anstataŭas ĝia apriora valoro, tio estas 10. Se oni deziras ŝanĝi tiun valoron, voku la proceduron poli inter krampoj por indiki al interpretilo ke oni uzos malneprajn (fakultativajn, nenecesajn) parametrojn.

# Tio grafikas regulan plurlateron kies  
# 20 lateroj mezuras nun 5 testudpaŝojn  
(poli 20 5)  
# Tio grafikas kvadraton kies lateroj  
# mezuras 100 testudpaŝojn  
(poli 4 100)

La primitivo ’programon_kontrolu

Por kontroli la ruladon de programo eblas skribigi al ĝi la procedurojn rulatajn. Tiu moduso ebligas ankaŭ afiŝi ĉu la proceduroj redonas valorojn per la primitivo sendu.

programon_kontrolu


Ŝaltas la kontrolan moduson.

programon_kontrolhaltu


Malŝaltas la kontrolan moduson.

Jen malgranda ekzemplo per la faktorialo (rigardu p. §).

program_kontrolu skribu fak 4  
fak 4  
  fak 3  
    fak 2  
      fak 1  
      fak sendas 1  
    fak sendas 2  
  fak sendas 6  
fak sendas 24  
24

A.7.2 La variabloj

Ekzistas du specoj de variabloj:

En tiu versio de LOGO, la lokaj variabloj ne estas uzeblaj en la sub-proceduroj. Dum eliri el la proceduro, la lokaj variabloj malaperas.

provizu vor1 arg2


Ekzemplo: provizu "a 100 provizas 100 al la variablo a.

lokvark, lokan_varianton_kreu arg1


Por provizi al ĝi valoron, rigardu lokp.

loke_provizu, lokp vor1 arg2


Kreu novan lokan variablon vor1 kaj provizu ĝin per la valoro arg2.

dif, difinu vor1 listo1


Difinu novan proceduron nomatan vor1.

listo1 enhavas plurajn listojn:

dif "plurlatero [[nl longeco] [ripetu :nl [an :longeco dn 360/:nl]]]

Tio difinas proceduron nomatan plurlatero kun du variabloj (:nl kaj :longeco). Ĝi ebligas grafiki regulan plurlateron kies nombron de lateroj, kaj la longon de ĉiu latero, oni povas elekti.

difinon vor1


Donu ĉiun informon pri la proceduro nomata vor1. Ĝi donas liston enhavantan plurajn listojn.

Tiu primitivo estas kompreneble asociita al la primitivo difinu.

enhv, enhavon vor1


Donu la valoron de la variablo vor1.

enhv "a kaj :a estas du samefikaj notacioj.

progcit, programerojn_citu


Donu liston enhavantan ĉiun proceduron nun difinitan.

varlist, variantliston


Donu liston enhavantan ĉiun variablon nun difinitan.

ecan_liston


Donu liston enhavantan la ecolistojn aktuale difinitajn.

enhavon


Redonu liston konsistantan el tri aliaj listoj. La unua enhavas ĉiun difinitan proceduron, la dua ĉiun variablon kaj la tria ĉiun eco-liston.

programeraro


Redonu liston enhavantan ĉiun konatan primitivon.

nomon_viŝu, nv arg1


Forviŝu la proceduron nomatan arg1, aŭ ĉiun proceduron enhavitan en la listo arg1.

varianton_viŝu, varv arg1


Forviŝu la variablon arg1 aŭ ĉiun variablon enhavitan en la listo arg1.

ecan_liston_viŝu arg1


Forviŝu la ecoliston nomatan arg1 aŭ ĉiun ecoliston enhavitan en la listo arg1.

njv, nomojn_viŝu


Forviŝu ĉiun variablon, ecoliston kaj proceduron difinitan en la laborspaco.

adiaŭ, adiau, adiaw, adiaux


Eliru XLOGO.

ekzekutu, ekzek listo1


Rulu la instrukciliston enhavitan en listo1.

startigu listo1


Ebligas ruli sistemkomandon disde XLogo. listo1 devas enhavi plurajn listojn enhavantajn ĉiun vorton konsistigantan la komandon. Jen ekzemploj:

startigu [[gedit] [/home/xlogo/dosiero.txt]]

Rulu l’ aplikon gedit kaj malfermu la dosieron /home/xlogo/fichier.txt (GNU/Linux)

startigu [[notepad] [C: /dosiero.txt]]

Rulu l’ aplikon notepad kaj malfermu la dosieron nomatan C: /dosiero.txt (ReactOS)

Tiu iom stranga sintakso ebligas ja uzi spacojn en la dosiervojoj.

A.7.3 La ecolistoj

Ekde la versio 0.9.92, XLogo subtenas ecolistojn. Ĉiu ecolisto havas ĉefan nomon kaj konsistas el aro de paroj Ŝlosilo-Valoro.

Por ekzemplo, konsideu ecoliston nomatan «aŭto». Ĝi povas enhavi ekzemple la ŝlosilon «koloro» asociitan al la valoro «ruĝa», aŭ ankaŭ la ŝlosilon «speco » asociitan al la valoro «kabrioleto».

Por manipuli tiajn listojn, oni havas la jenanj priitivojn:

econ_provizu nomo ŝlosilo valoro


Konsideru la ecoliston nomo (se ĝi ne ekzistas, kreu ĝin). valoro kiu estos havebla per la vorto ŝlosilo.

econ_sendu nomo ŝlosilo


Pluku en la ecolisto nomo la valoron asociita al la dezirata ŝlosilo. Se la ecolisto ne ekzistas aŭ se la ŝlosilo ne ekzistas, donu malplenan liston.

econ_viŝu nomo ŝlosilo


En la ecolisto nom, forviŝu l’ valoron asociitan al la elektita ŝlosilo.

ecajn_listojn nomo


Donu la aron de paroj ŝlosilo-valoro enhavita en la ecolisto nomo. Repensu pri l’ ekzemplo de la listo «voiture».

# Plenigi la liston  
 econ_provizu "aŭto "koloro "ruĝa  
 econ_provizu "aŭto "speco "kabrioleto  
 econ_provizu "aŭto "firmao "Citroën  
 
# Konsulti iun valoron  
 skribu econ_sendu "aŭto "koloro  
 ruĝa  
 
# Konsulti ^ciun eron  
 skribu ecan_liston "aŭto  
 koloro ruĝa speco kabrioleto firmao Citroën