Page 25 - Enterpress Magazin - 2020. 3-6.
P. 25
2020. május – december 25. oldal
vigyázzunk arra, hogy minden megnyitott IF-hez tartoz- szereplő változó(k) értéke megváltozott, akkor ez a ciklus
zék egy ENDIF is! befejezését is jelentheti. Gyakran használjuk olyan helyze-
tekben is, amikor szeretnénk elölről elkezdeni a ciklusmag
Esetszétválasztás: végrehajtását. Az utasítás az utoljára elkezdett - legbelső-
Néhány programnyelvben ezt „kapcsolószerkezetnek” is ciklusra vonatkozik, azaz annak feltételét tudjuk újra kiér-
nevezik; több felsorolt feltételből kikeresi az első igaz ér- tékeltetni. A külső, ezt tartalmazó ciklusokat az utasítás
tékűt, és a hozzá tartozó parancso(ka)t hajtja végre, majd nem befolyásolja.
kilép a szerkezetből, az azt követő utasításra. A szerkezet
dBASE nyelvű megvalósítása: 10.4. Változók a programokban
Programírás közben állandóan szükségünk van különbö-
DO CASE ző tárolóhelyekre, ahol adatainkat ideiglenesen el tudjuk
CASE <feltétel> helyezni; mint már az alapfogalmaknál említettük, ezeket
<parancs(ok)> a tárolóhelyeket szokás változóknak nevezni. Programot
[CASE <feltétel> írni változók használata nélkül szinte lehetetlen, mert így
<parancs(ok)>] csak állandó értékű adatok szerepelhetnének az utasítá-
[OTHERWISE sokban, azaz minden alkalommal ugyanazt a tevékeny-
parancs] séget végezné el a program, minden futtatás alkalmával
ENDCASE pontosan ugyanazt az eredményt kapnánk. Az ilyen utasí-
tássorozatot csak erős túlzással lehet számítógépes prog-
Csak egyetlen (az első igaz feltételű) CASE parancsait ramnak tekinteni.
hajtja végre, utána kilép az ENDCASE utasítást követő pa- Programjainkban ugyanolyan változókat használhatunk,
rancsra. (A CASE ágak száma tetszőleges.) Az OTHERWISE mint párbeszédes módban, azaz memóriaváltozókat és
után felsorolt parancsokat akkor hajtja végre, ha egyetlen adatbázismezőket. Az eddig ismertetett, változókat kez-
feltételt sem talált igaznak. Ha nem használunk OTHER- elő parancsokon kívül rendelkezésünkre áll még néhány
WISE részt, az ENDCASE után folytatódik a végrehajtás. utasítás, amelyek egy részét nincs értelme programon kí-
vül alkalmazni, de amelyek léte ékesen bizonyítja, hogy a
10.3.2. Ciklusszervezés változóknak (és itt most kivételesen elsősorban a memó-
A ciklus egy utasításcsoport ismételt végrehajtása, amíg riaváltozókat értjük ezen) a programírásban van elsődle-
egy adott ún. ciklusfeltétel teljesül. Amikor a ciklusfeltétel ges szerepük.
hamissá válik, befejeződik a ciklus, és a ciklust követő pa-
ranccsal folytatódik a programvégrehajtás. A ciklust létre- 10.4.1. Memóriaváltozók használata programban
hozó utasításokat a következő formában kell a program- Először foglalkozzunk a memóriaváltozók programon
szövegbe írni: belüli alkalmazásával! Ez több olyan új parancsot jelent,
amelyek használatával nagyon kényelmesen és „egysze-
DO WHILE <feltétel> rűen” programozhatjuk adatbázis-kezelőnket. A memó-
<parancs(ok)> riaváltozók definícióját- programon belül is az értékadó
ENDDO utasítások végzik. Az eddig megismert parancs (a STO-
RE) mellett azonban használhatunk olyan utasításokat
Ez egy ún. elöltesztelt ciklus; a parancsok első végrehaj- is, amelyek a program felhasználójától fogadnak adatot,
tása előtt is ellenőrzi a feltételt. Ha már ekkor hamisnak és azt egy megadott memóriaváltozóban helyezik el. Az
találja, egyszer sem végzi el a ciklusmag utasításait. A ilyen változók pontos értéke minden futtatásnál más és
ciklusok is „egymásba ágyazhatók”, azaz a ciklusmag tar- más lehet, értéküket a billentyűzeten begépelt kifejezés
talmazhat egy másik ciklust, de azt is be kell fejezni az határozza meg.
ENDDO utasítással. Elméleti szempontból fontos, hogy
ha a programvégrehajtás belépett egy ciklusba, akkor a Tetszőleges típusú adat bekérésére alkalmas a következő,
ciklusvégen is szigorúan át kell haladnia. Soha ne írjunk interaktív dódban is használható (de legalább kipróbálha-
ciklusmag belsejébe RETURN parancsot. Programunkat tó) parancs:
egy program is elindíthatja, ilyenkor a RETURN hatására a
hívott program befejeződik, de lezáratlanul marad a cik- INPUT [<üzenet>] TO <memóriaváltozó>
lus, és a hívó program ciklusai ettől zavarba jöhetnek.
Az „üzenet” egy karakteres kifejezés lehet, általában va-
A dBASE nyelve rendelkezik egy paranccsal, amelyek le- lamilyen magyarázószöveg, mellyel emlékeztetjük a fel-
hető ad számunkra, hogy a megkezdett ciklus befejezését használót arra, hogy milyen jellegű adatot vár a program
a normális végrehajtás menetétől függetlenül is kezde- (ha ez egy állandó karaktersorozat, akkor a határolójelek
ményezhessük. A közé kell tenni). Az „üzenet” a parancs végrehajtásának
első lépéseként megjelenik a képernyőn (az utoljára hasz-
LOOP nált sort követő sor első pozíciójától kezdve), és utána (a
kurzortól kezdődően) gépelhetünk be egy tetszőleges,
parancs hatására a ciklusmag további parancsait figyel- dBASE által értelmezhető kifejezést, a adott nevű me-
men kívül hagyva, azonnal a ciklusfeltétel újbóli kiérté- móriaváltozó ennek típusát és értékét veszi fel. Tekintet-
kelését végzi el a rendszer. Ha előtte a ciklusfeltételben tel arra, hogy kifejezést vár a parancs, a karakteres típu-

