Új Ifjúság, 1986. július-december (34. évfolyam, 26-52. szám)
1986-12-02 / 48. szám
új ifjúság 10 VI. Térjünk vissza az első kis programhoz. Figyeljétek meg, hogy milyen különbség van a 20 és 30 . sorban lévő utasítások közt! A 20 sorban az utasításban egy numerikus kifejezés szerepel, a 30 sorban pedig egy sztring. Írjatok néhány PRINT és INPUT utasításból álló programocskákat, figyeljétek meg a vesszők és pontosvesszők hatását a PRINT és az INPUT utasításokban, és hogy miként írja ki a PRINT a változókat, kifejezéseket és a sztrlngeket. Ebben a fejezetben tehát megismerkedtünk a NEW és a RUN parancsokkal, megtanultuk a parancsok és az utasítások közti különbséget, továbbá a programok írásának a módját; megismerkedtünk a PRINT és az INPUT utasításokkal, a változókkal és az azonosítókkal, és megtanultuk az egyszerű numerikus kifejezések képzését. Tudjuk már, hogy hogyan lehet ezzel az utasítással a program futása alatt a változóknak „kívülről“ értéket adni, tehát 'adatot bevinni a programba. Azonban gyakran szükség lehet arra is, hogy a változók értékét a programban „belülről“ is meg tudjuk változtatni, tehát hogy a változóknak új értéket tudjunk adni. Erre szolgál az ún. értékadó utasítás, amelynek kulcsszava a LET (ang.: legyen). Az utasítás alakja a következő: LET < változó >. = > kifejezés <. A LET kulcsszót egy változó követi, ennek a változónak adunk értéket. A változó után egyenlőségjel következik, amelynek a jobb oldalán egy kifejezés áll. Az egyenlőségjel bal oldalán álló változó az egyenlőségjel jobb oldalán álló kifejezés értékét veszi fel. A Sin- clairen a LET kulcsszót mindig ki kell írni, a PMD-n a LET kulcsszó használata nem kötelező. Tehát a PMD-n a következő két utasítás egyenértékű: 30 LET A1 = 5 * 5* 3.14 30 A1 = 5 * 5 * 3.14 A LET utasításban az egyenlőségjel nem azt jelenti, hogy az egyenlőségjel két oldalán álló kifejezés értéke egyenlő. Ennek illusztrálására futtassátok le a következő programot: 10 LET A = 5 20 PRINT A 30 LET A = A + 1 40 PRINT A A RUN parancs begépelése után a képernyőn először egy 5, majd egy 6 jelenik meg. Láthatjátok, hogy a 30-as sor nem azt jelenti, hogy A egyenlő A + 1, hanem azt, hogy az A változó új értéke annyi lesz mint az A pillanatnyi értéke plusz 1. Ennek megfelelően a 20-as sorban álló utasítás az 5-öt nyomtatta ki, mivel Itt az A értéke 5 volt, ellenben a 40-es sorban lévő PRINT a 6-ot nyomtatta ki, mivel Itt az A értéke már 6 lett. Említettük, hogy a BASIC rendszer az utasításokat a sorszámuk szerint UU TtTTTITIir hajtja végre. Vannak azonban olyan feladatok is, amikor nem kell minden utasítást végrehajtani, vagy ha bizonyos feltétel teljesül, akkor az utasítások egyik csoportját kellene elvégezni, ha nem teljesül az adott feltétel, akkor egy másik csoportot. Képzeljétek el, hogy programot akarunk írni a másodfokú egyenletek megoldására. Beolvassuk az A, B, C értékeket, és ezekből kiszámíthatjuk a diszkrimináns értékét. Ha ez negatív, akkor az egyenletnek nincs reális megoldása, ebben az esetben másként kell folytatni a programot. Ahhoz, hogy ezt meg tudjuk valósítani, szükségünk lesz az ún. feltételes és a feltétlen vezérlésátadó utasításokra. A feltételes vezérlésátadó utasítás (röviden feltételes utasítás] kulcsszava az IF (ang.: ha). Az utasítás alakja a következő: IF < feltétel > THEN < utasítás > Ha a program futása közben az IF kulcsszó mögött álló feltétel Igaz, akkor a THEN szó után következő utasítást Is végrehajtja a rendszer, ellenkező esetben a következő sorral folytatja a végrehajtást. A feltétel alakja a következő lehet: < kifejezés 1 > < relációs operátor >i < kifejezés 2 > A < kifejezés 1 >, < kifejezés 2 >' aritmetikai vagy sztring kifejezés lehet (a sztringekről a későbbiekben lesz szó). A relációs operátorok a következők lehetnek: operátor > < = > = .< > jelentése egyenlő kisebb nagyobb kisebb vagy egyenlő nagyobb vagy egyenlő nem egyenlő A feltételekre, úgy tekinthetünk mint a logikai kifejezésekre, mivel az értékük igaz (ha a feltétel teljesül] vagy hamis (ha a feltétel nem teljesül) lehet. Ezért a feltételeket összeköthetjük az AND, OR és NOT logikai operátorokkal. Az AND logikai és-t, az OR logikai vagy-ot, a NOT logikai tagadást jelent. A feltételes utasítás THEN kulcsszava után gyakran az ún. feltétlen vezérlésátadó utasítás (röviden ugró utasítás) áll, amelynek az alakja a következő: GOTO < sorszám » Az utasítás kulcsszava a GOTO (ang.: go to — menj oda), utána egy sorszám áll. A GOTO utasítás hatására a BASIC rendszer a program végrehajtását a GOTO után álló sorszámon lévő utasítással folytatja. Végül ismerkedjünk meg két nagyon egyszerű, de sokszor használt utasítással. Mind a két utasítás egyetlen kulcsszóból áll. Az első a képernyő törlésére szolgál. Ennek az utasításnak a kulcsszava a Spectrum esetében a CLS (az angol clear screen — töröld a képernyőt — rövidítése), a PMD-n a GCLEAR. A második utasítás kulcsszava mint a két gépen a STOP (angol „állj“). Ha egy STOP utasítás kerül végrehajtásra, akkor a program futása befejeződik. Most lássunk egy egyszerű példát az eddig ismertetett utasításokra: 5 GCLEAR 10 LET K = INT (1024 • RND (5)) 20 PRINT „KIGONDOLTAM EGY SZAMOT 0 ÉS 1023 KÖZÖTT, TALÁLD KI1“ 30 LET 1 = 0 40 LET I = I -P 1 50 PRINT I; PRÓBÁLKOZÁS.' 60 PRINT „MI A TIPPED?“ 70 INPUT T 80 IF T = K THEN GOTO lOOÜ 90 IF T < K THEN GOTO 200 100 IF T > K THEN GOTO 500 200 PRINT T; „KISEBB, MINT A KITALÁLANDÓ SZÁM“ 210 GOTO 40 500 PRINT T; „NAGYO TALÁLANDÓ SZÁM“ 510 GOTO 40 1000 PRINT I; „PRÓBÁLKOZÁSBÓL KITALÁLTAD“ 1010 IF I > 10 THEN GOTO 2000 1020 PRINT „ÜGYES VAGY, GRATULÁLOK!“ 1030 STOP 2000 PRINT „MAXIMUM 10 LÉPÉSBŐL KI LEHET TALÁLNI“ Ez egy számtalálósdl játék. A 10-es sorban lévő utasítás hatására a számítógép kigenerál egy 0 és 1023 közé eső „véletlen számot“, amelyet a gép kezelőjének ki kell találnia. A kigenerált szám a K változóban van. A Sinclairen másképpen működik a „véletlen szám“ — generálás és képernyőtörlés,' ezért az 5-ös és a 10-es sor helyett a következő sorokat kell begépelni: 5 CLS 10 RANDOMIZE: LET K = INT (1024 * RND) Az I változóban számoljuk a találgatások számát. Mivel a program kezdetekor még egyszer sem találgattunk, ezért a 30-as sorban kinullázzuk ezt a változót. A 40-es sorban megnöveljük az I értékét, mivel az 1. találgatás következik. Az 50-es sorban kiírjuk a képernyőre, hogy hányadik próbálkozásnál tartunk, majd a 60-es sorban kiírjuk a' felszólítást á kezelőnek, hogy írja be a tippjét. A 70-es sorban beolvassuk a kezelő tippjét a T változóba. A 80-as, 90-es és 100-as sorban szereplő feltételes utasításokkal eldöntjük, hogy milyen volt a tipp. Például a 90-es sorban álló utasítás jelentése a következő: ha a tipp kisebb, mint a kitalálandó szám, a program végrehajtását a 200-as sorral folytasd. Ha a tipp nem jó, akkor kiírjuk, hogy nagyobb vagy kisebb-e, mint a kitalálandó szám. Ezek után a 210-es vagy az 510-es sorban lévő GOTO utasításokkal visszatérünk a 40-es sorra, és minden kezdődik elölről, egészen addig, míg meg nem kapjuk a helyes tippet. Ebben az esetben az 1000-es sorban folytatjuk a programot. Az 1010-es sorban megvizsgáljuk az I változó értékét, és ennek megfelelően az 1020-as vagy a 2000-es sorban álló üzenetet írjuk ki a képernyőre. Ezt a programot meg lehet írni kevesebb számú utasítással Is, gyakorlatképpen próbáljátok meg lerövidíteni. Végül egy újabb paranccsal Ismerkedünk meg, mellyel a gép memóriájában lévő programot a képernyőre írathatjátok ki. A parancs alakja a következő: LIST < sorszám > Ha nem adunk meg sorszámot, akkor a programot az aktuális sorszámtól kezdve listázza a képernyőre. A Sinclairen az aktuális sorszámot egy „>“ jel jelzi, amely a képernyőn a sorszám után áll. Ha a kulcsszót egy sorszám követi, akkor a program listázását az adott sorszámtól kezdődően végzi el. Ebben a fejezetben tehát megismerkedtünk a LET, IF — THEN, GOTO, STOP és a képernyőtörlő utasításokkal, a LIST paranccsal és a feltételek képzésének szabályaival. Kálosi Ákos (P^olytatása az 50. számban) AFORIZMA Rejtvényünkben Konfuciusnak, az ókor neves filozófusának szép gondolatát fe]thetitek meg. VÍZSZINTES: 1. Női név. 4. Az afarizma első része. 10. Álha). 12. Idegenszavak előtagjaként kettőst, kétszerest Jelent. 13. Volt portugál gyarmat, ma India része az Arab-tengerben. 14. Már nagyon megelégelő. 15. Rest, tunya. 17. A bőr és a nitrogén vegyjele. 18. Romániai folyó. 19. A mohamedánok második szent városa, Itt halt meg Mohammed is. 21. A Balaton vizét elvezető csatorna. 22. A megteendő út. 23. Az 1957. november 3-án a Szovjetunióban az űrbe fellőtt kutya neve. 25. Az ozmium vegyjele. 26 A gabonaszemben levő fehérje. 28. Iparvidék Németországban. 29. Sárga színű, gyúlékony, nem fémes elem. 30. Végtag. 32. Kán betűi keverve. 33. Marokkői kikötőváros. 36. Hosszú fafúvós hangszer. 38. Fordítva: szenvedés. 39. Szeretne kapni. 41. Vadász rejtekhelye. 42. Sajtjáról Ismert holland város. 44. Volt szovjet diplomata. 46. Séma egynemű betűi. 47. Egy magyar filmcím szerint a veréb Is ez. 49. Az erő fizikai mértékegysége. 50. Csak félig szereti 51. Megvalósíthatatlan elgondolás. 53. Fafajta. 54. Részvény- társaság. 56. ... Járó, a fejlődésben, haladásban vezető és irányító szerepű. 57. Magyar író, a modern magyar próza egyéni stílusú mestere (Gyula 1878—1933J. 58. ... muri, Móricz Zslgmond műve. 60. Biztató szó. 61. Egyiptom fővárosába való. 62. Kol betűi keverve. FÜGGŐLEGES: 1. A keserűség Jelképe. 2. Francia uralkodóház volt. 3. Hitszegő személy (éh.). 4. Hordómérték. 5. Kubai és osztrák gépkocsijelzés. 6. Déli étkezés. 7. Semmi latinul (NIHIL). 8. .. ,-mőg, zsörtölődik. 9. Gyulladás. 10. Bőven áraszt. 15. Távollevő személyhez Intézett írásbeli közlés, hír. 16. Végtelen panaszi 19. Kalács töltése lehet. 20. Ilyen virágzatú növény a majoránna, a kakukkfű, a zsálya stb. 21. Az aforizma második része. 22. Tinédzserek. 24. Német idealista filozófus (Immanuel 1724—1804). 26. Veszprém patakja. 27. Fakerékre való vasabroncs. 29. Fején legyezőszerű toll- bóbitát viselő papagájféle. 31. Piros színű keszeg. 34. Kecskegyerek. 35. Színes fém. 37. A germánium és a nitrogén vegyjele. 40. Híres francia szobrászművész (Auguste 1840—1917). 43. Férfinév. 45. Női becenév. 46. Fémtárgyak tisztítására való folyékony szer. 48. Tekercs. 50. Ilyen fegyver a tőr. 52. Latin-amerikai államokban paraszt, mezőgazdasági munkás, spanyol eredetű szóval. 53. ... Lanka,. Ceylon mai neve. 55. Három a zenében, 57. Katasztrálls röviden. 59. .Szovjet repülőgéptípus. 61. Kicsinyítő képző. Beküldendő a vízszintes 4. és a függőleges 21. szá- mű sorok megfejtése. A 46. számban megjelent rejtvény helyes megfejtése: Elzengett az őszi boros ének, / Megfülledt már hűse a pincének. Könyvet nyert Takács Nóra, Galanta.