Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на BASIC / Visual Basic / Visual Basic for Applications. Учебный практикум.doc
Скачиваний:
171
Добавлен:
02.05.2014
Размер:
827.9 Кб
Скачать

1.7. Массивы

Массив – это совокупность нескольких переменных одного типа, которые могут принимать одинаковые или различные значения. Различают статические и динамические массивы. Границы статических массивов устанавливаются на этапе разработки и могут изменяться только в новой версии программы. Динамические массивы изменяют свои границы в ходе выполнения программы.

Статические массивы нельзя объявить локально внутри процедуры, а только глобально или для контейнера (Form, Module, Class).

В общем случае индексирование элементов начинается с нуля, однако, использование оператора Option Base 1 позволяет установить индексацию с 1. Данный оператор указывается в секции (General)(Declarations) контейнера. Границы индексации можно установить в опции РАЗМЕРНОСТЬ (см. ниже).

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

Static | Public | Dim [Shared] ПЕРЕМЕННАЯ [РАЗМЕРНОСТЬ]

где РАЗМЕРНОСТЬ – указывает диапазон изменения индекса массива, такой индекс является переменной величиной и используется для указания конкретного элемента массива; РАЗМЕРНОСТЬ имеет следующий вид m To n, где m – начальное значение индекса, n – конечное значение индекса; если при обработке массива значение индекса выходит из указанного в объявлении диапазона, выдается сообщение об ошибке. В данном параметре можно через запятую указать диапазон изменения для нескольких индексов (многомерные массивы). Примеры:

Dim a$(1To 20) – массив из 20-ти строковых элементов: а$(1) – 1-й элемент, a$(2) – 2-й элемент и т. д;

Dim p%(5 To 10) – массив из 6-ти целых элементов: p%(5) – 1-й элемент, р%(6) – 2-й элемент и т.д.;

Dim x(10) As Single – массив из 11вещественных чисел х(0) – й элемент, х(1) – 2-й элемент, …, х(10) – 11-й элемент.

Если определить переменную-индекс как Dim i As Integer, то можно обратиться к любому элементу массива (предварительно задавая конкретное значение для i), например х(i) – это i-й элемент массива х. С учетом вышесделанного определения этого массива x(n) индекс i может изменяться в диапазоне от 1 до n и при i = 1 ‘это будет 1-й элемент массива.

Массив, объявленный как Variant может содержать другие массивы различных типов данных, например:

Dim c(5) As Integer

Dim s(5) As String

Dim X(2) As Variant

c( ) =... 'заполнение данными первых двух массивов

s( ) =…

X(1) = c() 'заполнение массива X другими массивами

X(2) = s()

Массивы могут быть многомерными: например, двумерный массив Dim m(5, 10).

Массивы могут быть динамическими, т. е. их размеры могут меняться в любое время. Для создания динамического массива надо: 1) объявить массив оператором Public или Dim, или Static с пустой размерностью в секции (General)(Declarations) контейнера, например Dim D() As Variant; 2) оператором ReDim распределить фактическое количество элементов ReDim D(100) [As ТИП]; этот оператор может появляться только в процедурах; он может изменять нижний и верхний пределы размерностей, но не изменяет количества размерностей.

Для изменения размерности без потери содержимого используется ReDim Preserve, но в многомерных массивах это допускается только для последнего измерения, а при наличии верхней и нижней границы – только для верхней.

Начиная с Visual Basic 6.0, можно присвоить содержимое одного массива В другому С так же как для обычных переменных: С = В. При следует учитывать, что могут появиться ошибки из-за несоответствия типов, размерности или количества измерений статических массивов. В то же время для динамических массивов указанная операция, как правило, проходит успешно.

Пределы динамического массива могут также устанавливаться с помощью переменных ReDim B(X,Y).