Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Понятие процедур.docx
Скачиваний:
4
Добавлен:
24.12.2018
Размер:
116.28 Кб
Скачать

Использование оператора цикла For Each… Next

Ключевым различием в использовании For Each… Next и For … Next является то, что в цикле For Each… Next не требуется указывать число повторений. В операторе For Each (для каждого элемента в группе) с помощью переменной элемент определяется тип объекта в семействе, а с помощью аргумента группа задается семейство, с которым нужно работать.

Структура представляет множество операторов, относящихся ко всем объектам в некотором семействе (как и структура цикла Do…Loop), но она проще в использовании.

Синтаксис цикла For Each… Next:

For Each элемент In группа

(операторы, выполняемые при каждом проходе цикла)

Next элемент

Например, семейство Blocks является семейством объектов Block, и каждый объект Block содержит неограниченное количество графических объектов типа Cone (конус) или 3Dface (3-х мерная поверхность). В этом фрагменте программного кода всего лишь отображается имя каждого объекта Block (objB) семейства Blocks:

Dim objB As Blocks

For Each objB In Blocks

Debug.Print objB.Name

Next objB

Циклы Do…Loop

Все возможные версии оператора Do…Loop предназначены для повторения заданного блока, пока не будет выполнено некоторое условие. Для того, чтобы решить: продолжать цикл или нет, оператор Do…Loop оценивает заданное условное выражение типа условных выражений, используемых для оператора If…Then.

Примеры применения:

  • отображение сообщения об ошибке снова и снова, пока пользователь не введет верную информацию;

  • чтение данных из файла на диске, пока не будет обнаружен конец файла;

  • организация холостой работы программы в течение некоторого времени;

  • выполнение некоторых действий по отношению ко всем элементам массива;

  • выполнение (с использованием оператора условного перехода If…Then) некоторых действий по отношению ко всем элементам массива или семейства, удовлетворяющих определенным критериям.

Типы оператора цикла Do…Loop

Операторы DoLoop повторяют выполнение действий, пока некоторый условный оператор внутри цикла не выполнит команду End (слово Loop означает "петля"):

  • Do While (условие) Loop - цикл выполняется в случае и до тех пор, пока заданное условие имеет значение True (слово While - значит "пока"), т. е. выполнение кода может не состояться ни разу, если заданное условие не является истинным;

  • DoLoop While (условие) – оператор начинает процедуру и выполняет блок кода один раз, т. к. условие проверяется после выполнения цикла (цикл с постусловием), а затем повторяет выполнение цикла, пока заданное условие имеет значение True;

  • Do Until (условие) Loop - начинает и повторяет выполнение блока кода, только если заданное условие принимает значение False (слово Until означает "пока не");

  • DoLoop Until (условие) - выполняет блок программного кода один раз, а затем повторяет выполнение, пока заданное условие имеет значение False.

Пример оператора Do While (условие) Loop

Do While ВводимыеИмена < > "Готово"

ВводимыеИмена =InputBox("Введите Ваше имя или слово "Готово" для выхода")

If ВводимыеИмена < > "Готово" Then

Print ВводимыеИмена

Loop

VB трактует код, как "исполнять цикл до тех пор, пока переменная ВводимыеИмена не будет содержать значение "Готово". Если содержанием этой переменной сразу же является текстовая строка "Готово", то цикл Do не выполнится ни разу. При этом VB пропустит все, входящие в цикл операторы, и продолжит выполнение с оператора, следующего за циклом, т. е. за ключевым словом Loop.

Если же нужно, чтобы цикл выполнялся хотя бы один раз, то оператор проверки условия помещают в конце цикла.

Do

ВводимыеИмена =InputBox("Введите Ваше имя или слово "Готово" для выхода")

If ВводимыеИмена < > "Готово" Then

Print ВводимыеИмена

Loop While ВводимыеИмена < > "Готово"

Это даёт возможность изменения переменной ВводимыеИмена до проверки условия, поэтому в случае ранее присвоенного переменной значения "Готово" цикл не будет пропущен, а гарантированно выполнится один раз. Но

в цикле нужно будет добавить операторы, исключающие значение "Готово" для переменной ВводимыеИмена перед вводом имён.