Шаг 70.
Цикл For Each ... Next

    На этом шеге мы познакомимся еще с одним циклом - 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


Замечание. Обратите внимание на то, что массив A в примере определен за процедурой. Таким образом, чтобы сделать переменную видимой в нескольких подпрограмма, ее необходимо определить вне этих подпрограмм.

    Приведем еще один пример использования конструкции цикла 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.

    Далее рассмотрим досрочный выход из цикла.




Предыдущий шаг Содержание Следующий шаг