Операторы циклов
В VBScript поддерживаются несколько типов циклов: цикл For…Next
, цикл Do…Loop
, цикл While…Wend
, цикл For Each…Next
. Рассмотрим каждый из них подробнее.
Цикл
В общем случае оператор цикла For…Next
записывается следующим образом:
For
тело цикла
[Exit For]
тело цикла
Next
Параметр counter
— начальное значение этого счетчика;
— конечное значение;
— шаг приращения счетчика. Если ключевое слово Step
не указано, то шаг приращения берется равным единице. Выход из цикла For… Next
происходит, когда значение счетчика counter
end
Exit For
используется для безусловного выхода из цикла.
Пример использования цикла for
приведен в листинге П2.1.
For…Next
Dim howFar 'Верхний предел для счетчика цикла
Dim sum(10) 'Массив из 11 элементов, индексы от 0 до 10
Dim icount, theSum
howFar = 10
theSum = 0
sum(0) = 0
'Цикл выполнится 11 раз
For icount = 0 To howFar
theSum=theSum+icount
sum (icount) = theSum
Next
Цикл
Оператор цикла For Each…Next
предназначен для перебора всех элементов массива или коллекции:
For Each
тело цикла
[Exit For]
тело цикла
Next [
Здесь параметр element
group
Напомним, что в JScript для перебора всех элементов коллекции необходимо использовать вспомогательный объект Enumerator
.
С помощью оператора Exit For
можно осуществить немедленный выход из цикла.
Пример использования цикла For Each…Next
приведен в листинге П2.2.
For Each…Next
'Объявляем переменные
Dim FSO, Folder, Files, File, s
s = 'Список файлов' & vbCrLf
'Создаем объект FileSystemObject
Set FSO = CreateObject('Scripting.FileSystemObject')
' Создаем объект Folder для корневого каталога диска С:
Set Folder = FSO.GetFolder('C:')
'Создаем коллекцию Files всех файлов в корневом каталоге диска С:
Set Files = Folder.Files
'Перебираем все элементы коллекции Files
For Each File In Files
'Выделяем имя файла для текущего элемента File коллекции
s = s & File.Name & vbCrLf
Next
'Выводим сформированную строку на экран
WScript.Echo s
Цикл
Цикл While…Wend
записывается в следующем виде:
While
тело цикла
Wend
Таким образом, в цикле While…Wend
условие выполнения тела цикла проверяется перед началом очередной итерации. Еслиtrue
, то тело цикла выполняется, в противном случае цикл завершается.
Пример использования цикла While…Wend
приведен в листинге П2.3.
While…Wend
Dim theMoments, theCount
theMoments = ''
theCount = 42 'Начальное значение счетчика цикла
While (theCount >= 1)