На этом шеге мы познакомимся еще с одним циклом - For Each...Next.
Конструкция For Each...Next позволяет организовать цикл по элементам массива или по объектам некоторого набора (семейства) объектов, не зная заранее число элементов в массиве или число объектов в наборе. С последней возможностью мы познакомимся чуть позже, а сейчас приведем синтаксис этой конструкции:
For Each <элемент> In <группа> <операторы> Next
Параметр группа задает имя массива или имя набора объектов. Переменная элемент на каждом шаге цикла будет содержать ссылку на элемент массива или объект набора. Цикл завершает свое выполнение, как только завершится последовательный перебор всех элементов массива или объектов набора.
Приведем пример использования этой конструкции цикла: подсчитаем количество элементов в массиве.
<HTML> <HEAD> <TITLE>Пример №1</TITLE> <SCRIPT LANGUAGE=VBScript> <!-- Dim A(10) Sub Button1_OnClick() Kol = 0 For Each i In A Kol = Kol + 1 Next Alert "Количество элементов массива A равно: "&Kol End Sub '--> </SCRIPT> </HEAD> <BODY> <H2>Демонстрация цикла For Each...Next</H2> Щелчок по кнопке выводит количество элементов массива. <FORM> <INPUT TYPE="BUTTON" NAME="BUTTON1" Value="Цикл For Each...Next"> </FORM> </BODY> </HTML>
Результат работы этого примера изображен на рисунке 1.
Рис.1. Результат использования цикла For Each ... Next
Приведем еще один пример использования конструкции цикла For Each ... Next. Воспользуемся ею для доступа к значениям элементов массива.
<HTML> <HEAD> <TITLE>Пример №1</TITLE> <SCRIPT LANGUAGE=VBScript> <!-- Dim A(10) Sub Button1_OnClick() 'Заполнение массива значениями от 0 до 10. For i = 0 To 10 A(i) = Round(Rnd()*10) Next 'Формирование строки для вывода. S = "" For Each i In A S = S&i&" " Next Alert "Массив: "&S End Sub '--> </SCRIPT> </HEAD> <BODY> <H2>Демонстрация цикла For Each...Next для доступа к элементам массива</H2> Щелчок по кнопке выводит элементы массива. <FORM> <INPUT TYPE="BUTTON" NAME="BUTTON1" Value="Цикл For Each...Next"> </FORM> </BODY> </HTML>
Результат работы изображен на рисунке 2:
Рис.2. Результат использования цикла For Each ... Next для доступа к элементам массива
Обратите внимание, что в цикле For Each ... Next переменная i получает значение очередного элемента массива A.
Далее рассмотрим досрочный выход из цикла.