Περιεχόμενα

# Χρήση μεταβλητών

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

## Συμβάσεις ονοματοδοσίας για τα αναγνωριστικά μεταβλητών

Το όνομα μιας μεταβλητής μπορεί να αποτελείται το πολύ από 255 χαρακτήρες. Ο πρώτος χαρακτήρας του ονόματος μιας μεταβλητής πρέπει να είναι κάποιο γράμμα από A-Z ή από a-z. Μπορούν επίσης να χρησιμοποιηθούν και αριθμοί στο όνομα μιας μεταβλητής, ωστόσο δεν επιτρέπεται η χρήση σημείων στίξης και ειδικών χαρακτήρων, με εξαίρεση του χαρακτήρα υπογράμμισης ("_"). Στο LibreOffice Basic τα αναγνωριστικά μεταβλητής δεν κάνουν διάκριση πεζών-κεφαλαίων. Τα ονόματα μεταβλητών μπορούν να περιέχουν κενά, αλλά τότε θα πρέπει να περικλείονται σε αγκύλες.

Παραδείγματα για τα αναγνωριστικά μεταβλητών:

        MyNumber=5      'Σωστό'
        MyNumber5=15    'Σωστό'
        MyNumber_5=20   'Σωστό'
        My Number=20    'Μη έγκυρο, μεταβλητή με κενό πρέπει να περικλείεται σε αγκύλες'
        [My Number]=12  'Σωστό'
        DéjàVu=25       'Μη έγκυρο, δεν επιτρέπονται ειδικοί χαρακτήρες'
        5MyNumber=12    'Μη έγκυρο, η μεταβλητή δεν πρέπει να αρχίζει με αριθμό'
        Number,Mine=12  'Μη έγκυρο, δεν επιτρέπονται σημεία στίξης'

## Δηλώσεις μεταβλητών

Στη LibreOffice Basic, δεν χρειάζεται να δηλώσετε ρητά τις μεταβλητές. Η δήλωση της μεταβλητής μπορεί να γίνει με την πρόταση Dim. Μπορείτε να δηλώσετε περισσότερες από μία μεταβλητές κάθε φορά, διαχωρίζοντάς τα ονόματά τους με κόμμα. Για να καθορίσετε τον τύπο της μεταβλητής, χρησιμοποιήστε ένα σύμβολο δήλωσης τύπου μετά το όνομα ή την κατάλληλη λέξη-κλειδί.

Παραδείγματα για τις δηλώσεις μεταβλητών:

        Dim a$               'Δηλώνει τη μεταβλητή "a" ως συμβολοσειρά'
        Dim a As String      'Δηλώνει τη μεταβλητή "a" ως συμβολοσειρά'
        Dim a$, b As Integer 'Δηλώνει μία μεταβλητή ως συμβολοσειρά και μία ως ακέραιο'
        Dim c As Boolean     'Δηλώνει c ως μεταβλητή Μπουλ που μπορεί να είναι TRUE ή FALSE'

Αφού δηλώσετε μια μεταβλητή με συγκεκριμένο τύπο, δεν μπορείτε να δηλώσετε την μεταβλητή με το ίδιο όνομα ξανά ως διαφορετικό τύπο!

Όταν δηλώνετε πολλές μεταβλητές σε μία γραμμή κώδικα, πρέπει να καθορίσετε τον τύπο κάθε μεταβλητής. Εάν ο τύπος μιας μεταβλητής δεν καθορίζεται ρητά, τότε η Basic θα υποθέσει ότι η μεταβλητή είναι του τύπου Variant (παραλλαγή).

      Και οι δύο μεταβλητές "a" και "b" είναι τύπου Integer (ακέραιος)
      Dim a As Integer, b As Integer
      ' Η μεταβλητή "c" είναι μια μεταβλητή και η "d" είναι ένας ακέραιος αριθμός
      Dim c, d As Integer
      ' Μια μεταβλητή μπορεί επίσης να δηλωθεί ρητά ως παραλλαγή
      Dim e As Variant, f As Double

Ο τύπος Variant (παραλλαγή) είναι ένας ειδικός τύπος δεδομένων που μπορεί να αποθηκεύσει κάθε είδους τιμή. Για να μάθετε περισσότερα, ανατρέξτε στην ενότητα Ο τύπος παραλλαγής παρακάτω.

### Επιβάλλοντας την δήλωση μεταβλητών

Για να επιβάλετε τη δήλωση των μεταβλητών, χρησιμοποιήστε την ακόλουθη εντολή:

    Option Explicit

Η πρόταση Option Explicit πρέπει να είναι η πρώτη γραμμή της ενότητας, πριν από την πρώτη SUB. Γενικά, μόνο οι πίνακες πρέπει να δηλωθούν ρητά. Όλες οι άλλες μεταβλητές δηλώνονται σύμφωνα με το χαρακτήρα δήλωσης τύπου, ή - εάν παραλείπεται - ως ο προεπιλεγμένος τύπος Single.

## Τύποι μεταβλητών

Η LibreOffice Basic υποστηρίζει τέσσερις κλάσεις μεταβλητών:

- Οι Αριθμητικές μεταβλητές μπορούν να περιέχουν τιμές αριθμού. Μερικές μεταβλητές χρησιμοποιούνται για να αποθηκεύουν μεγάλους ή μικρούς αριθμούς και άλλες χρησιμοποιούνται για αριθμούς κινητής υποδιαστολής ή κλασματικούς αριθμούς.

- Οι μεταβλητές συμβολοσειράς περιέχουν τις συμβολοσειρές χαρακτήρων.

- Οι μεταβλητές Μπουλ περιέχουν είτε την τιμή TRUE είτε την τιμή FALSE.

- Οι μεταβλητές Object μπορούν να αποθηκεύουν αντικείμενα διάφορων τύπων, όπως πίνακες και έγγραφα μέσα σε ένα έγγραφο.

### Ακέραιες μεταβλητές

Οι ακέραιες μεταβλητές κυμαίνονται από -32768 έως 32767. Εάν ορίζετε μια τιμή κινητής υποδιαστολής σε μια μεταβλητή ακέραιου, οι δεκαδικές θέσεις στρογγυλοποιούνται στον επόμενο ακέραιο. Οι μεταβλητές ακέραιων υπολογίζονται γρήγορα στις διαδικασίες και είναι κατάλληλες για μεταβλητές μετρητών στους βρόχους. Μια μεταβλητή ακέραιου απαιτεί μόνο δύο ψηφιολέξεις μνήμης. Το "%" είναι ο χαρακτήρας δήλωσης τύπου.

    Dim Variable%
    Dim Variable As Integer

### Μεταβλητές ακεραίων μεγάλου μήκους

Οι μεγάλες ακέραιες μεταβλητές περιλαμβάνουν τους αριθμούς από -2147483648 έως 2147483647. Εάν ορίζετε μια τιμή κινητής υποδιαστολής σε μεταβλητή μεγάλου ακέραιου, οι δεκαδικές θέσεις στρογγυλεύονται στον επόμενο ακέραιο. Οι μεταβλητές μεγάλων ακέραιων υπολογίζονται γρήγορα στις διαδικασίες και είναι κατάλληλες ως μεταβλητές μετρητών σε βρόχους για μεγάλες τιμές. Μια μεταβλητή μεγάλου ακέραιου απαιτεί τέσσερις ψηφιολέξεις της μνήμης. Το "&" είναι ο χαρακτήρας δήλωσης τύπου.

    Dim Variable&
    Dim Variable As Long

### Δεκαδικές μεταβλητές

Οι δεκαδικές μεταβλητές μπορούν να πάρουν θετικούς ή αρνητικούς αριθμούς ή το μηδέν. Η ακρίβεια είναι μέχρι 29 ψηφία.

Μπορείτε να χρησιμοποιήσετε τα πρόσημα συν (+) ή μείον (-) ως προθέματα για δεκαδικούς αριθμούς (με ή χωρίς κενά).

Εάν ένας δεκαδικός αριθμός ανατεθεί σε μια μεταβλητή ακέραιου, η LibreOffice Basic στρογγυλεύει τον αριθμό προς τα πάνω ή προς τα κάτω.

### Μεταβλητές απλής ακριβείας

Οι απλές μεταβλητές μπορούν να πάρουν θετικές ή αρνητικές τιμές από 3,402823 x 10E38 έως 1,401298 x 10E-45. Οι απλές μεταβλητές είναι μεταβλητές κινητής υποδιαστολής, στις οποίες η δεκαδική ακρίβεια μειώνεται καθώς το μη δεκαδικό τμήμα των αριθμών αυξάνεται. Οι απλές μεταβλητές είναι κατάλληλες για μαθηματικούς υπολογισμούς ακρίβειας μέσου όρου. Οι υπολογισμοί απαιτούν περισσότερο χρόνο από τις ακέραιες μεταβλητές, αλλά είναι πιο γρήγορες από τους υπολογισμούς με διπλές μεταβλητές. Οι απλές μεταβλητές απαιτούν 4 ψηφιολέξεις (bytes) μνήμης. Ο χαρακτήρας δήλωσης τύπου είναι "!".

    Dim Variable!
    Dim Variable As Single

### Μεταβλητές διπλής ακριβείας

Οι διπλές μεταβλητές μπορούν να πάρουν θετικές ή αρνητικές τιμές από 1,79769313486232 x 10E308 έως 4,94065645841247 x 10E-324. Οι διπλές μεταβλητές είναι μεταβλητές κινητής υποδιαστολής, στις οποίες η δεκαδική ακρίβεια μειώνεται, καθώς το μη δεκαδικό τμήμα του αριθμού αυξάνει. Οι διπλές μεταβλητές είναι κατάλληλες για ακριβείς υπολογισμούς. Οι υπολογισμοί χρειάζονται περισσότερο χρόνο από τις απλές μεταβλητές. Μια διπλή μεταβλητή χρειάζεται 8 ψηφιολέξεις (bytes) μνήμης. Ο χαρακτήρας δήλωσης τύπου είναι "#".

    Dim Variable#
    Dim Variable As Double

### Μεταβλητές νομίσματος

Οι μεταβλητές νομίσματος είναι εσωτερικά αποθηκευμένες ως αριθμοί 64 δυαδικών ψηφίων (8 ψηφιολέξεις) και εμφανίζονται ως σταθεροί δεκαδικοί αριθμοί με 15 μη-δεκαδικές και 4 δεκαδικές θέσεις. Οι τιμές κυμαίνονται από -922337203685477,5808 έως +922337203685477,5807. Οι μεταβλητές νομίσματος χρησιμοποιούνται για να υπολογίσουν νομισματικές τιμές με υψηλή ακρίβεια. Ο χαρακτήρας δήλωσης τύπου είναι "@".

    Dim Variable@
    Dim Variable As Currency

### Κυριολεκτικά για ακέραιους

Οι αριθμοί μπορούν να κωδικοποιούνται χρησιμοποιώντας οκταδικές και δεκαεξαδικές μορφές.

      xi = &o13 '    8 + 3
      ci = &h65 ' 6*16 + 5
      MAX_Integer =  &o77777 '  32767 = &h7FFF
      MIN_Integer = &o100000 ' -32768 = &h8000
      MAX_Long = &h7fffffff '  2147483647 = &o17777777777
      MIN_Long = &h80000000 ' -2147483648 = &o20000000000

### Μεταβλητές συμβολοσειράς

Οι μεταβλήτές συμβολοσειράς μπορούν να κρατήσουν συμβολοσειρές χαρακτήρων μέχρι 2.147.483.648 χαρακτήρες. Κάθε χαρακτήρας αποθηκεύεται ως η αντίστοιχη τιμή Unicode. Οι μεταβλητές συμβολοσειράς είναι κατάλληλες για επεξεργασία λέξεων μέσα σε προγράμματα και προσωρινή αποθήκευση οποιουδήποτε μη εκτυπώσιμου χαρακτήρα μέχρι μέγιστο μήκος 2 Gbytes. Η απαιτούμενη μνήμη για αποθήκευση μεταβλητών συμβολοσειράς εξαρτάται από τον αριθμό των χαρακτήρων στη μεταβλητή. Η δήλωση τύπου χαρακτήρα είναι "$".

Στις συναρτήσεις συμβολοσειράς BASIC, ο πρώτος χαρακτήρας της συμβολοσειράς έχει δείκτη 1.

    Dim Variable$
    Dim Variable As String

### Μεταβλητές Μπουλ

Οι μεταβλητές Μπουλ κρατούν μόνο μια από τις δύο τιμές: TRUE (Αληθές) ή FALSE (Ψευδές). Ο αριθμός 0 αξιολογείται ως FALSE, κάθε άλλη τιμή αξιολογείται ως TRUE.

    Dim Variable As Boolean

### Μεταβλητές ημερομηνίας

Οι μεταβλητές ημερομηνίας μπορούν μόνο να περιέχουν ημερομηνίες και χρονικές τιμές που αποθηκεύονται με μία προκαθορισμένη μορφή. Τιμές που αποδίδονται σε μεταβλητές ημερομηνίας με τις Dateserial (σειριακή ημερομηνία), Datevalue (τιμή ημερομηνίας), Timeserial (σειριακό χρόνο) ή Timevalue (τιμή χρόνου) μετατρέπονται αυτόματα στην εσωτερική μορφή. Οι μεταβλητές ημερομηνίας μετατρέπονται σε κανονικούς αριθμούς με τη χρήση των συναρτήσεων Day, Month, Year ή των Hour, Minute, Second. Η εσωτερική μορφή ενεργοποιεί μια σύγκριση των τιμών ημερομηνίας/χρόνου με τον υπολογισμό της διαφοράς μεταξύ των δύο αριθμών. Αυτές οι μεταβλητές μπορούν μόνο να δηλωθούν με τη λέξη κλειδί Date.

    Dim Variable As Date

### Κυριολεκτικά ημερομηνιών

Τα κυριολεκτικά ημερομηνίας επιτρέπουν να καθορίσετε σαφείς μεταβλητές ημερομηνίας που είναι ανεξάρτητες από την τρέχουσα γλώσσα. Τα κυριολεκτικά περιβάλλονται μεταξύ συμβόλων κατακερματισμού #. Οι πιθανές μορφές είναι:

- #yyyy-mm-dd#

- #mm/dd/yyyy#

      start_date = #12/30/1899# ' = 1
      dob = #2010-09-28#

## Ο τύπος Variant (παραλλαγή)

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

Υπάρχουν τρεις κύριοι τρόποι για να δημιουργήσετε μια μεταβλητή Variant (παραλλαγή), όπως φαίνεται παρακάτω:

      Dim varA ' Ο τύπος δεν έχει καθοριστεί, επομένως η μεταβλητή είναι Variant (παραλλαγή)
      Dim varB as Variant ' Η μεταβλητή δηλώνεται ρητά ως παραλλαγή
      varC = "abc" ' Οι μεταβλητές που δεν δηλώθηκαν προηγουμένως αντιμετωπίζονται ως Παραλλαγές

Το παρακάτω παράδειγμα χρησιμοποιεί τη συνάρτηση TypeName για να δείξει πώς αλλάζει ο τύπος μιας μεταβλητής Variant (παραλλαγή) κατόπιν ανάθεσης.

      Dim myVar As Variant
      MsgBox TypeName(myVar) ' Empty
      myVar = "Hello!"
      MsgBox TypeName(myVar) ' String
      myVar = 10
      MsgBox TypeName(myVar) ' Integer

Μια μεταβλητή Variant (παραλλαγή) προετοιμάζεται με τον ειδικό τύπο δεδομένωνEmpty. Μπορείτε να χρησιμοποιήσετε τη συνάρτηση IsEmpty για να ελέγξετε εάν μια μεταβλητή είναι Empty Variant (Κενή παραλλαγή).

Μπορείτε επίσης να χρησιμοποιήσετε τη λέξη-κλειδί Any (Οποιοδήποτε) για να δηλώσετε μια μεταβλητή ως Variant (Παραλλαγή). Ωστόσο, το Any (Οποιοδήποτε) έχει καταργηθεί και είναι διαθέσιμο για συμβατότητα προς τα πίσω.

Oρίσματα με τύπο Variant ή Any που μεταβιβάζονται στις κλήσεις συναρτήσεων δεν ελέγχονται για τους τύπους τους.

      Dim myVar As Any ' H μεταβλητή "myVar" είναι μια παραλλαγή

## Αρχικές τιμές μεταβλητών

Μόλις η μεταβλητή δηλωθεί, αποκτά αυτόματα την τιμή "Null". Σημειώστε τις ακόλουθες συμβάσεις:

Στις μεταβλητές Numeric (αριθμητικές) ανατίθεται αυτόματα η τιμή "0" μόλις δηλωθούν.

Στις Date variables (μεταβλητές ημερομηνίας) αποδίδεται η τιμή 0 εσωτερικά· ισοδυναμεί με τη μετατροπή σε τιμή "0" με τις συναρτήσεις Day, Month, Year ή με τις συναρτήσεις Hour, Minute, Second.

Οι μεταβλητές συμβολοσειράς αποκτούν αυτόματα την τιμή της κενής συμβολοσειράς ("") όταν δηλώνονται.

## Πίνακες

Η LibreOffice Basic χρησιμοποιεί μονοδιάστατους ή πολυδιάστατους πίνακες, οι οποίοι προσδιορίζονται από ένα συγκεκριμένο τύπο μεταβλητής. Οι πίνακες είναι κατάλληλοι για την επεξεργασία καταλόγων και πινάκων σε προγράμματα. Ατομικά στοιχεία ενός πίνακα μπορούν να προσπελαστούν μέσω ενός αριθμητικού δείκτη.

Οι πίνακες πρέπει να δηλώνονται με την χρήση της πρότασης Dim. Υπάρχουν διάφοροι τρόποι να καθοριστεί η περιοχή δεικτών ενός πίνακα:

        Dim Text$(20)       '21 στοιχεία αριθμημένα από 0 έως 20'
        Dim Text$(5,4)      '30 στοιχεία (πίνακας 6 x 5 στοιχείων)'
        Dim Text$(5 To 25)  '21 στοιχεία αριθμημένα από 5 έως 25'
        Dim Text$(-15 To 5) '21 στοιχεία (συμπεριλαμβανόμενου του 0), αριθμημένα από -15 έως 5'

Η περιοχή δεικτών μπορεί να περιλάβει θετικούς καθώς επίσης και αρνητικούς αριθμούς.

## Σταθερές

Οι σταθερές έχουν μια σταθερή τιμή. Ορίζονται μόνο μία φορά στο πρόγραμμα και δεν μπορούν να επαναπροσδιοριστούν αργότερα:

    Const ConstName=Expression

Σχετικά θέματα

Σταθερές Basic

Δήλωση Dim