выражение
[Case значение_2
выражение_2]
…
[Case Else
выражение_3]
End Select
Здесь сначала вычисляется значение выражения
, которое затем по очереди сравнивается со значениями, стоящими после ключевых слов
Case
. В случае совпадения выполняются операторы в соответствующем
блоке
Case
. Если же ни одно из имеющихся значений не совпадает со значением
выражения
, то выполняются операторы, стоящие после слова
Case
Else. Пример использования оператора
Select Case
:
Select Case MyVar
Case vbRed
Color = "Красный"
Case vbGreen
Color = "Зеленый"
Case vbBlue
Color = "Синий"
Case Else
Color = "Цвет непонятен"
End Select
В VBScript поддерживаются несколько типов циклов: цикл
For…Next
, цикл
Do…Loop
, цикл
While…Wend
, цикл
For Each…Next
. Рассмотрим каждый из них подробнее.
В общем случае оператор цикла
For…Next
записывается следующим образом:
For counter=start То end [Step step]
тело цикла
[Exit For]
тело цикла
Next
Параметр counter
здесь является счетчиком цикла;
start
— начальное значение этого счетчика;
end
— конечное значение;
step
— шаг приращения счетчика. Если ключевое слово
Step
не указано, то шаг приращения берется равным единице. Выход из цикла
For…Next
происходит, когда значение счетчика
counter
становится больше, чем значение параметра
end
. Выражение
Exit For
используется для безусловного выхода из цикла.
Пример использования цикла
for
приведен в листинге П2.1.
Листинг П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 element In group
тело цикла
[Exit For]
тело цикла
Next [element]
Здесь параметр element
является переменной, в которую будет записываться значение текущего элемента массива или коллекции при итерациях; group
— имя массива или коллекции объектов.
Замечание
Напомним, что в JScript для перебора всех элементов коллекции необходимо использовать вспомогательный объект
Enumerator
. С помощью оператора
Exit For
можно осуществить немедленный выход из цикла.
Пример использования цикла
For Each…Next
приведен в листинге П2.2.
Листинг П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.
Листинг П2.3. Пример использования цикла
While…Wend
Dim theMoments, theCount
theMoments = ""
theCount = 42 'Начальное значение счетчика цикла
While (theCount >= 1)
If (theCount > 1) Then
theMoments = "До взрыва осталось " & theCount & " сек!"
Else