Új Ifjúság, 1986. július-december (34. évfolyam, 26-52. szám)
1986-12-30 / 52. szám
lijlfjiisáji 101 ÖRIÄS TALAJMEGMIINKÄIÖ A Szovjetunió cseljabinszki traktorgyárában elkészült a 75 tonnás osztályba tartozó új ipari traktor, ameiynek erőforrása a szverdlovszki tnrbómotor- gyár 800 lóerős hajtóműve. Az űj gépóriást a bányaiparban és a távoli északon a földmunkák elvégzésére használják majd fel. A talajlazitóval és tolóle- mezzel felszerelt traktor önsúlya száz tonna. A számítógépes játék segíti a szem gyógyulását Ha egy gyermek az egyik szemével élesen, a másikkal azonban csak elmosódottan lát, valószínű, hogy agya „elhanyagolja“ a beteg szemet. A szokásos kezelés ilyenkor abban áll, hogy a jó szemet letakarják, s ezzel az agyat rákényszerítik, hogy a gyengén látó szemet dolgoztassa. Igaz, ezzel az eljárással esetleg csak hónapok múltán következik be javulás. Angol kutatók a szemből érkező in- 'gerek agyi áramának vizsgálatával azt igyekeztek megállapítani, hogy miféle tárgyak keltenek az agyban erős jeleket. Az egyik leghatásosabb képnek a sakktábla bizonyult. Ennek mezői szabályos időközökben felcserélődnek, a fekete fehérré, a fehér feketévé válik. Ez a váltakozó minta szerepel abban a képernyős számítógépes játékban, a- melyet a kutatók a gyengén látó szem gyakoroltatására ötlöttek ki. A játékban a megjegyzésre szánt betűk a képernyő közepén jelennek meg, véletlenszerű rendben, körülvéve a váltakozó mezejű sakktáblaképpel. A gyermeknek, akinek a jó szeme le van takarva, el kell olvasnia a betűket, majd amikor egy betűsorozatnak vége van, az Iskolai számítógép billentyűin le kell kopognia azokat, amelyeket sikerült megjegyeznie. Ha jól emlékezett rájuk, kap egy jó pontot, s a játék új betűkkel folytatódik. Tíz pont után jutalom jár. Ezt a Játékot egy klinikán már egy éve használják az egyik szeműkkel gyengén látó gyerekek gyógyításában. A gyerekek felének meglepő gyorsasággal javult a szeme világa. I9t tt KX << ítsáK HUSH nn iw 5M «K na VIII. w rfTTTtwr tecucíuf nttnm "utf uu «« KIV se IRRMRflS StSSSS BASIC minltanfolyamunkat az indexelt változók ismertetésével folytatjuk. Eddig olyan változókkal dolgoztunk, a- melyekhez egy adott pillanatban csak egy érték tartozik. Ezek az egyszerű változók. Gyakran van szükség arra is. hogy összetartozó értékekre egyetlen névvel hivatkozzunk. Ez a helyzet akkor, amikor vektorokkal vagy mátrixokkal dolgozunk. Vektoron a továbbiakban rendezett szám-n-est értünk, azaz n darab számot, amelyeknek a sorrendjét rögzítjük. Az egyenes számokat a vektor elemeinek nevezzük. Az elemekhez sorban a 0, 1, 2,... egész számokat rendeljük, amelyeket indexnek nevezünk. Ha meg akarjuk nevezni a vektor valamelyik elemét, akkor a vektor nevén kívül megadjuk a kérdéses elem indexét is. Az index mindig nemnegatív egész szám. A BASlC-ben a vektorokat a DIM utasítással deklarálhatjuk (vezethetjük be). Az utasítás kulcsszava a DIM, az utasítás alakja a következő: . DIM dl, d2, ..., dn ahol a dl, ... dn az ún. deklarátorok. Vektoir esetében a deklarátor egy egy- betűs név, amelyet egy kerek zárójelbe tett kfejezés követ. A kifejezés értékének az egészrésze az index felső határa. Az index alsó határa a PMD e- setében a 0, a Sinclair esetében 1. A DIM utasítás ún. deklaratív, nemvégrehajtó utasítás, amely azt közli a rendszerrel, hogy egy (vagy több) vektort akarunk használni a programunkban, és meghatározza a vektorok méretét. A vektort deklaráló DIM utasításnak meg kell előzni a vektor tényleges használatát. Egy DIM utasítással több vektort is deklarálhatunk. Nemcsak egydimenziós vektorokkal dolgozhatunk, hanem többdimenziós tömbökkel is. Ebben az esetben a deklaráció során annyi kifejezést adunk meg a kerek zárójelben vesszővel elválasztva, ahány dimenziós tömböt akarunk deklarálni. A vektorok (tömbök) használata során gyakori az olyan algoritmus, amelyben a vektor minden elemével el kell végezni egy adott műveletet. Ez azt jelenti, hogy a műveletet ismétlődően, ciklikusan kell elvégezni, tehát ciklust kell szervezni a programban. Ezt megtehetjük a már ismert feltételes és ugró utasításokkal, de van erre a BASIC nyelvben egy speciális utasítás, amelyet ciklusképző utasításnak nevezünk. A ciklusképző utasítás tulajdonképpen két utasításból áll. A ciklust a FOR utasítás vezeti be, alakja a következő: FOR <ciklusváltozó>. == <kl>. TO !<k2> STEP <k3> A ciklusváltozó egy egyszerű változó (a Sinclairen csak egybetűs azonosítója lehet.). A ki, k2, k3 kifejezések. A STEP kulcsszó és az utána álló kifejezés használata nem kötelező. A ciklust a NEXT utasítás zárja le, alakja a következő: NEXT <ciklusváltozó> A FOR és NEXT utasltáspár között lévő utasításokat a ciklus magjának nevezzük. Az utasítás a következőképpen működik: 1. Kiértékelődnek a ki, k2, k3 kifejezések. A ki kifejezés az ún. kezdeti érték, a k2 kifejezés a végérték, a k3 kifejezés a lépésköz. 2. Ha a kezdeti érték nagyobb, mint a végérték, akkor a NEXT utasítás után következő utasítással folytatódik végrehajtás. 3. Ha a kezdeti érték nem nagyobb, mint a végérték, a ciklusváltozó felveszi a ki kezdeti értéket. 4. Ezek után a rendszer végrehajtja a ciklus magjában szereplő utasításokat. 5. A NEXT utasítás elérésekor a rendszer a ciklusváltozóhoz hozzáadja a lépésköz értékét. Ha a STEP kulcsszó és az utána következő kifejezés nem szerepel, a lépésköz értéke 1. 6 Ha a ciklusváltozó új értéke nagyobb, mint a végérték, akkor a NEXT utasítás után következő utasítással folytatódik a végrehajtás (a cikjus ..lejárt“). 7. Ha a ciklusváltozó új értéke nem nagyobb, mint a végérték, akkor folytasd a 4. ponttal. A lépésköz lehet negatív szám is, abban az esetben az előző leírás 2., 3., 6. és 7. pontjában a nagyobb szót kisebbre kell változtatni. Hosszabb programokban célszerű ún. megjegyzéseket elhelyezni, amelyekkel dokumentáljuk az egyes programrészeket. A megjegyzések növelik a program érthetőségét saját magunk és mások számára is. A BASIC nyelvben a megjegyzéseket a RÉM (angol remark — megjegyzés) kulcsszó után írhatjuk. Ide bármilyen karakterből álló szöveget elhelyezhetünk, ezt a rendszer figyelmen kívül hagyja. Lássunk egy példát. A következő program egy N elemű sorozat minimális elemét keresi meg. A sorozatot egy vektorban fogjuk tárolni. A program első részében beolvassuk a sorozatot az A vektorba (10-es — 80-as utasítások). A sorozat legkisebb elemét a következő módon keressük meg: sorban megvizsgáljuk a sorozat minden elemét. A megvizsgált elemek közül a legkisebbet az M változóba, a legkisebb elem indexét az MI változóba tesszük. Ebből következik, hogy ha a sorozat végére érünk, az M változóban a sorozat legkisebb eleme, az MI változóban pedig a legkisebb elem indexe lesz. Ennek az eljárásnak megfelelően először az A(l) elemet vizsgáljuk meg. Mivel egy elem közül csak saját maga lehet a legkisebb, az M kezdeti értéke A(l) lesz (90-es utasítás), az MI kezdeti értéke 1 lesz — ez az A(l) indexe (100-as utasítás). Ezután egy ciklus következik, amelyben sorra megvizsgáljuk a többi A(l) elemet, ahol 1 értéke 2-től N-Ig változik. A vizsgáljuk meg. Mivel egy elem csak saját maga lehet a legkisebb, az M kezdeti értéke A(l) lesz (90-es utasítás), az MI kezdeti értéke 1 lesz —• ez az A(l) indexe (100-as utasítás). Ezután egy ciklus következik, amelyben sorra megvizsgáljuk a többi A(l) elemet, ahol 1 értéke 2-től N-ig változik, A vizsgálat abból áll, hogy az éppen aktuális A(l)' elemet összehasonlíjuk az eddigi legkisebb elemmel, amelynek az értéke az M változóban van (120-as utasítás). Ha az A(l) értéke nem kisebb, akkor nincs semmi változás, ezért folytatjuk' a ciklust (ugrunk a 150-es utasításra). Ha az A(l) értéke kisebb, mint az eddigi legkisebb érték (a 120-as utasításban nem teljesül a feltétel), akkor módosítanunk kell az M változó értékét (140-es utasítás). A ciklus akkor fejeződik be, ha az 1 értéke me'ghaladja az N értékét, tehát ha minden elemet megvizsgáltunk. Ezek után az M és MI értékét egy print utasítással kiírjuk a képernyőre. 5 RÉM*** N ELEMŰ SOROZAT LEGKISEBB ELEMÉNEK MEGKERESÉ- SE*** 10 PRINT „ÍRD BE A SOROZATBAN LEVŐ ELEMEK SZÁMÁT“ 20 INPUT N 30 DIM Á(N) 40 PRINT „ÁDD MEG A SOROZAT ELEMEIT“ 50 FOR 1 = 1 TO N 60 PRINT „A(„;I;“) = 70 INPUT A(I) 80 NEXT I 90 LET M = A(l) 100 LET MI = 1 110 FOR I = 2 TO N 120 IF A(I) > = M THEN GOTO 150 130 LET M = A(I) 140 LET MI = I 150 NEXT I 160 PRINT „A SOROZAT LEGKISEBB ELEME AZ A („;MI;“) = “;A(MI) Előfordulhat, hogy a programok begépelése közben valamit elírtok, vagy saját programok kigondolása közben valamilyen logikai hibát követtek el, aminek a végeredménye egy ún. végtelen ciklus lesz. A legegyszerűbb végtelen ciklus a következő: 10 GOTO 10 Első pillantásra látható, hogy ez a program sohasem fejezi be a működését. Az a kérdés, hogy miként állíthatjuk le a végtelen ciklust. A legegyszerűbb mód a gép ki-, majd bekapcsolása, ez azonban azzal jár, hogy a gép a programot is elfelejti. Célszerűbb ezért az ún. programvégrehajtás megszakítását kezdeményezni. Ezt általában bizonyos billentyűk megnyomásával érhetjük el. A PMD-n a STOP, a Sinclairen a CAPS SHIFT és SPACE feliratú billentyűk együttes megnyomásával. Ezt a rendszer felismeri, megszakítja a program végrehajtását, majd egy angol nyelvű üzenettel közli, hogy hányas sorszámú utasításnál szakadt félbe a program. A megszakított program végrehajtását a CONTINUE (ang. folytasd) parancs begépelésével folytathatjuk. Ebben a fejezetben a vektorok és tömbök deklarálásával, a FOR — NEXT ciklusképző utasításpárral, a RÉM utasítással és a programvégrehajtás megszakításának módjával Ismerkedtünk meg. KÄLOSI ÁKOS (Folytatása a 2. számban) DÜDOLÖ Rejtvényünkben Dénes György fenti című verséből idézünk: Szél dudája dúdol, ... ben.- folytatása a rejtvényVlZSZINTES: 1. Marokkói kikötőváros. B. A vers- folytatás első része. 10. Süveg alakú hajszárító. 11. Bol beűi keverve. 12. Szőrme. 13. Német város a Duna partján. 14. Zománc. 16. Mutatószó. 17. Határozórag. 18. Lámpásos mesealak. 20. Névelő. 21. Jószívű. 22. Norvég, spanyol és osztrák gépko- csijelzés. 23. Kötőszó. 25. Európai nép. 28. Rendkívül nagy erejű sugárzás. 30. Cirkuszi porondok. 32. Hideg erdélyi szél. 33. Kamionok jelzése. 34. Medence Közép-Azslában de 1200 km hosszú folyó Kínában. 35. Csak fél matúra! 36. Valamely tényt bizonyító, szabályosan kiállított irat. 38. Az ilyen fű köhögés elleni gyógyszer. 46. Befed, leborít.-'^2. Kölcsön biztosítékául a hitelezőnek adott vagyontárgy. 43. A. É. 44. Leo betűi keverve. 46. C. T. 47. Tőszámnév. 49. Aida szerelmese. 52. Gyep. 53. Külföldről behozott tárgyak utáni illeték a határon. 55. Csavar. 56. Az órahang egyik fele. 57. Idős. 59. Az oxigén és az alumínium. 60. Balkezes. 61. Üres tái! FÜGGŐLEGES: 1. A versfolytatás második része. 2. Mértani test. 3. Mar betűi keverve. 4. Orosz igíen- lés. 5. Európai nép (éh.), 6. ... Valii, olasz filmszínésznő (éf.). 7. Máté Péter. 8. Országos Rendező iroda. 9. Irásmű vagy beszéd tárgya. 11a. Svájci város Zürich közelében. 14. Tova. 15. Ötvenegy római számmal. 18. Kikötőváros a Vörös-tenger bejáratánál. 19. Fordítva: enyém németül. 21. Világrész. 24. Az ilyen rizlingből finom bor készül. 26. Női név (ét.). 27. A Szovjetunió egyik népe (éh.). 28. Vékony fémlap. 29. A Szerelmi költészet múzsája. 31. Katasztrálls röviden. 32. A nikkel és a foszfor vegyjele. 37, Nem sietős a dolga (éh.). 39. Csehszlovákiai magyar író (Józsaf). 41. Akadály miatt hirtelen megáll, nem tud tovább menni. 44. Párizsi színház. 45. A daru is ez. 48. A feleség is ez. 50. Az asztácium vegyjele. 51. Kiejtett betű. 52. Friss, jó erőben lévő. 54. Sportöltözék. 56. Megszólítás. 58. Egyik budapesti áruház rövid neve. 60. Tagadószó. Beküldendő a vízszintes 6. és a függőleges 1. számú sorok megfejtése. Az 50. szám rejtvényének helyes megfejtése: Jegenyék alatt, A krazniki csata. Egyszerű emberek, Homokos világ. Könyvet nyert Hindi Teréz, Stúrovo.