Kiss Donát Spectrum
1:01 Az elmúlt adás végén, ha még emlékeznek rá, egy házi feladat megírására buzdítottuk önöket. Most megmutatjuk ennek a házi feladatnak egy lehetséges megoldását, a mi megoldásunkat. A feladat úgy szólt, hogy készítsünk egy olyan programot, amely a képernyőre naptárszerűen kirajzolja valakinek az elfoglaltságát mondjuk nyolctól tizenkettőig, mégpedig oly módon, hogy megkérdezi minden órában az elfoglaltságát, és ezt a megfelelő idő mellé felviszi a képernyőre, és hát valamilyen élvezhető formátumban ezt megjeleníti. Nézzük meg, hogy hogy működik a mi programunk. Megkérdezi tőlünk, hogy mit csinálunk nyolctól kilencig, hát a szoftveresek akkor még bőven alszanak, kilenckor már nyugodtan lehet azonban egy értekezletük… tíztől tizenegyig mondjuk nyílt nap van az óvodában, beugrunk és az ebédet előrehozzuk tizenegytől tizenkettőig. Függőlegesen is kettéosztjuk a képernyőt és lám, itt az eredmény.
Pinkert László Commodore 64
8:08 A karakterlánc hosszát megadó függvényen kívül gépeink még több tucat ilyen beépített programmal, vagyis függvénnyel rendelkeznek. Ezekből nézzünk meg most néhányat.
Ennek a függvénynek két bemenő adata van, egy szöveg és egy szám. Egyúttal megfigyelhetjük azt is, hogy ha egy függvénynek kettő vagy több bemenő adata van, akkor ezeket vesszővel kell elválasztani.
A függvény öt betűt adott eredményül, a bemenő szöveg utolsó öt betűjét. Nézzünk most egy másik függvényt.
Ennek már három bemenő adata van, egy szöveg és két szám.
Eredményül hét betűt adott vissza, amely a bemenő szöveg hatodik betűjénél kezdődik.
Erre a függvényre érdekes programokat lehet írni, ebből mutatunk most kettőt.
Az első először is beolvas egy szöveget. Ezek után egy ciklus következik, ahol a ciklusmag annyiszor fut le, ahány betűje van a beolvasott szövegnek. A ciklusmag egy PRINT utasítás, amely kiírja a beolvasott szöveg I-edik betűjétől kezdődően egy betűjét a szövegnek. Mivel a PRINT utasítás végén semmiféle írásjel nincsen, ezért mindegyik új sorba fog kerülni. Nézzük meg a program működését. Írjuk be mondjuk azt, hogy DARABOL.
A program feldarabolta ezt a szöveget, a várakozásnak megfelelően.
Az előbbi programot egy kis átalakítással a következő alakra hozhatjuk:
ahol megváltoztattuk a ciklusnak a lefutását, ugyanis szintén annyiszor fut le, ahány betűje van a szövegnek, de most nem az első, hanem az utolsó betűtől kezdődően haladunk visszafelé, és a PRINT utasítás egy sorba írja a betűket. Az eredményt talán már sejtjük is: megfordítja a bemenő szöveget.
Herneczki Katalin Spectrum
10:55 A függvények egy másik csoportjába tartoznak a matematikai függvények. Ezek írásmódja hasonló a hétköznapi, matematikában megszokott írásmódhoz, úgyhogy aki ismeri őket, továbbra is ugyanúgy használhatja. Aki viszont nem, annak egy látványos ismerkedési módot kínálunk. Írtunk egy programot, amely matematikai függvények képét ábrázolja. A program kirajzol egy koordináta-rendszert. A koordináta-rendszer x és y tengelyén nem találunk ugyan skálabeosztásokat, de úgy írtuk meg a programot, hogy a skálabeosztások léptéke egyforma legyen. Nézzük most a koordináta-rendszerben, ábrázoljunk egy egyszerű függvényt. Egyébként a program meg is kérdezi, hogy milyen függvényt kívánunk ábrázolni. Legyen most ez az y=x függvény. (Ez persze csak matematikai értelemben függvény, a számítástechnikában nem számít annak – L. A. D.)
Horváthné Majsa Katalin Spectrum
15:14 A matematikai függvények közül a szögfüggvények azok, amelyeket itt egy kicsit másképp kell kezelni, mint ahogy megszoktuk. Ezeknek változóit ugyanis nem fokban kell megadni, hanem radiánban. Tehát nem szabad elfeledkeznünk ezeknek az átváltásáról, amit viszont könnyen megtehetünk a 2π=360° összefüggés ismeretében. Elsősorban a szinusz- és koszinuszfüggvény az, amelyik különösebb figyelmet érdemel. Ezeknek a segítségével ugyanis már rendkívül sokféle látványos, érdekes ábrát tudunk rajzolni. Nézzük ezek közül a legeslegegyszerűbbet: rajzoljunk ki egy kört. Természetesen nekem már van itt készenlétben egy ilyen programom, úgyhogy most kedvcsinálónak először lefuttatom. A program először megkérdezi a középpont koordinátáit – hát a középpont legyen a 100, 100 koordinátájú pont. Ezután a sugár értékét kérdezi meg, ez legyen 68… és a szükséges adatok begépelése után elkezd rajzolni. Amint látjuk, a kört szépen pontról pontra haladva rajzolja meg. Nézzük meg a listáját, hogy hogyan is érhetjük ezt el.
Íme, megjelent a lista. Amint látjuk, a program a néhány bevezető REM sor után rákérdez az adatokra, tehát a változókra, a középpont és a sugár értékeit kell megadnunk. Ezek után egy rövid ciklus következik, ez végzi magát a kör kirajzolását. A ciklus változója, az n nullától 2π-ig változik, a lépésköz pedig π/90 – tehát ez azt jelenti, hogy egy félkört kilencven pontból fog kirajzolni nekünk. A kirajzolást pedig a PLOT utasítással végezhetjük el: a PLOT-nál, mint tudjuk, két koordinátát kell megadni, itt is ez történik, a középpont koordinátáit kell mindig változtatni valamennyivel, ez pedig természetesen az elfordulás szögétől és a sugártól függ.
Hát ezek után akkor nézzünk egy kicsit bonyolultabb programot: legyen ez mondjuk egy ellipszis kirajzolása. Gyorsan le is futtatom, hogy lássuk, milyen. Ez is először a középpont megkérdezésével kezdi. Legyen ismét a 100, 100 koordinátájú pont a középpont, a nagytengely hossza nyolcvan egység, a kistengely hossza negyven. Ha szépen végigvárjuk, láthatjuk, hogy ez is pontról pontra haladva végzi a rajzolást. Amint befejezte, megnézzük ennek is a listáját.
Ez a program is tehát az adatok bekérdezésével kezdi, utána egy ciklus következik, szintén a PLOT utasítás felhasználásával; a körkirajzoló programtól pusztán abban különbözik, hogy a PLOT utasításban a koordinátákat egy egészen kicsit másképp kell kiszámítanunk.
További átalakításokkal érdekesebbnél érdekesebb görbéket tudunk kirajzoltatni. Ilyen például az egymásra merőleges rezgések összeadásával keletkező Lissajous-görbe. Lássunk erre is egy-két példát. Elindítom a programot; ez egyből a fázisszögeltérés megadásával kezdi, természetesen radiánban kell megadnom, figyelmeztet is erre. Ez legyen 1. A két rezgés frekvenciájának aránya legyen 4 – és elkezdi a rajzolást.
Akkor most lássunk egy még izgalmasabb, még látványosabb feladatot, mondjuk egy igazi mutatós óra megrajzolását. Gyorsan elindítom…
Ezek után lássuk a program listáját. A lista két fő részre bontható, ebből az első végzi a számlap megjelenítését, a második pedig a mutató megjelenítését és mozgatását. Az első részben egy ciklust szerveztünk, ez rajzolja ki egy kör kerületére a számjegyeket egytől tizenkettőig. A második részben pedig azt kellett megoldani, hogy az idő múlásával arányban, megfelelő időközökben megjelenjen a mutató, majd letöröljük onnan azt és egy kicsit továbbmozdítva, tehát az elfordulásszög változtatásával egy új mutatót ismét megrajzoljunk, és azt később onnan megint letöröljük.
Ennyit tud ez a program, és amint látjuk, ez egy kicsit azért hiányos, hiszen nincsen neki kis- és nagymutatója. Hát ezt mindenki rajzolja meg hozzá otthon saját maga.
Herneczki Katalin Commodore 64
21:35 Az eddig megismert függvények két csoportra oszthatók. Az egyiknél a bemenő adat szám, a másiknál pedig szöveg. Előfordulhat azonban az az eset is, hogy egy szövegen hasonló változtatást kívánunk elvégezni, mint egy számon, és fordítva. Nézzünk egy példát. Mondjuk a 12 345-ös számnak az utolsó három jegyét szeretnénk leválasztani, a 345-öt. Ez matematikai eszközökkel könnyen megoldható, de még kézenfekvőbb lenne a RIGHT$ függvény használata. Ezzel már korábban is találkoztunk – próbáljuk meg.
Nos, ez nem jó megoldás, hiszen hibaüzenetet kaptunk. A magyarázat kézenfekvő: a RIGHT$ függvény csak szöveget fogad el inputként, számot pedig nem. (Ez valóban így van, a mutatott hibaüzenet azonban azért jelent meg, mert Herneczki Katalin kifelejtette a sor elejéről a PRINT utasítást – hiszen függvények csak utasítás paramétereiben szerepelhetnek, sor elején nem. Ha az utasítást is kiírta volna, az üzenet ?TYPE MISMATCH ERROR lett volna. – L. A. D.) De ezen is tudunk segíteni, a számot idézőjelbe tesszük, és máris jól fog működni a RIGHT$ függvényünk.
Ez a megoldás azonban csak akkor vezet célra, hogyha konstansokkal dolgozunk, numerikus változók esetén nem. Van egy másik megoldásunk is, az úgynevezett sztringfüggvény használata. A STR$ függvény minden esetben számot szöveggé alakít át.
Így a 12 345-ből szöveg lesz, és a RIGHT$ függvény így már helyesen működik, a 345-öt kiírja eredményként.
Igen ám, de a 345 most nem szám, hanem szöveg, azaz a három, négy és ötös karakterek egymásutánja, nem pedig a háromszáznegyvenötös szám. Ha a programunk további részében ezzel számolni szeretnénk, hát bizony gondban lennénk. De ezen is segíthetünk egy új függvény bevezetésével, a VAL függvénnyel. A VAL függvény az angol value szó rövidítése, amely egyébként értéket jelent.
Elemezzük ezt a sort. A STR$ függvény a számból szöveget készített, a RIGHT$ függvény leválasztotta a három jegyet – az utolsó három jegyet –, és végül a VAL függvény ebből a három karakterből, a 3-4-5 karakterből a 345-ös számot állította elő.
(Ez azon is megfigyelhető, hogy a korábbi esettel ellentétben itt a 345 előtt egy szóköz is megjelent, a BASIC ugyanis a számokat egy bevezető szóközzel írja ki [ez az előjel helye, negatív számnál a mínuszjel jelenik meg helyette] – L. A. D.)
A BASIC-ben számos lehetőségünk van a függvények használatára, egyvalamire azonban vigyázni kell, hogy mindig megfelelő eredményt kapjunk. Vagyis vagy számot, vagy szöveget, attól függően, hogy hogyan kívánunk a továbbiakban dolgozni vele.
Most foglaljuk össze, mit tudunk eddig a függvényekről, hogyan csoportosíthatjuk őket. Találkoztunk szöveg–szöveg típusú függvényekkel, vagyis olyanokkal, ahol a bemenő adat szöveg volt és az eredmény is szöveg volt. Ilyen volt például a RIGHT$, a LEFT$ (ez valójában nem szerepelt az adásban – L. A. D.), illetve a MID$ függvény: ne felejtsük el, hogy mindegyiknek az utolsó karaktere dollárjel. Erre azért van szükség, mert ezek szöveget adnak eredményként, és minden olyan függvény, amely szöveget ad eredményként, dollárjellel kell hogy végződjön.
Találkoztunk olyan függvénnyel is, amely szövegből számot ad eredményként, ilyen volt például a LEN függvény, illetve a VAL függvény. A LEN függvény a hossz – a length szó rövidítése –, a VAL pedig értéket jelent.
A harmadik típusba tartoznak a szám–szöveg típusú függvények, ilyen volt a STR$ függvény. Ennek is az utolsó karaktere természetesen dollárjel, hiszen az eredmény szöveg lesz.
A negyedik csoportba tartoznak a szám–szám típusú függvények, ezek körébe tartoznak a matematikai függvények, amelyek inputja minden esetben szám, és az eredménye is egy számérték.
Most pedig a házi feladat következik. Nagyon sokszor halljuk nyelvészektől, külföldiektől, hogy a magyar nyelvben nagyon sok az e betű. Nos, ez igaz is. Ezennel be kell jelentenem: rengeteg e szerepel e nyelvben. Nos, ez adta az ötletet a házi feladathoz is. Írjanak olyan programot, amely egy tetszés szerinti szövegben megvizsgálja az e betűket, gyűjti ezek számát, és eredményként ki is írja ezt.
Jó munkát kívánunk, viszontlátásra.
25:50