Пример решения экономической задачи с разветвлением
Лабораторная работа №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.
Рис. 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
Преимуществом такого способа организации разветвлений является его наглядность, информативность и компактность самого оператора.
Пример решения экономической задачи с разветвлением
Постановка задачи
Разработать проект кассового аппарата супермаркета. В проекте предусмотреть организацию следующих скидок:
– на объем покупки;
– на тип покупателя;
– на день недели.