Contenuto

# Usare le variabili

Questa sezione descrive gli usi principali delle variabili di LibreOffice Basic.

## Convenzioni per i nomi delle variabili

I nomi delle variabili possono contenere fino a un massimo di 255 caratteri. Il primo carattere deve essere una lettera da A a Z maiuscola o minuscola. È possibile usare anche i numeri, mentre i simboli di punteggiatura e i caratteri speciali non sono permessi, fatta eccezione per il trattino di sottolineatura ("_"). In LibreOffice Basic, gli identificativi delle variabili non fanno differenza tra maiuscole e minuscole. I nomi delle variabili possono contenere spazi vuoti, ma in tal caso devono essere racchiusi tra parentesi quadre.

Esempi di identificativi di variabili:

        MyNumber=5      'Corretta'
        MyNumber5=15    'Corretta'
        MyNumber_5=20   'Corretta'
        My Number=20    'Non valida, la variabile con spazio deve essere racchiusa tra parentesi quadre'
        [My Number]=12  'Corretta'
        DéjàVu=25       'Non valida, i caratteri speciali non sono ammessi'
        5MyNumber=12    'Non valida, la variabile non può iniziare con un numero'
        Number,Mine=12  'Non valida, i segni di interpunzione non sono ammessi'

## Dichiarare le variabili

In LibreOffice Basic non bisogna necessariamente dichiarare le variabili in modo esplicito. È possibile dichiarare una variabile con l'istruzione Dim. È possibile dichiarare più di una variabile per volta separando i nomi con una virgola. Per definire il tipo di variabile, usare un segno di dichiarazione dopo il nome oppure la parola chiave appropriata.

Esempi di dichiarazioni di variabili:

        Dim a$               'Dichiara la variabile "a" come String'
        Dim a As String      'Dichiara la variabile "a" come String'
        Dim a$, b As Integer 'Dichiara una variabile come String e una come Integer'
        Dim c As Boolean     'Dichiara c come una variabile logica (il cui valore può essere VERO o FALSO'

Una volta dichiarata una variabile di un certo tipo, non è possibile dichiarare una variabile di un altro tipo con lo stesso nome.

Quando si dichiarano più variabili in una singola riga di codice, è necessario specificare il tipo di ciascuna variabile. Se il tipo di una variabile non è specificato in modo esplicito, Basic presuppone che la variabile sia di tipo Variant.

      ' Entrambe le variabili "a" e "b" sono di tipo Integer (Intero)
      Dim a As Integer, b As Integer
      ' La variabile "c" è un valore Variant e "d" è un valore Integer
      Dim c, d As Integer
      ' La variabile A può anche essere dichiarata esplicitamente come Variant
      Dim e As Variant, f As Double

Il tipo Variant è un tipo di dati speciale in grado di memorizzare qualsiasi tipo di valore. Per ulteriori informazioni, fare riferimento alla sezione seguente Il tipo Variant.

### Forzare le dichiarazioni delle variabili

Per forzare la dichiarazione delle variabili, usare il comando seguente:

    Option Explicit

L'istruzione Option Explicit deve essere la prima riga del modulo, prima del primo SUB. In genere, solo le matrici necessitano di una dichiarazione esplicita. Tutte le altre variabili vengono dichiarate in base al carattere di dichiarazione del tipo, o - in mancanza di questo - come il tipo predefinito Single.

## Tipi di variabile

LibreOffice Basic supporta quattro classi di variabili:

- Le variabili numeriche possono contenere valori numerici. Alcune variabili vengono usate per memorizzare numeri interi, grandi o piccoli, mentre altre vengono usate per i numeri decimali o le frazioni.

- Le variabili String contengono stringhe di caratteri.

- Le variabili Boolean contengono il valore TRUE o FALSE.

- Le variabili Object possono memorizzare oggetti di vario tipo, ad esempio tabelle e documenti all'interno di un documento.

### Variabili Integer

Le variabili Integer (intere) possono avere un valore compreso tra -32768 e 32767. Se si assegna un valore decimale a una variabile di questo tipo, i decimali vengono arrotondati all'intero superiore. Le variabili intere vengono calcolate rapidamente nelle procedure e sono adatte per i contatori usati nelle operazioni cicliche. Una variabile intera richiede solo due byte di memoria. "%" è il carattere di dichiarazione del tipo.

    Dim Variable%
    Dim Variable As Integer

### Variabili Integer Long

Le variabili Integer Long (intere lunghe) possono avere un valore compreso tra -2147483648 e 2147483647. Se si assegna un valore decimale a una variabile di questo tipo, i decimali vengono arrotondati all'intero superiore. Le variabili intere lunghe vengono calcolate rapidamente nelle procedure e sono adatte per i contatori di grandi numeri usati in operazioni cicliche. Una variabile di tipo Integer Long richiede quattro byte di memoria. "&" è il carattere di dichiarazione del tipo.

    Dim Variable&
    Dim Variable As Long

### Variabili decimali

Le variabili decimali possono essere numeri positivi o negativi, oppure zero. Il livello di accuratezza raggiunge le 29 cifre.

È possibile usare il segno più (+) o meno (-) come prefisso per i numeri decimali (con o senza spazi).

Se un numero decimale viene assegnato a una variabile intera, LibreOffice Basic arrotonda il numero per eccesso o per difetto.

### Variabili Single

Le variabili Single (singole) possono assumere un valore positivo o negativo compreso tra 3,402823 x 10E38 e 1,401298 x 10E-45. Si tratta di variabili per numeri in virgola mobile, in cui la precisione decimale diminuisce con l'aumento della parte non decimale del numero. Le variabili singole sono adatte ai calcoli matematici di media precisione. Questi calcoli richiedono più tempo di elaborazione rispetto a quelli eseguiti con variabili intere, ma meno rispetto ai calcoli eseguiti con variabili doppie. Una variabile di tipo Single richiede quattro byte di memoria. Il carattere di dichiarazione del tipo è "!".

    Dim Variable!
    Dim Variable As Single

### Variabili Double

Le variabili doppie possono assumere un valore positivo o negativo compreso tra 1,79769313486232 x 10E308 e 4,94065645841247 x 10E-324. Si tratta di variabili per numeri in virgola mobile, in cui la precisione decimale diminuisce con l'aumento della parte non decimale del numero. Le variabili doppie sono adatte ai calcoli precisi. Le operazioni di calcolo richiedono più tempo di quello richiesto con le variabili singole. Una variabile di tipo Double richiede otto byte di memoria. Il carattere di dichiarazione del tipo è "#".

    Dim Variable#
    Dim Variable As Double

### Variabili Currency

Le variabili Currency (valuta) sono memorizzate internamente come numeri a 64 bit (8 Byte) e visualizzate come numeri decimali fissi con 15 cifre non decimali e 4 cifre decimali. I valori possono variare da -922337203685477,5808 a +922337203685477,5807. Le variabili Currency sono usate per calcolare le valute con elevata precisione. Il carattere di dichiarazione del tipo è "@".

    Dim Variable@
    Dim Variable As Currency

### Letterali per interi

I numeri possono essere codificati usando i formati ottale ed esadecimale.

      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

### Variabili String

Le variabili di tipo stringa possono contenere fino a 2.147.483.648 di caratteri. Ogni carattere è memorizzato con il corrispondente valore Unicode. Le variabili di tipo stringa sono adatte per l'elaborazione di testi all'interno dei programmi e per la memorizzazione temporanea di qualsiasi carattere non stampabile, fino a una lunghezza massima di 2 Gbyte. La memoria necessaria per la memorizzazione delle stringhe dipende dal numero di caratteri presente nella variabile. Il carattere per la dichiarazione di questo tipo di variabile è "$".

In BASIC, nelle funzioni per le stringhe, il primo carattere della stringa ha l'indice 1.

    Dim Variable$
    Dim Variable As String

### Variabili Boolean

Le variabili Boolean (logiche) possono memorizzare solo due valori: TRUE (VERO) o FALSE (FALSO). Il valore 0 equivale a FALSE, qualsiasi altro valore equivale a TRUE.

    Dim Variable As Boolean

### Variabili Date

Le variabili Date (data) possono contenere solo date e valori temporali memorizzati in un formato interno. I valori assegnati a queste variabili con Dateserial, Datevalue, Timeserial o Timevalue vengono automaticamente convertite nel formato interno. Le variabili di tipo Date vengono convertite in numeri normali usando la funzione Day, Month, Year o la funzione Hour, Minute, Second. Il formato interno permette di confrontare i valori di data/ora calcolando la differenza tra due numeri. Queste variabili possono essere dichiarate solo con la parola chiave Date.

    Dim Variable As Date

### Valori letterali per date

I valori letterali di data consentono di specificare variabili di data non ambigue indipendenti dalla lingua in uso. I valori letterali sono racchiusi tra i simboli cancelletto #. I formati possibili sono:

- #yyyy-mm-dd#

- #mm/dd/yyyy#

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

## Il tipo Variant

Le variabili dichiarate come Variant possono gestire qualsiasi tipo di dati. Ciò significa che il tipo di dati effettivo viene definito durante il tempo di esecuzione (runtime) poiché alla variabile viene assegnato un valore.

Esistono sostanzialmente tre metodi per creare una variabile Variant, come illustrato di seguito:

      Dim varA            ' Il tipo non è specificato, quindi la variabile è un valore Variant
      Dim varB as Variant ' La variabile è dichiarata esplicitamente come Variant
      varC = "abc" 'Le variabili precedentemente non dichiarate sono gestite come valori Variant

Nell'esempio riportato di seguito viene utilizzata la funzione TypeName per illustrare le modifiche apportate al tipo di variabile Variant in seguito all'assegnazione.

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

Una variabile Variant viene inizializzata con il tipo di dati speciale Empty. È possibile utilizzare la funzione IsEmpty per verificare se una variabile è un valore Variant vuoto.

È inoltre possibile utilizzare la parola chiave Any per dichiarare una variabile come valore Variant. Tuttavia, Any è obsoleto ed è disponibile per assicurare la compatibilità con le versioni precedenti.

Gli argomenti con tipo Variant o Any passati nelle chiamate delle funzioni non vengono controllati per i relativi tipi.

      Dim myVar As Any ' La variabile "myVar" è un valore Variant

## Valori iniziali delle variabili

Al momento della dichiarazione, le variabili vengono impostate automaticamente sul valore "Null". Osservare le seguenti convenzioni:

Alle variabili Numeric è assegnato automaticamente il valore "0", non appena vengono dichiarate.

Alle variabili Date viene assegnato internamente il valore 0; ciò equivale alla conversione del valore in "0" con la funzione Day, Month, Year o con la funzione Hour, Minute, Second.

Alle variabili String viene assegnata una stringa vuota ("") quando vengono dichiarate.

## Matrici (Array)

LibreOffice Basic riconosce le matrici a una o più dimensioni, definite da un tipo di variabile specifico. Le matrici sono adatte per la modifica di elenchi e tabelle nei programmi. I singoli elementi di una matrice possono essere identificati con un indice numerico.

Le matrici devono essere dichiarate con l'istruzione Dim. Esistono diversi modi per definire l'intervallo degli indici di una matrice:

        Dim Text$(20)       '21 elementi numerati da 0 a 20'
        Dim Text$(5,4)      '30 elementi (una matrice di 6 x 5 elementi)'
        Dim Text$(5 To 25)  '21 elementi numerati da 5 a 25'
        Dim Text$(-15 To 5) '21 elementi (incluso lo 0) numerati da -15 a 5'

L'intervallo degli indici può includere sia numeri positivi, sia negativi.

## Costanti

Le costanti hanno un valore fisso. Vengono definite una sola volta nel programma e non possono essere ridefinite successivamente:

    Const ConstName=Expression

Argomenti correlati

Costanti di Basic

Istruzione Dim