Дополнительные команды работы с массивами

Для работы с массивами вы можете использовать еще некоторые команды.

Array (Список аргументов)- позволяет быстро заполнять массив. Например, в листинге 7.8. массив MyArray заполняется числами 1, 2, 6, 9 и 19, после чего первый элементмассива выводится в окне сообщения.

Dim MyArray

MyArray = Array(1, 2, 6, 9, 10)

MsgBox MyArray(0)

 

IsArray (Имя переменной) - возвращает True если переменная является массивом. Например, в листинге ниже мы объявляем две переменные - одну из них как массив, вторую - как обычную переменную. Далее мы используем оператор IsArray для проверки того, является ли переменная массивом. После чего программа выводит соответствующее сообщение. Здесь мы использовали оператор сравнения If, подробности о котором мы рассмотрим ниже.

Dim MyArray(10)

Dim MyArr

If IsArray(MyArray) Then _

MsgBox ("Переменная MyArray - массив") _

Else MsgBox ("Переменна MyArray - не массив")

If IsArray(MyArr) Then _

MsgBox ("Переменная MyArr - массив") _

Else MsgBox ("Переменна MyArr - не массив")

 

LBound (Имя Массива, Размерность) - возвращает нижнюю границу для указанной размерности массива.

UBound (Имя Массива, Размерность) - возвращает верхнюю границу для указанной размерности массива.

Рассмотрим пример. Создадим динамический двумерный массив, размерности которого заданы с помощью генератора случайных чисел. После этого с помощью операторовLBound и UBound узнаем размерности массива и выведем их в окнах сообщений. Далее - используем двойной цикл для заполнения массива случайными числами .

Dim MyArray()

ReDim MyArray(Int(Rnd * 5 + 5), Int(Rnd * 5 + 5))

MsgBox ("Двумерный массив MyArray:" + Chr(13) + _

"Первая размерность:" + _

Str(LBound(MyArray, 1)) + " -" + _

Str(UBound(MyArray, 1)) + Chr(13) + _

"Вторая размерность:" + _

Str(LBound(MyArray, 2)) + " -" + _

Str(UBound(MyArray, 2)))

For i = LBound(MyArray, 1) To UBound(MyArray, 1)

For j = LBound(MyArray, 2) To UBound(MyArray, 2)

MyArray(i, j) = Int(Rnd * 100)

Next j

Next i

 

В нашем случае команда LBound для обеих размерностей массива возвращает 0 так как по умолчанию нумерация элементов массива начинается с 0. А вот Uboundвозвращает границу каждой из размерностей, которая установлена случайным образом с помощью оператора ReDim. На рисунке вы можете видеть окно сообщения c информацией о границах массива.

 

 

Erase (Имя массива) - очистить массив. Элементы обычных массивов, содержащих числовые данные, обнуляются. Если мы применим команду Erase к массиву строк - каждый его элемент будет хранить строку нулевой длины (""). Применяя команду Erase к динамическому массиву, мы очищаем память, выделенную этому массиву командой ReDim. Причем, для повторного использования динамического массива, придется снова устанавливать его размерности. Если команда Erase применяется к объектному массиву, в каждый его элемент записывается специальное значение Nothing, которое означает пустую ссылку на объект.

Теперь, когда мы обсудили циклы For-Next и работу с массивами, поговорим о других типах циклов.