Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сидорова-004.С34.doc
Скачиваний:
4
Добавлен:
06.01.2020
Размер:
3.08 Mб
Скачать

5.2.1. Однострочный (линейный) оператор If

Линейная форма условного оператора имеет следующий формат:

If Условие Then Операторы_1 [ Else Операторы_2 ],

где Операторы_1 – операторы, исполняющиеся при выполнении Условия,

Операторы_2 – операторы, исполняющиеся при невыполнении Условия.

Примеры: If a < b Then a = b

If s = 2*d Then y = s^2 Else y = 0

Линейной форма оператора называется потому, что условный оператор записывается только в одной строке, без переноса его на другую строку.

Линейный If применяется редко, обычно в тех случаях, если проверяется не более двух условий, и операторы после ключевых слов достаточно кратки.

5.2.2. Блочная форма оператора If

Блочная форма условного оператора применяется, когда после проверки условия необходимо выполнить программные операторы, записанные в нескольких строках (блок операторов).

Самая простая – безальтернативная (усеченная) форма записи, которая применяется тогда, когда в случае истинности условия необходимо выполнить несколько операторов, а при невыполнении условия никаких действий нет:

If Условие Then

'Операторы при выполнении Условия

End If

Например, фрагмент программы для ветви 1 примера У1 (блоки ГСА № 3-5):

IF a * b < > 0 Then

y = 1 / (a * b)

MsgBox "y=" & y

End If

Альтернативная форма оператора If применяется в тех случаях, когда при истинности условия необходимо выполнить один набор операторов, а при невыполнении условия – другой. В этом случае оператор If записывается в следующем виде:

If Условие Then

'Операторы при выполнении Условия

Else

'Операторы при невыполнении Условия

End If

Текст программы для примера У1 с использованием альтернативной формы оператора If можно записать следующим образом:

Sub Пример_У1()

Dim a As Single, b As Single, y As Single

a = Val(InputBox("Введите a ")) 'Ввод a

b = Val(InputBox("Введите b ")) 'Ввод b

If a * b < > 0 Then

'Выполняются вычисления и вывод результата

y = 1 / (a * b) : MsgBox "y=" & y

Else

'Выводится сообщение о том, что знаменатель равен нулю

MsgBox "a · b = 0"

End If

End Sub

Пример У2. Разветвление на три ветви.

Вычислить:

Для наглядности и контроля работы программы введем дополнительную переменную nv, предназначенную для хранения номера ветви, по которой выполняется расчет при конкретном значении x. Графическая схема алгоритма приведена на рис. 10.

В данном примере при истинности условия 1 (x < 0) выполняются вычисления по первой формуле. Если условие 1 не выполняется, проверяется условие 2 (x = 0), при его истинности выполняются вычисления по второй формуле. Если ни первое, ни второе условия не выполняются, вычисления производятся по третьей формуле. Во всех случаях после расчета осуществляется вывод результата.

Текст программы:

Sub Пример_У2()

Dim x As Single, nv As Byte, y As Single

x = Val(InputBox("Введите x ")) 'Ввод x

If x < 0 Then

nv = 1 : y = Sin(x) 'Ветвь 1

Else

If x = 0 Then

nv = 2 : y = 1 'Ветвь 2

Else

nv = 3 : y = Cos(x) 'Ветвь 3

End If

End If

MsgBox "При x =" & x & " ветвь " & nv & " y =" & y

End Sub

При составлении ГСА и программы следует руководствоваться следующим правилом: количество условных блоков (операторов If) всегда на единицу меньше числа ветвей, на которые расходится вычислительный процесс.

Как видно из примера У2, операторы If могут быть вложенными. На любом уровне вложенности каждый внутренний If должен полностью входить во внешний для него If, например:

If Условие1 Then

Else

If Условие2 Then

Else

End If

End If

Если между внешним Else и внутренним If нет других операторов, то их обычно соединяют в одно слово, а команду End If , соответствующую внутреннему If, исключают. Записанная таким способом программа для примера У2 имеет вид:

Sub Пример_У2_2способ() 'Второй способ

Dim x As Single, nv As Byte, y As Single

x = Val(InputBox("Введите x ")) 'Ввод x

If x < 0 Then

nv = 1 : y = Sin(x) 'Ветвь 1

ElseIf x = 0 Then

nv = 2 : y = 1 'Ветвь 2

Else

nv = 3 : y = Cos(x) 'Ветвь 3

End If

MsgBox "При x =" & x & " ветвь " & nv & " y =" & y

End Sub