- •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. Реализация проекта
Используемые переменные
Реквизит |
Имя |
Назначение |
Расходi |
curРасход |
Расход денег в текущем месяце, грн. |
SОбщ |
curSОбщ |
Общий расход денег за планируемый период, грн. |
SПред |
curSПред |
Предельная сумма денег, грн. |
i |
i |
Номер текущего месяца |
6.4.5. Интерфейс с пользователем
Среди исходных данных есть величина, общая для всей задачи – предельная сумма денег. Ее можно ввести с помощью текстового поля txtSПред на форме. Все остальные исходные данные (расходы по месяцам) вводятся с помощью окна ввода. Результат выводится в вогнутую область на форме, которая представляется надписью lblРезультат. Процесс ввода расхода денег по месяцам и вывода результатов начинается после щелчка на кнопке «Вычислить». Таким образом, задача решается с помощью формы, приведенной на рис. 6.9.
В области результата выводится сообщение "За первых i месяцев Вы предполагаете израсходовать SОбщ грн. Это больше предельной суммы на SОбщ - SПред" или сообщение "За год Вы предполагаете израсходовать SОбщ грн.". Здесь вместо i, SОбщ и SПред будут подставлены соответствующие значения.
Ввод данных по расходам за i-тый месяц производится с помощью окна ввода (рис. 6.10).
Рис. 6.9. Форма для Рис. 6.10.Окно для ввода
решения задачи расходов
6.4.6. Код программы
В процедуре обработки события "Щелчок на кнопке «Вычислить»" используются следующие операторы
Option Explicit
Private Sub cmdВычислить_Click()
Const KМес = 3 'Количество месяцев при планировании
Dim curРасход As Currency, _
curSОбщ As Currency, _
curSПред As Currency, _
i As Integer
'Ввод предельной суммы
curSПред = CCur(txtSПред)
curSОбщ = 0
i = 0
'Планирование расходов по месяцам
Do
i = i + 1
curРасход = CCur(InputBox("Введите расходы", _
Str(i) & "-й месяц"))
curSОбщ = curSОбщ + curРасход
Loop Until (i = KМес) Or (curSОбщ > curSПред)
'Подготовка и вывод результата
If curSОбщ > curSПред Then
lblРезультат = "За первых " & Str(i) _
& " месяцев Вы предполагаете израсходовать " _
& Format(curSОбщ, "0.00") & " грн." & vbCrLf _
& "Это больше предельной суммы на" _
& Format(curSОбщ - curSПред, "0.00") & " грн."
Else
lblРезультат = _
"За год Вы предполагаете израсходовать " _
& Format(curSОбщ, "0.00") & " грн."
End If
End Sub
6.4.7. Анализ проекта
В проектеиспользована константа КМес для определения количества месяцев, в течение которых будут производиться расходы планируемых финансов. Это позволяет быстро изменять период планирования. Например, при отладке программы достаточно взять 3 месяца, а для эксплуатации программы – 12 месяцев.
Перед началом ввода планируемых расходов производится преобразование предельной суммы, введенной в текстовое поле txtSПред, к денежному типу, поскольку дальнейшие действия будут выполняться с числовыми данными.
Для организации повторений по обработке планируемых расходов по месяцам использован цикл Do ...Loop, т.к. заранее не известно количество повторений. Оно определяется предельной суммой и величиной расходов за каждый месяц. Поскольку в планировании участвует, по крайней мере, хотя бы один месяц (т. е. операторы тела цикла должны выполниться не менее одного раза), то использована модификация цикла с нижним окончанием.
Условием выхода из цикла является или окончание планируемого периода (i = КМес), или превышение предельной суммы денег (curSОбщ curSПред), или то и другое. Поэтому эти два условия объединены логической операцией Or. Так как при выполнении хотя бы одного из этих условий должно прекращаться дальнейшее планирование расходов (выход из цикла), то в операторе цикла используется ключевое слово Until.
Поскольку выход из цикла возможен по двум разным причинам, то и дальнейшие действия будут зависеть от соответствующей причины. Поэтому после оператора цикла используется оператор If, в котором проверяется, был ли выход из-за превышения предельной суммы. В случае положительного ответа формируется результат решения задачи. Ответ состоит из двух предложений. Чтобы второе предложение выводилось с начала новой строки, используется константа Visual Basic vbCrLf (переход в начало новой строки). В случае отрицательного ответа формируется другой результат.
В каждом из случаев сформированные строки ответов присваиваются надписи lblРезультат, что обеспечивает их вывод на форму в область, отведенную для результата.