0. lecke

1. lecke

2. lecke

3. lecke

4. lecke

5. lecke

6. lecke

7. lecke

8. lecke

9. lecke

2. lecke - Koncentrikus körök

Koncentrikus körök Koncentrikus körök Koncentrikus körök Koncentrikus körök

KONCENTRIKUS KÖRÖK - 1. PRÓBÁLKOZÁS

Az olyan köröket, amelyeknek ugyanott van a középpontjuk (azaz úgy néznek ki, mint a céltábla), koncentrikus köröknek hívjuk. Ilyeneket fogunk most rajzolni.

Próbáld ki a következő utasítást:


ismétlés 30 [tollszín! véletlenszám 16 pont tollvastagság! véletlenszám 200 várj 1000]


Ezzel a paranccsal az alábbiakhoz hasonló ábrákat kaphatsz:

Koncentrikus körök Koncentrikus körök Koncentrikus körök

Sikerült? Ha nem, mert a teknőc olyasmit üzent, hogy "Nem tudom, hogy csináljam: ...", akkor nem pontosan gépelted be a parancsot. Próbáld újra, és figyelj a szóközökre is!

Mi is történt valójában? Tulajdonképpen majdnem az összes parancs jelentését ismerjük már, de ismételjük át, mit is jelentenek:

ismétlés 30 - az utána, szögletes zárójelben lévő parancsokat 30-szor egymás után végrehajtja.
tollszín! - a toll színét megváltoztatja. Minden színhez tartozik egy szám (0 és 15 közötti). Ez a parancs olyan színűre váltja a tollat, amilyet az utána lévő szám jelöl.
véletlenszám 16 - véletlenszerűen választ egy számot 0 és 15 között (ez jelöli majd a toll színét).
pont - a megadott tollszínnel és tollvastagsággal rajzol egy pontot.
tollvastagság! - a toll vastagságát változtatja olyanra, amilyen szám utána következik.
véletlenszám 200 - véletlenszerűen választ egy számot 0 és 199 között (ez jelöli majd a toll vastagságát).
várj 1000 - megáll és vár 1000 (nagyon rövidke) időegységnyit (hogy jobban lásd, hogyan rajzol).

Tehát mit csinált a teknőc ennek a parancsnak a hatására? 30-szor egymás után rajzolt egy-egy pontot, véletlenszerűen választott színnel és vastagsággal. Azaz a körök, amiket látsz, tulajdonképpen nem is körök, hanem különböző méretű, egymásra rajzolt nagyon vastag pontok.

Az előző utasítás rövidítésekkel leírva a következő:


ism 30 [tsz! vsz 16 pont tv! vsz 200 várj 1000]


PARAMÉTERES KONCENTRIKUS KÖRÖK

Most olyan eljárást szeretnénk írni, amely többféle méretű "céltábla" rajzolására is jó lesz majd, tehát az eljárások írásánál paraméterekkel (betűkkel) fogjuk megadni a körök méretét, valamint a körök számát is. A legnagyobb kör átmérőjét fogjuk megadni az eljárás meghívásakor, majd a további körök átmérője folyamatosan csökken, az előzőnek a fele, azaz 0,5-szerese lesz (az átmérőt az eljárásban d-vel jelöljük majd). A körök számát pedig n-nel helyettesítjük.


tanuld koncentrikus :n :d
ha :n = 0 [stop]
tollvastagság! :d
tollszín! véletlenszám 16
pont
koncentrikus :n - 1 :d * 0,5
vége


Nos, ez már egészen komoly, hosszú eljárás, jobb, ha átnézzük lépésenként, hogy mit is csinál:

tanuld koncentrikus :n :d - jelzi a teknőcnek, hogy most egy eljárást fogunk írni, melynek neve koncentrikus, és két paramétere van, n (körök száma) és d (kör átmérője).
ha :n = 0 [stop] - ha az n paraméter értéke 0, akkor a teknőc hagyja abba a rajzolást, és álljon meg (különben folytatja az eljárás végrehajtását).
tollvastagság! :d- váltsa a tollvastagságot d-re (a d értékének megfelelő számra)
tollszín! véletlenszám 16 - válasszon egy véletlenszámot 0 és 15 között, és ezt állítsa be tollszínnek.
pont - az előbbiekben beállított vastagsággal és színnel rajzoljon egy pontot.
koncentrikus :n - 1 :d * 0,5 - hajtsa végre még egyszer ugyanezt az eljárást úgy, hogy n legyen 1-gyel kevesebb, mint volt, és d legyen a fele az előző d-nek. (Tehát egy másik pontot fog rajzolni, mely fele olyan vastag, mint az előző, aztán újra meghívja ugyanezt az eljárást, és még kisebb pontot rajzol, és így tovább, egészen addig, amíg n értéke 0-ra nem csökken. Vagyis n értéke mindig azt mutatja meg, hogy még hány darab kört kell rajzolnia a teknőcnek.)
vége - jelzi a teknőcnek, hogy az eljárásunknak vége van.

Hogyan is kell meghívni ezt az eljárást? Be kell írni a parancssorba a nevét és utána két számot, melyek közül az első a körök száma, második a legnagyobb kör átmérője. Mivel a teknőc véletlenszerűen válogatja a színeket, még ha ugyanazt a parancsot írod be többször egymás után, akkor is más-más ábrát kapsz. Például:

koncentrikus 5 400 koncentrikus 6 460
Koncentrikus körök Koncentrikus körök Koncentrikus körök

Próbáld ki, mi történik, ha változtatsz a paramétereken!

MEGLÉVŐ ELJÁRÁS VÁLTOZTATÁSA

Az eljárást is átírhatod, szebb ábrát kapsz például, ha 0,5 helyett 0,7-et vagy 0,8-at írsz az utolsó előtti sorba. Hogyan tudunk már meglévő eljáráson változtatni? A legegyszerűbb, ha nem is változtatunk rajta, hanem új névvel létrehozunk egy új eljárást (a javítottat), és ezentúl azt használjuk a régi helyett (pl. lehet a neve koncentrikus2). De ha mindenképpen a régit szeretnéd megváltoztatni, akkor kattints a képernyő tetején, a menüsor alatt található ikonsor negyedik gombjára: Eljárások megjelenítésének ikonja, ekkor egy új ablakban megjelenik az összes eddig írt eljárásod neve. Ezek közül kattints kettőt annak a nevére, amelyiket meg szeretnéd változtatni, ekkor a jobb oldali ablakban megjelenik az eljárás maga. Erre is kattints kettőt, ekkor egy nagyobb ablakban is megjelenik, ahol már könnyedén változtathatsz rajta. Ha kész, csukd be ezt az ablakot (jobb felső sarok), ekkor megkérdezi a program, hogy meg akarod-e tartani az eljárás új szövegét. Válaszold azt, hogy igen, és az eljárást sikeresen megváltoztattad. Zárd be az összes, eljárást tartalmazó ablakot, és már rajzolhatsz is tovább.

A megváltoztatott eljárással én ilyen ábrákat rajzoltam:

Koncentrikus körök Koncentrikus körök Koncentrikus körök

És Te?

KITÉRŐ - ELÁGAZÁS

Az előbbi, koncentrikus köröket rajzoló eljárásban két nagyon fontos újdonság is található. Az egyik az elágazás, vagy feltételes elágazás, amikor a teknőcöt egy döntés elé állítjuk: el kell döntenie, hogy egy adott kijelentés igaz vagy hamis, és ettől fog függni, hogy mit csináljon a továbbiakban. A másik a rekurzió, amikor egy eljáráson belül meghívjuk ugyanazt az eljárást más paraméterekkel. A rekurziót később tárgyaljuk részletesen, ott, ahol a későbbi feladatok során újra előjön, nézzük meg tehát az elágazást egy kicsit közelebbről.

Az első példában megkérjük a teknőcöt, hogy ha 10-nél kisebb vagy egyenlő számot adunk meg neki, akkor piros, ha 10-nél nagyobbat, akkor kék vonalat húzzon.


tanuld pirosvagykék :szám
ha :szám <= 10 [tollszín! 12 előre 20][tollszín! 9 előre 20]
vége


Próbáld ki:


pirosvagykék 3



pirosvagykék 13



pirosvagykék 300



pirosvagykék 10



pirosvagykék 0


stb.

Tehát az eljárás neve pirosvagykék, egyetlen paramétere pedig a szám. Újdonság csak az eljárás második sorában található, ez az elágazás:


ha :szám <= 10 [tollszín! 12 előre 20][tollszín! 9 előre 20]


A sor elején megadjuk a feltételt (kijelentést), amiről a teknőcnek el kell döntenie, hogy igaz vagy hamis. Most éppen meg kell vizsgálnia, hogy a szám<=10, vagy nem. Ha igaz a kijelentés, akkor az első szögletes zárójelben lévő parancsokat hajtja végre, ha hamis, akkor a másodikban lévőket. Vagyis most, ha a szám<=10, akkor a tollszínt pirosra váltja (12) és előre megy 20 egységet, ha pedig nagyobb, akkor kékre (9) és úgy megy előre 20 egységet. Tehát pl. a pirosvagykék 5 rövidke piros vonalat fog eredményezni, míg a pirosvagykék 15 kéket.

Vigyáznunk kell arra, hogy a feltételt és az utána következő mindkét szögletes zárójeles parancssort egyetlen sorba kell írnunk ahhoz, hogy a teknőc megértse. Ha a sor már nagyon hosszú lenne, és nem férne ki egy sorban, akkor eltörhető, de a sor végén egy ~ jellel jelezni kell a teknőcnek, hogy ez a sor még folytatódik. (Természetesen csak a parancsok között lehet a sorokat eltörni, nem egy parancs közepén.) A teknőc úgy jelzi, hogy ezt megértette, hogy a következő sor elején > helyett >> jelenik meg. A fenti eljárásban ugyan nincsen túlságosan hosszú sor, de azért így is írhattuk volna:


tanuld pirosvagykék :szám
ha :szám <= 10 [tollszín! 12 előre 20]~
[tollszín! 9 előre 20]
vége


Vagy akár így:


tanuld pirosvagykék :szám
ha :szám <= 10~
[tollszín! 12 előre 20]~
[tollszín! 9 előre 20]
vége


Látszik, hogy az eljárásban az előre 20 parancsot kétszer is be kellett írnunk, hiszen ezt a teknőcnek akkor is végre kell hajtania, ha piros színnel rajzol, és akkor is, ha kékkel. Szerencsére megoldható, hogy ne kelljen kétszer leírni. Az olyan parancsokat, amit mindenképpen végre kell hajtani a feltételtől függetlenül, a szögletes zárójeles parancsok után, új sorba is írhatjuk. Így:


tanuld pirosvagykék :szám
ha :szám <= 10 [tollszín! 12][tollszín! 9]
előre 20
vége


Gyakorlásképpen írd meg a következő eljárásokat:

  • Eljárás két paraméterrel: hossz és szám. Ha a szám nevű paraméter értéke kisebb, mint 50, akkor a teknőc jobbra fordul 90 fokot, különben balra fordul 90 fokot. Ezután annyit megy előre, amennyit a hossz paraméter értéke mond neki.

  • Eljárás egy paraméterrel: hossz. Ha a hossz nevű paraméter értéke kisebb, mint 100, akkor a teknőc előre megy annyit, amennyi a paraméter értéke, különben hátra. Utána mindkét esetben jobbra fordul 30 fokot.

ALAKZATOK KISZÍNEZÉSE

Most pedig nézzük, hogyan tudnánk sokszögeket színezni. A színező parancsok használatához a sokszög belsejébe kell állni, nem elég a körvonalára, ahogyan eddig. A sokszög körvonalának megrajzolásához használhatjuk az eddigi sokszögrajzoló eljárásainkat, de a körvonal megrajzolása után a teknőcnek fel kell emelnie a tollát, bemerészkedni az alakzat belsejébe, kiszínezni az alakzatot, majd visszamenni a körvonalra és letenni a tollat, hogy legközelebb rajzolhasson.

A színezéssel kapcsolatos parancsok:

töltőszín! - ezzel az utasítással adható meg, milyen színnel színezzen majd a teknőc. A parancs után természetesen egy számot kell megadni 0 és 15 között.
töltőminta! - ezzel az utasítással adható meg, milyen mintázattal színezzen majd a teknőc (pl. csíkos, négyzethálós, stb.). A parancs után ismét egy számot kell megadni 0 és 15 között, ezek a számok jelölik az egyes mintákat.
tölt - ha mindent beállítottunk és az alakzat belsejében állunk, ezt az egyszerű utasítást kell ahhoz kiadni, hogy a teknőc kiszínezze az alakzatot, amelyben áll. Vigyázz, ha nem alakzat belsejében adod ki ezt a parancsot, akkor a teknőc akár az egész rajzlapot is képes kiszínezni!

Tehát Te is tudnál az alábbiakhoz hasonló sokszögeket rajzolni?

Kitöltött sokszögek Kitöltött sokszögek Kitöltött sokszögek

Ha nincs kedved magadnak kitalálni a színt és a mintát, véletlenszám parancs segítségével is megadhatod.

BEKÜLDENDŐ FELADATOK

1. FELADAT

Koncentrikus négyzetek-ábra az 1. feladathoz

Hozz létre egy új eljárást, melynek neve és paraméterei: négyzetek :n :oldal, mely a képen láthatóhoz hasonló ábrát varázsol a képernyőre. Az:n paraméter a négyzetek számát, az :oldal paraméter pedig a legnagyobb oldal hosszát jelöli.

Segítség: a négyzeteket középről kezdve és oda érkezve kell megrajzolnod a legnagyobbtól a legkisebbig, egyenként kiszínezve őket.




Most a fenti minta alapján készítsünk más síkidomokat használó ábrákat is!

2. FELADAT

Hozz létre egy új eljárást, melynek neve és paraméterei: háromszögek :n :oldal, mely az előzőhöz hasonló, de háromszögekből álló ábrát varázsol a képernyőre. Az :n paraméter a szabályos háromszögek számát, az :oldal paraméter pedig a legnagyobb oldal hosszát jelöli.

3. FELADAT

Most készíts a fentiekhez hasonló ábrát, de általad választott szabályos sokszöget használva.

Pl.: Hozz létre egy új eljárást, melynek neve és paraméterei: hatszögek :n :oldal. Az :n paraméter a hatszögek számát, az :oldal paraméter pedig a legnagyobb oldal hosszát jelöli.

4. FELADAT

Most készíts a fentiekhez hasonló színes ábrát, de általad kitalált és megrajzolt tetszőleges (nem szabályos) síkidomot használva.

5. FELADAT

Forgónégyzetek-ábra az 5. feladathoz

Hozz létre egy új eljárást, melynek neve és paraméterei: forgónégyzetek :n :oldal :szög. Az eljárás eredményeképpen a teknőc :n db elforgatott négyzetet rajzol, mint a képen. A legnagyobb négyzet oldala :oldal hosszúságú, és két négyzet megrajzolása között a teknőc elfordulásának a szöge megegyezik a :szög paraméter nagyságával.




Most a fenti minta alapján készítsünk más síkidomokat használó ábrákat is!

6. FELADAT

Hozz létre egy új eljárást, melynek neve és paraméterei: forgóháromszögek :n :oldal :szög. Az eljárás eredményeképpen a teknőc :n db elforgatott szabályos háromszöget rajzol. A legnagyobb szabályos háromszög oldala :oldal hosszúságú, és két háromszög megrajzolása között a teknőc elfordulásának a szöge megegyezik a :szög paraméter nagyságával.

7. FELADAT

Most készíts a fentiekhez hasonló ábrát, de általad választott szabályos sokszöget használva.

Pl.: Hozz létre egy új eljárást, melynek neve és paraméterei: forgóötszögek :n :oldal :szög. Az eljárás eredményeképpen a teknőc :n db elforgatott szabályos ötszöget rajzol. A legnagyobb szabályos ötszög oldala :oldal hosszúságú, és két háromszög megrajzolása között a teknőc elfordulásának a szöge megegyezik a :szög paraméter nagyságával.

8. FELADAT

Most készíts a fentiekhez hasonló színes ábrát, de általad kitalált és megrajzolt tetszőleges (nem szabályos) síkidomot használva.


Mely ábrák "szebbek" a szemünknek? Milyen szerepe van a szimmetriának? A szimmetria szerepéről a művészeti alkotásokban az érdekességek között olvashatsz.




Vissza az oldal tetejére
Az érdekességekhez
Előző lecke
Következő lecke