Урок 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' *****************************************************************************OptionExplicitDim summ, msg, i summ = 0 for i=1 to 100     summ=summ + iNext msg="Сумма чисел от 1 до 100: " & summ MsgBox msg

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

' *****************************************************************************' Использование цикла FOR NEXT' for_next_step.vbs' *****************************************************************************OptionExplicitDim summ, summ1, msg, i summ = 0summ1 = 0 for i=100 to 1 step -2      ' получим 1068     summ=summ + i     if summ>=1000 thenexitforNext for i=1 to 100 step 2       ' получим 1024     summ1=summ1 + i     if summ1>=1000 thenexitforNext 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' *****************************************************************************OptionExplicitDim MyArr(5), elem, s MyArr(0)=2MyArr(1)="строка"MyArr(2)=6MyArr(3)=-3MyArr(4)=5 ForEach elem In MyArr          s = s & elem & vbCrLf  Next MsgBox s

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

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

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

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