- •5. Проектирование разветвляющихся вычислительных процессов
- •5.1. Условный оператор
- •5.2. Проектирование приложения, реализующего разветвляющийся вычислительный процесс
- •Используемые переменные
- •5.2.5. Интерфейс с пользователем
- •5.2.6. Код программы
- •5.2.7. Реализация проекта
- •5.2.8. Анализ проекта
- •5.2.9. Выполнение программы и анализ полученных результатов
- •5.4. Пример использования оператора выбора
- •6. Проектирование приложений с циклами
- •6.1. Назначение операторов цикла
- •6.2. Условные циклы
- •6.3. Проектирование приложения на базе условного цикла с верхним окончанием
- •Используемые переменные
- •6.3.5. Интерфейс с пользователем
- •6.3.6. Код программы
- •6.3.7. Анализ проекта
- •6.3.8. Выполнение программы и анализ полученных результатов
- •6.4. Проектирование приложения с использованием условного цикла с нижним окончанием
- •Используемые переменные
- •6.4.5. Интерфейс с пользователем
- •6.4.6. Код программы
- •6.4.7. Анализ проекта
- •6.4.8. Выполнение программы и анализ полученных результатов
- •Планируемые расходы на ремонт офиса
- •6.5. Цикл со счетчиком
- •6.6. Проектирование приложения с использованием цикла со счетчиком
- •6.6.7. Реализация проекта
- •6.6.8. Анализ проекта
- •6.6.9. Выполнение программы и анализ полученных результатов
- •Остаток товаров на 17.09.01
- •7. Массивы данных
- •7.1. Общие сведения о сложных типах
- •Стоимость товаров
- •7.2. Описание и обращение к массивам
- •7.3. Динамические массивы
- •7.4. Использование массивов при решении экономической задачи
- •Используемые данные
- •7.4.5. Интерфейс с пользователем
- •7.4.6. Код программы
- •7.4.7. Реализация проекта
- •7.4.8. Анализ проекта
- •7.4.9. Выполнение программы и анализ полученных результатов
- •Прайс-лист
- •8. Массивы элементов управления
- •8.1. Назначение и создание массивов элементов управления
- •"Группа переключателей"
- •8.2.4. Структура данных
- •Используемые данные
- •8.2.5. Интерфейс с пользователем
- •8.2.6. Код программы
- •8.2.7. Реализация проекта
- •8.2.8. Анализ проекта
- •8.2.9. Выполнение программы и анализ полученных результатов
- •9. Пользовательский тип данных
- •9.1. Определение и обращение
- •9.2. Оператор присоединения With
- •10. Файлы
- •10.1. Назначение файлов
- •10.2. Операции с файлами
- •10.3. Режимы доступа
- •10.4. Файлы с произвольным доступом
- •10.5. Проектирование приложения с файлами
- •10.5.1. Постановка задачи
- •10.5.2. Экономико-математическая модель
- •10.5.3. Алгоритм решения задачи
- •10.5.4. Структура данных
- •10.5.5. Интерфейс с пользователем
- •10.5.6. Код проекта
- •10.5.7. Реализация проекта
- •10.5.8. Анализ проекта
- •9.5.9. Выполнение программы и анализ полученных результатов
- •Данные по заказу на крепежные изделия
- •11. Процедуры и функции
- •11.1. Назначение процедур и их виды
- •11.2. Описание процедур
- •11.3 Вызов процедуры
- •11.4. Функции
- •11.5. Использование процедур и функций при решении экономической задачи
- •11.5.1. Код проекта
- •11.5.2. Реализация проекта
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. Алгоритм решения задачи
Решение задачи состоит из двух этапов:
ввод данных прайс-листа (названия и цены всех товаров);
поиск товаров с нужной ценой и вывод их названий с подсчетом количества.
Алгоритм выбора товаров с нужной ценой приведен на рис. 7.1.
Нет
Да
Да
Нет
Рис. 7.1. Алгоритм выбора товаров с нужной ценой
7.4.4. Структура данных
Поскольку информация о товарах (названия и цены) обрабатывается после ввода данных всего прайс-листа, то в программе используются два массива данных – названия товаров и их цены. Массив названий предназначен для хранения текстовых данных, поэтому он имеет имя strНазвание, а массив цен – для данных денежного типа и в соответствии с этим имя – curЦена.
Цена, по которой осуществляется отбор товаров (Ценан), представляется переменной денежного типа и имеет имя curНужная_Цена.
Для определения номера товара (названия и цены), с которым производятся действия в текущий момент, служит переменная целого типа i.
Количество найденных товаров записывается в переменную k, которая также принадлежит к данным целого типа.
Количество всех товаров известно заранее и не изменяется в процессе работы с приложением. Поэтому оно представлено константой N.
Используемые данные приведены в табл. 7.2.
Таблица 7.2