Περιεχόμενα
Δείκτης 🔎︎

# Χρήση των διαδικασιών και των συναρτήσεων

Παρακάτω περιγράφεται η βασική χρήση των διαδικασιών και των συναρτήσεων στην LibreOffice Basic.

Όταν δημιουργείτε ένα νέο άρθρωμα, η LibreOffice Basic εισάγει αυτόματα μία SUB με το όνομα "Main". Αυτό το προεπιλεγμένο όνομα δεν έχει καμία σχέση με τη σειρά ή τo αρχικό σημείο ενός έργου της LibreOffice Basic. Μπορείτε επίσης ακίνδυνα να μετονομάσετε την SUB.

Μερικοί περιορισμοί εφαρμόζονται για τα ονόματα των δημόσιων μεταβλητών σας, υποδιαδικασιών και συναρτήσεων. Δεν πρέπει να χρησιμοποιήσετε το ίδιο όνομα με ένα από τα αρθρώματα της ίδιας βιβλιοθήκης.

Οι διαδικασίες (SUBS) και οι συναρτήσεις (FUNCTIONS) σας βοηθούν να διατηρείτε μια δομημένη επισκόπηση του κώδικα με τον χωρισμό ενός προγράμματος σε λογικά τμήματα.

Ένα πλεονέκτημα των διαδικασιών και των συναρτήσεων είναι ότι, μόλις αναπτύξετε έναν κώδικα προγράμματος που περιέχει τμήματα εργασιών, μπορείτε να χρησιμοποιήσετε αυτόν τον κώδικα και σε ένα άλλο έργο.

## Μεταβίβαση μεταβλητών σε διαδικασίες (SUB) και συναρτήσεις (FUNCTION)

Οι μεταβλητές μπορούν να μεταβιβαστούν και στις διαδικασίες και στις συναρτήσεις. Η SUB ή η FUNCTION πρέπει να δηλωθούν ώστε να αναμένουν τις παραμέτρους:

    Sub SubName(Parameter1 As Type, Parameter2 As Type,...)
    Κώδικας προγράμματος
    End Sub

Η SUB καλείται χρησιμοποιώντας την παρακάτω σύνταξη:

    SubName(Value1, Value2,...)

Οι παράμετροι που μεταβιβάζονται σε μια SUB πρέπει να ταιριάζουν με αυτές που ορίζονται στη δήλωση SUB.

Η ίδια διαδικασία ισχύει στις FUNCTIONS. Επιπλέον, οι συναρτήσεις επιστρέφουν πάντα ένα αποτέλεσμα. Το αποτέλεσμα μιας συνάρτησης καθορίζεται με την ανάθεση της τιμής επιστροφής στο όνομα της συνάρτησης:

    Function FunctionName(Parameter1 As Type, Parameter2 As Type,...) As Type
    Κώδικας προγράμματος
    FunctionName=Αποτέλεσμα
    End Function

Η FUNCTION καλείται χρησιμοποιώντας την ακόλουθη σύνταξη:

    Variable=ΌνομαΣυνάρτησης(παράμετρος1, παράμετρος2,...)

Μπορείτε επίσης να χρησιμοποιήσετε το πλήρες ειδικό όνομα για να καλέσετε μια διαδικασία ή μια συνάρτηση:
Library.Module.Macro()
Παραδείγματος χάρη, για να καλέσετε την μακροεντολή Autotext από την βιβλιοθήκη Gimmicks, χρησιμοποιήστε την ακόλουθη εντολή:
Gimmicks.AutoText.Main()

## Μεταβίβαση μεταβλητών ως τιμής ή ως αναφοράς

Οι παράμετροι μπορούν να μεταβιβαστούν σε μία SUB ή FUNCTION είτε με αναφορά είτε με τιμή. Εκτός και ορίζεται διαφορετικά, μια παράμετρος μεταβιβάζεται πάντα με αναφορά. Αυτός σημαίνει ότι μία SUB ή μία FUNCTION παίρνει την παράμετρο και μπορεί να διαβάσει και να τροποποιήσει την τιμή της.

Εάν θέλετε να περάσετε μια παράμετρο με τιμή εισάγετε τη λέξη κλειδί "ByVal" μπροστά από την παράμετρο όταν καλείτε μία SUB ή μία FUNCTION, παραδείγματος χάρη:

    Result = Function(ByVal Parameter)

Σε αυτήν την περίπτωση, το αρχικό περιεχόμενο της παραμέτρου δεν θα τροποποιηθεί από την FUNCTION δεδομένου ότι παίρνει μόνο την τιμή και όχι η ίδια την παράμετρο.

## Εμβέλεια των μεταβλητών

Μια μεταβλητή που καθορίζεται μέσα σε μία SUB ή μία FUNCTION, παραμένει έγκυρη έως ότου τερματιστεί η διαδικασία. Αυτή η μεταβλητή είναι γνωστή ως "τοπική" μεταβλητή. Σε πολλές περιπτώσεις, χρειάζεστε μια μεταβλητή να είναι έγκυρη σε όλες τις διαδικασίες, σε κάθε άρθρωμα όλων των βιβλιοθηκών, ή μετά την έξοδο μίας SUB ή μίας FUNCTION.

### Δήλωση μεταβλητών εκτός SUB ή FUNCTION

    Global VarName As TYPENAME

Η μεταβλητή ισχύει όσο η συνεδρία του LibreOffice διαρκεί.

    Public VarName As TYPENAME

Η μεταβλητή είναι έγκυρη σε όλα τα αρθρώματα.

    Private VarName As TYPENAME

Η μεταβλητή ισχύει μόνο σε αυτό το άρθρωμα.

    Dim VarName As TYPENAME

Η μεταβλητή ισχύει μόνο σε αυτό το άρθρωμα.

### Παράδειγμα για τις ιδιωτικές μεταβλητές

Επιβολή στις ιδιωτικές μεταβλητές να είναι ιδιωτικές σε όλα τα αρθρώματα με τη ρύθμιση CompatibilityMode(true).

    ' ***** Module1 *****
    Private myText As String
    Sub initMyText
        myText = "Hello"
        print "in module1 : ", myText
    End Sub

    ' ***** Module2 *****
    'Option Explicit
    Sub demoBug
        CompatibilityMode( true )
        initMyText
        ' Τώρα επιστρέφει κενή συμβολοσειρά
        ' (ή δημιουργεί σφάλμα για Option Explicit (ρητή επιλογή))
        print "Now in module2 : ", τοΚείμενοΜου
    End Sub

### Αποθήκευση περιεχομένων μεταβλητής μετά την έξοδο από SUB ή FUNCTION

    Static VarName As TYPENAME

Η μεταβλητή διατηρεί την τιμή της μέχρι την επόμενη φορά που εισέρχεται η FUNCTION ή η SUB. Η δήλωση πρέπει να υπάρχει μέσα σε μια SUB ή FUNCTION.

## Καθορισμός του τύπου τιμής επιστροφής μιας FUNCTION

Όπως με τις μεταβλητές, περιλάβετε έναν χαρακτήρα τύπου-δήλωσης μετά το όνομα της συνάρτησης, ή τον τύπο που υποδεικνύεται από το "As" και η αντίστοιχη λέξη κλειδί στο τέλος της λίστας παραμέτρων για να καθορίσετε τον τύπο της τιμής επιστροφής της συνάρτησης, παραδείγματος χάρη:

    Function WordCount(WordText As String) As Integer