![]() |
||||||||||||||||||||||||||||
2. lecke - Koncentrikus körök
KONCENTRIKUS KÖRÖK - 1. PRÓBÁLKOZÁSAz 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:
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. 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ÖKMost 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 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). 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:
Próbáld ki, mi történik, ha változtatsz a paramétereken! MEGLÉVŐ ELJÁRÁS VÁLTOZTATÁSAAz 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: A megváltoztatott eljárással én ilyen ábrákat rajzoltam:
És Te? KITÉRŐ - ELÁGAZÁSAz 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 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 Vagy akár így: tanuld pirosvagykék :szám 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 Gyakorlásképpen írd meg a következő eljárásokat:
ALAKZATOK KISZÍNEZÉSEMost 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. Tehát Te is tudnál az alábbiakhoz hasonló sokszögeket rajzolni?
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Ő FELADATOK1. FELADAT![]() 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. FELADATHozz 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. FELADATMost 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. FELADATMost 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![]() 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. FELADATHozz 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. FELADATMost 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. FELADATMost 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.
|