Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
конспект лекций по программированию.doc
Скачиваний:
193
Добавлен:
22.03.2016
Размер:
1 Мб
Скачать
☆

7. Программирование разветвляющихся процессов

Изменить последовательность выполнения операторов можно с помощью операторов ветвления.

Одним из них является условный оператор 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

D = B^2 – 4*A*C

If D < 0 Then

Print “ Вещественных корней нет ”

Else

X1 = (–B + sqr (D)) / (2*A)

X2 = (–B – sqr (D)) / (2*A)

Print “ Вещественных корней нет ”

End If

:= B2 – 4AC

да нет

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 To6), или задать его с помощью ключевого словаISи одного из знаков отношения < , <=, >, >=, < >, = (например,IS>= 10).

В качестве примера рассмотрим следующую задачу. Пусть задана кусочно-непрерывная функция f (x) следующим образом:

y

–1 дляx< –1, 1

f (x) = 0 для –1x < 1,

2 дляx 1.–2–10 1 2 x

–1

Требуется написать программу, вычисляющую значение этой функции для любого заданного значения x. Воспользуемся для этой цели оператором ветвленияSelect Case:

Select Case X

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 выполняться не будет, поскольку выбор уже будет сделан.