Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Динамические массивы




 

Иногда бывает трудно заранее определить, сколько элементов нужно будет поместить в список. Для этого используют динамические массивы.

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

Динамический массив объявляется так же, как и любой другой тип массива – оператором Dim. Единственное отличие состоит в том, что вы не указываете (в скобках) размер массива. Например:

Dim A() As Byte ‘ объявление динамического массива с указанием типа массива

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

ReDim A(5) ‘ указание размерности динамического массива

Следует отметить, что при указании значений для размерностей динамического массива оператором ReDim его тип не может быть изменен. В противном случае будет выдано сообщение об ошибке.

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

Dim A() As Byte

ReDim A() (Диапазон от 0 до 5)

ReDim A(1 to 4) (Диапазон от 1 до 4)

ReDim A(3,3, 1 to 3)(Диапазон от 0 до 3, от 0 до 3, от 1 до 3)

В качестве как верхней, так и нижней границы могут быть использованы не только числа, но и переменный целого типа, например:

Dim n As Integer

Dim A() As Integer

N=10

ReDim A(n)

Необходимо иметь ввиду, что при каждом выполнении оператора ReDim все значения элементов массива, которые до этого в нем хранились, будут потеряны, так как данный оператор обнуляет все элементы в соответствии с их типом, например, числовые массивы принимают значение 0, а символьные “” (пусто).

Для того, чтобы имеющиеся в массиве значения не пропали при его переопределении, следует использовать служебное слово Preserve, например:

Sub primer()

Dim n As Integer

Dim I As Integer

Dim A() As Integer

N=10

ReDim A() As Integer

For i=1 to n

A(i)=i^2

Next i

ReDim Preserve A(1 To 15)

For i=11 to 15

A(i)=i^3

Next i

End Sub

В данной программе требуется заполнить массив из десяти элементов квадратами первых десяти натуральных чисел. Затем следует переопределение размера массива до 15 и заполнение новых элементов (с 11 по 15) кубами следующих натуральных чисел.

Пример 10. Заполнить массив А(N) нечетными членами натурального ряда (1, 3, 5...) до тех пор, пока их произведение не станет больше произвольного числа М. Найти сумму элементов массива и их число.

 

Sub primer_10()

Dim A() As Integer

n = 100

ReDim A(n)

A(1) = 1: i = 2

Cells(1, 1) = A(1) ' начальные значения суммы и произведения

S = 0: Pr = 1 ' счетчик количества элементов

k = 1

m = InputBox("Введите число М", "Пример 1")

Do While Pr <= М ' начало цикла, проверка условия

k = k + 1 ' текущее количество элементов

Cells(1, i) = A(i) ' заполнение массива элементами

A(i) = A(i - 1) + 2

Pr = Pr * A(i) ' вычисление произведения

i = i + 1

Loop ' конец цикла

For i = 1 To k ' вывод массива

S = S + A(i) ' накопление суммы элементов

Next i

Cells(2, 1) = "Сумма элементов = " & S

Cells(3, 1) = "Количество элементов = " & k

End Sub

 

Результат программы:

 

 




Поделиться с друзьями:


Дата добавления: 2014-10-23; Просмотров: 464; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.133 сек.