Prozedurak eta funtzioak erabiltzea

Atal honetan LibreOffice Basic-eko prozedura eta funtzioen oinarrizko erabilera deskribatzen da.

Ohar-ikonoa

Modulu berria sortzean, LibreOffice Basic-ek automatikoki txertatzen du "Main" izeneko SUBa. Izen lehenetsi horrek ez dauka zerikusirik LibreOffice Basic proiektuaren ordenarekin edo hasierako puntuarekin. Nahi izanez gero, SUB horri izena aldatu diezaiokezu.


Ohar-ikonoa

Zenbait murrizketa aplikatzen zaizkie aldagai publikoen, azpirrutinen eta funtzioen izenei. Ez erabili liburutegi bereko moduluetako bati dagokion izen bera.


Prozedura (SUB) eta funtzioen (FUNCTION) bidez ikuspegi egituratua eduki dezakezu, programak zati logikoetan zatitzen baitituzte.

Prozedura eta funtzioen abantailetako bat da ataza-osagaiak dituen programa-kodea garatutakoan, kode hori beste proiektu batean erabil dezakezula.

Aldagaiak prozedura (SUB) eta funtzioetara (FUNCTION) pasatzea

Aldagaiak prozedura zein funtzioetara pasa daitezke. SUB edo FUNCTIONa parametroak jasotzeko deklaratu behar da:


Sub SubName(Parameter1 As Type, Parameter2 As Type,...)
Programaren kodea
End Sub

SUBari sintaxi honen bidez deitzen zaio:


SubName(Value1, Value2,...)

SUBari pasatako parametroek SUB deklarazioan zehaztutakoekin bat etorri behar dute.

Prozesu bera aplikatzen zaio FUNCTIONi ere. Horrez gain, funtzioek funtzioaren emaitza ematen dute beti. Funtzioaren emaitza zehazteko, funtzioaren izenari itzulera-balioa esleitzen zaio:


Function FunctionName(Parameter1 As Type, Parameter2 As Type,...) As Type
Programaren kodea
FuntzioarenIzena=Emaitza
End Function

FUNCTIONi sintaxi honen bidez deitzen zaio:


Aldagaia=FuntzioIzena(Parametroa1, Parametroa2,...)
Iradokizun-ikonoa

Prozedura edo funtzioei deitzeko, izen osoa ere erabil dezakezu:
Liburutegia.Modulua.Makroa()
Adibidez, Autotext makroari Gimmicks liburutegitik deitzeko, erabili komando hau:
Gimmicks.AutoText.Main()


Aldagaiak balio edo erreferentzia bidez pasatzea

Parametroak erreferentzia edo balio bidez pasa daitezke SUB edo FUNCTIONetara. Bestelakorik zehazten ez bada, parametroak erreferentzia bidez pasatzen dira beti. Hala, SUBek edo FUNCTIONek parametroa lortzen dute, eta horren balioa irakurri eta alda dezakete.

Parametro bat balio bidez pasatu nahi baduzu, sartu "ByVal" gako-hitza parametroaren aurrean SUB edo FUNCTIONi deitzean, adibidez:


Emaitza = Funtzioa(ByVal parametroa)

Kasu horretan, FUNCTIONek ez du aldatuko parametroaren jatorrizko edukia, balioa bakarrik eskuratzen baitu, eta ez parametroa.

Aldagaien esparrua

SUB edo FUNCTION baten barnean zehaztutako aldagaia baliozkoa da prozeduratik irten arte. Horri aldagai "lokala" deitzen zaio. Kasu askotan, aldagai batek baliozkoa izan behar du prozedura guztietan, liburutegi guztietako modulu guztietan edo SUB edo FUNCTION batetik irten eta gero.

Aldagaiak SUBetik edo FUNCTIONetik kanpo deklaratzea


GLOBAL AldagaiIzena As MotaIzena

Aldagaia baliozkoa da LibreOffice saioak irauten duen bitartean.


Public AldagaiIzena As MOTAIZENA

Aldagaia baliozkoa da modulu guztietan.


Private AldagaiIzena As MOTAIZENA

Aldagaia modulu honetan bakarrik da baliozkoa.


Dim AldagaiIzena As MOTAIZENA

Aldagaia modulu honetan bakarrik da baliozkoa.

Aldagai-pribatuen adibideak

Behartu PRIVATE aldagaiak PRIVATE izatera moduluetan zehar CompatibilityMode(true) ezarriz.


' ***** Module1 *****
Private myText As String
Sub initMyText
    myText = "Hello"
    print "in module1 : ", myText
End Sub
 
' ***** Module2 *****
'Option Explicit
Sub demoBug
    CompatibilityMode( true )
    initMyText
    ' Now kate huts bat ematen du
    ' (edo errorea sortzen du Option Explicit funtziorako)
    print "Now in module2 : ", myText
End Sub

Aldagaiaren edukia SUBetik edo FUNCTIONetik irtendakoan gordetzea


Static AldagaiIzena As MOTAIZENA

Aldagaiak bere balioari eusten dio FUNCTION edo SUBean berriro sartu arte. Deklarazioa SUB edo FUNCTION baten barruan existitu behar da.

FUNCTION baten itzulera-balioaren mota zehaztea

Aldagaietan bezala, sartu motaren deklarazio-karakterea funtzio-izenaren ondoren edo sartu "As" bidez zehaztutako mota eta dagokion gako-hitza parametro-zerrendaren amaieran funtzioaren itzulera-balioaren mota zehazteko. Adibidez:


Function WordCount(WordText As String) As Integer

Emaguzu laguntza!