Komenskio Logo:
Programa Pamokos: Užsienio šalyse
 

Valdymo struktūros. Koordinatės. Laikrodžio projektas

Pagrindinės valdymo struktūros

Klasikiniu programavimo požiūriu svarbiausios valdymo struktūros yra priskyrimas, šakojimas, ciklas, procedūra, funkcija. Išsamiausiai susipažindinome su procedūromis. Žinome ir dvi priskyrimo komandas: tebus ir vadink. Be jų dar yra komanda tebūnie. Komandos tebus ir vadink sukuria išorinius kintamuosius, kuriuos, įvykdę atitinkamą procedūrą, rasime Logo atmintinės lango objektų sąraše. Šiomis komandomis priskiriama viena reikšmė vienam kintamajam. Komanda tebūnie sukuria vidinius kintamuosius. Be to ji vienu metu gali priskirti reikšmes keliems kintamiesiems (tada ją būtina apskliausti):
(tebūnie “a 5 “b 7 “c 14)

Čia kintamajam a bus priskirta reikšmė 5, b – reikšmė 7 ir c – 14. Žinomo kartojimo ciklą  kartok  jau ne kartą vartojome. Jeigu iš anksto nežinome tikslaus kartojimų skaičiaus, šis ciklas netinka, tam yra kiti du: ciklas bei kol. Ciklas kol yra paprastesnis:

tai bandau
    tebus "a 1
    kol [:a < 10][rašyk :a tebus "a :a + 1]
taškas

Rašymo komanda bus kartojama tol, kol kintamojo a reikšmė taps 10 (10 jau neberašys), t. y. komandų lauke bus rašoma 1, 2, 3, 4, 5, 6, 7, 8, 9.

Komanda ciklas nurodo, kad komandų seka bus vykdoma tol, kol ciklą valdančio kintamojo reikšmė bus iš intervalo [N1,  N2], t. y. ciklas kintamajam priskiriama pradinė intervalo reikšmė N1 ir po kiekvieno komandų_sekos įvykdymo padidinama (arba mažinama, jeigu N1 > N2) vienetu (galima nurodyti trečią intervalo skaičių N3, tuomet bus didinama arba mažinama žingsniu N3):
ciklas  ciklo_kintamasis  [N1  N2]  [komandų_seka]
ciklas  ciklo_kintamasis  [N1  N2  N3]  [komandų_seka]

Vieną iš sąlyginių (šakojimo) sakinių – jeigu – jau vartojome nagrinėdami rekursiją. Tai komanda, tikrinanti nurodytą sąlygą ir vykdanti atitinkamą komandų seką priklausomai nuo to, ar sąlyga išpildyta, ar ne.

Jeigu komandų seką reikia vykdyti tik tuomet, kai sąlyga teigiama (arba tik neigiama) patogiau vartoti komandas jei.tiesa bei jei.melas, tik prieš tai reikia patikrinti sąlygos teisingumą komanda bandyk. Komandos:
jeigu [a > b] [rašyk [a didesnis už b]]  [rašyk  [a mažesnis už b]]
ir komandų seka
bandyk [a > b]
jei.tiesa  [rašyk [a didesnis už b]]
jei.melas [rašyk  [a mažesnis už b]]
yra ekvivalenčios. Pastaroji užrašoma trumpesnėmis eilutėmis – tokią procedūrą lengviau skaityti ir suprasti.

Vieno veiksmo pasirinkimui iš daugelio vartojama komanda rinkis. Pateiksime Vėžliuko valdymo klaviatūros rodyklių klavišais procedūrą:

tai valdau
    rinkis kai.paspausta~
         [ -72 [priekin 10]~
        -75 [kairėn 90]~
        -80 [atgal 10]~
        -77 [dešinėn 90]]
    valdau
taškas

Komanda kai.paspausta pateikia paspausto klavišo kodą, o skaičiai -72, -75, -80, -77 yra rodyklių atitinkamai į viršų, į kairę, į apačią bei į kairę kodai.

Duomenų įvestis ir išvestis

Kaip rašant Logo procedūras vykdyti kompiuterio dialogą su vartotoju? Tam yra duomenų įvesties ir išvesties komandos, svarbiausios jų susijusios su simbolio, žodžio, sąrašo pateikimu. Šiems duomenims skaityti vartojamos komandos: skaityk.ženklą, skaityk.žodį, skaityk.sąrašą. Įvykdžiusi vieną iš šių komandų sistema laukia, kol į komandų eilutę bus įvestas duomuo ir paspaustas klavišas Enter.

Duomenis skaityti galima nurodyti ne tik iš komandų eilutės, bet ir iš bylos. Tam vartojama komanda skaityk.iš, kurios argumentas yra byla, iš kurios skaitomi duomenys. Pabaigus skaityti byla užveriama nurodžius tuščio sąrašo argumentą: skaityk.iš [ ].

Duomenų įvesčiai dar galima naudoti dialogo langą, pavyzdžiui, kurio pavadinimas bus Antraštė, o klausimas (tekstas virš įvesties eilutės) – Jūsų vardas:
(dialogas [Jūsų vardas:] “Antraštė)
arba redagavimo eilutę – komanda klausk – čia atsivers įvesties eilutė ties pirmu aktyviu Vėžliuku ir lauks kol bus įrašytas duomuo ir paspaustas klavišas Enter.

Duomenims spausdinti komandų eilutėje vartojamos komandos: parodyk, rodyk, spausdink.eilutę bei rašyk. Visų jų argumentai gali būti ir žodis (prieš jį rašant kabutes), ir kintamojo reikšmė (prieš kintamojo vardą rašant dvitaškį), ir sąrašas (laužtiniuose skliaustuose). Pabandykite ir atkreipkite dėmesį į duomenų spausdinimo skirtumus.

Duomenis galima rašyti (spausdinti) ir į bylas. Byla atveriama komanda rašyk.į. Tada rašymui vartokite komandos spausdink.eilutę bei rašyk.

Duomenis galima išvesti ne tik į komandų lauką ar bylas, bet ir į pranešimų langą vartojant komandą:
(pranešimas [Pranešimo_tekstas] “Antraštė)

Darbas su koordinatėmis

Iki šiol Vėžliuko padėtį ekrane (Vėžliuko lauke) nustatydavome ir keisdavome santykinai, t. y. atžvilgiu jo buvimo vietos. Kitas būdas Vėžliuko judėjimui ekrane valdyti – absoliutus, vartojant koordinates. Vėžliuko koordinates galime sužinoti komandomis koks.x.y, koks.x, koks.y. Komandomis eik.x.y, eik.x bei eik.y galima nurodyti Vėžliukui, kur jam eiti. Taip vaikščiodamas iš taško į tašką Vėžliukas gali nubraižyti labai įdomių figūrų. Parašykime ir panagrinėkime procedūras:

tai pradžia :ax :ay :bx :by :žingsnis
    eisim eik.x.y :ax + :bx :ay
    piešim
    sukinys 360 :žingsnis
taškas

tai sukinys :n :kampas
    jeigu :n = 0 [baik]
    eik.x.y :ax + :bx * cos 3 * :kampas ~
        :ay + :by * sin :kampas  ; x ir y koordinatės
    sukinys :n - 1 :kampas + :žingsnis
taškas

Bangelė (~) reiškia komandos kėlimą į kitą eilutę, kabliataškiu pradedami komentarai. Įvykdžius procedūrą pradžia 0 0 100 180 61 Vėžliukas nubraižys figūrą (1 pav.). Parinkite kitokias argumentų reikšmes ir patyrinėkite procedūrų rezultatus. Įdomesnius variantus atsiųskite mums. Lauksime.
 

1 pav.

Projektas – laikrodis

Komenskio Logo sistema turi komandas (funkcijas), kuriomis galima gauti kompiuteryje esantį laiką bei datą. (data, data.žodžiu, laikas, laikas.žodžiu). Šių komandų atitinkami rezultatai yra, pavyzdžiui, tokie:
[30 6 99 3]  arba  1999 m.  birželio  30 d.  trečiadienis
[6 46 19 26]  arba  06:46:19

Dabar jau galima sukurti laiką rodantį laikrodžio projektą. Tam reikės aprašyti valandų, minučių ir sekundžių rodykles valdančias procedūras:

tai valanda :dabar
    žvelk (30 * (liekana pirmas :dabar 12) + 0,5 * dalis 2 :dabar)
    pasirink.pieštuko.storį 5  ; rodyklės storis
    keisim priekin 30
    eisim atgal 30
taškas

tai minutė :dabar
    žvelk 6 * dalis 2 :dabar
    pasirink.pieštuko.storį 3  ; rodyklės storis
    keisim priekin 40
    eisim atgal 40
taškas

tai sekundė :dabar
    žvelk 6 * dalis 3 :dabar
    pasirink.pieštuko.storį 2  ; rodyklės storis
    keisim priekin 60 eisim atgal 80 keisim priekin 20
taškas

Komanda žvelk nurodoma Vėžliukui pasisukti duota kryptimi (laipsniais). Komanda dalis n žodis_arba_sąrašas pateikia nurodyto žodžio arba sąrašo n-tąjį narį (elementą), pavyzdžiui, dalis 2 [a b c ] rezultatas bus lygus b.

Komanda liekana a  b padalija skaičių a iš skaičiaus b ir rezultatu pateikia gautą liekaną.
Dabar parašykime gaubiančią procedūrą, kuri valdytų laikrodžio rodykles:

tai rodyk.laiką
    pradžia  tebūnie "dabar laikas ; pasirengimo piešti procedūra
    valanda :dabar  ; procedūra valdanti valandos rodyklę
    minutė :dabar  ; procedūra valdanti minutės rodyklę
    sekundė :dabar  ; procedūra valdanti sekundės rodyklę
    rodyk.laiką
taškas

tai pradžia
   valyk
   pasirink.pieštuko.spalvą 0  pasirink.pieštuko.storį 20
   piešim  taškelis
   pasirink.pieštuko.spalvą 15
taškas

Komanda taškelis (sutrumpintai ) padeda nurodytos Vėžliuko pieštuko spalvos ir storio taškelį ekrane.
Toliau belieka nusipiešti laikroduką ir įkomponuoti jame rodykles bei procedūroje pradžia  komandą valyk pakeisti komanda įkelk.vėžliuko.lauką“laikrodis.bmp (2 pav.).
 

 2 pav.


Paruošta pagal J. Aušraitės ir V. Dagienės pamokų ciklą Mokomės dirbti su Komenskio Logo.

Logo - kas tai? LogoWriter programa Naudingos nuorodos Metodinė medžiaga Moksleivių darbai
į svetainės pradžią
Laiškus su klausimais ir komentarais siųskite adresu: juraa@delfi.lt
Atnaujinta 2000 m. spalio 20 d.