Урок 4. Управляющие операторы
VBScript
VBScript позволяет управлять
процессом обработки данных с
помощью условных переходов и
циклов. С помощью условных
выражений вы можете разветвлять
сценарий, используя критерий для
определения, какую задачу
выполнять. Циклы позволяют
ваммногократно повторять
однотипные действия. И те, и другие
помогают создать более сложные и
функциональные страницы.
Условные выражения
В VBScript есть две формы условных
выражений:
- If ... Then ... Else
- Select ... Case
If ... Then ... Else
Это выражение используется для
проверки условия, которое может
оказаться истиным или ложным, и
затем, в зависимости от результата
сравнения, для выполнения одной или
нескольких строк кода. Вместо того
чтобы рассуждать о теоретических
возможностях блока If,
мы проанализируем несколько
примеров.
Самый простой способ
использования блока If
выглядит так:
If AmountPurchased >10000 Then
DiscountAmount = AmountPurchased * .10
В этом премере условие таково:
If AmountPurchased >10000
В нем просто сравнивается с 10 000
значение переменной (объем покупок).
Если объем покупок больше 10 000,
условие выполняется. В этом случае
выполняется выражение, находящееся
в той же строке: DiscountAmount
= AmountPurchased * .10
Теперь рассмотрим более сложную
версию этой конструкции. Здесь мы
можем выполнить несколько действий
подряд в случае выполнения условия:
If AmountPurchased >10000 Then
DiscountAmount = AmountPurchased * .10
Subtotal=AmountPurchased - DiscountAmount
End If
В такой форме этой конструкции в
случае выполнения условия могут
быть выполнены одно или несколько
выражений. Для этого нужные
выражения помещают между
операторами Then и End
If.
Следующей формой конструкции
является формат If
... Then ... Else. Эта форма
отличается тем, что в случае
истинности условного выражения
выполняется один блок кода, в
случае, если оно ложно, --
другой блок.
If AmountPurchased >10000 Then
DiscountAmount = AmountPurchased * .10
Subtotal=AmountPurchased - DiscountAmount
Else
HandlingFee = AmountPurchased * .3
Subtotal=AmountPurchased + HandlingFee
End If
В этом примере, когда условие
выполнено, т.е. стоимость покупки
больше $10 000, покупатель получает
скидку 10%. Если меньше --
скидка заменяется на 3%
комиссионных.
И последняя конструкция функции If -- конструкция
If ... Then ... Else If.
В этой форме проверяются все
условия либо до тех пор, пока не
будет найдено выполненное, либо до
выражения Else.
If AmountPurchased >10000 Then
DiscountAmount = AmountPurchased * .10
Subtotal=AmountPurchased - DiscountAmount
Else
If AmountPurchased >5000 Then
DiscountAmount = AmountPurchased * .05
Subtotal=AmountPurchased - DiscountAmount
Else
HandlingFee = AmountPurchased * .3
Subtotal=AmountPurchased + HandlingFee
End If
В этом примере покупатель
получает скидку 10% ну покупку
стоимостью свыше $10 000, 5% -- на
покупку стоимостью свыше $5000, или с
него удерживаются комиссионные в
размере 3% во всех остальных случаях.
Как можно заметить, VBScript дает вам
много возможностей для построения
блока If.
Select ... Case
Конструкция Select Case
является альтернативной блоку If ... Then ... Else,
когда появляются сложные условия.
Она хорошо подходит для ситуации, в
которой есть несколько возможных
значений для проверяемого условия.
Так же, как и предыдущая,
конструкция Select Case
проверяетусловие на основе
результата выполняет серию
действий.
Синтаксис выглядит так:
Select Case условие
Case значение
Case значение
...
Case Else
End Select
Например, слудующий блок
присваивает различные почтовые
издержки в зависимости от штата, в
который будет послан продукт:
Select Case Document.frmOrder.txtState.Value
Case "California"
ShippingFee = .04
Case "Florida"
ShippingFee = .03
Case Else
ShippingFee = .02
End Select
Такая конструкция проверяет
каждое из условий Case
до тех пор , пока не найдет
выполненное условие. Если такого
условия не будет найдено, будут
выполнены выражения , находящиеся в
Case Else.
СОВЕТ Даже
если это не является необходимым, в
конструкцию Select Case всегда
включайте блок Case Else для обработки
условий, которые вам могут казаться
невозможными. Для таких условий
просто включите функцию Message Box,
которая выдаст сообщение о том, что
происходит что-то непредвиденное.
Операторы цикла
VBScript поддерживае четыре формы
циклов:
- For ... Next
- For Each ... Next
- Do ... Loop
- While ... WEnd.
Эти четыре выражения могут быть
разделены на две группы.
Конструкции с оператором For лучше всего
использовать, когда вы хотите
проделать некоторые действия
определенное количество раз.
Конструкции, содержащие While, лучше
всего использовать для
неограниченного количества
повторений.
For ... Next
Эта структура применяется, когда
нужно повторить действия
определенное количество раз. в нем
используется переменная - счетчик
циклов, которая увеличивается или
уменьшается с каждым новым циклом.
В следующем примере показывается
простой цикл For:
For counter = 1 to 12
result = 5 * counter
MsgBox counter & " пять раз будет " & result
Next counter
Переменная counter
имеет числовое значение , которое
увеличивается или уменьшается.
Число 1 определяет его начальное
значение, 12 - конечное значение, шаг
по умолчанию равен 1. Когда этот
цикл завершиться , появится 12 окон
сообщения, в которых будет написана
таблица умножения на 5 чисел от 1 до
12.
В данном примере переменная counter
увеличивается на 1 в конце каждого
цикла. Заданием необязательного
параметра Step
мы можем изменить эту величину:
For counter = 1 to 12 Step 2
result = 5 * counter
MsgBox counter & " пять раз будет " & result
Next counter
Таким образом, слегка изменив код,
мы получим результаты перемножения
лишь некоторых чисел из данного
диапазона. Можно осуществить и цикл
с обратным счетом, изменив параметр
Step:
For counter = 12 to 1 Step -1
result = 5 * counter
MsgBox counter & " пять раз будет " & result
Next counter
Заметим, что в цикле с обратным
счетом конечный номер меньше
начального.
For Each ... Next
Эта конструкция похожа на
предыдущую, отличаясь тем, что
вместо заданного количества
повторений цикл обрабатывает
каждый элемент массива или
коллекции.
Do ... Loop
Этот тип цикла повторяет
выполнение выбранного блока кода
до выполнения заданного условия.
Обычно при использовании такой
структуры проверяемое условие --
результат операции, выполняемой
внутри цикла. Два типа этой
структуры приведены далее. Это Do ... While и Do ... Until.
Do ... While
Цикл Do,
содержащий ключевое слово While,
выполняется до тех пор, пока
проверяемое условие истино. Вы
можете проверять это условие в
начале цикла.
Do While условие
выражение
выражение
... ...
Loop
Или в конце цикла, как показано
ниже:
Do
выражение
выражение
... ...
Loop While условие
Разница между этими способами
заключается в том, что первый может
никогда не выполнить содержащиеся
в нем команды, а второй выполнит их
как минимум один раз.
Do ... Until
Цикл Do,
содержащий ключевое слово Until,
выполняется до тех пор, пока
проверяемое условие ложно. Как и в
структуре Do ... While,
вы можете поставить условие в
начале цикла:
Do Until условие
выражение
выражение
... ...
Loop
Или в конце цикла, как показано
ниже:
Do
выражение
выражение
... ...
Loop Until условие
Пример использования цикла Do ... Loop:
password = InputBox("Введите ваш пароль")
Do Until possword = "No Pasaran"
MsgBox "Неправильно введенный пароль. Попробуйте еще раз!"
password = InputBox("Введите ваш пароль")
Loop
В этом примере мы требуем ввести
пароль перед выполнением условной
части цикла в первый раз. Результат
будет таким: если правильный пароль
будет введен сразу, цикл не будет
выполнен ни разу. Если пользователь
введет неверный пароль, будут
выполнены действия, указанные
внутри цикла, то есть будет выдано
сообщение и пользователю будет
приедложен снова ввести пароль.
While ... WEnd
Cтруктура While ... WEnd
выполняет цикл до тех пор, пока
проверяемое условие верно. Если это
так, она работает похоже на Do ... Loop, хотя и
без ее гибкости.
Синтаксис структуры такой:
While условие
выражение
выражение
...
WEnd
[ продолжение ]
[ на
главную | дальше ]
|