Programozás Pascalban: Eljárások használata - 16. rész, Az eljárás típus
Készítette: FlamingClaw 2010. június 10. 12:31:42 - 2547 megtekintés
Ebben a tippben az eljárás típussal ismerkedünk meg. Mivel elég kevés információ található az interneten erről a típusról így megpróbáltam összefoglalni a lényeget. Megnézzük, hogy mi is ez a típus valójában és hogyan illetve mire tudjuk használni.
Amire szükségünk van
Pascal
Az eljárás típus
Az eljárás paraméterlistáján függvény és eljárás is szerepelhet. Alapfeltétel, hogy létre kell hozni a megfelelő függvény- vagy eljárás típust, mint az összetett típusok esetében. A type résznél el kell látnunk egy azonosítóval az eljárást, és meg kell adnunik a function, illetve procedure foglalt szót. Függvény esetén a visszatérő típust is.
Függvénytípusnál szem előtt kell tartani, hogy a függvénytípus csak sorszámozott, valós, string vagy pointer lehet.
Paraméterként megadandó alprogramokat a $F+ fordítási direktívával kell fordítani, ami azt jelenti, hogy a type részben létrehozzuk az új típust, és ehhez a típushoz mindenféleképpen kell tartozzon egy függvény a deklarációs részben.
A Turbo Pascal 6.0-ás verziójától kezdődően az $F+ fordítási direktívák helyett lehet használni a FAR direktívát a függvényhívás módjának kijelölésére.
Az eljárások és függvények értékül adhatók változóknak is.
Értékadáskor, illetve paraméter-átadáskor csak a függvénynevet kell megadni. A típusoknak meg kell egyezniük, paraméter esetén azonos típusok kellenek, illetve a függvény eredménytípusával meg kell, hogy egyezzen.
A tárolás: egy eljárás típusú változó egy eljárás, vagy függvény 4 bájtos címét tartalmazza. Vagyis egy mutató, amely eljárás vagy függvény memóriacímére mutat. A cím duplaszó. A duplaszó felső szava a szegmens, az alsó az eltolás. Mindkét szó alsó-felső bájt sorrendben kerül tárolásra.
A @ operátort, illetve az ADDR függvényt eljárás típusú változóra alkalmazzuk, akkor a változó értékét, vagyis a függvény vagy eljárás címét kapjuk vissza. Ha az eljárás típusú változó memóriacímét szeretnénk megkapni, akkor a @ operátort, illetve az adott függvényt kétszer kell alkalmazni.