» Изучение
VBScript
» Главная
страница
»
VBScript
- оглавление
Управляющие
операторы 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
Четвертое
упражнение по VBScript
В
этом упражнении мы продолжим
усовершенствование нашей страницы.
Новые особенности, с которыми
мы столкнемся в этом упражнении,
такие:
выпадающий
список, в котором пользователь
может выбрать товар;
автоматическое
назначение цены при выборе;
вычисление
размера скидок на основе стоимости
покупки;
Упражнение
4: работа с циклами
В
этом упражнении вы создадите
документ HTML, который содержит
сценарий, получающий данные
со страницы, выполняет расчеты
и выводит результат обратно
на страницу. Кроме того, он
будет оперировать с ценами на
товар и расчитывать размер скидки
на основе стоимости покупки.
Скопируйте
текст докуметна p0004.txt в
текстовый редактор и сохраните
с расширением .htm. Это часть
HTML набранная для вас.
Взгляните
на документ. Заметьте появление
элемента управления ListBox
и дополнительных элементов типа
Edit. Обратите внимание, как
заполняется список товаров.
Загрузите
файл в Internet Explorer. Результат
будет таким. Вы уже могли забыть
о том, что нужно попытаться
нажать на кнопку, так что мы
напоминаем.
Теперь
добавим на страницу сценарий,
для того чтобы кнопка и выпадающий
список перестали быть просто
элементами художественного оформления.
Добавьте
(не скопируйте, а добавьте)
выделенные строки в уже имеющийся
документ.
<html>
<head>
<title>Учебник
по VBScript - Упражнение 4 </title>
<SCRIPT
LANGUAGE="VBScript">
<!--Для
работы с несовместимым броузерами
Option
Explicit
Dim
Cost 'Номер продукта
Dim
Qty 'Количество заказанного
товара
Sub
Button1_OnClick()
Dim
AD ' AmountofDiscount
Dim
AT ' AmountofTax
Dim
DISCOUNT_LIMIT
Dim
DISCOUNT_RATE
Dim
SB 'SubtotalBefore
Dim
SA 'SubtotalAfter
Dim
TAX_RATE
Dim
TC 'TotalCost
'Определение
констант
DISCOUNT_LIMIT=1000
DISCOUNT_RATE=0.10
TAX_RATE=0.06
'Вычисление
подытога
Qty=document.all.Edit1.value
SB=Qty*Cost
'Проверка
на минимальный объем покупок
If
(SB>DISCOUNT_LIMIT) Then
AD=SB*DISCOUNT_RATE Else AD=0
SA=SB-AD
'Вычисление
налога и итога
AT=SA*TAX_RATE
TC=SA+AT
'Отображение
результатов
document.all.Edit3.value=CStr(SB)
& " $"
document.all.Edit4.value=CStr(AD)
& " $"
document.all.Edit5.value=CStr(SA)
& " $"
document.all.Edit6.value=CStr(AT)
& " $"
document.all.Edit7.value=CStr(TC)
& " $"
end
sub
sub
ListBox_onchange()
Dim
intMnt
intMnt=CInt(document.all.ListBox.value)
Select
Case intMnt
Case
1
Cost=645
Case
2
Cost=710
Case
3
Cost=320
Case
4
Cost=430
Case
5
Cost=940
Case
6
Cost=255
Case
7
Cost=150
End
Select
document.all.Edit2.value=CStr(Cost)
& " $"
end
sub
-->
</SCRIPT>
</head>
...
Сохраните
файл, загрузите его в Internet
Explorer. Результат будет, наверное,
таким. Выберите один из товаров
в списке. Заметим, что поле
Цена единицы товара автоматически
заполняется значением.
Как
это работает
На
странице сделанной в упражнении
4, есть две новых особенности:
автоматическое присваивание
цены и вычисление сидок. Мы
рассмотрим каждую из них в отдельности.
Просмотр
товаров
Это
новшество созданно с помощью
программы обработки события
ListBox_onChenge() . Как вы,
наверное, помните, элемент формы,
генерирующий выпадающий список,
называется ListBox. Этот элемент
поддерживаетсобытие onChenge,
которое происходит каждый раз
при выборе элементов из списка.
Используя инстукцию Select Case,
мы получает значение элемента
формы. В нашем примере элементы
списка жестко зафиксированы
в коде. В настоящих приложениях
элементы обычно беруться из
внешнего источника данных.
sub
ListBox_onchange()
Dim
intMnt
intMnt=CInt(document.all.ListBox.value)
Select
Case intMnt
Case
1
Cost=645
Case
2
Cost=710
Case
3
Cost=320
Case
4
Cost=430
Case
5
Cost=940
Case
6
Cost=255
Case
7
Cost=150
End
Select
document.all.Edit2.value=CStr(Cost)
& " $"
end
sub
ПРИМЕЧАНИЕ
Функции
преобразуют строку в целое число
(CInt) или наоборот (CStr).
Это может пригодится вам в дальнейшем.
Вычисление
скидок
Сценарий,
предназначенный для вычисления
скидок, начинается с задания
нескольких констант, одна из
которых устанавливает для минимальной
стоимости покупки , с которой
начинаются скидки, значение
$1000, вторая -- значение скидки
10%. Наш расчет начинается с
вычисления подытога перед назначением
скидок и налогов.
После
этого назначаются скидки с помощью
конструкции If ... Then ....
Else. Мы сравниваем наш подытог
с константой (минимум для скидок).
Если подытог больше минимума,
размер скидки вычисляется и
сохраняется в переменной AD.
Если подытог меньше или равен
минимуму, значение переменной
делается равным 0.
'Проверка
на минимальный объем покупок
If
(SB>DISCOUNT_LIMIT) Then
AD=SB*DISCOUNT_RATE Else AD=0
Значение
переменной AD затем вычисляется
из подытога. Дальше мы вычисляем
ставки налога и полный итог.
Заканчивается процедура отображением
разультатов на экране.
Развитие
этого приложения
В
этом примере минимальная стоимость
покупки для применения скидок
-- $1000. Что мешает нам сделать
еще один порого для новых скидок,
например, равным $100 000?
Прогресс
налицо. Эта страница получает
данные от пользователя, обрабатывает
их, делает необходимые проверки
и возвращает пользователю результат
-- и все без передачи данных
на сервер и обратно.
В
этом разделе вы познакомились:
с
условными выражениями, которые
позволяют избирательно выполнять
вам блоки кода;
конструкциями
циклов, которые дают возможность
многократно выполнять однотипные
действия при условии выполнения
заданного требования.
Теперь,
когда мы умеем вводить, обрабатывать
и отображать данные, пришло
время узнать, как проверять
правильность данных перед посылкой
на сервер.
Следующий
урок
|