XLOGO havas kvin primitivojn ebligantajn efektivigi buklojn: ripetu, ripetupor kaj dum, por_ĉiu, ĉiam_ripetu.
n estas entjero kaj listo_de_instrukcioj estas listo enhavanta instrukciojn rulotajn. L’ interpretilo LOGO efektivigos je n fojoj la komandojn enhavatajn en la listo: tio ŝparas reskribi n fojojn la saman instrukcioj!
Ekz:
ripetu 4 [antaŭen 100 maldekstren 90] # Kvadrato kun latero 100 ripetu 6 [antaŭen 100 maldekstren 60] # Seslatero kun latero 100 ripetu 360 [antaŭen 2 maldekstren 1] # Ee... 360-latero kun latero 2 # Resume, preskaŭ cirklo! |
En buklo repete, estas difinita interna variablo nombrilon. Tiu enhavas la numero de l’ iteracio kuranta (la unua iteracio havas numeron 1).
ripetu 3 [s nombrilon] 1 2 3 |
ripetupor ludas la rolon de la bukloj for en aliaj programlingvoj.
Tiu buklo konsistas el doni al variablon kelkajn valorojn en iu intervalo laŭ iu kreskokvanto.
listo1 enhavas tri parametrojn: la nomon de la variablo, la komencan limon, la finan limon. Oni povas aldoni kvaran argumenton nenepran indikantan la kreskokvanton (la paŝon laŭ kiu la variablo marŝas); se ĝi forestas, apriore valoras 1. Jen kelkaj uzadaj ekzemploj:
ripetupor [i 1 4] [s :i*2] 2 4 6 8 # Nun oni variigas i inter 7 kaj 2 malkreskante je 1.5 je ĉiu fojo # Rimarku la negativan kreskokvanton # Oni skribas post i ĝian kvadraton ripetupor [i 7 2 -1.5] [s listo :i potencon :i 2] 7 49 5.5 30.25 4 16 2.5 6.25 |
listo_testota estas listo enhavanta instrukciojn redonantajn bulean.
listo_de_instrukcioj estas listo enhavanta rulotajn instrukciojn. L’ interpretilo LOGO rulos refoje listo_do_instrukcioj dum listo_testota redonos “vera”.
Ekz:
dum ["vera] [dn 1] # Testudo turnu sin # Ekzemplo por skribi renversitan alfabeton provizu "listo "abcĉdefgĝhĥijĵklmnoprsŝtuŭvz dum [ne malplena? :listo] [s lastan :listo provizu "listo senlastan :listo] |
Tiu primitivo ebligas priskribi ĉiun eron el listo aŭ ĉiun signon el vorto, poste rulas je ĉiu fojo la enhavon de la komandolisto.
por_ĉiu "i "XLOGO [skribu :i] X L O G O por_ĉiu "i [a b c] [skribu :i] a b c |
Ripetu sen fino instrukciliston.
ĉiam_ripetu [an 1 dn 1] |
Atentu: uzu tiun primitivon prudente pro la senfina buklo!