Ús de procediments i de funcions

A continuació es descriu l'ús bàsic de procediments i funcions al LibreOffice Basic.

Icona de nota

Quan creeu un mòdul nou, el LibreOffice Basic insereix automàticament una SUB denominada "Main". Este nom per defecte no té res a veure amb l'orde ni amb el punt d'inici d'un projecte del LibreOffice Basic. Podeu canviar el nom d'esta SUB amb seguretat.


Icona de nota

S'apliquen certes restriccions per als noms de les variables, subs i funcions públiques. No podeu utilitzar el mateix nom que un mòdul de la mateixa biblioteca.


Els procediments (SUBS) i les funcions (FUNCTIONS) vos ajuden a mantindre una visió general estructurada separant un programa en parts lògiques.

Un avantatge dels procediments i de les funcions és que, un cop heu desenvolupat un codi de programa que conté components de tasca, podeu utilitzar este codi en un altre projecte.

Pas de variables a procediments (SUB) i funcions (FUNCTION)

Les variables es poden passar tant a procediments com a funcions. La SUB o FUNCTION s'ha de declarar perquè esperi els paràmetres:


Sub SubName(Parameter1 As Type, Parameter2 As Type,...)
Codi de programa
End Sub

La SUB es crida mitjançant la sintaxi següent:


SubName(Value1, Value2,...)

Els paràmetres passats a una SUB han d'ajustar-se als especificats a la declaració de SUB.

El mateix procés és aplicable a FUNCTIONS. A més, les funcions sempre retornen un resultat de funció. El resultat d'una funció es defineix assignant el valor de retorn al nom de la funció:


Function FunctionName(Parameter1 As Type, Parameter2 As Type,...) As Type
Codi de programa
FunctionName=Result
End Function

La FUNCTION es crida mitjançant la sintaxi següent:


Variable=FunctionName(Parameter1, Parameter2,...)
Icona de consell

També podeu utilitzar el nom complet per cridar un procediment o una funció:
Biblioteca.Mòdul.Macro()
Per exemple, per a cridar la macro Autotext des de la biblioteca Gimmicks, utilitzeu l'orde següent:
Gimmicks.AutoText.Main()


Pas de variables per valor o referència

Els paràmetres es poden passar a una SUB o a una FUNCTION per referència o per valor. A menys que s'indiqui el contrari, un paràmetre sempre es passa per referència. Això significa que una SUB o una FUNCTION obté el paràmetre i pot llegir-ne i modificar-ne el valor.

Si voleu passar un paràmetre per valor, inseriu la paraula clau "ByVal" davant del paràmetre quan crideu una SUB o FUNCTION, per exemple:


Resultat = Funció(ByVal Paràmetre)

En este cas, el contingut original del paràmetre no es modificarà amb la FUNCTION perquè només obté el valor i no el mateix paràmetre.

Àmbit de variables

Una variable definida entre una SUB o FUNCTION, només serà vàlida fins que no se isca del procediment. Això es coneix com a variable "local". En molts casos, necessiteu que una variable siga vàlida en tots els procediments, en tots els mòduls de totes les biblioteques, o després de eixir d'una SUB o FUNCTION.

Declaració de variables fora d'una SUB o FUNCTION


Global VarName As TYPENAME

La variable és vàlida mentre duri la sessió del LibreOffice.


Public VarName As TYPENAME

La variable és vàlida a tots els mòduls.


Private VarName As TYPENAME

La variable només és vàlida en este mòdul.


Dim VarName As TYPENAME

La variable només és vàlida en este mòdul.

Exemple de variables privades

Forceu que les variables privades siguen privades entre mòduls establint CompatibilityMode(true).


' ***** Module1 *****
Private myText As String
Sub initMyText
    myText = "Hola"
    Print "al mòdul1 : ", myText
End Sub
 
' ***** Module2 *****
'Option Explicit
Sub demoBug
    CompatibilityMode( true )
    initMyText
    ' Torna una cadena buida
    ' (or raises error for Option Explicit)
    Print "Ara al mòdul2 : ", myText
End Sub

Com guardar el contingut d'una variable després d'eixir d'una SUB o FUNCTION


Static VarName As TYPENAME

La variable manté el seu valor fins a la propera vegada que s'introdueix la FUNCTION o la SUB. La declaració ha d'existir a dins d'una SUB o FUNCIÓ.

Especificació del tipus de valor de retorn d'una FUNCTION

Igual que amb les variables, heu d'incloure el caràcter de declaració de tipus després del nom de la funció, o el tipus indicat per "As" i la paraula clau corresponent al final de la llista de paràmetres per definir el tipus de valor de retorn de la funció, per exemple:


Function WordCount(WordText As String) As Integer

Ens cal la vostra ajuda!