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).