Использование условных операторов в VBScript
Управление выполнением программы
Вы можете управлять ходом выполнения вашего сценария с помощью циклов и условных
операторов. Используя условные операторы вы можете написать код VBScript,
который принимает решения и повторяет действия. В VBScript доступны следующие операторы сравнения:
- Оператор If...Then...Else
- Оператор Select Case
Ветвление программы с использованием If...Then...Else
Оператор If...Then...Else используется для проверки условий на
соответствие значениям True (Истина) или False (Ложь).
Условие является результатом вычисления какого-либо выражения. Например,
результатом выражения (5 + 5 = 10) будет True, так как это утверждение верно.
Результатом выражения (2 * 2 = 5) будет False, так как 2 * 2 = 4, а не 5.
Таким образом в коде сценария в зависимости от истинности выполнения какого-либо
условия мы можем выполнить тот или иной участок кода. Это действие называется ветвлением.
То есть сценарий будет выполнять один из двух участков кода, в зависимости от
истинности условия, но оба участка кода не могут быть выполнены за один проход сценария. Например:
Dim x, y
x = 2
y = 5
If (x * x) = y Then
MsgBox "Ответ правильный"
Else
MsgBox "Ответ НЕ правильный"
End If
В этом примере, если у = 5, то условие (х * х) = у НЕ выполняется, то есть равно False.
Следовательно, будет выполнен код, который находится после слова Else. Если вы присвоите
переменной у значение 4, то условие (х * х) = у будет выполнено, следовательно, в
сценарии будет выполнен код, который находится после слова Then, а код после слова
Else выполняться НЕ будет. Вообще. Если вы знаете английский, то вы уже успели заметить,
что языковая конструкция
If...Then...Else переводится как
Если...То...Иначе. Иными словами, если попытаться перевести этот
код на русский язык, то получим примерно следующее:
Если ВЫПОЛНЯЕТСЯ ЭТО УСЛОВИЕ То
Надо выполнить этот участок кода
Иначе (Если условие не выполняется)
Надо выполнить вот этот участок кода
Конец Если (Конец блока If...Then...Else)
Обычно условие — это выражение, в котором используются
операции сравнения одного
значения с другим, или одной переменной с другой, или переменной и константы,
или двух выражений и т.п. Подробности см. в разделе «Операторы сравнения».
Оператор
If...Then...Else может быть многократно вложен в другие
операторы сравнения. Таким образом можно получить несколько уровней вложенности условных операторов.
Выполнение операторов, если условие равно TRUE
Для того, чтобы выполнить один оператор, если проверяемое условие равно True,
можно использовать однострочный синтаксис оператора If...Then...Else.
В следующем примере показан однострочный синтаксис. Учтите, что этот пример не включает ключевое слово Else.
Sub FixDate()
Dim myDate
myDate = #2/13/95#
If myDate < Now Then myDate = Now
End Sub
Для того, чтобы выполнить несколько строк кода, вы должны использовать многострочный
синтаксис (блок кода). Этот синтаксис содержит оператор
End If, как показано в следующем примере:
Sub AlertUser(value)
If value = 0 Then
AlertLabel.ForeColor = vbRed
AlertLabel.Font.Bold = True
AlertLabel.Font.Italic = True
End If
End Sub
Выполнение одного блока операторов, если условие равно TRUE, и другого блока операторов, если условие равно FALSE
Вы можете использовать оператор If...Then...Else для определения
двух блоков выполняемых операторов (это уже рассматривалось выше,
но для закрепления материала приведём ещё один пример). Один блок выполняется,
если условие выполняется (равно TRUE), другой блок выполняется, если условие НЕ выполняется (равно FALSE).
Sub AlertUser(value)
If value = 0 Then
AlertLabel.ForeColor = vbRed
AlertLabel.Font.Bold = True
AlertLabel.Font.Italic = True
Else
AlertLabel.Forecolor = vbBlack
AlertLabel.Font.Bold = False
AlertLabel.Font.Italic = False
End If
End Sub
Выбор между несколькими альтернативами
Вариации на тему If...Then...Else позволяют вам выбирать из
нескольких альтернатив. Добавление ключевого слова ElseIf
расширяет функциональность оператора If...Then...Else таким образом,
что вы можете управлять потоком программы не по двум, а по нескольким направлениям. Например:
Sub ReportValue(value)
If value = 0 Then
MsgBox value
ElseIf value = 1 Then
MsgBox value
ElseIf value = 2 then
Msgbox value
Else
Msgbox "Значение вне диапазона!"
End If
End Sub
Вы можете добавлять столько раз слово
ElseIf, сколько это необходимо,
и таким образом предоставлять альтернативный выбор. Многократное использование
ElseIf часто приводит к громоздким и плохо читаемым участкам кода.
Поэтому в таких случаях лучше использовать альтернативный путь — оператор
Select Case.
Использование оператора Select Case
Конструкция Select Case является альтернативой оператору
If...Then...ElseIf для выборочного выполнения блока операторов
из множества имеющихся вариантов кода. Оператор Select Case
по сути похож на оператор If...Then...ElseIf, но делает код более эффективным и читаемым.
Конструкция Select Case работает с одним выражением, которое
вычисляется один раз (см. первую строчку в приведённом ниже примере).
Результат вычисления этого выражения сравнивается в каждом операторе Case
конструкции Select Case. Если найдено значение, равное результату
вычисления выражения, то выполняется блок операторов, который следует за словом
Case до того места, пока не встретится слово Case
или End Select. Пример:
Select Case x
Case x = 1
MsgBox "x = 1"
Case x = 2
MsgBox "x = 2"
Case x = 3
MsgBox "x = 3"
Case Else
MsgBox "Не удалось определить Х"
End Select
В этом примере проверяется значение переменной х. Если оно равно 1, то на экран
выводится «х = 1», если оно равно 2, то на экран выводится «х = 2», если оно равно 3,
то на экран выводится «х = 3», если х равно другому значению, то на экран выводится
«Не удалось определить Х». То есть если среди представленных значений не было
обнаружено равное х, то выполняются операторы, которые следуют за словом
Case Else. Этот оператор можно опустить, тогда в случае
несоответствия вычисленному значению ни одного из представленных не будет
выполнен ни один блок конструкции
Select Case.
Учтите, что в конструкции Select Case значение выражения вычисляется
только один раз, в отличие от оператора If...Then...ElseIf,
в котором выполняется вычисление результата сравнения в каждом операторе
ElseIf. Вы можете использовать конструкцию Select Case
вместо оператора If...Then...ElseIf только в том случае, если
все выражения оператора ElseIf аналогичны.