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!