12.1
Minden programhoz a mellette lévő rajzok egyike tartozik. Me-
lyik? A hiányzó programokat persze pótolni kell, amiben re-
méljük segít a nyomtatott lista.
12.2
Az alábbi rajzok mindegyikét egy-egy 3-7 soros programocska
csinálta. Írjunk meg néhányat!
12.3 *
A következő rajzokhoz már gondolkodni is kell egy kicsit, sőt
némelyiknél a próbálgatás sem árt.
12.4
Változókkal lehet 'mozgatni' az előző két feladat ábráit.
Lehetnek olyan változók, amelyek meghatározzák az ábra helyét
(tologatás), méretét, arányait (nagyítás) stb. Változtassunk
minél több dolgot! Ha nem töröljük minden futás után a kép-
ernyőt, akkor sokkal érdekesebb ábrák is kialakulhatnak.
12.5
A 12.1. példa is 'kínálja' a változók használatát. Helyette-
sítsük egyetlennel a több (egymás melletti) ábra programját!
12.6
Melyik program(listá)hoz melyik ábra tartozik? Próbáljuk pó-
tolni a hiányzó programokat!
12.7
Készítsük el az alábbi rajzokhoz tartozó programokat! Oldjuk
meg változatonként minél kevesebb (3-5) utasítással!
12.8 *
Itt néhány további - picit bonyolultabb - rajz látható. A
feladat: a képernyőre 'varázsolni' őket! Reménytelennek tűnő
esetben most is segíthet a próbálgatás.
12.9
Helyezzünk 10-10 kört és téglalapot véletlenszerűen a képer-
nyőre! Nem lóg ki egyik sem?
12.10
Néhány eddigi feladatból próbáljunk véletlen látványt csinál-
ni: kapjanak RND-vel értéket a változók!
12.11
Húzzunk véletlenszerűen 100-500 vízszintes (függőleges, átló-
val párhuzamos stb.) vonalat a képernyőre! Mennyire lesz sö-
tét (világos) a képernyő?
12.12
Próbáljuk elkészíteni az alábbi rajzokat! Ha nem tudunk köny-
nyen íveket rajzolni, némi trigonometria segíthet.
12.13 *
Valószínűleg kell egy kicsit kisérletezni, hogy az alábbi áb-
rák előálljanak:
12.14
Szabályos sokszögek egyszerű előállítása is csak néhány gépre
jellemző. Ellenkező esetben az előzőhöz hasonló egyszerű tri-
gonometria segíthet.
12.15 *
A LOGO (teknőc) grafika a legtöbb PC-nél már csak úgy helyet-
tesíthető, ha a szögfüggvények kissé bonyolultabb összefüggé-
seit alkalmazzuk. Ilymódon viszont igen látványos alakzatokat
kaphatunk.
12.16
Először vegyük észre az alábbi ábrákban a színezés szabály-
szerűségeit, majd reprodukáljuk azokat:
12.17
Próbáljunk véletlenszerűen színezni az előzőkhöz hasonló áb-
rákat! Itt figyelni kell, hogy a tartomány külsejét satírozni
hosszadalmas, és nem is látványos!
12.18
Az igazi teljesítmény, ha 'véletlenszerűen színezünk szabá-
lyosan'! Például egy rácsban minden N-edik mezőt, ahol N vé-
letlenszám; vagy véletlen színeket választunk; egy pont körül
véletlen sugár mentén színezünk stb.
12.19
Írjunk programot, melynek segítségével könnyen tudunk egysze-
rű rajzokat készíteni! Rajzoljon pontonként a gép: a kurzor-
mozgató billentyűk hatására négy irányban hagyjunk nyomot a
képernyőn!
12.20
Írjuk meg az előző programot úgy, hogy a gép nyolc irányban
tudjon rajzolni!
12.21 *
Írjuk át az előző programot úgy, hogy egy billentyű segítsé-
gével eldönthető legyen, rajzoljon vagy töröljön a gép!
12.22 *
Írjuk át az előző programot úgy, hogy egy-egy billentyű se-
gítségével rajzolható legyen szakasz, kör, téglalap!
12.23 *
Írjunk programot, amely megrajzolja egy egyszerű dal kottáját
violinkulcsban!
12.24 *
Írjunk programot, melynek segítségével a képernyő egy kis te-
rülete a számítógéppel megjegyeztethető, és adott (más) hely-
re kirajzolható!
12.25
Az előző fejezetben már sikerült alakzatokat vízszintesen és
függőlegesen eltolni a képernyőn. Próbáljunk egyszerűbb for-
mákat (pont, kör, szakasz stb.) tetszőleges irányba eltolni!
12.26
Próbáljunk bonyolultabb alakzatokat (sokszög, ív, ellipszis
stb) tetszőlegesen eltolni! Hogyan lehet jellemezni azokat a
síkidomokat, amelyeket könnyebb, illetve, amelyeket nehezebb
eltolni?
12.27
Mozgassunk végig egy kört egy másik alakzat kerülete mentén:
a középpont haladjon végig a kerületen!
12.28
Érdekes lehet, ha egyenes szakaszokat ritkuló vagy sűrűsödő
módon sokszor (egyre jobban) eltolunk.
12.29
Még izgalmasabb az előző feladat, ha több (nem feltétlenül
merőleges) irányban toljuk el a szakaszokat: a besűrűsödések
sokkal több változatosságot kínálnak.
12.30
Bizonyos alakzatokat (kör, ellipszis, szabályos sokszögek
stb.) nagyon könnyű nagyítani. Írjunk ilyen programokat!
12.31
Próbáljunk tetszőleges síkidomot nagyítani egy tetszőleges
pontból!
12.32
Az előző feladathoz készítsünk védelmet a képernyőn kívülre
írás ellen: előre állapítsuk meg, mi a maximális mértékű na-
gyítás!
12.33
A képernyő baloldalán lévő tetszőleges alakzatot tükrözzük át
a másik felére!
12.34
A képernyő valamelyik negyedében lévő idomot tükrözzük a töb-
bi három negyedbe is!
12.35 *
Ha a vízszintes és függőleges tengelyek két felezőjét is te-
kintetbe vesszük, minden idomnak hét további megfelelőjét
tudjuk előállítani. Írjunk ilyen programot!
12.36 *
Az eddigiek alapján már egy egész látványos kaleidoszkópot
tudunk készíteni: véletlenszerűen generált alakzatokat tükrö-
zéssel 2-4-8-szorozva érdekesen fog alakulni a képernyő. Az
igazi teljesítmény a véletlen idomok ügyes megválasztása, il-
letve a transzformáció gyors végrehajtása. Okvetlenül négy-
zetalakú (vagy 'körszerű') 'képernyőben' gondolkodjunk!
12.37 *
Tükrözzünk egy alakzatot tetszőleges irányú egyenesre!
12.38 *
Meghúzva a téglalap alakú képernyő két átlóját, minden pontot
ötszörözni(!) tudunk az átlókon való négyszeri tükrözéssel
(minkét átlóra kétszer-kétszer, de fordított sorrendben).
Mennyire lesz ez kaleidoszkópszerű (azaz szimmetrikusan sza-
bályos)? Minden képpont rajta lesz-e a képernyőn?
12.39
Az előző feladaton okulva csak egy kisebb (belső) téglalap
pontjait tükrözgessük, így minden képpont a képernyőre kerül!
Keressünk 'üres' foltokat, és gondolkodjunk el, mi lehet ezek
létezésének az oka?
12.40 *
Próbáljunk elforgatni egy szabályos síkidomot (kör, szabályos
sokszög, ellipszis) a középpontja körül!
12.41 *
Forgassunk el egy tetszőleges alakzatot egy belső pontja kö-
rül! Milyen alakzatokat, hogyan érdemes forgatni?
12.42 *
Ha külső pontja körül forgatunk el egy idomot, akkor sokkal
jobban kell vigyázni, nehogy lelógjon az ábra a képernyőről!
Tetszőleges pont és tetszőleges alakzat esetén próbáljuk elő-
re megállapítani, kifér-e vagy sem!
12.43
Próbáljuk meg szabályos sokszögekkel beborítani a képernyőt!
A sokszögek hézagmentesen illeszkedjenek, és ne is fedjék át
egymást, az ilyen lefedést szokták parkettázásnak is nevezni.
Hány oldalú sokszögekkel oldható ez meg? Írjunk programot,
amely ilyen szabályos sokszögekkel parkettáz!
12.44
Téglalap jellegű sokszögekkel a következőképpen parkettázha-
tunk. Képzeletben beborítjuk a képernyőt egy N*M-es hálóval.
A háló négy sarkának bármelyikéből kiindulva N*M darab L ala-
kot (esetleg elforgatva) fedezhetünk fel. Ha mindegyik L ala-
kot megfelelő töröttvonallal helyettesítjük, amely átmegy az
L végpontjain és töréspontján, akkor egy elég egzotikus alak-
zattal sikerül parkettáznunk. Vigyázzunk, hogy a helyettesítő
törött vonal ne nagyon messe önmagát!
12.45
Homorú-domború parketták váltogatják egymást, ha a fenti
négyzetrács minden második helyén a mező teljes kerületét
(zárt) töröttvonallal helyettesítjük. Itt még inkább kell vi-
gyázni, hogy csak egyszer 'záruljon be' a vonal.
12.46 *
Rengeteget javít a látványon, ha a parkettákban különböző
szimmetriák érvényesülnek. Igyekezzünk az oldalakat (törött-
vonalakat) tükrözéssel, forgatással egymásból létrehozni!
12.47
Már az interferencia jelenségekből ad ízelítőt, ha az előző
három feladat bármelyikében eltologatjuk a rácsot. Miután
egyszer helyettesítettük a szakaszokat töröttvonallal, ismé-
teljük meg ezt még néhányszor, egyre jobban eltolva a rácsot.
3-4 eltolás után rá se lehet ismerni az eredeti parkettákra!
Persze nem mindegy, mennyivel toljuk el!
12.48 *
Jóval nehezebb, ha nem téglalapok, hanem paralelogrammák al-
kotta rács segítségével parkettázunk.
12.49 **
Megpróbálkozhatunk olyan rácsból kiindulni, amit (szabályos)
háromszögek vagy hatszögek alkotnak. Itt nemcsak számolgatni
kell egy keveset, hanem még nagyobb szerepet kap a kísérle-
tezés: hogyan néz ki jól az ábra.
12.50 **
Bármelyik parkettázás továbbfejleszthető, ha a rács egymás
melletti soraiban (oszlopaiban) egyetlen dolgot megváltozta-
tunk - véletlenszerűen. Tehát például az első oszlop mezői
egyeznek, a második oszlopban is csupa egyforma parketta van,
de mindegyik egyetlen szakaszban (pontban) különbözik az el-
sőtől. A harmadik ismét egy jellemzőben tér el a másodiktól
de már két különbség adódik az elsővel szemben stb. Érdekes
átalakulás jöhet létre az első és utolsó oszlop között.
12.51 **
Több változás fér el, ha valamelyik sarokból indulunk, és az
átló mentén haladunk. Eleinte egyszerűsítjük a parkettát (el-
hagyunk pontokat, vonalakat), később hozzáveszünk (persze nem
akárhogyan!). Némi szerencsével M.C. Escher 'Metamorfózisok'
című sorozatára emlékeztető dolgok alakulhatnak ki.
12.52
A képernyő egyik belső pontját kössük össze a kerület minden
második (vagy akár minden 3.-10.) pontjával, szépen sorban
körbe! A szakaszok töréspontjai érdekes rajzolatokat adnak -
tipikus interferencia-jelenség.
12.53 *
Valamivel jobb hatást érhetünk el, ha egy pont körül 1 (2-6)
fokkal többször elforgatunk egy szakaszt.
12.54 *
Tegyünk egy kis téglalapot a bal felső sarokba! gy toljuk
végig a képernyő tetején, hogy közben forgassuk is egy irány-
ba 10-50 fokkal! Utána az alatta lévő sorban egy már kicsit
elforgatott téglalapot forgassunk (és toljunk) tovább, és így
tovább! A legalsó sorban lesznek végül a legjobban elforga-
tott idomok. Ha szerencsésen (ügyesen) választottuk meg a
forgatások és eltolások mértékét, érdekes (szinte térbeli)
ábrákat kaphatunk.
12.55 *
Forgassunk el egy síkidomot kétszeresen, sokszor egymás után!
Egyrészt a középpontja, másrészt egy külső pont körül forgas-
sunk, de más-más szöggel! Próbáljuk keskeny alakzatokkal, il-
letve például négyzettel! Változtassuk a kétféle elfordulás
szögeinek arányát!
12.56 *
Tovább fokozható az előző program hatása, ha mozog az a pont,
ami körül forgatunk. Izgalmas játék a kialakult képernyő
alapján kitalálni, milyen pályát is járt be a forgatás cent-
ruma.
12.57 *
Rajzoljunk egy töröttvonalat a képernyő közepére, amely nem
metszi önmagát! Forgassuk körbe valamelyik végpontja körül!
12.58 *
Legyen egy töröttvonal a képernyő egyik oldalán. 8-20 lépés-
ben közelítsük a töröttvonal minden pontját a képernyő függő-
leges szimmetriatengelyéhez! Érdekes, kehelyszerű alakzatok
jelenhetnek meg.
12.59 *
Az előző feladatban a közelítést kétféleképpen csinálhatjuk:
Mindig osztjuk a távolságot egy egynél nagyobb számmal, vagy
mindig csökkentjük egy alkalmas számmal. Melyik megoldás az
élethűbb, és miért?
12.60
Körgyűrűket rajzoltathatunk úgy is, hogy egy N*N-es pontrács
minden (x,y) pontját egyenként megvizsgáljuk, vajon páros-e
az INT((s*x/N)^2+(s*y/N)^2) érték? Ha igen, akkor kigyújtjuk
a pontot, ellenkező esetben nem. Az s változtatásával hogyan
módosul az ábra?
12.61 *
Az előző feladatban C1 és C2 konstansokat hozzáadva s*x/N.
illetve s*y/N kifejezésekhez egy eltolás jellegű transzformá-
ciót hajtunk végre. Keressünk további összefüggéseket N, s és
C1 illetve C2 között!
12.62 *
Az előző feladatokban a négyzetösszeget a párosságán kívül
vizsgálhatjuk aszerint is, hogy mondjuk osztható-e hárommal
(vagy néggyel, öttel stb.), és eszerint rajzolunk pontokat
vagy sem. Ilyenkor az előző ábráknak érdekes 'ritkítása' adó-
dik.
12.63 *
Sokkal látványosabb, ha például az öttel való oszthatóságnál
öt esetet különböztetünk meg: az öt lehetséges maradék sze-
rint választunk színeket a pontok számára. Valószínűleg sok-
kal több szabályosságot fogunk felfedezni!
12.64 *
Ha az előzőkben az x és y koordinátákra vonatkozó más függvé-
nyek értékei alapján döntünk, még sokkal meghökkentőbb for-
mák adódhatnak.
12.65
Ábrázoljuk az [5;10] intervallumon az
x->x/5+1
függvény grafikonját oly módon, hogy az értelmezési tartomány
pontjain (a képernyő felbontása által megengedett lépésköz-
zel) végighaladva minden ponthoz számítsuk ki a függvényérté-
ket, majd a ábrázoljuk az ennek megfelelő pontot! Használjunk
a képernyő vízszintes és függőleges felosztásánál azonos mér-
tékegységeket, az origót helyezzük a képernyő bal alsó sarká-
ba!
12.66
Ábrázoljuk a [2;3] intervallumon az
x->5*x-5
függvény grafikonját oly módon, hogy az értelmezési tartomány
pontjain (a képernyő felbontása által megengedett lépésköz-
zel) végighaladva minden ponthoz számítsuk ki a függvényérté-
ket, majd ábrázoljuk az ennek megfelelő pontot! Használjunk a
képernyő vízszintes és függőleges felosztásánál azonos mér-
tékegységeket, az origót helyezzük a képernyő bal alsó sarká-
ba!
12.67
Az előző feladatokban szereplő két függvény egymás inverze,
grafikonjaik (a matematikából ismert összefüggés alapján) a
koordinátarendszer y=x egyenletű egyenesére vonatkozóan szim-
metrikusan helyezkednek el. Ezzel ellentétben a képernyőn az
első esetben egy ('folytonos') szakasz, míg a második esetben
egy (egymástól 'izolált' pontokból álló) pontsor adódik. Ad-
junk magyarázatot erre! Vizsgáljuk meg, hogy milyen módosí-
tással kapunk a második esetben is szakaszt a képernyőn!
12.68
Ábrázoljuk a [2;5] intervallumon az
x->5*x+1
függvény grafikonját! Használjunk olyan egységeket a koordi-
nátatengelyeken, amelyekkel a képernyőt vízszintes és függő-
leges irányban egyaránt kihasználjuk (azaz: igazítsuk a gra-
fikont mindkét irányban a képernyő méretéhez, akár annak árán
is, hogy a két tengelyen különböző egységeket kell alkalmaz-
nunk)!
12.69
Ábrázoljuk a [-2;5] intervallumon az
x->2*x+1
függvény grafikonját! Rajzoljuk meg a koordinátatengelyeket
is, és jelöljük rajtuk az egységeket!
12.70
Az f függvény grafikonját az értelmezési tartomány egy [a;b]
intervallumán szeretnénk ábrázolni, ezért a képernyőpontok
vízszintes koordinátáit meg kell feleltetnünk az [a;b] inter-
vallum pontjainak. Milyen összefüggést kell használnunk eh-
hez, ha azt akarjuk, hogy az intervallum (vízszintesen) pon-
tosan lefedje a képernyőt? Készítsünk olyan programot, amely
az intervallum kezdő- és végpontjának értékétől függően vég-
rehajtja ezt a megfeleltetést!
12.71
Tekintsük az előző feladatban szereplő függvény [a;b] inter-
vallumban felvett értékeit! Azt szeretnénk, ha a grafikon
függőleges irányban is alkalmazkodna a képernyő méretéhez
(azaz: rá is férne, s azt teljes magasságában kihasználná),
ezért a függvény [a;b]-n felvett értékeit és a képernyőpontok
függőleges koordinátáit is meg kell feleltetnünk egymásnak.
Milyen összefüggést kell használnunk ehhez? Készítsünk prog-
ramot, amely egy adott függvény esetén az intervallum kezdő-
és végpontjának értékétől függően végrehajtja ezt a megfelel-
tetést!
12.72
Az előző feladatokban alkalmazott módszerrel a grafikon mind-
két irányban pontosan lefedi a képernyőt. Ez általában azt
eredményezi, hogy az ábra torz lesz, mert a vízszintes és a
függőleges tengelyen más-más egységek szerint mérünk. Bizo-
nyos esetekben szükség van arra, hogy egy függvény grafikon-
ját olyan koordinátarendszerben ábrázoljuk, amelynek mindkét
tengelyén ugyanazt a léptéket használjuk (ennek nyilvánvalóan
csak akkor van értelme, ha az ábrázolt intervallum és az ott
felvett függvényértékeket magába foglaló legszűkebb interval-
lum azonos nagyságrendű). Ilyenkor ahhoz, hogy a grafikon
kérdéses része a képre férjen, arányosan változtatnunk kell
az egyik tengelyen a léptéket, amíg mindkettő rá nem fér a
képre. Készítsünk programot, amely egy adott függvény esetén
az intervallum kezdő- és végpontjának értékétől függően vég-
rehajtja ezt a megfeleltetést!
12.73
Az előző feladatokban készített programot egészítsük ki egy
olyan - az adott f hozzárendelést megvalósító - szubrutinnal,
amely a vízszintes képernyőtengely pontjainak megfelelő
[a;b]-beli pontokra kiszámítja a függvény értékeit, s a kép-
ernyőn kigyújtja az ezt ábrázoló képpontot!
12.74 **
Az előző feladatban készített program segítségével a függvény
grafikonjának a képernyőre eső részletét látjuk. Fejlesszük
tovább programunkat úgy, hogy a kurzormozgató gombok segít-
ségével ezt az 'ablakot' (mind a négy irányban) mozgatni tud-
juk a függvény grafikonján!
12.75 *
Fejlesszük tovább programunkat úgy, hogy a koordinátatenge-
lyeket - amennyiben az ábrázolt tartományba esnek - is raj-
zolja ki a gép! Mivel ezek adott esetben zavaróan is hathat-
nak, tegyük lehetővé, hogy egy gombnyomásra ki-be kapcsolgat-
hassuk őket!
12.76 *
Programunk az x->f(x) függvény grafikonjának a képernyőre eső
részét ábrázolja. Adott egy (nullától különböző) c állandó.
Módosítsuk a függvényértékeket kiszámító szubrutint úgy, hogy
az x->f(x+c) függvény grafikonját kapjuk! Hogyan valósítható
meg ezek után egyszerűen az x->f(x-c) eset?
12.77 *
Programunk az x->f(x) függvény grafikonjának a képernyőre eső
részét ábrázolja. Adott egy (nullától különböző) c állandó.
Módosítsuk a függvényértékeket kiszámító szubrutint úgy, hogy
az x->f(x)+c függvény grafikonját kapjuk! Hogyan valósítható
meg ezek után egyszerűen az x->f(x)-c eset?
12.78 *
Programunk az x->f(x) függvény grafikonjának a képernyőre eső
részét ábrázolja. Módosítsuk a függvényértékeket kiszámító
szubrutint úgy, hogy az x->f(-x) függvény grafikonját kapjuk!
12.79 *
Programunk az x->f(x) függvény grafikonjának a képernyőre eső
részét ábrázolja. Módosítsuk a függvényértékeket kiszámító
szubrutint úgy, hogy az x->-f(x) függvény grafikonját kapjuk!
12.80 *
Programunk az x->f(x) függvény grafikonjának a képernyőre eső
részét ábrázolja. Adott egy (0-tól és 1-től különböző) c ál-
landó. Módosítsuk a függvényértékeket kiszámító szubrutint
úgy, hogy az x->f(c*x) függvény grafikonját kapjuk! Hogyan
valósítható meg ezek után egyszerűen az x->f(x/c) eset?
12.81 *
Programunk az x->f(x) függvény grafikonjának a képernyőre eső
részét ábrázolja. Adott egy (0-tól és 1-től különböző) c ál-
landó. Módosítsuk a függvényértékeket kiszámító szubrutint
úgy, hogy az x->c*f(x) függvény grafikonját kapjuk! Hogyan
valósítható meg ezek után egyszerűen az x->f(x)/c eset?
12.82 *
Programunk egyik szubrutinja az x->f(x), egy másik szubrutin-
ja pedig az x->g(x) függvény grafikonjának a képernyőre eső
részét ábrázolja. Készítsünk olyan harmadik szubrutint,
amelynek segítségével ábrázolható az x->f(x)+g(x) függvény
grafikonja! Módosítsuk úgy, hogy az x->f(x)-g(x) esetre is
alkalmazható legyen!
12.83 *
Programunk egyik szubrutinja az x->f(x), egy másik szubrutin-
ja pedig az x->g(x) függvény grafikonjának a képernyőre eső
részét ábrázolja. Készítsünk olyan harmadik szubrutint,
amelynek segítségével ábrázolható az x->f(x)*g(x) függvény
grafikonja! Módosítsuk úgy, hogy az x->f(x)/g(x) esetre is
alkalmazható legyen! Mire kell ez utóbbi esetben ügyelnünk?
12.84 **
Programunk egyik szubrutinja az x->f(x), egy másik szubrutin-
ja pedig az x->g(x) függvény grafikonjának a képernyőre eső
részét ábrázolja. Készítsünk olyan harmadik szubrutint,
amelynek segítségével ábrázolható az x->f(g(x)) összetett
függvény grafikonja! Ügyeljünk az összetett függvény létezé-
sének feltételére!
12.85 **
Nevezzünk 'jó'-nak minden olyan függvényt, amely a gépünk ál-
tal ismert függvényekből és konstansokból az összeadás, a ki-
vonás, a szorzás, az osztás és az összetett függvény képzése
segítségével előállítható, és az őt definiáló képlet y=f(x)
alakban, szöveges változó formájában, INPUT utasítással bevi-
hető a gépbe! Készítsünk olyan programot, amely bekéri a kép-
letet, az 'ablakot' meghatározó [a;b], illetve [c;d] inter-
vallumokat (ez utóbbi hiányában maga számítja ki a képen füg-
gőlegesen ábrázolandó tartomány határait), majd elvégzi a
grafikon képre rajzolását! Tegyük lehetővé - amennyiben a
látható tartományba esnek - a koordinátatengelyek ábrázolá-
sát, az egyes tengelyeken az egységek feltüntetését, tetszés
szerinti feliratok elhelyezését (s természetesen mindezek ki-
be kapcsolgatását)!
12.86 **
Az előző feladatban készített program csak grafikonpontokat
szolgáltat, noha a grafikon általában folytonos vonal(ak)ból
áll. Módosítsuk a programot úgy, hogy - választásunk szerint
- az eredeti módon, pontokból felépített grafikont vagy a
'szomszédos' pontok által meghatározott töröttvonalat jelezze
ki!
12.87
Egy függvényt úgy is ábrázolhatunk, hogy a grafikonpontokat
összekötjük a vízszintes tengellyel, más szóval bevonalkázzuk
a 'görbe alatti' (negatív értékek esetén természetesen a
'görbe feletti') területet. Készítsünk olyan programot, amely
ilyen grafikonokat (is) tud rajzolni!
12.88 **
Az ábrázolt függvény grafikonját kifejezőbbé, plasztikusabbá
tehetjük azáltal, ha a grafikon pontjaiból kiindulva egy-egy
(rövidke) függőleges szakaszt húzunk, amelynek nagysága a
függvénygörbe ottani meredekségével arányos (ha a meredekség
pozitív, akkor lefelé, ha pedig negatív, akkor felfelé húzzuk
a szakaszt). Készítsünk olyan programot, amely ilyen grafiko-
nokat (is) tud rajzolni!
12.89 *
Egy egyismeretlenes egyenlet (vagy egyenlőtlenség) lényegileg
nem más, mint két egyváltozós függvény a megfelelő relációs
jellel (jelekkel) összekapcsolva. Ha ezeket a függvényeket
ugyanabban a koordinátarendszerben ábrázoljuk, a grafikonok-
ról leolvasható, hogy hol teljesül(nek) a kérdéses relá-
ció(k). Készítsünk olyan programot, amely alkalmas egyenle-
tek, egyenlőtlenségek grafikus megoldására!
12.90
Ábrázoljuk az
x(t) =r*sin(t) ,
y(t) =r*cos(t)
paraméteres alakban adott kört a 02 then n=n-1 : return
190 getkey a$ : graphic 0
Ez a példa is mutatja, hogy BASIC-ben is lehet rekurzív szer-
kezetet programozni. Hasonlítsuk össze a két program haté-
konyságát és határozzuk meg a rekurzió lehetséges mélységét!
12.101 *
Alakítsuk át az alábbi (C+4-re készült) programrészletet úgy,
hogy ugyanazt az ábrát rekurzív módon rajzolja meg:
100 graphic 1,1
110 sz=90 : l=1 : rem kezdeti szög és hossz
120 do while sz<=270
130 draw,160,100tol;sz
140 draw,160,100tol;sz+180
150 sz=sz+6 : l=l+5
160 loop
170 getkey a$ : graphic 0
12.102 *
Készítsünk N-edrendű 'egyenes' bináris fát rajzoló programot!
A fa 'törzse' (1. ága) egy függőleges szakasz, továbbá minden
(nem csúcsban végződő) ága a gyökértől távolabbi végén két,
az eredeti ág irányával jobbra és balra egyaránt 45-45 fokos
szöget bezáró, fele olyan hosszú szakaszban folytatódik (az
elsőrendű tehát egy Y-hoz hasonló alakzat lesz, a másodrendű
egy olyan Y-hoz hasonló, amelynek mindkét szárát egy-egy
újabb Y alkotja, ... A hatodrendű pl. így néz ki:
12.103 *
Készítsünk N-edrendű 'egyenes', szintenként K ágú fát rajzoló
programot! Az ilyen fa 'törzse' (1. ága) egy függőleges sza-
kasz, továbbá minden (nem csúcsban végződő) ága a gyökértől
távolabbi végén K, az eredeti ág egyenesére szimmetrikusan
elhelyezkedő, egymással 180/(n+2) fokos szöget bezáró, fele
olyan hosszú szakaszban folytatódik.
12.104 *
Készítsünk N-edrendű 'szélfútta' bináris fát rajzoló progra-
mot! Az ilyen fa ugyanúgy építendő fel, mint az 'egyenes',
csak az új ágak az eredeti iránnyal balra és jobbra nem azo-
nos mértékben hajlanak el, hanem pl. balra 50, jobbra pedig
30 fokos szöggel.
12.105 **
Készítsünk N-edrendű 'szélfútta', szintenként K ágú fát raj-
zoló programot! Az ilyen fa ugyanúgy építendő fel, mint az
'egyenes', csak az új ágak egymással nem ugyanazt a szöget
zárják be, hanem valamilyen monoton (pl. balról jobbra növek-
vő), a fa egészére jellemző rend szerint változnak.
12.106 *
Egy, a csúcsán álló négyzet oldalai és átlói által meghatá-
rozott derékszögű háromszögekbe az átlókkal párhuzamos olda-
lú, maximális területű négyzeteket írunk, az így keletkező
újabb derékszögű háromszögekbe ugyanígy s így tovább. Az áb-
rán a rekurzív ábrasorozat 4. szintjét látjuk. Készítsünk
programot, amely a képernyőre rajzolja az N. rekurzív szint
ábráját!
12.107 *
Húzzuk meg egy 'talpán álló' szabályos háromszög középvonala-
it, az így keletkező kis háromszögek közül minden 'talpán ál-
lónak' ugyancsak húzzuk meg a középvonalait s így tovább! Ké-
szítsünk programot, amely a képernyőre rajzolja az N. rekur-
zív szint ábráját!
12.108 *
Egy rekurzív ábrasorozat első öt ábráját alább láthatjuk. Ké-
szítsünk programot, amely a képernyőre rajzolja az N. rekur-
zív szint ábráját!
12.109
Határozzuk meg egy L hosszúságú szakasz, egy L oldalú
négyzet, illetve egy L oldalhosszú szabályos háromszög
dimenzióját az alfejezet elején szereplő definíció alapján!
12.110 *
Hagyjuk el egy egységnyi hosszúságú szakaszból a középső har-
madát; ugyancsak hagyjuk el az így megmaradt szakaszok közép-
ső harmadát s így tovább! Készítsünk programot, amely a kép-
ernyőre rajzolja az N. rekurzív szint ábráját! Mennyi a re-
kurzió határgörbéjének, az ún. Cantor-halmaznak a dimenziója?
12.111 *
Az alábbi ábrák egy rekurzív sorozat első öt elemét mutatják
(minden szakasz középső harmadát a rá mint alapra emelt sza-
bályos háromszög másik két oldalával váltjuk ki). Készítsünk
programot, amely megrajzolja a képernyőre az N. rekurzív
szint ábráját! Mennyi a rekurzió határgörbéjének, az ún.
Koch-görbének a dimenziója?
12.112 *
Az alábbi ábrák egy rekurzív sorozat első négy elemét mutat-
ják (minden szakasz középső harmadát a rá mint alapra emelt
négyzet másik három oldalával helyettesítjük). Készítsünk
programot, amely megrajzolja a képernyőre az N. rekurzív
szint ábráját! Mennyi a rekurzió határgörbéjének a dimenzió-
ja?
12.113 *
Az alábbi ábrák egy rekurzív sorozat első négy elemét mutat-
ják (minden szakaszt az első szint ábrájával helyettesítünk,
felváltva ki-, illetve befelé fordítva; a szakaszok egyenlő-
ek, a szögek 120 fokosak). Készítsünk programot, amely meg-
rajzolja a képernyőre az N. rekurzív szint ábráját! Mennyi a
határgörbe dimenziója?
12.114 *
A Sierpinski-görbét definiáló rekurzív ábrasorozat első négy
ábráját alább láthatjuk (a rekurzió a rajzokról egyszerűen
leolvasható). Készítsünk programot, amely megrajzolja a kép-
ernyőre az N. rekurzív szint ábráját!
12.115 *
Az ún. Sierpinski-csipke (Cantor-terítő) a Cantor-halmaz sík-
beli megfelelője, ahhoz hasonlóan származtatható: egy egy-
ségnégyzetből elhagyjuk annak középső harmadát, az így ma-
radt 8 kis négyzet mindegyikének a középső harmadát, .... A
definiáló rekurzív ábrasorozat első öt ábráját alább láthat-
juk. Készítsünk programot, amely a képernyőre rajzolja az N.
rekurzív szint ábráját! Mennyi a Sierpinski-csipke dimenzió-
ja?
12.116 *
A Sierpinski-csipkéhez hasonló módon definiálhatunk egy má-
sik halmazt is: az egységnégyzet oldalainak harmadolásával
kialakuló sávok egyesítéseként egy 'keresztet' kapunk. Ennek
elhagyása után marad 4 kis négyzet, ezek mindegyikével ugyan-
így járunk el, ... A definiáló rekurzív ábrasorozat első négy
ábráját alább láthatjuk. Készítsünk programot, amely a képer-
nyőre rajzolja az N. rekurzív szint ábráját! Mennyi a rekur-
zív sorozat határértékeként kapott halmaz dimenziója?
12.117 **
Készítsünk olyan programot, amely egy ún. véletlen fraktált
definiáló ábrasorozat N. szintjéhez tartozó ábrát rajzolja a
képernyőre! A Sierpinski-csipkéhez hasonlóan itt is egy egy-
ségnégyzetből indulunk ki, de az ebben lévő 9 kis négyzet kö-
zül nem (feltétlenül) a középsőt, hanem egy véletlenszerűen
kiválasztottat hagyunk el, s ugyanígy járunk el a többi szint
esetében is. Mit tudunk mondani egy ilyen véletlen fraktál
dimenziójáról?
12.118 **
Adott két valós szám, x és y. Tekintsük a következő rekurzív
sorozatokat:
a(0) := x
b(0) := y
a(n+1) := a(n)*a(n)-b(n)*b(n)+x
b(n+1) := 2*a(n)*b(n)+y (ha n>=0) !
Ha a sík P(x;y) pontjából kiindulva minden iterációs lépés
során teljesül az
a(n)*a(n) + b(n)*b(n) < 4
feltétel, akkor azt mondjuk, hogy a P pont Mandelbrot-tulaj-
donságú, s a sík ilyen pontjai alkotják a Mandelbrot-halmazt.
(Komplex számokkal megfogalmazva: adott a c:=x+yi komplex
szám; ha a
z(0) := c
z(n+1) := z(n)*z(n) + c (ha n>=0)
komplex számsorozatra abs(z(n)) < 2, akkor c Mandelbrot-tu-
lajdonságú.) Készítsünk programot a Mandelbrot-halmaz egy-egy
részletének kirajzolására!
12.119
Írjunk programot, amely ábrázolja a 3 térbeli koordináta-ten-
gelyt, és adott intervallumban beolvasott P(x,y,z) pontokat!
Az x tengely zárjon be a vízszintessel 30, az y tengely 45
fokot, a z tengely legyen függőleges!
12.120
Írjuk meg az előző programot úgy, hogy az x,y tengely elhe-
lyezkedése bemenő paraméter legyen!
12.121 *
Írjunk programot, amely az előző feladatban megadott koordi-
náta-rendszerben adott élhosszúságú kockát vagy téglatestet
ábrázol! (Csak a látható éleket ábrázoljuk!)
12.122 *
Írjuk meg az előző programot úgy, hogy a láthatatlan éleket
is ábrázolja szaggatott vonallal!
12.123 *
Írjuk meg az előző programot úgy, hogy a látható lapokat a
program különböző színüekre színezze!
12.124 *
Írjunk programot, amely a monitor képernyőjének koordináta-
rendszerében tetszőleges háromdimenziós koordináta-rendszert
ábrázol úgy, hogy bemenő paraméternek az origót, valamint a
három tengely egy-egy pontját adjuk meg!
12.125 *
Módosítsuk az előző programot úgy, hogy a térbeli koordináta-
rendszerben a program adott intervallumba eső pontot is tud-
jon ábrázolni!
12.126 *
Írjunk programot, amely a fejezet első feladatában megadott
koordináta-rendszerben ábrázol
1. adott háromszög alapú hasábot,
2. adott négyszög alapú hasábot,
3. adott háromszög alapú gúlát,
4. adott négyszög alapú gúlát!
12.127 *
Módosítsuk az előző programot úgy, hogy a látható lapokat kü-
lönböző színűekre színezzük!
12.128 **
Ábrázoljunk egy adott kockát perspektívikusan! A horizont le-
gyen a képernyő
1. felső széle,
2. alsó széle!
12.129 *
Ábrázoljunk a képernyőn gömböt!
12.130 **
Oldjuk meg az előző feladatot úgy, hogy a gömb nem-látható
felén ne rajzoljunk hosszúsági és szélességi köröket!
12.131 *
Készítsünk nk programot, amely térbeli koordináta-rendszerben
ábrázol adott sugarú és magasságú
1. hengert,
2. kúpot!
12.132 *
Ábrázoljunk térbeli koordináta-rendszerben forgási hiperbolo-
idot!
12.133 *
Rajzoljunk a képernyő síkjába adott négyzetet, majd
1. függőleges,
2. vízszintes
tengely körül forgassuk el és 10 fokonként perspektívikusan
ábrázoljuk az elforgatott négyzetet!
12.134 *
Írjunk programot, amely a képernyő síkjába rajzol adott suga-
rú kört, majd
1. függőleges,
2. vízszintes
tengely körül elforgatja, és 10 fokonként perspektivikusan
ábrázolja az elforgatott kört!
12.135 *
Készítsünk programot, amely térbeli koordináta-renszerben áb-
rázolt kockát adott vektorral eltolva is ábrázol!
12.136 *
Módosítsuk az előző programot úgy, hogy az azonos síkban levő
lapokat azonos színnel színezze ki!
12.137 *
Tükrözzünk adott pontra középpontosan térbeli koordináta-
rendszerben ábrázolt kockát!
12.138 *
Írjuk meg az előző programot úgy, hogy az azonos síkban levő
lapokat a program azonos színnel színezze ki!
12.139 *
Tükrözzönk adott síkra térbeli koordináta-rendszerben ábrá-
zolt kockát!
12.140 *
Módosítsuk az előző programot úgy, hogy az azonos síkban levő
lapokat a program azonos színnel színezze ki!
12.141 *
Forgassuk el adott tengely körül térbeli koordináta-rendszer-
ben ábrázolt kockát!
12.142 *
Írjunk programot, amely térbeli koordináta-rendszerben ábrá-
zolt kockát adott pontra, adott mértékben kicsinyít, illetve
nagyít!
12.143 *
Alakítsuk át az előző programot úgy, hogy az azonos síkban
levő lapokat a program azonos színnel színezze ki!
12.144 **
Készítsünk programot a perspektivikus ábrázolás szemlélteté-
sére! Legyen a horizont a képernyő vízszintes felezőegyenese!
Osszuk a képernyőt
1. vízszintesen,
2. függőlegesen
3. vízszintesen és függőlegesen is
négy részre, és ábrázoljunk mindegyik mezőben egy-egy kockát!
12.145 **
Írjunk programot, amely kúpfelületet ábrázol! Rajzolja meg a
program a kúpnak a tengellyel adott alfa szöget bezáró sík-
metszeteit!
12.146 **
Írjunk programot, amely tetszőleges, látható csúcsaival meg-
adott poliédert ábrázol, majd azt
1. adott vektorral eltolja,
2. adott szöggel függőleges tengely körül elforgatja,
3. adott szöggel vízszintes tengely körül elforgatja,
4. adott mértékben kicsinyíti,
5. adott mértékben nagyítja!
12.147 **
Alakítsuk át az előző feladat megoldását úgy, hogy a program
a transzformált poliéder csúcspontjait tárolja, és így újabb
transzformációt végezhet vele!
12.148 **
Készítsünk programot térbeli függvények ábrázolására! Defini-
áljunk egy xy síkrészt (pl. -15-től +15 ig)! Számítsa ki a
program az így adott sík környezetébe eső függvényértékeket
úgy, hogy konstans x-ek mellett kiszámolja a f(c,y); konstans
y-ok mellett az f(x,c) értékeket, majd ábrázolja a görbehá-
lót!
12.149 *
Írjunk programot, amely egy térben ábrázolt kockának az
1. xy síkkal párhuzamos,
2. xz síkkal párhuzamos,
3. yz síkkal párhuzamos
síkmetszetét megrajzolja és beszínezi!
12.150 *
Rajzoljuk meg és színezzük be az xy síkon álló hengernek vagy
kúpnak az
1. xy síkkal párhuzamos,
2. xz síkkal párhuzamos,
3. yz síkkal párhuzamos
síkmetszetét!
12.151 *
Írjunk programot, amely térben ábrázolt kockának tetszőleges
csúcsából indulva adott kisebb kockát kivág, s a maradék tes-
tet látható éleivel ábrázolja!
12.152
Írjunk programot, amely a "c" billentyű benyomására megszó-
laltaja a c' hangot (egyvonalas c) egy másodpercig!
12.153
Írjunk programot, amely a "c" billentyű benyomására megszó-
laltaja a c' hangot addig, amíg a billentyűt nyomva tartjuk!
12.154
Írjunk programot, amely a megfelelő billentyűk lenyomásakor
megszólaltaja a c',d',e',f',g',a',h' hangok valamelyikét ad-
dig, amíg a billentyűt nyomva tartjuk!
12.155
Írjuk át az előző programot úgy, hogy két oktáv megszólalta-
tására legyen képes a c,d,e,f,g,a,h,C,D,E,F,G,A,H billentyűk
által!
12.156
Írjuk át az előző programot úgy, hogy három oktáv megszólal-
tatására legyen képes (kis oktáv, egyvonalas, kétvonalas ok-
táv)!
12.157
Írjunk programot az alábbi ritmusképletek bemutatására: éles,
nyújtott, szinkópa. A hangmagasságokat karaktersorozatként
olvassuk be (pl. szinkópa: cec)!
12.158 *
Írjunk programot, amely dallamok tárolását segíti! Két tömb-
ben tároljuk a hangmagasságokat és hanghosszúságokat. A tá-
rolt dallamot játssza le programunk a kívánt sebességgel!
12.159 *
Írjuk meg az előző feladat megoldását úgy, hogy előjegyzéses
hangokat is tudjon a gép megszólaltatni, és a hangterjedelem
legalább 3 oktáv legyen!
12.160 *
Írjunk programot, amely dallamok tárolását segíti! Két tömb-
ben tároljuk a hangmagasságokat és hanghosszúságokat. A tá-
rolt dallamot játssza le programunk kívánt hangon kezdve, a
kívánt hangnemben (transzponálás)!
12.161 *
Írjuk meg az előző feladat megoldását úgy, hogy a dallamot
nemcsak tetszőleges hangnembe transzponálja és eljátsza a
program, hanem a transzponált dallamot ki is írja!
12.162 *
Írjunk programot, amely a maximum 3 oktáv terjedelemben tá-
rolt dallamot a megadott dó-nak megfelelően szolmizációs han-
gokkal leírja!
12.163 *
Írjuk át az előző programot úgy, hogy a képernyőn mindig csak
egy szolmizációs hang jelenjen meg, a hanghosszúságnak megfe-
lelő időtartamig! Lehessen választani, hogy közben szóljon-e
a megfelelő hang!
12.164
Írjunk programot, amely a max. 3 oktáv terjedelemben tárolt
dallamot a menüből kiválasztott tempójelzésnek (pl. allegro)
megfelelő sebességgel játssza le!
12.165
Írjunk programot, amely hangközök bemutatására szolgál! A me-
nüből kiválasztott hangköz (pl. kis szekund) és a megadott
hang alapján megszólaltatja a megfelelő hangközt, valamint
kiírja az eredményt! (pl. c és kis szekund eredményeképp meg-
szólaltatja és kiírja: c - desz.)
12.166
Írjunk programot, amely hangközök felismerését gyakoroltatja!
A véletlenszerűen megszólaló hangközt a képernyőn megjelenő
hangközökből a megfelelő kiválasztásával kell felismerni.
12.167 *
Írjunk programot, amely hangközök felismerését gyakoroltatja!
A véletlenszerűen megjelenő kérdésre (pl. c' - felső kister-
ce:) kell a felhasználónak válaszolni.
12.168 *
Írjunk programot, amely hangok felismerését gyakoroltatja. A
véletlenszerűen megszólaló hangot (melynek neve is megjele-
nik, pl. G) követő hangot kell felismerni és válaszként meg-
adni.
12.169 *
Írjunk programot, amely a maximum 3 oktáv terjedelemben tá-
rolt dallamot
1. a kezdőhangra,
2. a záróhangra,
3. megadott tengelyhangra tükrözi.
12.170 *
Írjunk programot, amely a maximum 3 oktáv terjedelemben tá-
rolt dallamot rákfordítással megfordítja!
12.171 *
Írjunk programot, amely a maximum 3 oktáv terjedelemben tá-
rolt dallamot az előző két program felhasználásával tükrözi
és rákfordítja!
12.172 *
Írjunk programot, amely az előző három program valamelyikével
generált dallamot az eredetivel együtt két szólamban megszó-
laltatja!
12.173
Írjunk programot, amely maximum 3 oktáv terjedelemben tárolt
két szólamú dallamot megszólaltat!
12.174 *
Írjunk programot különbőző zörejek, zajok előállítására!
(Például: kopogás, lépések, autókürt, motorzaj, szél, madár-
csicsergés, köhögés stb.)
12.175
Írjunk programot, amely menüből kiválasztott két zajt, zörejt
egyszerre megszólaltat!
12.176 **
Írjunk programot, amely tetszőleges maximum 2 oktáv terjedel-
mű dallamnak megrajzolja a kottáját (ütemvonalak nélkül)!
12.177 **
Írjunk programot, amely tetszőleges maximum 2 oktáv terjedel-
mű 4 ütem hosszú dallamnak megrajzolja a kottáját (ütemvona-
lakkal, violinkulccsal, ütemjelzéssel, előjegyzéssel együtt)!
12.178 **
Írjunk programot, amely tetszőleges maximum 2 oktáv terjedel-
mű 4 ütem hosszú szolmizációs hangokkal megadott dallamnak
megrajzolja kottáját adott dó esetén!
12.179 **
Írjuk át az előző két programot úgy, hogy a dallamot le is
játssza a gép, és a kotta alatt nyíl mutassa, hogy hol tar-
tunk éppen!
12.180 **
Írjunk programot, amely tetszőleges maximum 2 oktáv terjedel-
mű, 4 ütem hosszú szolmizációs hangokkal megadott dallamot
megad abc-s hangokkal adott dó esetén!
12.181
Írjunk programot, amely modális hangsorok felismerését gyako-
roltatja! A memórában tárolt véletlenszerű sorrendben elját-
szott dallamról kell a felhasználónak felismerni, milyen
hangsorban íródott.
12.182 *
Írjunk programot, amely dallamot generál véletlenszerűen! Pa-
raméterek legyenek:
- hosszúság,
- hangterjedelem,
- a dallamban milyen ritmusértékek szerepelhetnek,
- a dallamban milyen szolmizációs hangok szerepelhetnek,
- a dó helye,
- befejező hang.
12.183 *
Írjuk meg az előző feladat megoldását úgy, hogy visszatérő
témát is tartalmazzon a generált dallam! Kérje a program a
felhasználótól a témát szolmizálva!
12.184 *
Írjunk programot, amely pentaton dallamot generál véletlen-
szerűen C - dóban. Paraméterek legyenek:
- hosszúság,
- hangterjedelem,
- a dallamban milyen ritmusértékek szerepelhetnek.
12.185 **
Írjunk programot egy beolvasott ritmussor ütembe rendezésé-
re!
12.186 **
Írjunk programot, amely a klaviatúrát a zongorabillentyűkhöz
hasonlóan használja, a billentyűzeten lejátszott dallamot
megszólaltatja!
12.187 **
Írjuk meg az előző feladat megoldását úgy, hogy a játszott
dallamot (ritmus nélkül) le is kottázza a gép a képernyőre!
12.188
Írjunk programot, amely egyszerű dallamokat tárol, majd ket-
tőt lejátszik és megkérdezi: egyforma - hasonló - vagy külön-
böző-e!
12.189
Írjunk programot, amely megadott hangközökhöz megkérdezi az
enharmónikus hangközt!
12.190
Írjunk programot, amely gyakoroltatja egy hangköz oktávhoz
történő kiegészítését!
12.191 **
Írjunk programot, amely beolvasott dallam esetén megadja a
dallam fogástáblázatát furulyán!