В этой статье мы изучим следующие циклы vbs сценариев, а именно: do…loop и while…wend, также рассмотрим применение оператора exit…do.
Данный вид vbs циклов языка vbscript имеет немного другую логику чем, например цикл for, тут мы задаем не диапазон количества итераций, а условие. Например, нам нужно найти сумму чисел, причем количество значений неизвестно, зато, есть условие – сумма всех элементов не должна быть больше 1000. Проверка условия может проверяться как в начале, так и в конце заданного цикла vbs.
Хорошо, давайте проанализируем все vbs циклы по порядку.
Do…Loop — Данный цикл vbs можно использовать в двух вариантах: проверка до начала выполнения итерации (предусловие) и проверка после начала выполнения итерации (пост-условие). Если проверка выполняется в конце, то, как минимум один раз будет выполнена итерация. Давайте рассмотрим общий синтаксис:
Do [While | Until] условие
тело цикла
[Exit Do]
тело цикла
Loop
или
Do
тело цикла
[Exit Do]
тело цикла
Loop [While | Until] условие
В первом случае после ключевого слова Do идет проверка условия, как в условном операторе if, если используется ключевое слово while, то работа vbs цикла будет выполняться до тех пор, пока условие истинно (равно true), если используется слово until – то наоборот, как только условие станет истинным (равно true), произойдёт выход из цикла. Оператор Exit Do позволяет выйти из vbs цикла.
Второй вариант синтаксиса аналогичен первому лишь с той разницей, что проверка условия осуществляется в конце.
Хорошо, теперь давайте рассмотрим следующие 4 примера:
Первый пример
' ***************************************************************************** ' Do...Loop while ' Создаём массив из 10 элементов ' do_loop.vbs ' ***************************************************************************** Option Explicit ' массив MyArr из 10 элементов Dim MyArr(9) ' i - индекс массива, index - будет хранить значение Dim i, index i = 0 Do MyArr(i) = i index=index & MyArr(i) & vbCrLf i=i+1 ' выполнять пока i меньше 10 Loop While (i < 10) ' i<=9 MsgBox "Значения элементов:" & vbCrLf & index & vbCrLf &_ "Значение переменной i:" & i |
Второй пример
' ***************************************************************************** ' Do...Loop until ' Создаём массив из 10 элементов ' do_loop_1.vbs ' ***************************************************************************** Option Explicit ' массив MyArr из 10 элементов Dim MyArr(9) ' i - индекс массива, index - будет хранить значение Dim i, index i = 0 Do MyArr(i) = i index=index & MyArr(i) & vbCrLf i=i+1 ' завершить, когда i станет большее 9 Loop until (i >= 10) ' i>9 MsgBox "Значения элементов:" & vbCrLf & index & vbCrLf &_ "Значение переменной i:" & i |
Третий пример
' ***************************************************************************** ' Do while...Loop ' Создаём массив из 10 элементов ' do_loop_2.vbs ' ***************************************************************************** Option Explicit ' массив MyArr из 10 элементов Dim MyArr(19) ' i - индекс массива, index - будет хранить значение Dim i, index i = 0 ' выполнять пока i меньше 10 Do While (i < 10) ' i<=9 MyArr(i) = i index=index & MyArr(i) & vbCrLf i=i+1 Loop MsgBox "Значения элементов:" & vbCrLf & index & vbCrLf &_ "Значение переменной i:" & i |
Четвёртый пример
' ***************************************************************************** ' Do until...Loop ' Создаём массив из 10 элементов ' do_loop_3.vbs ' ***************************************************************************** Option Explicit ' массив MyArr из 10 элементов Dim MyArr(9) ' i - индекс массива, index - будет хранить значение Dim i, index i = 0 ' завершить, когда i станет больше 9 Do Until (i >=10) ' i>9 MyArr(i) = i index=index & MyArr(i) & vbCrLf i=i+1 Loop MsgBox "Значения элементов:" & vbCrLf & index & vbCrLf &_ "Значение переменной i:" & i |
Все четыре примера сценария vbscript заполняют массив MyArr числами от 0 до 9 используя vbs циклы Do…Loop в том или ином варианте.
while…wend — Конструкция while…wend является одной из vbs циклов, которая по своей природе очень проста:
While условие
тело цикла
Wend
Тут всё просто, если условие истинно – равно true, работа продолжается, иначе, происходит завершение работы.