Variáveis Escalares e de Matriz

Na maioria dos casos, depois de declarar uma variável, você atribuirá a ela apenas um valor. Uma variável com um único valor é uma variável escalar. Outras vezes, é conveniente atribuir mais de um valor relacionado a uma única variável. É possível criar uma variável que pode conter uma série de valores. Ela é chamada de variável de matriz. As variáveis de matriz e as variáveis escalares são declaradas da mesma forma, exceto que a declaração da primeira usa parênteses ( ) após o nome da variável.

No exemplo a seguir, uma matriz de dimensão única contendo 11 elementos é declarada:

Dim A(10)

Embora o número mostrado entre parênteses seja 10, todas as matrizes no BSL têm base zero. Então essa matriz contém 11 elementos. Em uma matriz de base zero, o número de elementos é sempre o número mostrado entre parênteses mais um. Esse tipo de matriz é chamado de matriz de tamanho fixo.

Você pode atribuir dados a cada um dos elementos da matriz usando um índice na matriz. A partir de zero e terminando em 10, os dados podem ser atribuídos aos elementos de uma matriz da seguinte forma:

     A(0) = 256
        A(1) = 324
        A(2) = 100
         . . .
        A(10) = 55

Da mesma forma, os dados podem ser recuperados de qualquer elemento usando um índice no elemento de matriz desejado.

Por exemplo:

SomeVariable = A(8)

As matrizes não se limitam a uma única dimensão. Você pode declarar várias dimensões separando os números de tamanho de uma matriz entre parênteses com vírgulas. No exemplo a seguir, a variável MyTable é uma matriz bidimensional composta de 6 linhas e 11 colunas:

Dim MyTable(5,10)

Em uma matriz bidimensional, o primeiro número é sempre o número de linhas; o segundo é o número de colunas.

Você também pode declarar uma matriz cujo tamanho muda enquanto o script está em execução. Ela é chamada de matriz dinâmica. A matriz é inicialmente declarada em um procedimento usando a instrução Dim ou a instrução ReDim. No entanto, em uma matriz dinâmica, nenhum tamanho ou número de dimensões é colocado dentro dos parênteses.

Por exemplo:

Dim MyArray()
ReDim AnotherArray() ' Illegal as no dimension specified
ReDim AnotherArray(3)

Para usar uma matriz dinâmica, você deverá usar subsequentemente ReDim para determinar o número de dimensões e o tamanho de cada uma. No exemplo a seguir, ReDim define o tamanho inicial da matriz dinâmica como 25. Uma instrução ReDim subsequente redimensiona a matriz para 30, mas usa a palavra-chave Preserve a fim de preservar o conteúdo dela durante o redimensionamento.

ReDim MyArray(25)
 . . . 
ReDim Preserve MyArray(30)

Não há limite para o número de vezes que você pode redimensionar uma matriz dinâmica. No entanto, se você reduzir uma matriz, perderá os dados dos elementos eliminados.

Os exemplos a seguir ilustram o uso de variáveis Escalares e variáveis de matriz:

Exemplo 1:

Dim B
B = 200   ' Assigns the value 200 to the variable B.

Exemplo 2:

Dim A(3)   ' Declares a single-dimension array with 4 elements 0 to 3 indexes.
' Assigning values to each element of the array.
A(0) = 256
A(1) = 324
A(2) = 100
' Retrieving a value from the array.
Dim SomeVariable
SomeVariable = A(1)   ' Retrieves the value at index 1.

Exemplo 3:

Dim MyArray()   ' Declares a dynamic array.
ReDim MyArray(25)   ' Sets the initial size of the dynamic array to 25 elements.
' Assigning values to the dynamic array.
MyArray(0) = "First"
MyArray(25) = "Last"
' Resizing the dynamic array and preserving contents.
ReDim Preserve MyArray(30)   ' Resizes the array to 30 elements and preserves existing data.

Exemplo 4:

Dim AnotherArray()
ReDim AnotherArray(10)   ' Initial size of 10 elements.
' Assigning values to the array.
AnotherArray(0) = "Alpha"
AnotherArray(10) = "Omega"

' Resizing the array multiple times.
ReDim Preserve AnotherArray(20)
AnotherArray(20) = "NewElement"
ReDim Preserve AnotherArray(5)   ' Reduces the size of the array (data beyond index 5 is lost).