next up previous index
Következő: 15.10.10 PSZEUDO UTASÍTÁSOK Fel: 15.10 bc(1) Előző: 15.10.8 KIFEJEZÉSEK   Index

15.10.9 UTASÍTÁSOK

Az utasítások (mint a legtöbb algebrai nyelvnél) határozzák meg a kifejezések kiértékelésének sorrendjét. A bc-ben az utasítások akkor hajtódnak végre, amint ,,arra mód van''. A végrehajtás akkor történik meg, mikor az interpreter új sor karakterrel találkozik, illetve, mikor egy, vagy több komplett utasítás felépül. Ezen azonnali végrehajtás miatt, az újsorok nagyon fontosak a bc-ben. Valójában, mind a pontosvessző, mind az újsor használható utasításelválasztóként. Egy rossz helyre rakott újsor szintaktikai hibát okoz. Mivel az újsorok utasítás elhatárolók, el lehet őket rejteni, a backslash karakter segítségével. A ,,\<nl>'' karaktersorozattal, ahol az <nl> az újsort jelenti, az újsor csak egy szóközként jelenik meg a bc-ben. Egy utasításlista a pontosvesszővel, vagy újsorral elválasztott utasítások sorozata. Itt következnek a bc utasításai, és az, hogy mit csinálnak: (A szögletes zárójelbe ([]) zárt részek az utasításból elhagyhatóak.)
expression
Ez az utasítás kétféleképpen is megjelenhet. Az egyik, mikor a kifejezés ,,<változó> <értékadás>...'', ez egy értékadási utasítás. Ha a kifejezés nem értékadási utasítás, akkor kiértékelése után a kapott eredmény kiírásra kerül a standard kimenetre. A szám kiírása után egy újsor is kiírásra kerül. Például, az ,,a=l'' egy értékadási utasítás, míg az ,,(a=l)'' egy kifejezés, amelyben van egy értékadás. Minden szám az obase változóban tárolt számrendszer alapján kerül kiírásra. Az obase változó legális értékei 2-től a BC_BASE_MAX konstansban tárolt értékig mehetnek. (Lásd még a HATÁRÉRTÉKEK fejezetet.) A 2-estől a 16-os számrendszerig a számok kiírása a szokásos módon történik. 16-osnál nagyobb számrendszereknél a bc több karakterből álló számjegyeket használ, ahol minden magasabb számrendszerbeli számjegynek a tizes számrendszerbeli számképe íródik ki. A több karakteres számjegyeket egymástól a program szóközökkel választja el. Minden számjegy annyi karakterből áll, amennyi az ,,obase-1'' szám kiírásához kell, 10-es számrendszerben. Mivel a számok változó pontosságúak, előfordulhat, hogy néhány szám kiírása nem fér ki egy sorba. Ezeket a hosszú számokat a program sorokra tördeli, a sorok végén egy-egy ,,\'' karakterrel. Az egy sorba kiírt karakterek maximális száma 70. A bc interaktivitása miatt, az utolsó kiírt számot eltárolja egy speciális változóban. Így az utoljára kiírt szám megkapásához nem szükséges újra leírni az egész kifejezést, hanem csak a last változó értékét kell előszedni. A last változónak értéket is lehet adni, ez esetben a benne tárolt utolsó érték egyszerűen felülíródik. Ez az érték addig marad meg benne, amíg a következő szám kiírásra nem kerül, vagy más értéket nem adnak neki. (Némelyik implementáció megengedi, hogy a last változóra egy egyedüli ponttal (,,.''), amely nem része számnak, hivatkozzunk.)
string
A string a kimenetre íródik ki. A stringek idézőjellel kezdődnek, és bármilyen karaktert tartalmazhatnak a következő idézőjelig. Egyetlen karakter sem kerül értelmezésre, még az újsor karakter sem. A string kiírása után nem íródik ki újsor karakter.
print list
A print utasítás (kiterjesztés), a kiírás egy újabb módozatát kínálja. A,,list'' egy string és kifejezés lista, vesszővel elválasztva. Minden string vagy kifejezés a lista sorrendjében íródik ki. Záró újsor nem íródik ki. A kifejezések kiértékelődnek, és az eredményük a last változóban tárolásra kerül. A stringek pedig egyszerűen kiírásra kerülnek, speciális karaktereket is tartalmazhatnak. A speciális karakterek a backslalsh karakterrel kezdődnek (\). A speciális karakterek a következőek: ,,a'' (figyelmeztetés, vagy bip), ,,b'' (backspace), ,,f'' (lapdobás), ,,n'' (újsor), ,,r'' (kocsi vissza), ,,q'' (idézőjel), ,,t'' (tabulátor) és ,,\'' (backslash). Minden más, a backslash után levő karaktert figyelmen kívül hagy a program.
{utasítás_lista }
Ez egy összetett utasítás. Ennek segítségével lehet több végrehajtandó utasítást egybekapcsolni.
if (kifejezés ) then utasítás1 [else utasítás2]
Az if kiértékeli a kifejezést, és végrehajtja az utasítás1­et, vagy az utasítás2­t, a kifejezés értékétől függően. Ha a kifejezés eredménye nem nulla, az utasítás1 hajtódik végre. Ha az utasítás2 létezik, és a kifejezés eredménye nulla, az utasítás2 hajtódik végre. (Az else ág kiterjesztés.)
while (kifejezés )
utasítás A while utasítás mindaddig végrehajtja az utasítást, amíg a kifejezés eredménye nem nulla. Az utasítás minden végrehajtása előtt kiértékeli a kifejezést. A ciklus akkor fejeződik be, ha a kifejezés eredménye nulla lesz, vagy ha végrehajtódik egy break utasítás. for ([kifejezés1] ; [kifejezés2] ; [kifejezés3] ) utasítás A for utasítás egy utasítás ismételt végrehajtását vezérli. A kifejezés1 a ciklus előtt kiértékelődik. A kifejezés2 az utasítás minden végrehajtása előtt kiértékelődik. Ha nem nulla, az utasítás végrehajtódik, ha nulla, a ciklus véget ér.Azutasítás minden végrehajtása után, a kifejezés3 kiértékelődik, mielőtt a kifejezés2 kiszámolódna. Ha a kifejezés1 és a kifejezés3 hiányzik, a kiértékelődésük helyén semmi nem fog történni. Ha a kifejezés2 hiányzik, az olyan, mintha a kifejezés2 helyén egy olyan kifejezés lenne, amelynek az eredménye mindig 1. (Az opcionális kifejezések egy kiterjesztés.) A következő ekvivalens kódokat ad a for utasításra:
kifejezés1;
while (kifejezés2) {
utasítás;
kifejezés3;
}
break
Ezzel az utasítással ki lehet lépni a legbelső while, vagy for utasításból.
continue
Ez az utasítás (kiterjesztés) azt eredményezi, hogy a legbelső for utasítás egy új ciklust kezd.
halt
Ez az utasítás (kiterjesztés), ha végrehajtódik, azt eredményezi, hogy a bc kilép.
return
Nulla értékkel tér vissza egy függvényből (lásd még a függvények fejezetet).
return (expression )
A kifejezés eredményével tér vissza a függvényből (lásd még a függvények fejezetet).


next up previous index
Következő: 15.10.10 PSZEUDO UTASÍTÁSOK Fel: 15.10 bc(1) Előző: 15.10.8 KIFEJEZÉSEK   Index

1999-09-17