Понедельник, 27.01.2025, 18:11
Приветствую Вас Гость | RSS

bookin.ucoz.ru


Меню сайта

Книги онлайн

Главная » Книги онлайн »

Объявление массивов

В Visual Basic существуют массивы фиксированного размера и динамические массивы. Массив фиксированного размера имеет неизменный размер, заданный при его объявлении. Динамические массивы могут изменять размер в процессе выполнения.

Объявление массива фиксированного размера

Как и любой тип данных, массив необходимо объявлять. Ниже приведен синтаксис объявления:

{ Dim | Private | Public I Static} имяМассива (<размер1> [, <размер2>] ...) [As типДанных] [, имяМассива (<размер1> [, <размер2>] ...) [As типДанных}] . . .

Существует 3 способа объявления массива фиксированного размера, которые зависят от области его видимости:

  • создание глобального массива – объявляется с помощью оператора Public в секции Declarations модуля;
  • создание глобального массива уровня модуля – объявляется с помощью оператора Private в секции Declarations модуля;
  • создание локального массива – объявляется с помощью оператора Private в процедуре;

Размер массива может задаваться тремя способами:

  • объявление только верхней границы массива, при этом нижняя граница массива по умолчанию принимает значение равное 0. 
    Dim arr(20) as integer ‘ создание массива из 21 элемента
  • объявляется нижняя и верхняя границы изменения индекса 
    Dim arr(11 to 20) as integer ‘ создание массива из 10 элементов
  • размер массива не объявляется 
    Dim arr() as integer ‘ создание массива, размерность неизвестна

Объявление динамического массива

В случае, когда размер массива заранее неизвестен, Visual Basic позволяет использовать динамические массивы, размеры которых можно изменять во время выполнения. Применение динамических массивов позволяет эффек­тивно управлять памятью, выделяя память под большой массив лишь на то время, когда этот массив используется, а затем освобождая ее.

Создание динамического массива осуществляется следующим образом:

Объявляется массив с помощью ключевых слов, используемых при соз­дании массива фиксированного размера. Список размерностей массива остается пустым. При объявлении глобального массива необходимо вы­брать ключевое слово Public, при объявлении массива на уровне модуля — Dim, при объявлении массива в процедуре — Dim или static. Например, Dim massive() As Integer

С помощью выполняемого оператора ReDim указывается размерность мас­сива в виде числа или выражения. Синтаксис оператора ReDim аналогичен синтаксису оператора объявления массива фиксированного размера. На­пример, размерность массива может быть задана любым из следующих способов:

    ReDim massive(x)

    ReDim massive(20)

    ReDim massive(1 To 20)

При выполнении оператора ReDim данные, размещенные в массиве ранее, теряются. Это удобно в том случае, если данные вам больше не нужны, и вы хотите переопределить размерность массива и подготовить его для размеще­ния новых данных. Если вы хотите изменить размер массива, не потеряв при этом данных, то необходимо воспользоваться оператором ReDim с клю­чевым словом preserve. Например, приведенный ниже программный код увеличивает размер массива на единицу без потери хранящихся в массиве данных:

    ReDim Preserve massive(X)

Но при использовании ключевого слова Preserve можно поменять только последний аргумент, задающий размерность массива.

Для определения границ статического или динамического массива можно использовать функции Lbound и Ubound, которые возвращают соответственно нижнюю и верхнюю границу массива:

    Lbound(arrname [, dimension])

    Ubound(arrname [, dimension])

    arrname – массив, для которого требуется определить границу;

    dimension – номер размерности, для которой требуется определить границу.

Примеры:

1. Объявление одномерных массивов

    Dim Sum(50) As Integer

    Public Name(17) As String

    Private Ln(11 to 31) As Double

2. Объявление многомерных массивов

    Dim XYCol(100,100,16) As Integer

    Public Tempr(15 to 30, 1 to 24) As Integer

3. Объявление статических массивов

    Dim vArr(4 To 20, 5 То 70)

    MsgBox "Нижняя граница 1-го измерения: " & LBound (vArr, 1)

    ' результат - 4

    MsgBox "Нижняя граница 2-го измерения: " & LBound (vArr, 2)

    'результат — 5

4. Объявление динамических массивов

    Dim dArr()

    ReDim dArr(l To 2, б То 10)

    MsgBox "Нижняя граница 1-го измерения: " & LBound(dArr, 1) )

    ' результат - 1

    MsgBox "Нижняя граница 2-го измерения: " & LBound(dArr, 2) )

    'результат — 6

    Поскольку Lbound и Ubound не воспринимают переменные, отличные от массивов, в скользких случаях имеет смысл до их использования проверить предварительно переменную с помощью IsArray.

    IsArray(функция)

Сложнее обстоит дело с неинициализированным динамическим массивом, поскольку в VB/VBA нет средств для его проверки. Здесь можно использовать стандартный ме­тод проверки по ошибке:

    Dim vArr(20) As Integer

    Dim t as Bool

    t = IsArray(vArr)

Перейти на страницу скачивания файла >>
Добавил: xitrun |
Просмотров: 1615 | Рейтинг: 0.0/0

Статистика

Онлайн всего: 22
Гостей: 22
Пользователей: 0

Поиск
Форма входа

Copyright MyCorp © 2025
Бесплатный конструктор сайтов - uCoz