next up previous index
Következő: 15.10.12 MATEMATIKAI KÖNYVTÁR Fel: 15.10 bc(1) Előző: 15.10.10 PSZEUDO UTASÍTÁSOK   Index

15.10.11 FÜGGVÉNYEK

A függvényekkel definiálhatunk számításokat, amelyeket csak később kívánunk végrehajtani. A függvények a bc-ben mindig egy értéket számolnak, és azt visszaadják a hívónak. A függvénydefiníciója ,,dinamikus'' abban az értelemben, hogy mindaddig definiálatlan, amíg a feldolgozó nem találkozik vele a bemeneten. Ez a definícó mindaddig használható, amíg egy ugyanezen nevű függvénydefinicóval nem találkozik. Az új definíció felülírja a régit. Egy függvény definíciója a következőképpen néz ki:
define name ( parameters ){newline
auto_list statement_list }

A függvényhívás is egy kifejezés, a következő formában: ,,name(parameters)''. A paraméterek számok, vagy tömbök lehetnek (kiterjesztés). A függvénydefinícójában nulla, vagy több paraméter definiálható, vesszővel elválasztva. A számok csak érték szerinti átadással, a tömbök csak cím szerinti átadással hívódnak meg. A tömböket a paraméterek között a ,,név[]'' módon kell specifikálni. A függvényhívásnál a szám paraméterek teljes kifejezések lehetnek. A tömböknél ugyanaz a jelölés használandó, mint a definiáláskor. A nevesített tömbök cím szerinti átadással kerülnek a függvényhez. Mivel a függvény definíciója dinamikus, a paraméterek száma és típusa csak a hívás pillanatában kerül ellenőrzésre. Ha ebben eltérés mutatkozik, egy futási­hiba váltódik ki. Futási-hiba váltódik ki akkor is, ha egy nem létező függvényt hívunk meg.

Az auto_list egy opcionális változó lista, amely ,,helyi'' változókat tartalmazza. A szintaxisa: ,,auto név,...;''. (A pontosvessző opcionális.) Minden név egy auto változó neve. Tömbök is definiálhatóak így, a szokásos módon. Ezek a változók a vermen kapnak helyet, a függvény belépése után. A változók ezután inicializálásra kerülnek nulla kezdőértékkel, és a függvény végrehajtása során használhatóak. Amikor a függvény kilép, ezeket a változókat eltávolítja a veremből, így az eredeti értékük helyreállítódik. A paraméterek is auto változók, amelyek a függvény meghívásakor kapják meg értéküket. Az auto változók különböznek a tradícionális helyi változóktól a következő dologban: ha A meghívja a B függvényt, B látja az A auto változóit, hacsak B­ben nincs ugyanezen néven is auto változó definiálva. Azon tény miatt, hogy az auto változók és a paraméterek egy vermen kapnak helyet, a bc kezeli a rekurzív függvényeket is. A függvénytörzse bc utasítások listája. Az utasításokat pontosvesszők, vagy újsorok választják el. A return utasítás hatására a függvény végrehajtása véget ér, és visszatér egy értékkel. Az első forma, a ,,return'', 0­át ad vissza a hívónak, míg a második, ,,return(kifejezés )'', kiértékeli a kifejezést, és az eredményt adja vissza. A függvény végén, ha mást nem írunk ki, mindig van egy ,,return(0)'', ez megkímél attól, hogy explicite ki kelljen írni a return utasítást.

A függvényeknél megváltozik az ibase változó használata is. A függvény törzsében szereplő minden konstans, a függvény hívásakor használatos ibase alapján konvertálódik. Ha az ibase-t megváltoztatjuk egy függvényben, annak nem lesz hatása, kivéve a read standard függvényt, amely mindig az ibase aktuális értékét használja a számok konvertálásához.


next up previous index
Következő: 15.10.12 MATEMATIKAI KÖNYVTÁR Fel: 15.10 bc(1) Előző: 15.10.10 PSZEUDO UTASÍTÁSOK   Index

1999-09-17