
- •Лабораторная работа №3
- •Общие рекомендации
- •Пример решения экономической задачи с разветвлением
- •1. Постановка задачи
- •2. Экономико-математическая модель
- •3. Алгоритм решения задачи
- •4. Структура данных
- •5. Интерфейс проекта и пользователя
- •6. Код проекта
- •В результате выполнения процедуры на форме (в текстовом поле TxtОплата) отобразится сумма к оплате за купленный товар с учетом скидок на объем покупки, тип покупателя и день недели.
- •В результате выполнения процедуры на форме (в текстовом поле TxtСдача) отобразится сдача и пользователю будет выдано сообщение о результатах покупки или необходимости доплаты за покупку.
- •7. Реализация проекта
- •8. Анализ проекта
- •9. Выполнение программы и анализ полученных результатов
- •Варианты индивидуальных заданий
- •Контрольные вопросы
Лабораторная работа №3
Тема. проектирование приложения, которое реализует разветвляющийся вычислительный процесс.
Цель: приобрести умения и навыки создания приложений на базе разветвляющихся алгоритмов.
Назначение: научиться создавать проекты для разветвляющихся процессов. Полученные умения позволят лучше понять сущность разветвляющихся процессов как при решении задач на компьютере, так и в повседневной профессиональной деятельности.
Общие рекомендации
При решении абсолютного большинства экономических задач возникает необходимость выполнять анализ некоторой ситуации и на основе результатов этого анализа принимать решение о дальнейших действиях, т. е выбрать одну из возможных альтернатив обработки. При этом каждая альтернатива подразумевает последовательность действий. Такой вычислительный процесс называют разветвляющимся.
Для организации разветвляющегося вычислительного процесса в системах программирования VBA или VB применяются условные операторы и оператор выбора.
В рассматриваемых языках программирования применяются три формы условных операторов – однострочная, блочная простая и блочная расширенная.
О
днострочная
форма используется в простейших случаях,
когда в одной или в каждой из двух ветвей
имеется не более одного оператора. В
этом случае фрагмент алгоритма решения
этой задачи имеет вид, представленный
на рис 3.1.
Да
Нет
Рис. 3.1. Блок-схема алгоритма однострочной формы разветвления
Синтаксис оператора разветвления для рассмотренного случая имеет следующий вид:
If <Условие> Then <Оператор1> [Else <Оператор2>]
Примечание: Следует обратить внимание на то, что в этом случае нет операции закрытия разветвления оператором End If.
Если при разветвлении на две ветви в каждой ветви разветвляющегося вычислительного процесса нужно выполнить несколько действий (использовать несколько операторов), то используют простую блочную форму, фрагмент алгоритма которого представлен на рис 3.2.
Да
Нет
Рис. 3.2. Блок-схема фрагмента алгоритма блочной формы разветвления.
Синтаксис оператора разветвления для рассмотренного случая имеет следующий вид:
If <Условие> Then
<Оператор1>
<Оператор2>
…
<ОператорМ>
[Else
<ОператорA>
<ОператорB>
…
<ОператорN>]
End If
Каждый оператор после слов Then и Else необходимо записывать в отдельной строке. Если по каким-либо причинам возникает необходимость записать несколько операторов в одной стоке, то они должны быть разделены символом «:» (двоеточие).
В блочной форме оператор разветвления, как и в однострочной, может иметь сокращенную форму, в которой конструкция Else отсутствует.
Р
асширенная
блочная форма оператора разветвления
используется в случаях, когда необходимо
организовать более двух ветвей вычислений
(на схеме показано разветвление на
четыре ветви).
Нет
Да
Нет
Да
Нет
Да
и т. д.
Рис. 3.3. Блок-схема фрагмента алгоритма блочной расширенной формы разветвления
Синтаксис такого оператора имеет следующий вид:
If <Условие1> Then
<Оператор1>
<Оператор2>
…
<ОператорM>
ElseIf <Условие2> Then
<ОператорA>
<ОператорB>
...
<ОператорN>
…
[Else
<ОператорI
<ОператорII
…
<ОператорK>]
End If
Многоточие после конструкции ElseIf обозначают, что эта конструкция может повторяться несколько раз для разных условий.
Разветвление в программном коде, кроме оператора If…Then…Else…End If, можно организовать с применением функции IIf, которая имеет следующий синтаксис:
Znach = IIf(<Условие>, Оп1, Оп2)
Эта функция возвращает значение Znach, тип которого определяется типом данных, формируемых операндами Оп1 и Оп2.
С помощью функции IIf можно организовать разветвление больше, чем на две ветви. Для этого необходимо использовать вложения функции в функцию следующим образом:
Znach=IIf(<Условие1>, Оп1, IIf(<Условие2>,Оп2,Оп3))
Количество таких вложений определяется условиями задачи.
Разветвляющийся вычислительный процесс можно реализовать в VBA также с помощью оператора выбора Select Case. При этом количество ветвей может быть довольно большим. Для такого случая стандартом на графическое представление алгоритмов предусмотрена конструкция, представленная на рис. 3.4.
…
1
2
3
4
5
n
…
Рис. 3.4. Блок-схема фрагмента алгоритма, обеспечивающего несколько выходов
Каждый выход из блока в этом случае должен сопровождаться соответствующими значениями условий, определяющими логический путь в общей схеме алгоритма.
Синтаксис оператора Select Case имеет следующий вид:
Select Case <Выражение>
Case <1-ое значение выражения>
Группа операторов 1
Case <2-ое значение выражения>
Группа операторов 2
. . .
Case Else
Группа операторов N
End Select,
где <Выражение> может быть выражением любого типа (символьного, целого, вещественного, строкового и т. д.).
<Значение выражения> в операторе Case может быть:
а) конкретным значением:
Case 1: Оп.1
Case 2, 3: Оп.2
б) диапазоном значений:
Case 1 To 15 Оп.1
Case 16 To 31 Оп.2
в) с применением операторов отношений (=, <, >, <=, >=, <>)
Case Is < 15 Оп.1
Case Is >=15 Оп.2
Преимуществом такого способа организации разветвлений является его наглядность, информативность и компактность самого оператора.