Урок 6 по VBScript: Циклы for…next и for each…next

Урок 6 по VBScript: Циклы for…next и for each…next Программирование на VBSCRIPT

В этой статье мы с вами рассмотрим vbscript циклы языка. VBScript использует циклы нескольких видов, которые, не являются уникальными и используются и другими языками программирования. Для справки, использование циклов нужно в том случае, когда нужно произвести определенное количество вычислений или просто, произвести перебор элементов, например, вывести список свойств определенного объекта. И так, в этой статье мы рассмотрим следующие циклы vbscript: for…next и for each…next, а также рассмотрим оператор exit for.

Хорошо, давайте рассмотри все типы vbscript циклов по порядку:

For…Next — Данный цикл vbscript требует задания начального и конечного значения (количество итераций), по умолчанию счётчик значений увеличивается на единицу, но это можно изменить с помощью дополнительного ключевого слова step (шаг). Общий синтаксис vbs цикла For…Next таков:

For счётчик=начало То конец [Step шаг]
тело цикла
[Exit For]
тело цикла
Next

VBScript for next - перебор значений

Видим, что после ключевого слова For мы задаем начальное числовое значение, которое присваиваем переменной, после To прописывается конечное значение, за необязательным step следует шаг счётчика. VBScript циклы. Видно, что тело цикла vbscript в конце закрывается словом Next. В теле цикла прописываются нужные нам операторы (например, условный оператор if) и выражения, exit for отвечает за безусловный выход из цикла vbs. Хорошо, давайте рассмотрим два таких примера:

' *****************************************************************************
' Использование цикла FOR NEXT
' Находим сумму чисел от 1 до 100
' for_next.vbs
' *****************************************************************************
Option Explicit
Dim summ, msg, i
 
summ = 0
 
for i=1 to 100
     summ=summ + i
Next
 
msg="Сумма чисел от 1 до 100: " & summ
 
MsgBox msg

VBScript циклы. Тут всё просто, мы просто задали диапазон от 1 до 100 и всё просуммировали, теперь рассмотрим второй пример:

' *****************************************************************************
' Использование цикла FOR NEXT
' for_next_step.vbs
' *****************************************************************************
Option Explicit
Dim summ, summ1, msg, i
 
summ = 0
summ1 = 0
 
for i=100 to 1 step -2      ' получим 1068
     summ=summ + i
     if summ>=1000 then exit for
Next
 
for i=1 to 100 step 2       ' получим 1024
     summ1=summ1 + i
     if summ1>=1000 then exit for
Next
 
msg="Обратный цикл: " & summ &vbCrlf & "Прямой цикл:" & summ1
 
MsgBox msg

В данном примере, мы использовали два vbscript цикла for, в обоих мы находим сумму, в середине прописано условие: если сумма будет больше-ровно 1000, то – выйти из вычисления. В первом цикле vbs мы использовали обратное суммирование – от 100 до 1, шаг уменьшается на 2, во втором – прямое вычисление, шаг увеличивается на два.

Скачать архив с примерами

for each…next — Данная конструкция применяется для перебора элементов коллекции или массива. Коллекция, в языке программирования – практически тот же массив, но, количество элементов в нём не известно. В for each…next также можно использовать оператор exit for.

VBScript цикл for each next

Следующий пример демонстрирует вывод элементов массива:

' *****************************************************************************
' Использование for...each
' Перебор массива
' for_each.vbs
' *****************************************************************************
Option Explicit
Dim MyArr(5), elem, s
 
MyArr(0)=2
MyArr(1)="строка"
MyArr(2)=6
MyArr(3)=-3
MyArr(4)=5
 
For Each elem In MyArr     
     s = s & elem & vbCrLf  
Next
 
MsgBox s

Хорошо, теперь давайте рассмотрим пример, который выводит список каталогов диска D::

' *****************************************************************************
' Использование for...each
' Перебор коллекции каталогов
' for_each_1.vbs
' *****************************************************************************
 
Option Explicit
Dim FSO, Drive, Folders, Folder, s
 
s="Список папок" & vbCrLf & vbCrLf  
' создаем экземпляр объекта FileSystemObject
Set FSO = CreateObject("Scripting.FileSystemObject")  
' получаем доступ к диску D:\
Set Drive = FSO.GetFolder("D:\")
' получаем коллекцию папок 
Set Folders = Drive.SubFolders 
 
For Each Folder In Folders     
     s = s & Folder.Name & vbCrLf  
Next 
 
MsgBox s

Как видим, цикл vbscript for… each позволяет перебирать как элементы массива, так и элементы коллекции.

Оцените статью
Технологии программирования и ведение блога
Добавить комментарий