Eljárások és függvények
Az eljárások és a függvények a programstruktúra fő alapelemei. Segítségükkel egy összetett probléma több alfeladatra osztható.
Eljárások
A Az eljárás végrehajt egy műveletet anélkül, hogy visszaadna értéket. A szintaxisa a következő:
Sub Teszt ' ... ezt itt az eljárás tényeges kódja End Sub
Ez a példa definiál egy Teszt nevű eljárást, amely tartalmaz egy kódot, amely a program bármely pontjáról elérhető. Az eljárás meghívásához az eljárás nevét kell beszúrni a program adott pontján.
Függvények
A A függvény, akárcsak az eljárás, programrészleteket foglal össze egy egységbe. Viszont az eljárással ellentétben, a függvény visszaad egy értéket.
Function Teszt ' ... ez itt a függvény tényeges kódja Teszt = 123 End Function
A visszatérési érték egyszerű értékadással megadható. Az értékadásnak nem kell a függvény végén lennie, bárhol elhelyezhető a függvényen belül.
Az előző függvény a következőképpen hívható meg a programból:
Dim A A = Teszt
Ez a kód definiálja az A változót, majd hozzárendeli a Teszt függvény visszatérési értékét.
A visszatérési érték többször is felülírható a függvényben. Ahogy a klasszikus értékadásnál is, a példában a függvény is azt az értéket adja vissza, amelyet utoljára hozzárendeltek.
Function Teszt Teszt = 12 ' ... Teszt = 123 End Function
Ebben a példában a függvény visszatérési értéke 123.
Ha az értékadás elmarad, a függvény a nulla értéket adja vissza (a 0-s számot numerikus értékeknél és üres értéket karakterláncoknál).
A függvény visszatérési értéke bármilyen típusú lehet. A típust ugyanúgy kell deklarálni, mint a változókat:
Function Teszt As Integer ' ... ez itt a függvény tényeges kódja End Function
Eljárások és függvények megszakítása
In Az Apache OpenOffice Basicben az Exit Sub és az Exit Function paranccsal lehet félbeszakítani egy eljárás vagy függvény végrehajtását annak befejezése előtt, például hibakeresési célból. Ezek a parancsok megállítják az eljárást vagy függvényt, és a program futása visszatér oda, ahonnan az eljárást vagy függvényt meghívták.
A következő példa bemutat egy eljárást, amely megszakad, ha a HibaTortent változó értéke True (igaz).
Sub Teszt Dim HibaTortent As Boolean ' ... If HibaTortent Then Exit Sub End If ' ... End Sub
Paraméterek átadása
A függvényeknek és eljárásoknak átadható egy vagy több paraméter. A paramétereket zárójelbe kell tenni a függvény vagy eljárás neve után. A következő példa definiál egy eljárást, amely egy A egész számot és egy B karakterláncot vár paraméterként.
Sub Teszt (A As Integer, B As String) ' ... End Sub
Az Apache OpenOffice Basicben a paraméterek általában hivatkozásként kerülnek átadásra. A változókon végzett módosítás megmarad, amikor az eljárás vagy függvény kilép:
Sub Teszt Dim A As Integer A = 10 ErtekModositasa(A) ' Az A paraméter értéke most 20 End Sub Sub ErtekModositasa(AzErtek As Integer) AzErtek = 20 End Sub
Ebben a példában a Teszt függvényben definiált A értéket a program átadja paraméterként az ErtekModositasa függvénynek. A program ezután módosítja az értéket 20-ra, és hozzárendeli AzErtek változóhoz, amely megmarad akkor is, amikor a függvény kilép.
Egy paraméter átadható értékként is, ha nem akarjuk, hogy a paraméternek módosuljon az értéke. Ha egy paramétert értékként akarunk átadni, győződjünk meg róla, hogy a ByVal kulcsszót beírjuk a paraméter elé a függvényfejlécben.
Az előző példában, ha módosítjuk az ErtekModositasa függvényt a következőre, akkor az A változó értéke nem fog módosulni. Az ErtekModositasa függvény meghívása után az A változó megtartja a 10 értékét.
Sub ErtekModositasa(ByVal AzErtek As Integer) AzErtek = 20 End Sub
Opcionális paraméterek
A függvények és eljárások csak akkor hívhatók meg, ha minden szükséges paraméter átadásra kerül a hívás során.
Az Apache OpenOffice Basicben definiálhatók opcionális paraméterek is, amelyek ha nincsenek megadva a meghíváskor, akkor azApache OpenOffice Basic üres paramétert ad át helyettük. A következő példában az A paramétert kötelező megadni, viszont a B paraméter opcionális.
Sub Teszt(A As Integer, Optional B As Integer) ' ... End Sub
Az IsMissing függvénnyel ellenőrizhető, hogy egy paraméter megvan-e adva vagy nincs.
Sub Teszt(A As Integer, Optional B As Integer) Dim B_Local As Integer ' Ellenőrzi, hogy a B paraméter meg van-e adva. If Not IsMissing (B) Then B_Local = B ' A B paraméter meg van adva. Else B_Local = 0 ' A B paraméter nincs megadva -> alapértelmezett érték: 0 End If ' ... A tényleges függvény kezdete End Sub
A példaprogram először ellenőrzi, hogy a B paraméter meg van-e adva, és ha igen, az értékét hozzárendeli a B_Local változóhoz. Ha egy adott paraméter nincs megadva, akkor egy alapértelmezett értéket (ebben a példában a 0-t) kap a B_Local változó az átadott paraméter helyett.
Rekurzió
A rekurzív eljárás vagy függvény saját magát hívja meg egészen addig, amíg egy alapfeltétel igazzá nem válik. Ha a függvényt ezzel az alapfeltétellel hívják meg, egy eredményt ad vissza.
A következő példa bemutat egy rekurzív függvényt, amely kiszámolja a 42, -42 és a 3.14 faktoriálisát:
Sub Main Msgbox CalculateFactorial( 42 ) ' Az 1,40500611775288E+51 értéket jeleníti meg Msgbox CalculateFactorial( -42 ) ' Az "Érvénytelen szám faktoriálisszámításhoz!" üzenetet jeleníti meg. Msgbox CalculateFactorial( 3,14 ) ' Az "Érvénytelen szám faktoriálisszámításhoz!" üzenetet jeleníti meg. End Sub Function CalculateFactorial( Number ) If Number < 0 Or Number <> Int( Number ) Then CalculateFactorial = "Érvénytelen szám faktoriálisszámításhoz!" ElseIf Number = 0 Then CalculateFactorial = 1 Else ' Ez a rekurzív függvényhívás: CalculateFactorial = Number * CalculateFactorial( Number - 1 ) Endif End Function
A példaprogram visszaadja 42 faktoriálisát azzal, hogy rekurzívan meghívja a CalculateFactorial függvényt addig, amíg az el nem éri a 0! = 1 alapfeltételt.
![]() |
A használható rekurzív szintek száma a szoftverplatformtól függ. Windowsban a rekurzivitás szintje 5800. Solarisban és Linuxban ez a veremmérettől függ. |
Content on this page is licensed under the Public Documentation License (PDL). |