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. 84).

 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