Разработка INTRANET приложений

       

Управляющие конструкции VBScript


С помощью условных операторов и операторов цикла в VBScript можно управлять исполнением программ, составлять код для обработки различных ситуаций и вариантов, а также при необходимости повторно обращаться к отдельным группам операторов.

Условный оператор If ... Then ... Else оценивает условие как False или True, а затем определяет один или несколько операторов, соответствующих условию, для дальнейшего выполнения. Обычно в условном операторе используются операторы сравнения. В VBScript разрешается использовать вложенность условных операторов.

Если при выполнении условия нужно выполнить только один оператор, то используется однострочный условный оператор, например:

<SCRIPTLANGUAGE="VBScript"> SubFixDate() DimmyDate myDate = #2/13/95# IfmyDate < NowThenmyDate = Now EndSub </SCRIPT>

В случае, когда нужно выполнить несколько операторов при выполнении условия, используется многострочный оператор If ... Then ... Else, например:

<SCRIPTLANGUAGE="VBScript"> SubAlertUser(value) Ifvalue = 0 Then AlertLabel.ForeColor = "Red" AlertLabel.Font.Bold = True AlertLabel.Font.Italic = True EndIf EndSub </SCRIPT>

Отметим, что поскольку в данных примерах только одно условие, то ключ Else не используется, а в последнем примере обязательно выражение EndIf, которое указывает на конец условного оператора.

Также оператор If ... Then ... Else можно использовать для определения двух блоков операторов, один из которых выполняется, когда условие верно, а другой - в противном случае. Такой вариант показан ниже:

<SCRIPTLANGUAGE="VBScript"> SubAlertUser(value) Ifvalue = 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 EndIf EndSub </SCRIPT>

Для повторения группы операторов в VBScript используются циклы. Существуют следующие операторы цикла:

  • Do ... Loop: повторяет операторы пока условие верно или до тех пор, когда условие станет верным;
  • While ... Wend: повторяет операторы пока условие верно;
  • For ... Next: используется счетчик для определения числа повторений цикла.


Для проверки условия в операторе цикла Do ... Loop используются два ключевых слова While и Until. Ключевое слово While можно поставить перед входом в цикл (как показано в первом примере) или в конце цикла (как показано во втором примере). Отличие заключается в том, что в первом случае цикл начнет выполняться только при выполнении условия, а во втором случае операторы цикла сначала выполняться один раз, и только потом произойдет проверка условия. Цикл выполняется, пока выполняется условие.

<SCRIPTLANGUAGE="VBScript"> SubChkFirstWhile() Dimcounter, myNum counter = 0 myNum = 20 DoWhilemyNum > 10 myNum = myNum - 1 counter = counter + 1 Loop MsgBox "Theloopmade " & counter & " repetitions." EndSub

SubChkLastWhile() Dimcounter, myNum counter = 0 myNum = 9 Do myNum = myNum - 1 counter = counter + 1 LoopWhilemyNum > 10 MsgBox "Theloopmade " & counter & " repetitions." EndSub </SCRIPT>

Ключевое слово Until также можно ставить в начале и в конце цикла. Отличие от цикла с ключевым словом While заключается в том, что в данном случае цикл выполняется, пока условие неверно. Примеры использования ключевого слова Until приведены ниже.

<SCRIPTLANGUAGE="VBScript"> SubChkFirstUntil() Dimcounter, myNum counter = 0 myNum = 20 DoUntilmyNum = 10 myNum = myNum - 1 counter = counter + 1 Loop MsgBox "Theloopmade " & counter & " repetitions." EndSub

SubChkLastUntil() Dimcounter, myNum counter = 0 myNum = 1 Do myNum = myNum + 1 counter = counter + 1 LoopUntilmyNum = 10 MsgBox "Theloopmade " & counter & " repetitions." EndSub </SCRIPT>

Кроме того, при необходимости можно принудительно заканчивать выполнение цикла Do ... Loop. Для этого используется оператор ExitDo. Например, может потребоваться выход из цикла при выполнении некоторого условия. Тогда в тело цикла нужно включить условный оператор, который будет проверять выполнение этого условия. Если условие выполнится, то произойдет выполнение оператора ExitDo, и программа закончит выполнение цикла, а в противном случае цикл будет выполняться как обычно. Пример использования оператора ExitDo показан ниже:



<SCRIPTLANGUAGE="VB"> SubExitExample() Dimcounter, myNum counter = 0 myNum = 9 DoUntilmyNum = 10 myNum = myNum - 1 counter = counter + 1 IfmyNum < 10 ThenExitDo Loop MsgBox "Theloopmade " & counter & " repetitions." EndSub </SCRIPT>

Оператор цикла While ... Wend предназначен для тех, кто уже хорошо знает VBScript. Кроме того, поскольку этот оператор не имеет достаточной гибкости при использовании, то рекомендуется вместо него использовать оператор Do ... Loop.

Оператор цикла For ... Next используется для повторения группы операторов заданное количество раз. Для повторения выполнения операторов используется переменная-счетчик, чье значение каждый раз увеличивается или уменьшается после каждого выполнения цикла. Например, следующая процедура MyProc выполняется 50 раз. Выражение For определяет переменную-счетчик х, а также ее начальное и конечное значения. Выражение Next увеличивает счетчик на 1.

<SCRIPTLANGUAGE="VBScript"> SubDoMyProc50Times() Dimx Forx = 1 To 50 MyProc Next EndSub </SCRIPT>

Величину шага, на который увеличивается или уменьшается счетчик, можно задавать самому. Для этого используется ключевое слово Step. Например, в следующем примере счетчик увеличивается на 2 после каждого выполнения цикла:

<SCRIPTLANGUAGE="VBScript"> SubTwosTotal() Dimj, total Forj = 2 To 10 Step 2 total = total + j Next MsgBox "Thetotalis " & total EndSub </SCRIPT>

Для уменьшения счетчика нужно указать отрицательное значение шага, Только нужно помнить, что в этом случае конечное значение счетчика должно быть меньше начального. Для принудительного выхода из цикла For ... Next используется оператор ExitFor.


Содержание раздела