- •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. Реализация проекта
Используемые данные
Реквизит |
Имя |
Назначение |
N i k Названиеi Ценаi Ценан |
N i k strНазвание(i) curЦена(i) curНужная_Цена |
Количество всех товаров Номер текущего товара Количество найденных товаров Название i-го товара Цена i-го товара Цена, которую имеют отобранные товары |
7.4.5. Интерфейс с пользователем
Поскольку в приложении нет простых вводимых данных, которые относятся ко всей задаче, то на форме нет текстовых полей. Результат также представляет собой не одно значение, а несколько названий, число которых заранее не известно. Поэтому на форме отсутствуют надписи, а командные кнопки сдвинуты вправо, поскольку результат выводится на форму, начиная с левого верхнего угла (рис. 7.2).
Решение задачи согласно алгоритму состоит из двух этапов, для активизации каждого из которых служат командные кнопки «Ввод данных» и «Поиск».
Рис. 7.2. Форма для решения задачи
7.4.6. Код программы
Процедуры, которые служат для обработки событий "Щелчок на кнопках «Ввод данных» и «Поиск»", представлены ниже
Option Explicit 'Явное описание переменных
Option Base 1 'Нумерация элементов массива с 1
Const N = 5 'Количество всех товаров
'Описание массивов для всех процедур формы
Dim strНазвание(N) As String, _
curЦена(N) As Currency
'Ввод исходных данных
Private Sub cmdВвод_данных_Click()
Dim i As Integer 'Номер текущего элемента массива
'Очистка формы от предыдущих данных,
'выведенных оператором Print
Cls
'Ввод данных
For i = 1 To N
strНазвание(i) = InputBox("Введите название товара", _
Str(i) + "-й товар")
curЦена(i) = CCur(InputBox("Введите цену товара", _
Str(i) + "-й товар"))
Next i
End Sub
'Поиск товаров с нужной ценой
Private Sub cmdПоиск_Click()
Dim curНужная_Цена As Currency, _
i As Integer, _
k As Integer
'Ввод нужной цены
curНужная_Цена = CCur(InputBox("Введите нужную цену ", _
"Цена товара"))
'Вывод заголовка результата
Print "Товары с ценой " & Format(curНужная_Цена, "0.00 грн.") & ":"
k = 0 'Количество найденных товаров
'Просмотр и вывод названий с нужной ценой
For i = 1 To N
If curЦена(i) = curНужная_Цена Then
Print strНазвание(i)
k = k + 1 'Подсчет числа найденных товаров
End If
Next i
If k = 0 Then Print "Отсутствуют"
Print "--------------------------"
End Sub
7.4.7. Реализация проекта
Запустить на выполнение VB для создания нового проекта.
Задать заголовок и имя формы.
На форме создать две кнопки «Ввод данных» и «Поиск».
В окне кода в разделе общих описаний (General Declaration) ввести операторы
Option Base1
Const N=5
Dim strНазвание(N) As String, _
curЦена (N) As Currency
В окне формы дважды щелкнуть на кнопке «Ввод данных» и ввести тело кода процедуры обработки события щелчка на этой кнопке, а затем выполнить аналогичные действия для кнопки «Поиск».
Сохранить форму и проект в папке на диске D:.
7.4.8. Анализ проекта
В коде приложения строго соблюдается дисциплина явного описания переменных. Она обеспечивается наличием оператора
Option Explicit
в разделе общих описаний. Здесь же помещено описание массивов данных strНазвание и curЦена, поскольку эти массивы используются в обеих процедурах.
Каждый массив состоит из N элементов, где N – константа. Она определена в операторе Const, который в данном случае должен предшествовать оператору описания массивов Dim. По этой причине, а также потому, что N используется в обеих процедурах, оператор
Const N=5
помещен в разделе общих описаний.
Для того чтобы нумерация элементов массивов начиналась не с нуля, а с единицы, в разделе общих описаний записан оператор
Option Base1
Переменные, используемые в качестве счетчиков в операторах цикла For, принято описывать как локальные переменные. Поэтому переменная i описана не в разделе общих описаний, а в каждой процедуре отдельно.
Для ввода массивов данных названий товаров и их цен в процедуре обработки события "Щелчок на кнопке «Ввод данных»" используется функция InputBox. Эта же функция применяется для ввода значения цены, по которой отбираются товары из прайс-листа в процедуре обработки события "Щелчок на кнопке «Поиск»".
В этой процедуре имеется цикл для просмотра всех цен и сравнения с нужной ценой. Если значение цены товара совпадает с нужной ценой, то сразу же выводится название этого товара на форму.
Сравнение цен производится оператором If, а вывод – оператором Print, который записан в ветви Then. Здесь же увеличивается значение счетчика количества найденных товаров k. Перед началом просмотра (перед циклом) k равно нулю.
Если после окончания просмотра списка цен окажется, что К по-прежнему равно нулю, то это означает, что товары с заданной ценой отсутствуют в списке. Об этом выдается соответствующее сообщение в конце процедуры.
Таким образом, после щелчка на кнопке «Поиск» на форму выводится определенная информация. Если еще раз щелкнуть на этой же кнопке и задать другое значение нужной цены, то ниже будут выведены результаты второго поиска и т.д.
Если же потребуется произвести новый поиск с новым прайс-листом, предварительно не закрывая форму, то желательно, чтобы результаты поиска по новому списку выводились на очищенную от результатов прежних поисков форму. Такая очистка обеспечивается оператором Cls в процедуре cmdВвод_данных_Click перед вводом информации из нового прайс-листа.
Из схемы алгоритма видно, что данные по всем товарам (название и цена) обрабатываются однотипно. Поэтому в программе использованы не наборы простых переменных соответственно строкового и денежного типов, а массивы данных этих типов. Доступ к каждому элементу массивов осуществляется по индексу.