Программирование разветвляющихся процессов
Изменить последовательность выполнения операторов можно с помощью операторов ветвления.
Одним из них является условный оператор If … Then. Он имеет два форматов записи.
1. Однострочный формат
Ifусловие ThenОператор1 [ Else Оператор2]
(в квадратные скобки взята необязательная часть). Если условие истинно, Оператор1 выполняется, в противном случае он пропускается и выполняется Оператор2, если он указан.
2. Блочный формат.
Ifусловие Then
Операторы1
[ Else
Операторы2]
End If
Эта форма применяется, когда нужно при выполнении или не выполнении заданного условия выполнить не один, а несколько операторов.
В качестве примера рассмотрим задачу вычисления корней квадратного трехчлена с коэффициентами A, B, C. Как известно, вещественные корни существуют при условии, что дискриминант больше либо равен нулю: D = B2 – 4AC ³ 0. Ниже приведен фрагмент программы, в котором дискриминант сравнивается с нулем и если он оказывается меньше нуля, выводится сообщение «Вещественных корней нет», противном случае подсчитываются значения корней.
|
да нет
D < 0
“Решений Вычисление
нет” корней X1, X2
Вывод X1, X2
Конец
Рис. 10. Фрагмент программы вычисления корней квадратного уравнения и его блок-схема
Еще одним оператором ветвления является Select Case.
Select CaseВыражение
CaseСписок_значений1
Операторы1
CaseСписок_значений2
Операторы2
……….
[Case ElseСписок_значений3
Операторы3 ]
End Select
Здесь в качестве параметра Выражение может быть как имя переменной, так и арифметическое выражение, а параметры Список_значений1, Список_значений2 и т.д. могут быть как одиночными числовыми значениями, так и списками – несколькими числами, разделенными запятыми.
Если значение выражения не совпадет ни с одним из значений, указанных в списках, будет выполнены операторы, указанные в разделе Case Else (если таковой присутствует, если же его нет, то следующим будет выполнен оператор, следующий за оператором Select.
В качестве списка значений можно указывать не только одно из возможных значений, но и несколько значений, разделенных запятыми. Можно также указать интервал значений (например, 4 To 6), или задать его с помощью ключевого слова IS и одного из знаков отношения < , <=, >, >=, < >, = (например, IS >= 10).
В качестве примера рассмотрим следующую задачу. Пусть задана кусочно-непрерывная функция f (x) следующим образом:
y
–1 для x < –1, 1
f (x) = 0 для –1 £ x < 1,
2 для x ³ 1. –2 –1 0 1 2 x
–1
Требуется написать программу, вычисляющую значение этой функции для любого заданного значения x. Воспользуемся для этой цели оператором ветвления Select Case:
Select CaseX
Case IS < –1
Y = –1
Case IS < 1
Y = 2
Case IS >= 1
Y = 1
End Select
Предположим, что X = –2. Тогда истинными являются условия IS <= –1 иIS < 1. Однако проверка условия IS < –1 идет первой и Y получит значение –1. Хотя второе условие также истинно для текущего значения X, оператор Y = 0 выполняться не будет, поскольку выбор уже будет сделан.
Дата добавления: 2016-02-11; просмотров: 718;