Rekursija. Kaukių piešimas
Rekursija
Rekursija programavime viena sunkiausių konstrukcijų. Trumpai rekursiją
galima apibūdinti kaip procedūrą (ar funkciją), kuri kreipiasi pati į save.
Logo kalboje rekursiniai algoritmai užtašomi gana paprastai ir vaizdžiai.
Pateiksime keletą rekursinių procedūrų pavyzdžių Komenskio Logo
sistema, kuriuos išnagrinėjus bei atlikus kompiuteriu turėtų paaiškėti
rekursinių procedūrų vykdymo esmė.
Pirmiausia sudarykime pagalbinę procedūrą, bet kokio spindulio apskritimui
brėžti:
tai apskritimas :r
kartok 360 [eisim priekin :r ~
piešim taškelis ~
eisim atgal :r kairėn
1]
taškas
Dabar galime braižyti įvairiausias iš apskritimų sudarytas figūras.
Viena tokių būtų figūra, vadinama gausybės ragu. Piešinio esmė mažėjantys
apskritimai, kurių centrai išdėstomi ant kito apskritimo lanko. Šiai figūrai
brėžti lengva sudaryti rekursinę procedūrą:
tai ragas :r
apskritimas :r
eisim priekin 4 kairėn 4 piešim
tebus "r :r - 0,5
jeigu :r < 0 [baik]
ragas :r
taškas
Pastebėkime, kad šioje procedūroje yra rekursiją nutraukianti komanda
(sąlyginis sakinys): jeigu :r < 0 [baik], t.y. baigiama
piešti tada, kai spindulys tampa neteigiamas.
1 pav. Kreipinys į rekursinę procedūrą: ragas 50
Kitas pavyzdys, kuriame būtų vartojama rekursinė procedūra, yra
medžio braižymas. Medžiu galim laikyti V formos figūra, kurios kiekvienos
atkarpos (šakos) gale vėl yra V formos figūra. Parametru ataugos
nusakysime ilgiausios šakos ataugų skaičių, analogiškai ilgiu
vienos ataugos ilgį, kampu kampą tarp dviejų šakų:
tai medis :ilgis :kampas :ataugos
jeigu : ataugos = 0 [baik]
kairėn :kampas
pasirink.pieštuko.spalvą bet.koks 15
priekin 2 * :ilgis
medis :ilgis :kampas ( : ataugos - 1 )
atgal 2 * :ilgis
dešinėn 2 * :kampas
priekin :ilgis
medis :ilgis :kampas ( : ataugos - 1 )
atgal :ilgis kairėn :kampas
taškas
2 pav. Šis medis nupieštas kreipiantis į procedūrą: medis 10
20 6
Norėdami išsiaiškinti rekursinės procedūros veikimą, pabandykite keisti
argumentus nuo mažiausio (vis didindami) ir stebėdami Vėžliuko atliekamus
veiksmus. Matote, net ir sudėtingų piešinių rekursinės procedūros nėra
labai painios.
Pažintis su kaukių redaktoriumi
Vėžliukas gali keisti savo išvaizdą, būtent užsidėti kaukę. Mokame kaukę
pasiimti iš kaukių lango. O kaip kaukės kuriamos, taisomos?
Kaukėms piešti Komenskio Logo sistema turi grafinį redaktorių,
kuris dar vadinamas kaukių redaktoriumi arba Pieštuve. Jį galima
išsikviesti keliais būdais. Vienas iš jų paprasčiausiai atskirai įvykdant
Komenskio
Logo sistemos comiedit.exe bylą. Kitas būdas patogesnis
kaukių redaktorius iškviečiamas tiesiog iš sistemos, naudojantis Vėžliuko
vizitine kortele. Reikia tik dukart spragtelti ties paveikslėliu, esančiu
vizitinėje kortelėje.
3 pav.
Redaktorius turi visas standartines grafinio redaktoriaus funkcijas:
-
piešia tieses, spalvotus ir nespalvotus stačiakampius, elipses;
-
spalvina;
-
įterpia bet kurio šrifto, dydžio, spalvos ar stiliaus tekstą;
-
pasuka piešinį bet kuriuo kampu, jį didina bei mažina;
-
kopijuoja arba padeda piešinį ar jo dalį į krepšį (Clipbaord) bei paima
iš jo;
Redaktoriuje dar yra daug komandų darbui su kadrais (kaukės atskiras paveikslėlis),
o taip pat įdomi fotografavimo galimybė: galima iškirpti dalį ekrano
vaizdo ir panaudoti kaip kadrą.
Išmėginkime fotografavimo galimybę į kadrą įkelkime už redaktoriaus
esančio piešinio dalį. Pasirinkime mygtuką, vaizduojantį fotoaparatą
spustelėjus jį redaktorius užsivers, o pelės žymeklis įgaus kampelio pavidalą.
Su šiuo kampeliu pažymėkime norimą grafikos dalį atleidę pelės klavišą
grįšime į redaktorių. Pažymėtoji piešinio dalis bus kadro kairiajame viršutiniame
kampe liks tik padėti ją į norimą vietą.
Darbui su kadrais skirta viršutinė parankinės juosta (redaktoriaus dešinėje).
Čia yra mygtukai, leidžiantys vaikščioti iš vieno kadro į kitą, sužinoti
kaukės kadrų skaičių bei kuriame kadre esame. Kadrus galima šalinti, įterpti
naujus, peržiūrėti visą kadrų juostą. Kaip atrodys judesys, kai keičiamas
vienas kadras po kito, galima pažiūrėti kadrų animacijos lange (4 pav.):
4 pav.
Kadrų animacijos lange galima ne tik stebėti kadrų kaitą, bet ir reguliuoti
jų kaitos spartą, keisti kadrus lėtai po vieną (žingsniuoti) ir t.t. Čia
lengvai pastebimi kadre esantys netikslumai, judesio trūkčiojimas. Nesunku
nustatyti, kuris kadras taisytinas užvėrus kadrų animacijos langą ties
tuo kadru, jis automatiškai atsivers kaukių redaktoriuje. Peržiūros lango
foną pakeisime dukart spragtelėję ties juo.
Išsamiau apie Vėžliuko kaukes
Kaukės dydį galima keisti: nuo 1x1 iki 255x255 taškų (kaukės tašką nusako
redaktoriaus piešimo lango langelis). Kadro dydis keičiamas būsenos eilutės
antrame langelyje dukart spragtelėjus pelės kairiuoju mygtuku ir nurodžius
atitinkamus skaičius. Tačiau taip pakeisime tik kadro dydį, pats piešinys
jame nepasikeis. Jeigu norime pakeisti drauge ir kadrą, ir jame esantį
piešinį, tai pasirenkame parankinės mygtuką Keičia dydį arba atitinkamą
meniu punktą. Kadangi kaukę sudaro taškai, tai kiekvieno jo vietą galima
aprašyti koordinatėmis. Kairysis viršutinis taškas laikomas [1 1].
Jeigu didelėje kaukėje nupiešiame mažą piešinį, kaukę galima sumažinti
iki piešinio dydžio parankinės mygtukas Apčiuopia sritį\piešinį arba
atitinkama meniu komanda (Apčiuopti). Kad galima būtų įvykdyti šią komandą
kaukės pakraščiai turi būti skaidrios spalvos ja nuspalvinta kaukės dalis
Vėžliuko lauke bus nematoma. Papildomas spalvas galima sukurti spragtelėjus
spalvų paletėje ties tuščia spalva kairiuoju pelės klavišu laikant nuspaudus
Ctrl
klavišą.
Kiekvienoje kaukėje yra taškas, vadinamas židiniu. Tai jautrus
taškas, kuriuo Vėžliukas vaikščiodamas piešia, lyti foną, jis nurodo Vėžliuko
padėtį Vėžliuko lauke. Židinio vietą kaukėje ir kiekviename kadre atskirai
galima keisti. Jį galima nurodyti užrašius jo koordinates dukart spragtelėjus
būsenų eilutės paskutiniame (dešiniausiame) langelyje arba pasirinkus meniu
komandą Židinys bei pele: meniu komandą Židinio nustatymas pele. Židinys
nebūtinai turi būti kadro srityje, jis gali būti ir už kadro, t.y. galima
nurodyti ir neigiamas koordinates, ir didesnes už kaukės dydį.
Komenskio Logo
grafikos redaktoriuje nupieštą piešinį galima
įsiminti įvairiai: kauke (.lgw tipo byla), .bmp bei .ico tipo bylomis (piktogramos).
Darbą kaukių redaktoriaus lange užbaigiame nuspaudę viršuje dešiniausią
mygtuką (balta rodyklė mėlyname fone) grįžtame į Vėžliuko lauką.
Pratimai
Pamėginkite parašyti rekursines šioms figūroms piešti. Atkreipiame dėmesį,
kad viena procedūra gali tikti kelioms skirtis tik kreipinių parametrais:
Paruošta pagal J. Aušraitės ir V. Dagienės pamokų ciklą
Mokomės
dirbti su Komenskio Logo. |