
- •Лабораторная работа №4
- •Общие рекомендации
- •Основные типы циклов
- •Проектирование приложения на базе цикла со счетчиком
- •Проектирование приложения на базе условного цикла
- •Таким образом, в цикле с постусловием в отличие от цикла с предусловием, цикл всегда выполняется хотя бы один раз.
- •Пример решения экономической задачи на базе условного цикла
- •1. Постановка задачи
- •2. Экономико-математическая модель
- •3. Алгоритм решения задачи
- •4. Структура данных
- •5. Интерфейс проекта и пользователя
- •Основные свойства элементов управления на форме
- •6. Код проекта
- •В результате выполнения процедуры на форме (в текстовом поле TxtОплата) отобразится сумма к оплате за купленный товар.
- •7. Реализация проекта
- •8. Анализ проекта
- •9. Выполнение программы и анализ полученных результатов
- •Варианты индивидуальных заданий
- •Контрольные вопросы
В результате выполнения процедуры на форме (в текстовом поле TxtОплата) отобразится сумма к оплате за купленный товар.
Расчет сдачи и вывод результата
На рис. 4.11 представлен программный код процедуры расчета сдачи и вывода результата в виде сообщения при наступлении события – снятие фокуса с текстового поля TxtНаличные (для VB-6.0 – LostFocus, а для VBA – Exit).
Private Sub TxtНаличные_Exit(ByVal Cancel As _ MSForms.ReturnBoolean)
'Расчет сдачи
CurNalich = CCur(TxtНаличные.Text)
CurSdacha = CurNalich – CurStoimost
TxtСдача.Text = Format(CurSdacha, "# ##0.00")
End Sub
Рис. 4.11. Процедура расчета сдачи и вывода результата
В результате выполнения процедуры на форме (в текстовом поле TxtСдача) отобразится сдача.
Подготовка рабочего места к обслуживанию очередного покупателя
На рис. 4.12 представлен программный код процедуры подготовки рабочего места к работе при наступлении события – щелчок по кнопке «Сброс» (CmdСброс) на форме.
'Подготовка рабочего места к работе со следующим покупателем
Private Sub CmdСброс_Click()
LblРезультат.Caption = Empty
TxtНаличные.Text = Empty
TxtОплата.Text = Empty
TxtСдача.Text = Empty
End Sub
Рис. 4.12. Процедура подготовки рабочего места к работе
В результате выполнения процедуры на форме будут очищены текстовые поля TxtОплата, TxtНаличные, TxtСдача и надписи LblРезультат.
7. Реализация проекта
1. Запустить на выполнение VBA для создания нового проекта.
2. Построить форму согласно проекту.
3. Дважды щелкнуть на кнопке Расчет и в открывшемся окне кода в заготовку процедуры CmdРасчет_Click ввести соответствующие операторы.
4. Дважды щелкнуть на текстовом поле TxtНаличные и в открывшемся окне кода в заготовке процедуры TxtНаличные_Click заменить событие Click на событие Exit из раскрывающегося списка событий и ввести соответствующие операторы в заготовку процедуры.
6. Дважды щелкнуть на кнопке Сброс и в открывшемся окне кода в заготовку процедуры CmdСброс_Click ввести соответствующие операторы.
8. Анализ проекта
Процедура cmdРасчет_Click предназначена для вычисления стоимости приобретенных товаров с учетом предусмотренных скидок.
Для организации повторений по вводу и обработке данных для каждой покупки используется цикл Do Loop, поскольку заранее не известно количество покупок. Так как возможен случай, когда не произведено ни одной покупки, применяется конструкция While с верхним окончанием (цикл с предусловием).
В качестве условия повторения использовано сравнение
MsgBox("Будут еще покупки?", vbQuestion + vbYesNo, _
"Покупки") = vbYes
Действие встроенной функции MsgBox состоит в вызове окна сообщений, в котором выводится заданное сообщение (первый параметр) и заголовок (третий параметр). В окне сообщений могут выводиться различные рисунки и кнопки, которые определяются суммой соответствующих констант (второй параметр). Названия констант запоминать не нужно, т.к. они выводятся при задании соответствующего параметра в виде подсказок. Второй параметр можно опустить, тогда на окне сообщений выводится только кнопка «ОК».
Если же в окне сообщений несколько кнопок, то пользователь может нажать любую из них. В этом случае значением функции MsgBox будет соответствующая этой кнопке константа. Названия констант-результатов также выводятся в виде подсказок. В условии после слова While проверяется, нажата ли кнопка «Да» (MsgBox(…) = vbYes).
Для ввода исходных данных цены и количества по каждому виду товара используется функция InputBox, которая вызывает диалоговое окно ввода, на котором выводится подсказка (первый параметр) и заголовок (второй параметр). Нужное значение вводится в поле ввода на этом окне. Ввод значения завершается нажатием кнопки «ОК».
Значением функции является введенное пользователем значение. Оно имеет строковый тип. Для преобразования в нужный числовой тип используются функции CСur (для цены – в денежный тип) и CInt (для количества – в целый тип).
Процедура TxtНаличные_Exit запускается при переводе курсора в любое другое место формы, что соответствует снятию фокуса с поля TxtНаличные, и предназначена для расчета сдачи и вывода результатов.
В процедуре подготовки рабочего места к работе CmdСброс_Click() использована константа Empty для обнуления результатов расчетов.