Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие по VB. Часть2.doc
Скачиваний:
23
Добавлен:
02.02.2015
Размер:
870.4 Кб
Скачать

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

Выше была рассмотрена работа с массивами, размеры которых были определены в самом начале и не изменялись в процессе выполнения программы. Такие массивы называются статическими. В отличие от них динамические массивы могут изменять свои размеры и даже размерность в процессе выполнения программы. Для этого массив вначале определяется обычным образом. Лучше в скобках не задавать никаких диапазонов. Можно, например, перед первой процедурой кода (секция General Declarations) указать

Dim curЦена() As Currency

Затем перед первым использованием массива переопределить его размеры и размерность с помощью оператора ReDim, который имеет такой же вид, как и оператор Dim. Но в операторе ReDim тип элементов массива можно не указывать, т.к. он был задан в операторе Dim. Например, можно переопределить массив цен следующим образом

ReDim curЦена(intКолТов)

Обратим внимание на то, что в данном примере intКолТов переменная, задающая количество товаров. Ее значение определялось во время выполнения программы до оператора ReDim.

Если в ходе дальнейшего выполнения программы нужно, чтобы массив цен рассматривался как двухмерный (товары и месяцы), то его можно еще раз переопределить следующим образом

ReDim curЦена(intКолТов, 7 То12)

При переопределении массива может произойти потеря хранящихся в нем данных. Чтобы предотвратить это, в операторе ReDim нужно использовать ключевое слово Preserve, например

ReDim Preserve curЦена(intКолТов, 7 То 12)

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

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

Erase Имя [, Имя] ,

где Имя – это имя массива.

Например, для освобождения памяти, которая отводилась под массивы curЦена и intКоличество нужно использовать оператор

Erase curЦена, intКоличество

7.4. Использование массивов при решении экономической задачи

7.4.1. Постановка задачи

Выбрать в прайс-листе, содержащем N товаров (N = 5), товары с нужной ценой.

7.4.2. Экономико-математическая модель

Вывести название товаров, у которых

Ценаi = Ценан, i = 1, 2,…,N,

где Ценаi цена i-го товара, Ценан – нужная цена.

7.4.3. Алгоритм решения задачи

Решение задачи состоит из двух этапов:

  1. ввод данных прайс-листа (названия и цены всех товаров);

  2. поиск товаров с нужной ценой и вывод их названий с подсчетом количества.

Алгоритм выбора товаров с нужной ценой приведен на рис. 7.1.

Нет

Да

Да

Нет

Рис. 7.1. Алгоритм выбора товаров с нужной ценой

7.4.4. Структура данных

Поскольку информация о товарах (названия и цены) обрабатывается после ввода данных всего прайс-листа, то в программе используются два массива данных – названия товаров и их цены. Массив названий предназначен для хранения текстовых данных, поэтому он имеет имя strНазвание, а массив цен – для данных денежного типа и в соответствии с этим имя – curЦена.

Цена, по которой осуществляется отбор товаров (Ценан), представляется переменной денежного типа и имеет имя curНужная_Цена.

Для определения номера товара (названия и цены), с которым производятся действия в текущий момент, служит переменная целого типа i.

Количество найденных товаров записывается в переменную k, которая также принадлежит к данным целого типа.

Количество всех товаров известно заранее и не изменяется в процессе работы с приложением. Поэтому оно представлено константой N.

Используемые данные приведены в табл. 7.2.

Таблица 7.2