Horváthné Majsa Katalin Primo
1:21 Legutóbb azt ígértük, hogy most megírjuk első saját programunkat. Ez így is van. Természetesen ne gondoljunk túl hosszú és bonyolult feladatot megoldó programra. Mielőtt azonban hozzákezdenénk, gondoljuk végig, hogy mit is várhatunk egy ilyen számítógépes programtól. Elsősorban azt, hogy legyen univerzális, általános, vagyis a feladatot ne csak egy meghatározott, speciális esetben tudja végrehajtani, megoldani. Másik fontos követelmény az, hogy a program legyen önműködő, önmagyarázó. Ez azt jelenti, hogy felhasználójától a program futását elindító parancs begépelésén kívül ne kívánjon meg semmiféle programozásra vagy a program működésére vonatkozó ismeretet.
Mindezt nézzük most egy egészen egyszerű kis feladaton. Az új mértékrendszer, az SI bevezetése óta gyakran zavarba esünk, ha a személygépkocsik motorjának teljesítményéről esik szó. A megszokott lóerő helyett a kilowatt jött divatba, sőt hát most már ez a kötelező. Első kis programunk ezt a lóerő–kilowatt átszámítást fogja elvégezni. Hogy hogyan is fogjunk hozzá, azt dr. Kocsis András, a sorozathoz megjelent BASIC tankönyv szerzője fogja bemutatni nekünk.
Dr. Kocsis András Commodore 64
2:38 Hogy oldjuk meg a feladatot? Mi lesz az első lépés, és aztán hogyan folytassuk? Ahhoz, hogy ezeket a kérdéseket megválaszoljuk, meg kell ismernünk a programkészítés módszerét. Minden feladatot valamilyen meghatározott módszerrel kell megoldanunk. Ha például egy hidat akarunk felépíteni, prémiumot akarunk kiosztani vagy hétvégi bevásárlást akarunk elintézni, akkor valamilyen módszer szerint ezek a feladatok elvégezhetők. Nézzük ezt a nagyon egyszerű, hétköznapi feladatot, hogy hétvégi bevásárlást intézünk el. Ezt a feladatot többféle módszerrel tudjuk elvégezni. Tehetjük azt például, hogy megfogjuk a kosarat, pénzt veszünk magunkhoz, elmegyünk a boltba és ami eszünkbe jut, azt megvesszük. Ezzel a módszerrel könnyen juthatunk olyan helyzetbe, hogy a vasárnapi ebédnél vesszük észre, hogy valami nagyon lényeges dolog hiányzik. De alkalmazhatunk másik módszert is. Eszerint pontosan felmérjük, hogy a hétvégén mit fogunk csinálni, mikor megyünk el, mikor hívunk vendégeket, vagy kirándulni megyünk, ennek alapján pontosan össze tudjuk állítani az étrendet, megnézzük, hogy ehhez mit szükséges bevásárolnunk, összeállítjuk a listát s így megyünk le vásárolni. Ha ezt a módszert követjük, akkor bizonyára kisebb valószínűséggel kerülünk olyan helyzetbe, mint amit az előbb említettem.
Minden feladatnak nagyjából három megoldási lépése van. Először is elemezni, értelmezni kell a feladatot, majd meg kell tervezni, végül pedig meg kell valósítani. A programkészítés is nagyjából ebből a három lépésből áll, azonban a programkészítés egy sajátos tevékenység, tehát ennek megfelelően kicsit módosítani kell a lépéseket; eszerint tehát a három lépés az elemzés, a tervezés és a kódolás. Nézzük most végig ezt a három lépést, és közben oldjuk meg a feladatunkat.
4:43 A feladatunk az volt, hogy egy olyan programot készítsünk, amely segítségével a számítógép lóerőértékekből kilowattértékeket számol át és ezeket a képernyőn kijelzi.
Először nézzük az elemzést. Az elemzésnek az első lépése az, hogy a feladatot részfeladatokra kell felbontani. Olyan részfeladatokra, amelyekből az egész feladat fölépíthető. Esetünkben három részfeladatra lehet az egész feladatot felbontani. Az első részfeladat a lóerőértéknek a beolvasása vagy megadása a program számára; ez történhet úgy, hogy fixen beépítjük a programba, de történhet úgy is, hogy a felhasználó a program végrehajtása során gépeli be a lóerőszámot. A következő részfeladat az átszámítás, a lóerőértéknek az átszámítása kilowattá, és a harmadik pedig ennek a kapott kilowattértéknek a megjelenítése a képernyőn. Ezzel a feladatot részfeladatokra bontottuk.
6:04 Nézzük meg ezt a három részfeladatot. Az elsőben tehát abban maradunk, hogy a billentyűzetről beolvasott lóerőértékeket fogjuk beolvasni. A másik részfeladat az átszámítás lesz, amikor is a beadott lóerőértéket kilowattá átszámítjuk, és a harmadik pedig az átszámított kilowattértéknek a megjelenítése lesz a képernyőn. Ezzel tulajdonképpen nemcsak a részfeladatokat térképeztük fel, hanem egy algoritmust is kaptunk, egy műveletsort, amelynek a segítségével a program ezt a feladatot meg tudja oldani. Tehát ebben a sorrendben fogjuk a feladatot végrehajtani.
Az elemzés során azt is kell vizsgálni, hogy a feladat megoldható-e. Esetünkben nyugodt szívvel kijelenthetjük, hogy a feladat megoldható, hiszen a lóerőértéket be tudjuk olvasni a billentyűzetről, a lóerőérték kilowattra átszámítható, ehhez van egy átszámító állandó érték, és végül arra is van lehetőség, hogy az átszámított kilowattértéket a képernyőn megjelenítsük. Így tehát a feladatunk megoldható.
Ezzel az elemzést lezártuk, a következő rész a tervezés. A tervezés során az egyes részfeladatokat részletesen is meg kell vizsgálnunk, hogy mit kell elvégezni. Nézzük meg most még egyszer az előbbi ábrát. A lóerőértékek beolvasása a terminál billentyűzetéről történik, tehát itt fogja a számítógép beolvasni a lóerőértéket. Nem elég csupán beolvasni, hanem ezt tárolni kell, meg kell őrizni ahhoz, hogy az átszámítást is el tudja végezni a számítógép. A következő lépés ennek a beolvasott lóerőértéknek az átszámítása egy meghatározott formula szerint kilowattá, és ezt az értéket tovább kell adni a kijelzéshez, a harmadik részfeladathoz, amikor is ezt az átszámított kilowattértéket ki kell írni a képernyőre.
Ezzel a részfeladatoknak a tervezése megtörtént, a következő lépés a kódolás.
Pinkert László Commodore 64
8:29 A kódolás azt jelenti, hogy a feladat megoldásának tervét lefordítjuk BASIC nyelvre. Mielőtt hozzákezdenénk, gondoljunk azonban arra, hogy ha később, netán hónapok múlva elővesszük a program listáját, aligha fogunk emlékezni arra, hogy a program mit csinál. Így tehát az első utasítássort magunknak írjuk.
A rem kulcsszó azt jelenti, hogy az utasítássor további része nem tartozik a programhoz. Csupán megjegyzés, angolul remark. A program futása közben a 10-es sorhoz érve a gép nem csinál semmit. Áttér a következő utasítás végrehajtására.
Programunk, ha elég intelligens és barátságos, bemutatkozik, vagyis kiírja a képernyőre, hogy mit csinál. Erre használhatjuk a print utasítást.
Nézzük meg az utasítás szerkezetét. A 20-as az utasítás sorszáma, mint tudjuk, meghatározza az utasítások végrehajtásának sorrendjét. A print kulcsszó, utasítja a gépet valamilyen művelet elvégzésére. A kulcsszót követi az utasítás tárgya, vagyis amire a művelet vonatkozik. Jelen esetben egy szöveg. Lóerő–kilowatt. A szöveg első jele egy speciális vezérlőkarakter. Commodore számítógépen ez utasítja a gépet, hogy törölje le a képernyőt és a szöveget a képernyő bal felső sarkába írja.
(Egy inverz szívet ábrázol: – L. A. D.)
Azt szeretnénk, ha programunk egyaránt át tudná számolni a motorkerékpár vagy a repülőgép-hajtómű teljesítményadatait. Ezért a feladatot változó bemenő adatokkal kell megoldanunk.
Kiss Donát Spectrum
10:36 A számítógép az adatokat tárolni is képes, mégpedig igen nagy mennyiségben. Azt is mondhatnánk, hogy bekapcsolás után a számítógép olyan, mint egy nagy, üres fiókos szekrény vagy más néven sublót. Ez azt jelenti, hogy egy-egy ilyen eltárolt szövegre vagy adatra később bármikor szükségünk lehet. Vagyis valahogy hivatkoznunk kell tudni rá, ezért ezeknek a fiókoknak – vagy most már mondjuk ki a számítástechnikai nevét –, változóknak van egy-egy azonosítójuk. És természetesen van tartalmuk. Nézzünk erre egy példát.
Horváthné Majsa Katalin Spectrum
15:44 Egy másik mód arra, hogy ezeknek a fiókoknak vagy változóknak értéket adjunk, az input utasítás használata. A let és az input utasítás között az a különbség, hogy amíg a let utasítással a program írása során értéket adunk változóinknak, addig az input utasítással ez az értékadás a program futásának idejére halasztható. Ugyanis a számítógép, hogyha a program végrehajtása során egy input utasítással találkozik, a program futása félbeszakad, s a számítógép addig vár, míg ennek a változónak be nem gépeljük az értékét. Ezt a legtöbb számítógép a képernyőn egy kérdőjellel szokta jelezni. Ilyenkor kell tehát begépelnünk ezt az értéket, amivel a későbbiekben a számításokat a gép el fogja végezni, s az érték begépelése után a program futása ugyanúgy folytadódik, mint hogyha ennek a változónak a let utasítással adtunk volna értéket.
Nézzünk erre egy példát. Kérdezzük be mondjuk az A változó értékét. Tehát begépelem azt, hogy INPUT a. Hát sajnos ez Spectrum és nem jelzi kérdőjellel azt, hogy tőlem értéket vár, de azt mondom, hogy legyen az értéke 2, s hogyha ezt a print utasítással visszakérdezem, a képernyőn valóban megjelenik az, hogy 2.
Pinkert László Commodore 64
19:49 Az első részfeladat megoldása után térjünk át a másodikra. Átszámítás.
Dr. Kocsis András Commodore 64
21:23 Ezzel a program elkészült. Az elemzés, tervezés és kódolás során egy helyesen működő programot kaptunk. De mint mondani szokás, a puding próbája az, hogy megeszik, a programé pedig az, hogy helyesen működik. Hajtsuk végre a programunkat, gépeljük be a run parancsot, adjunk meg egy lóerőértéket, és megállapíthatjuk, hogy a program valóban helyesen működik, és most már üzemszerűen használhatjuk ezt a programot. Természetesen programunknak vannak még kritizálható pontjai, de ahhoz, hogy tökéletesebbé tudjuk tenni, meg kell ismernünk a BASIC további eszközeit.
Egy jó tanfolyam nem létezhet házi feladat nélkül. Javasoljuk, hogy feladatként készítsenek egy olyan programot, amely a fordított átszámítást végzi, tehát kilowattból számít át lóerőt, valamint tanulmányozzák a könyv harmadik és negyedik fejezetét és a negyedik fejezet végén levő feladatokat.
Kiss Donát Spectrum
22:22 A program most már teljessé is tehető. Indítsuk akkor el a run paranccsal. Minden annak rendje-módja szerint elindult, megkérdezi a lóerő értékét, legyen ez mondjuk egy trabantnyi, 26 – megkapjuk kilowattban az eredményt. És azt is látjuk a képernyőn, hogy a program futása megállt.
Mi lenne, ha most egy újabb lóerőnek az átszámítását szeretnénk kezdeményezni? Akkor ezt a programot ismét el kell indítani run-nal. Igen ám, de a programozók általában igen szeretik a kényelmet, magyarul lusták, és szeretnék például, hogyha ez a program önmagától újraindulna minden esetben. Erre van egy nagyon praktikus utasítás a BASIC-ben, az a neve, hogy goto, ami angolul körülbelül annyit tesz, hogy menjen valamilyen helyre. A goto után megadjuk azt a sorszámot, ahol szeretnénk, hogyha a program végrehajtása folytatódna. Ebben az esetben a gép eltér a növekvő sorszám szerinti végrehajtástól és ezen az általunk megjelölt sorszámon folytatja a végrehajtást.
Vegyük föl most erre a listára következő utasításként, programsorként a go to 30 (Sinclair-gépeken mindig két szóba írva jelenik meg – L. A. D.) utasítást, aminek hatására azt várjuk, hogy ez a program önmagától körbe-körbe fog futni. Próbáljuk meg.
24:18 Foglaljuk akkor össze, hogy mit tanultunk ma. Szó volt ugye a programírás kapcsán különböző beíró, kiírató utasításokról, megtanultuk azt, hogy hogy kell egy programot felépíteni, sőt megírtuk az első kis programkánkat is. Azt is megtanultuk, hogy ha már egy olyan jó programunk van, ami körbe-körbe fut, akkor azt hogy lehet kikapcsolni. Miután megtanultuk, hogy hogy kell kikapcsolni, ezek után…