Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика. Учебное пособие.doc
Скачиваний:
103
Добавлен:
10.05.2015
Размер:
1.29 Mб
Скачать

If Not IsNumeric(prom) Then MsgBox(“Повторите ввод!”)

Loop Until IsNumeric(prom)

A(i) = prom

Next i

Fori=1To5 ‘Вывод массива a(i) на рабочий лист.

Cells(k,2) = “a(“& CInt(i) & “) = ”

Cells(k,3) = a(i)

k=k+1

Nexti

EndSub

9.4/3.8.2. Динамические массивы

Динамическим называется массив, размерность которого определяется в ходе выполнения программы.

Синтаксис описания массива: Dim<Имя массива>()As<Тип>

Размерность массива устанавливается и изменяется с помощью оператора:ReDim<Имя массива>(<размерность>)

Для установки и изменения размерности массива без потери его содержимого применяется оператор:

ReDim Preserve<Имя массива>(<размерность>)

Для определения параметров динамического массива используются функции:

LBound(<Имя>[,<Размерность>]) ‘Возвращает нижнюю границу указанной размерности массива, которую следует задавать равной 1.

UBound(<Имя>[,<Размерность>]) ‘Возвращает верхнюю границу указанной размерности массива, которую следует задавать равной 2. Если размерность не указана, то подразумевается значение, равное 1.

Пример:

SubMas4()

Dim a() As Integer

Dim i As Integer, k As Integer, j As Integer, n Integer

Dim prom As Variant

WorkSheets(“Лист1”).Select

Cells.Clear

k = 2

i = 0

Do

Prom=InputBox(“Введите количество элементовN=)

If Not IsNumeric(prom) Then MsgBox(“Повторите ввод!”)

Loop Until IsNumeric(prom)

N = prom

ReDima(1ton)AsInteger ‘Устанавливается фактическая размерность массива a(i).

Do‘Формирование массива a(i).

ReDimPreservea(1ton)AsInteger ‘Это другой вариант установки размерности массива с сохранением значений его элементов.

a(i) = Int(Rnd(i)*100)

i = i + 1

Loop Until i = N

For j =1 To i ‘Вывод массива a(j) на рабочий лист.

Cells(k,j + 1) = a(j)

Next j

End Sub

Array(<Список аргументов>) ‘Создает массив типаVariant. Список аргументов представляет разделенный запятыми список значений, присваиваемых элементам массива.

Пример:

Dim День As Variant

День = Array(“Пн”, “Вт”, “Ср”, “Чт”, “Пт”, “Сб”)

IsArray(<Имя переменной>) ‘Функция используется для проверки значений переменных типаVariant, содержащих массивы. ВозвращаетTrue, если переменная содержит массив, иFalse, если переменная не содержит массив (не является массивом).

Erase(<Список массивов>) 'Эта инструкция повторно инициализирует элементы статических массивов и освобождает память, отведенную для динамических массивов. Список массивов представляет имена очищаемых массивов, разделенных запятой. В статических массивах их элементам вместо чисел или строк фиксированной длины присваиваются значения, равные 0, а для строк переменной длины присваивается значение пустой строки. В массивах типаVariantкаждому элементу присваивается значениеEmpty.

Вопросы для самоконтроля

  1. Варианты описания статических массивов.

  2. Как установить начальную границу размерности статического массива, равную 1, если при описании массива начальная граница задается равной 0?

  3. Какое предельное количество измерений многомерного статического массива?

  4. В каких случаях возникает потребность в применении динамического массива?

  5. Как установить или изменить размерность динамического массива?

  6. Как изменить размерность динамического массива без потери имеющихся значений его элементов?