Sumário

# Utilizar variáveis

A utilização básica das variáveis do LibreOffice Basic é descrita a seguir.

## Convenções de nomenclatura de variáveis

O nome da variável pode conter no máximo 255 caracteres. O primeiro caractere no nome da variável deve ser uma letra de A até Z ou de a até z. Também é possível usar números no nome da variável, mas, com exceção do caractere de sublinhado ("_"), não serão permitidos símbolos de pontuação nem caracteres especiais. No LibreOffice Basic, os identificadores de variáveis não fazem distinção entre maiúsculas e minúsculas. Os nomes de variáveis podem conter espaços, mas, nesse caso, eles deverão ser incluídos entre colchetes.

Exemplos de identificadores de variáveis:

        MyNumber=5      'Correto'
        MyNumber5=15    'Correto'
        MyNumber=20      'Correto'
        My Number=20      'Incorreto, uma variável com espaço deve ser incluída entre colchetes'
        [My Number]=12      'Correto'
        DéjàVu=25       'Inválido, caracteres especiais não são permitidos'
        5MyNumber=12    'Inválido, a variável não pode começar com um número'
        Number,Mine=12  'Inválido, marcas de pontuação não são permitidas'

## Declarar variáveis

No LibreOffice Basic, você não precisa declarar explicitamente as variáveis. É possível declarar a variável por meio de uma instrução Dim. Você pode declarar mais de uma variável por vez, separando os nomes por vírgulas. Para definir o tipo de variável, utilize um sinal de declaração de tipo após o nome da variável ou use a palavra-chave apropriada.

Exemplos de declarações de variáveis:

        Dim a$               'Declara variável "a" como um String'
        Dim a As String      'Declara a variável  "a" como um String'
        Dim a$, b As Integer 'Declara uma variável como um String e uma como Integer'
        Dim c As Boolean     'Declara c como variável Boolean que pode tomar valores VERDADEIRO ou FALSO'

Depois de declarar uma variável como de um tipo específico, você não poderá declará-la novamente como um tipo diferente!

Ao declarar várias variáveis em uma única linha de código, você precisa especificar o tipo de cada variável. Se o tipo de uma variável não for especificado explicitamente, o Basic assume que a variável é do tipo Variant.

      'Ambas as variáveis "a" e "b" são do tipo Integer
      Dim a As Integer, b As Integer
      'A variável "c" é um Variant e "d" é um Integer
      Dim c, d As Integer
      'Uma variável também pode ser explicitamente declarada como um Variant
      Dim e As Variant, f As Double

O tipo Variant é um tipo de dados especial que pode armazenar qualquer tipo de valor. Para saber mais, consulte a seção O tipo Variant abaixo.

### Forçar a declaração de variáveis

Para forçar a declaração de variáveis, use o seguinte comando:

    Option Explicit

A instrução Option Explicit precisa ser a primeira linha no módulo, antes da primeira SUB. De modo geral, somente as matrizes precisam ser declaradas explicitamente. Todas as outras variáveis são declaradas de acordo com o caractere de declaração de tipo ou (se este for omitido) como o tipo padrão Single.

## Tipos de variáveis

O LibreOffice Basic oferece suporte a quatro classes de variáveis:

- As variáveis numéricas podem conter valores numéricos. Algumas variáveis são usadas para armazenar números grandes ou pequenos, ao passo que outras armazenam números fracionários ou de ponto flutuante.

- As variáveis String contêm cadeias de caracteres.

- Lógico — as variáveis contêm o valor VERDADEIRO (TRUE) ou FALSO (FALSE).

- As variáveis Object podem armazenar objetos de vários tipos, como tabelas e documentos dentro de um documento.

### Variáveis tipo Integer

As variáveis de número inteiro abrangem o intervalo -32768 a 32767. Se você atribuir um valor de ponto flutuante a uma variável de número inteiro, as casas decimais serão arredondadas para o número inteiro mais próximo. Essas variáveis são calculadas rapidamente nos procedimentos e são apropriadas para contadores em comandos de repetição. Essas variáveis só requerem dois bytes de memória. O caractere de declaração de tipo dessas variáveis é o "%".

    Dim Variable%
    Dim Variable As Integer

### Variáveis tipo Long Integer

As variáveis de números inteiros longos abrangem o intervalo -2147483648 a 2147483647. Se você atribuir um valor de ponto flutuante a uma variável de número inteiro longo, as casas decimais serão arredondadas para o número inteiro mais próximo. Essas variáveis são calculadas rapidamente nos procedimentos e são apropriadas para contadores em comandos de repetição com valores maiores. Essas variáveis requerem quatro bytes de memória. O caractere de declaração de tipo dessas variáveis é o "&".

    Dim Variable&
    Dim Variable As Long

### Variáveis tipo Decimal

Variáveis decimais podem ter números positivos ou negativos ou zero. A precisão vai até 29 dígitos.

Você também pode usar o sinal de mais (+) ou menos (-) como prefixos para números decimais (com ou sem espaços).

Se um número decimal for atribuído a uma variável inteira, o LibreOffice Basic arredondará o número para cima ou para baixo.

### Variáveis tipo Single

Variáveis Single podem tomar valores positivos ou negativos no intervalo 3.402823 x 10E38 a 1.401298 x 10E-45. Variáveis Single são variáveis de ponto flutuante, nas quais a precisão decimal diminui por que a parte não decimal aumenta. Variáveis Single são adequadas para cálculos matemáticos de precisão média. Os cálculos requerem mais tempo do que variáveis Integer, mas são mais rápidas que os cálculos com variáveis Double. Uma variável Single requer 4 bytes de memória. O caractere de declaração de tipo é "!".

    Dim Variable!
    Dim Variable As Single

### Variáveis tipo Double

Variáveis Double podem tomar valores positivos ou negativos no intervalo 1,79769313486232 x 10E308 até 4,94065645841247 x 10E-324. Variáveis Double são variáveis de ponto flutuante, nas quais a precisão diminui quando a parte não decimal aumenta. Variáveis Double são adequadas para cálculos precisos. Os cálculos requerem mais tempo que as variáveis Single. Uma variáveis Double requer 8 bytes de memória. O caractere de declaração de tipo é "#".

    Dim Variable#
    Dim Variable As Double

### Variáveis tipo Currency

Variáveis Currency (monetárias) são armazenadas internamente como números de 64 bits (8 Bytes) e exibidos como um número decimal fixo com 15 casas não decimais e 4 decimais. Os valores variam de -922337203685477.5808 a +922337203685477.5807. Variáveis Currency são usadas para calcular valores monetários com alta precisão. O caractere de declaração de tipo é "@".

    Dim Variable@
    Dim Variable As Currency

### Literais para Inteiros

Números podem ser codificados em formato octal ou hexadecimal.

      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

### Variáveis tipo String

Variáveis de string podem conter strings de caracteres com até 2.147.483.648 caracteres. Cada caractere é armazenado como o valor Unicode correspondente. Variáveis de string são adequadas para processamento de texto em programas e para armazenamento temporário de qualquer caractere não imprimível até um comprimento máximo de 2 Gbytes. A memória necessária para armazenar variáveis de string depende do número de caracteres na variável. O caractere de declaração de tipo é "$".

Nas funções de String BASIC, o primeiro caractere da string tem índice 1.

    Dim Variable$
    Dim Variable As String

### Variáveis tipo lógica

As variáveis lógicas armazenam apenas um destes valores: VERDADEIRO (TRUE) ou FALSO (FALSE). Um número 0 é avaliado como FALSO, ao passo que os outros valores são avaliados como VERDADEIRO.

    Dim Variable As Boolean

### Variáveis tipo Date

Variáveis de data podem conter apenas valores de data e hora armazenados em um formato interno. Valores atribuídos a variáveis de tipo Data Dateserial, Datevalue, Timeserial ou Timevalue são convertidas automaticamente para o formato interno. Variáveis de tipo Data são convertidas para números normais utilizando-se a função Day, Month, Year ou Hour, Minute, Second. O formato interno permite uma comparação de valores de data/hora calculando a diferença entre dois números. Essas variáveis podem ser declaradas apenas com a palavra-chave Date.

    Dim Variable As Date

### Literais para datas

Literais de data permitem especificar variáveis de data inequívocas que são independentes do idioma atual. Os literais são colocados entre cerquilhas #. Os formatos possíveis são:

- #yyyy-mm-dd#

- #mm/dd/yyyy#

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

## O tipo Variant

Variáveis declaradas como Variant podem lidar com qualquer tipo de dados. Significa que o tipo de dados real é definido durante o tempo de execução quando um valor é atribuído à variável.

Existem três maneiras principais de criar uma variável Variant, conforme mostrado abaixo:

      Dim varA            ' O tipo não foi definido, portanto a variável é um Variant
      Dim varB as Variant ' A variável foi declarada explicitamente como um Variant
      varC = "abc"        ' Variáveis sem declaração anterior são tratadas como Variants

O exemplo abaixo usa a função TypeName para mostrar como o tipo de uma variável Variant muda no momento da atribuição.

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

Uma variável Variant é inicializada com o tipo de dados especial Empty. Você pode usar a função IsEmpty para testar se uma variável é um Empty Variant.

Você também pode usar a palavra-chave Any para declarar uma variável como uma Variant. No entanto, Any está obsoleto e permanece para compatibilidade com versões anteriores.

Argumentos com o tipo Variant ou Any passados em chamadas de função não tem seus tipos verificados.

      Dim myVar As Any ' A variável "myVar" é um Variant

## Valores iniciais da variável

Uma vez declarada a variável, seu valor é automaticamente definido como "Null". Observe as seguintes convenções:

As variáveis numéricas receberão automaticamente o valor "0" assim que forem declaradas.

Variáveis de data tem o valor inicializado internamente para 0; equivalente a converter o valor para "0" com a função Day, Month, Year ou Hour, Minute, Second.

As variáveis String receberão uma cadeia de caracteres vazia ("") quando forem declaradas.

## Matrizes

O LibreOffice Basic reconhece matrizes uni ou multidimensionais definidas por um tipo de variável especificada. As matrizes são úteis para editar listas e tabelas em programas. É possível fazer referência a elementos individuais de uma matriz por meio de um índice numérico.

Para declarar uma matriz, é obrigatório utilizar a instrução Dim. Existem várias maneiras de definir o intervalo de índice de uma matriz:

        Dim Text$(20)       '21 elementos numerados de 0 a 20'
        Dim Text$(5,4)      '30 elementos (uma matriz de 6 x 5 elementos)'
        Dim Text$(5 To 25)  '21 elementos numerados de 5 a 25'
        Dim Text$(-15 To 5) '21 elementos (incluindo 0), numerados de -15 a 5'

O intervalo do índice pode incluir tanto números positivos como negativos.

## Constantes

As constantes têm um valor fixo. Elas são definidas apenas uma vez no programa e não poderão ser redefinidas posteriormente:

    Const ConstName=Expression

Tópicos relacionados

Variáveis Básicas

Declaração Dim