Upload failed. Maybe wrong permissions?

User Tools

Site Tools



13. Grafikai lehetőségek

13-0.jpg
  

31:46
1985. április 10.
MTV 2. csatorna, 19:30

Bevezető

13-1.jpgKovács Győző
  0:24 Kedves nézőink, a számítógépes alkalmazások közül nekem azok tetszenek legjobban, amikor a programnak az eredménye rajz formájában jelenik meg. Egészen a legutóbbi időkig, talán a mikroszámítógépek elterjedéséig ezeket a rajzokat elsősorban a tervezésben, a gyártásban, tehát ilyen műszaki feladatok megoldásában használták. Manapság egyre több rajz jelenik meg például a kereskedelmi alkalmazásokban, mondjuk statisztikai adatoknak rajzban való megjelenítése elég gyakori, grafikonok, diagramok, kör- és oszlopdiagramok készülnek.
  

13-2.jpg13-3.jpg

  
13-4.jpg13-5.jpg

  
13-6.jpg13-7.jpg

  A BASIC nyelv, tudják, nem túlságosan egységes, mi is bemutattuk, hogy a BASIC nyelvnek nyelvjárásai vannak. Azt kell mondanom, hogy a grafikai alkalmazások még ennyire se egységesek, hiszen talán ez az a terület, ahol a gyártók legjobban kiélték magukat. Egy-egy elemi rajznak, egy-egy ábrának a megjelenítése mindegyik gyártónál más és más, nem is beszélve a színes rajzokról, hiszen egyik gép az négyféle színt, a másik gép tizenhatféle színt tud megjeleníteni. Erre fogunk ma néhány alkalmazást bemutatni.

Vonal és kör

13-8.jpgPinkert László Primo
  1:41 A továbbiakban egyszerű grafikai elemek rajzolására alkalmas programokat fogunk mutatni. A programok Primo számítógépre készültek, és a SET utasítást, vagyis a pontokat egyenként kigyújtó utasítást használják. Mindemellett akinek nem Primo, hanem másfajta számítógép áll rendelkezésére, annak is javaslom, hogy figyelje meg a következő programpéldákat, mert olyan programozási fogások lesznek benne, amelyek nem csak grafikai programokban használhatók.
  Vonalrajzolással már foglalkoztunk egy ízben – ott ugyan karakter nagyságú, karakter méretű pontokból rajzoltuk a vonalat –, de az biztos, hogy eddig csak a legegyszerűbb esetekkel foglalkoztunk, vízszintes, függőleges és olyan ferde vonallal, amelyet úgy rajzoltunk ki, hogy egy lépés jobbra, egy lépés föl, aztán megint egy lépés jobbra, és így tovább. (Bizonyára szerkesztési hiba, hogy Pinkert László itt ezeket mondja, hiszen a hatodik részben már ő maga rajzolt olyan ferde vonalat, amely nem karaktergrafikus és másképpen ferde. – L. A. D.) 13-9.jpgVagyis a következő esetekkel. Vízszintes vonal, függőleges és egyszerű ferde vonal. Ezeknek a programozása úgy történt, hogy ha úgy vesszük föl a koordináta-rendszerünket, hogy vízszintesen az x méri a koordinátákat, függőlegesen pedig y, akkor a vízszintes egyenesnél nem kellett mást csinálni, mint egy állandó y mellett változtatni az x koordinátát folyamatosan, például FOR ciklussal, a függőleges vonalnál az x volt állandó és az y-t változtattuk, a harmadik esetben, a ferde vonalnál pedig minden lépés után az x-et is és az y-t is eggyel-eggyel megnöveltük. Így gyújtottunk ki pontsorozatokat. Most nézzük meg, hogy mi van akkor, hogyha olyan programot szeretnénk írni, amely tetszőleges kezdőpontból tetszőleges meredekségű egyenest húz, mondjuk úgy szeretnénk megadni, hogy megadjuk a kezdőpont két koordinátáját és a végpont két koordinátáját. Vagyis a következőképpen szeretnénk a programot használni. A kezdőpontot megadjuk… mondjuk 20, 20… a végpontot, legyen 200 és 50… és a gép már rajzolja is az egyenest.
  13-10.jpg
  Ez a program, amit most elindítottam, egy olyan program, ami már nem egyszerű, már nem egy egyszerű FOR ciklusból áll, itt mindenféle geometriai ismereteket is fel kell használni. Nézzük meg ezt a programot.
  13-11.jpg
  A két INPUT utasítás szerepe nyilvánvaló. Ezek után az egyenes meredekségének a kiszámítása következik, majd egy ciklus növeli x koordinátát x1-től x2-ig, és minden x koordinátához kiszámítjuk a 640. sorban a hozzá tartozó y koordinátát. Ennél a sornál érdemes egy pillanatra megállni: láthatjuk, hogy itt egy egészrészfüggvényt is használtunk. Ennek az egészrésznek nyilvánvalóan az a célja, hogy x és y koordinátának csak egész számokat lehet megadni. Azonban mi nem azt szeretnénk, hogyha minden y-nak az egész részét adná meg ez a kifejezés, hanem hogyha kerekítene. A kerekítésnek az a lényege, hogy ha egy számnak a törtrésze 0,5-nél nagyobb, akkor ezt már a következő egész számra kerekítjük. Vagyis például 5,4-nek az egész része 5. Ugyanígy 5 az egész része 5,6-nek is. De ha 5,6-et kerekítjük, akkor már 6-ot kapunk. Ezt a hatást szerettük volna megvalósítani, és így írtuk meg a 640-es sort. A kerekítendő kifejezéshez, ami y1-gyel végződik, hozzáadtunk még 0,5-et, és ennek vettük az egész részét. A hatást megvizsgálhatjuk az előző példán. 5,6-hez hozzáadva 0,5-et 6,1-et kapunk. Ennek az egész része pedig 6, az az egész szám, amit a kerekítés során kapni szerettünk volna.
  Mindemellett a programnak sajnos vannak hibái. Az első mindjárt a 630-as, a ciklusutasítás sorában. Az, hogy az x itt x1-től x2-ig megy, de ez az utasítás csak akkor működik, hogyha x2 nagyobb, mint az x1. Vagyis az x csak nőni tud. Abban az esetben, hogyha csökkennie kéne, akkor ez az utasítás erre a célra nem használható, hiszen ki kellene egészíteni még egy olyan részlettel, hogy STEP –1, vagyis hogy –1-esével lépegessünk.
  A másik hibáját legegyszerűbb, hogyha egy példán mutatom be. Adjunk meg kezdőpontnak mondjuk 60 és 30-at, végpontnak pedig… 60, hát akkor mondjuk… 120 és 170-et.
  13-13.jpg
  Íme. A program azt csinálja, illetve úgy működik, ahogy megírtuk, de sajnos az eredmény nem kielégítő. Egy töröttvonal helyett, törött folytonos vonal helyett itt pontok sorozatát kaptuk, vagy ha úgy tetszik, szaggatott vonalat. A másik hibája ennek a programnak, mint említettem, hogy visszafelé nem tud az x számítani. Ennek a két hibának a kiküszöbölésével készült a következő, most már teljesnek és működőképesnek tekinthető programrészlet.
  

13-14.jpg13-15.jpg

  Az első két sornak a jelentése nyilvánvaló, ezt eddig is használtuk. Ezek után következik a 320-as sor, amelyben mindjárt az egyik speciális esetet megvizsgáltuk. Amennyiben a két pont olyan közel van egymáshoz, hogy a képernyőre csak egyetlenegy pontot kell kirajzolni, vagyis x1 egyenlő x2-vel és y1 is egyenlő y2-vel, akkor ezt az egyetlen pontot kirajzoljuk és a programnak vége van, a vége az 590-es sorban lesz.
  13-16.jpg
  Ismét egy vizsgálat következik, az egyik speciális esetet nézzük meg: ha x1 egyenlő x2-vel, vagyis függőleges egyenest rajzolunk, akkor itt L=0, amelynek a jelentését majd a későbbiekben látni fogjuk.
  13-17.jpg
  A másik speciális eset a vízszintes vonal, y1=y2, itt egy M=0 változót inicializálunk és a 400-as sorra ugrunk. Nézzük meg most ezt a 400-zal kezdődő programrészletet.
  13-18.jpg
  A 350-es sorban megtaláljuk a meredekség számítását. Ezek után hogyha a meredekség 1-nél nagyobb, akkor a 400-as sornál folytatjuk a programot, amennyiben a meredekség 1-nél kisebb, akkor pedig az 500-as sornál, úgy, hogy felveszünk egy L értéket, ami ennek a meredekségnek a reciproka. Ezek a számítások már elsősorban akkor követhetők, hogyha bizonyos geometriai ismeretekkel is rendelkezünk.
  13-19.jpg
  Mindamellett még valamit szeretném, hogyha megfigyelnénk. Ez pedig a 400-as és az 500-as cikluskezdő utasítás. Mind a két utasítás úgy végződik, hogy szignum, és utána egy különbség. Ez a sor pontosan az előbbi egyik hibát küszöböli ki, vagyis amennyiben az x2 kisebb, mint az x1, akkor a szignumfüggvény –1-et állít elő, egyébként pedig +1-et. Egyenlőség esetén nullát, mondhatják azok, akik ismerik a szignumfüggvényt, de azt, hogy x1=x2-vel, ezt az esetet a program elején már elintéztük.
  Tehát ebben az esetben a program mind az összes egyeneslehetőséget ki tudja rajzolni. Nézzük meg most néhány példával. Letörlöm a képernyőt, hogy lássunk is valamit… háromszáz…
  Vizsgáljuk meg először azt a bizonyos szaggatott vonal esetet, hiszen ez nyilván érdekes. Úgy nézett ki a példa, hogy 60, 30-nál volt a kezdőpont, 120, 170-nél a végpont. És íme, a vonal ezúttal már folytonos.
  13-20.jpg
  Most nézzünk meg egy olyat, amikor az egyenes nem jobbra, hanem balra dől. De ez el fog férni most itt a másik mellett. Tehát a végponját válasszuk mondjuk… 200 és 20… másik végpontját pedig… akkor most balra dőljön, akkor legyen mondjuk 30 és 120.
  13-21.jpg
  Íme, visszafelé is lépdelni tud az x koordináta abban a bizonyos FOR utasításban.
  11:48 Ezzel gyakorlatilag az egyenesrajzoló programunkkal el is készültünk. Következik a körrajzolás. A körrajzolás nagyon egyszerű lesz. Nagyon egyszerű lesz azért, mert egyenest tudunk rajzolni, és egyenesekből fogjuk a körünket is megrajzolni. Ha valaki nem tudja elképzelni, az most képzelje azt, hogy rajzolunk először egy háromszöget, aztán egy négyszöget, egy ötszöget, és így tovább, és ha a sokszögnek az oldalait (ti. oldalainak számát – L. A. D.) egyre növeljük, akkor végül is a számítógép képernyőjén kört fogunk kapni. Nézzük meg most ezt a programlistát.
  13-22.jpg
  Ezúttal már nem kezdő- és végpontot kell bevinni, hanem középpontot, sugarat és az oldalak számát. Ezek után egy geometriai részlet következik, az x2-t és az y2-t koszinusz-, illetve szinuszfüggvény segítségével állítjuk elő, figyelembe véve a kör középpontját is természetesen. Itt is meg lehet figyelni, hogy egész részt vettünk ebben az esetben is. Ami különösen érdekes lehet, az a 980-as utasítássor, itt ugyanis ez a szubrutinhívás az előbbi egyenesrajzoló programot hívja. Magyarán kiszámítjuk a sokszögnek a csúcsait, és ezeket egyenesekkel összekötjük. Ezek után a 990-es sorban az előbbi egyenesnek a végpontját áttesszük a kezdőpontba, vagyis ugye a végpont volt az x2, y2 koordinátán, ezt áttöltjük x1-be és y1-be, és a NEXT utasítás cikluszárásával visszaugrunk a 950-re, ahol újabb sokszögoldalt fogunk kirajzolni. Mivel azonban az egyenesrajzoló programot szubrutinként kívánjuk használni, ezért annak a lezárását STOP utasításról át kell javítani RETURN-re. Az egyenesrajzolásnak a lezáró utasítása az 590-es, tehát 590 RETURN.
  És készen vagyunk, most kipróbáljuk. Hogy valóban sokszögeket rajzol, azt megnézhetjük akkor, hogyha először egy viszonylag kis oldalszámú sokszöget rajzoltatunk ki, például egy hétszöget. Egy… kettő… három… négy… öt… hat… hét.
  13-23.jpg
  Ugye nyilvánvalóan ebből akkor lesz kör, ha mondjuk nem hetet adok meg oldalszámnak, hanem ennél jóval többet. Tehát letörlöm a képernyőt, hogy többet lássunk. Megint csak legyen a képernyő közepén, a sugár az legyen nagyobb, mondjuk nyolcvanas, és negyvenoldalú.
  13-24.jpg
  Nyilván itt is végig lehetne számítani, hiszen látszik, hogy bizonyos szakaszonként rajzolja ki a program a kört, nyilván megvan mind a negyven. Azt hiszem, hogy ennél többet már nem is lett volna érdemes megadni, de nyilván minden nézőnk megpróbálkozhat még ezekkel.

Karakteres animáció

13-25.jpgKiss Donát Spectrum
  15:50 Általában minden számítógép BASIC-ből elérhető grafikai képességei is messze túlmutatnak az egyes vonalak vagy szakaszok rajzolgatásán. Ezt valószínűleg előbb-utóbb elunjuk, és ha mondjuk kinézve az ablakon le szeretnénk rajzolni az elénk táruló virágos rét látványát például, akkor ezt egyenes szakaszokkal azért elég nehéz lenne. Ezért aztán minden BASIC-ben – vagy majdnem minden BASIC-ben – és ezért minden számítógépen létezik lehetőség úgynevezett felhasználó által definiált karakter szerkesztésére, kreálására és felhasználására. A következőről van itt szó. Minden gépben és minden BASIC-ben, hát, bele van vasalva az a karakterkészlet és az a mintázatkészlet, amit szállításkor is megkapunk, tehát a különböző betűk és a különböző grafikus jelek. Ha viszont mi szeretnénk ettől különböző mintázatú, karakter nagyságú rajzolatokat készíteni – ebben az esetben mondjuk egy tulipán karaktert és egy nárcisz karaktert –, erre is van módunk. Miután ezt definiáltuk, ezeket a grafikus felhasználói karaktereket is ugyanúgy kezelhetjük a BASIC-ből, mint az összes többit. Vagyis kinyomtathatjuk egy adott helyre, felülírhatjuk egy másikkal, és így tovább.
  Előbb-utóbb felmerült majd azonban, amint a rétet sikerült lerajzolnunk, az az igény, hogy hát szeretnénk mozgó ábrákat is a BASIC-ből csinálni. Például lerajzoltuk az utcán parkoló autót, és előbb-utóbb elvárnánk tőle, hogy elinduljon, vagyis a kerekei forogjanak. Evvel eljutottunk egy következő témakörhöz, a mozgó ábrák vagy számítógépes animáció alapfeladataihoz vagy alapproblémájához, ami a következőképpen néz ki. Minden mozgás felbontható egymástól jól elkülönülő, és ezért külön-külön is megrajzolható fázisokra. A számítógépes mozgó ábrák készítésének az az egyszerű alapelve, hogy ugyanarra a helyre kivetítjük a következő fázist is – bizonyos idő múlva –, és ettől a mozgás érzetét fogjuk kelteni. Itt most a képernyőn éppen látunk egy ilyen egyre gyorsuló autót, melynek a kerekei tizenhat ilyen felhasználó által definiált karakterből vannak megszerkesztve, megrajzolva, és ez a mozgás három fázisból áll. Hogyha jól figyelünk, akkor látjuk, hogy tulajdonképpen itt mindössze három fázisról van szó, s megfelelő időközönként ezt a három fázist, vagyis a különböző fázisokat ugyanarra a helyre kiírattatjuk.
  

13-26.jpg13-27.jpg

  
13-28.jpg13-29.jpg

  Nézzük meg azt a programsort vagy egy olyan programsort ebben a kis programban, mely felelős mondjuk egy fázis kirajzolásáért. Itt az 1000-es utasítás… az éles szeműek már valószínűleg észrevették, hogy RETURN-nel zárul, vagyis ez egy szubrutin célszerűen – nos, ez az egy sor felelős két kerék egy fázisának a kirajzolásáért. Ha mondjuk három ilyen szubrutint írunk és abban a három különböző kerékállásnak megfelelő karakterek vannak, s ezeket mindig ugyanoda kinyomtatjuk, akkor máris eljutunk egy mozgó kerékhez. Nem olyan ördöngösség ez.
  
13-30.jpg13-31.jpg

  Ezt jól megfigyelhetjük más programokban is, például a játékprogramokban, hogy mást ne mondjak, ahol ha közelebbről megnézzük a különböző mozgásokat, mondjuk egy búvár mozgását vagy egy béka mozgását, bizonyára észrevesszük azokat a fázisokat, amelyeknek az egymásra rajzolásából – illetve amennyiben az ábrának haladnia is kell, akkor egymás elé rajzolásából – adódik majd ez a mozgás.
  
13-32.jpg13-33.jpg

  
13-34.jpg13-35.jpg

  
13-36.jpg13-37.jpg

  
13-38.jpg13-39.jpg

Rajzolóprogram

13-40.jpgPinkert László Commodore 64
  19:31 A számítógéppel ez idáig jobbára programozók foglalkoztak, a rajzokat pedig grafikusok készítik. Komoly feladat lenne pontonként bevinni egy ilyen rajzot a számítógépbe, beprogramozni, ezért a programozók inkább ügyes programokat és a technikusok ügyes eszközöket készítettek, hogy megkönnyítsék ezt a grafikus–számítógép kapcsolatot. Egy ilyen eszközt használ Vass Zoltán grafikus is. Amit látunk, egy kis fekete műanyag tábla, amelyre műanyag ceruzával írni lehet. Ez az írás abban a pillanatban megjelenik a képernyőn is. Természetesen itt az íráson a rajzolásra gondoltam, mint ahogy azt az ábrán láthatjuk.
  

13-41.jpg13-42.jpg

  
13-43.jpg13-44.jpg

  Nincs hát szükség semmiféle manuális kódolásra: a számítógépbe közvetlenül belekerül az ábra. Ez a grafikusok számára nagy könnyebbséget jelent. Meg a programozók számára is, hiszen senki sem szeret oldalakon keresztül rajzokat kódolni. Emellett a program számos funkciót tartalmaz, például ki lehet választani a tollnak a színét, lehet például keretrajzoló funkciót választani, ahol nem kell az egyenes vonal rajzolásával bíbelődni, hanem egy pillanat alatt kiválasztjuk a keret méretét, elhelyezzük a keretet a képernyőn, és a program már rá is rajzolta.
  Színt váltunk…
  
13-45.jpg13-46.jpg

  
13-47.jpg13-48.jpg

  Ugyanezt a keretet meg tudja rajzolni a program úgy is – ahogyan rövidesen látni fogjuk –, hogy beszínezi a belsejét. Természetesen a színt itt is választani lehet. A számítógép sokkal gyorsabban dolgozik, mint ahogy a grafikus például egy ilyen területet beszínezne; erre semmi szükség, megcsinálja a program.
  A körrajzolás is egyszerű művelet, hogyha olyan programok állnak rendelkezésre, mint ez a program, amelyet egyébként Koala Painternek hívnak… és a köröket villámgyorsan megrajzolja. Ugyanennek megvan a beszínezős változata is.
  
13-49.jpg13-50.jpg

  Az egyenes vonal rajzolásához ezen a rajzasztalon nem kell vonalzó. A két végpontjával kijelölt vonalat a számítógép rajzolja a helyére. Ilyen módon pillanatok alatt virágos rétet lehet a képen lévő táblára rajzolni.
  
13-51.jpg13-52.jpg

  A számos funkció közül kiválaszthatjuk a másolást például, amellyel egy kiválasztott területet – amit itt a keretben látunk – a gép megjegyzi, s ezek után bárhová elhelyezi, ahová a grafikus kívánja.
  
13-53.jpg13-54.jpg

  Egy másik funkció, amely keretek között beszínezi az adott területet. Például itt a kék és a fekete keret között láttunk egy fehér sávot, ezt az adott színnel – pirossal vagy világosbarnával – áthúzta egy pillanat alatt.
  Egészen különleges funkciót is tud ez a program, például ez a vonalsorozat-rajzolás: egy pontból sugarasan kiálló vonalakat lehet vele rajzolni, mintha a programozók számítottak volna arra, hogy a réten fű is lesz, és megkönnyítették volna ennek a rajzolását.
  
13-55.jpg13-56.jpg

  Nézzük meg most, mi a helyzet akkor, hogyha apró részleteket szeretne a grafikus pontosabban megrajzolni, például ennek az ördögnek a szemét. Ebben az esetben ez a funkció egy közeli képet, egy nagyított képet ad az adott részletről, ahová pontonként lehet rajzolni, a színt tetszőlegesen megválasztva, és amelynek az eredménye fönt az eredeti nagyságú képen azonnal megjelenik.

READ – DATA

13-57.jpgHerneczki Katalin Commodore 64
  24:22 Adásunkban eddig grafikai programokat, illetve grafikai lehetőségeket láttak. Most tegyünk egy kis kitérőt. Részben azért, hogy egy kicsit átismételjük a BASIC nyelv eddig már megismert lehetőségeit, részben pedig azért, hogy megismerjünk egy új utasításpárt. Ez az új utasításpár a READDATA. A READ egyébként olvasást jelent, a DATA pedig adatot, adatokat. Nos, azért ennek is van egyébként köze a grafikához, mert ezt az utasításpárt kiválóan fogják tudni majd alkalmazni grafikai programok írásánál is. A READDATA utasításpár lényege az, hogy a programban tudjuk tárolni az adatokat, tehát a programmal együtt. És a READ utasítás segítségével ki tudjuk majd olvasni a programban tárolt adatot. Magukat az adatokat a DATA utasításban kell definiálni, mégpedig úgy, hogy felsoroljuk az adatokat, és ezeket vesszővel elválasztjuk egymástól. A READ utasítás segítségével pedig olvasni tudjuk ezeket az adatokat, de szigorúan abban a sorrendben, ahogy ezeket felsoroltuk a DATA utasításban. Tehát az első READ utasítás a DATA utasítás első elemét olvassa, a második a másodikat, és így tovább, ettől a sorrendtől eltérni nem tudunk. A DATA utasítást egyébként a program végére szoktuk helyezni, elkülönítve a program többi részétől (de ez csak szokás és nem előírás, bárhol állhat – L. A. D.), a READ utasítást pedig oda kell elhelyezni a programban, ahol egy változónak értéket kívánunk adni. Nézzük meg, hogy működik ez egy programban, ahol a program feladata az lesz, hogy egy tetszőleges szöveget átírjunk morzejelekké.
  13-58.jpg
  Programunk címe MORSE. Először ki fogja írni, hogy szöveget alakít át morzejelekké, és jön a lényegi rész az 5-ös sorban. Meg is mutatjuk azért, hogy hol tartunk… Definiálunk egy szöveges tömböt – huszonhat elemű szöveges tömböt –, egyébként ebbe helyezzük el majd a morzejeleket. Ezután egy ciklus következik. Tudjuk azt, hogy a tömbnek értéket ciklusban tudunk adni, tehát egy FOR ciklus jön, ahol az index nullától indul, huszonötig. Majd erre még azért visszatérünk, hogy miért pont nullától indul a ciklusunk. A ciklusmagban pedig megtaláljuk ezt a bizonyos READ utasítást. A READ utasítás olvasni fogja először az első adatelemet, majd a másodikat, amelyet a DATA utasításból vesz, és az A$ szöveges változóban fogja elhelyezni. Ezután jön a „kérem az inputszöveget” kiírás, és természetesen be kell gépelnünk a szöveget, a T$ változóba kerül a szöveg egyébként. Utána pedig a már ismert LEN függvénnyel találkozunk, amely meg fogja állapítani, hogy ez a szöveg milyen hosszú, tehát ha például a „morze” szöveget gépeljük be, akkor a K értéke öt lesz, hiszen ez öt betűből áll. Utána jön egy ciklus – ez nagyon lényeges egyébként –: a J index egyről indul és K-ig tart, vagyis addig, amilyen hosszú a begépelt szövegünk, és a ciklusmagban szereplő utasítás az a MID$ függvényt használja. A MID$ függvény kiválasztja azokat a karaktereket, amelyeket át akarunk alakítani morzejelekké, és elhelyezi az M$ szöveges változóba.
  13-59.jpg
  Ne felejtsük el, hogy ez egy ciklus magjában lévő utasítás, tehát minden karakterre sor kerül. Aztán jön a PRINT utasítás, amely ki fogja írni a karakternek megfelelő morzejelet. Nos, ez egy elég hosszú sor, és látjuk, hogy több minden is van benne, érdemes közelebbről megnézni. Úgy történik a megfelelő morzeelem kiválasztása, hogy a kiválasztott betű – tehát mondjuk a „morze” szöveg első betűjénél az M betű – ASCII-kódjából kivonjuk az A betű ASCII-kódját. Az M betűé egyébként 77, az A betűé pedig 65, így különbségként tizenkettőt kapunk, és így kivesszük a tömb tizenkettedik elemét. Látjuk, hogy itt az A$-ra vonatkozik a PRINT utasítás. Na most miért a tizenkettedik elemét? Az ábécében tizenharmadik lenne az M betű. Most térek vissza arra, hogy miért nulláról indult a 10. sorban a FOR ciklus: pontosan azért, mert ha netán A betűvel kezdődne a szöveg, akkor ugye az A mínusz A ASCII-kódjának a különbsége nulla lenne, tehát pontosan ezért indult nulláról a ciklus. Így ki tudjuk írni az adatokat. Reméljük, tényleg jól működik a program, úgyhogy megnézzük a futást is.
  13-60.jpg
  „Kérem a szöveget” – legyen a szöveg az, hogy MORSE.
  13-61.jpg
  És aki jól ismeri a morzeábécé karaktereit, az valóban ellenőrizheti, hogy ez helyes. Egyébként az SOS-t azt szinte mindenki ismeri, úgyhogy azért ezt is megmutatjuk.
  13-62.jpg
  Valóban, tititi tátátá tititi.
  Nos, visszatérve még egy picit a grafikához. Egyrészt ne felejtsük el, hogy a READ és DATA utasításokat ott is használhatjuk, és még két dolgot érdemes elmondani. Finom felbontású, különösen színes grafikához igen nagy memóriaterületre van szükség. Másrészt nagy felbontású és főleg mozgó képekhez meglehetősen sok műveletet kell elvégezni egy másodperc alatt, tehát olyan gépre van szükségünk, amelynek a műveleti sebessége nagy. Így aztán nem kell csodálkoznunk azon, hogy a mi kis mikroszámítógépeinken nem tudjuk utánozni például a Csillagok háborúja című film egyes jeleneteit.
  (A háttérben elindul az első adásban már látott videóbejátszás – L. A. D.)
  Persze a fejlődés nem áll meg. Nap mint nap jelennek meg a világpiacon egyre gyorsabb, egyre nagyobb tárkapacitású, és ugyanakkor egyre kisebb méretű számítógépek. Így aztán ezeknek a számítógépeknek a segítségével tudjuk, ha nem is valósággá, de láthatóvá tenni a lehetetlent. Viszontlátásra.