Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава 6(VBA).doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
2 Мб
Скачать
☆

Разновидности циклов

Кроме структур принятия решений, существует еще одна раз­новидность управляющих конструкций, называемая циклом. Цикл - это алгоритмическая структура, при помощи которой реа­лизуется многократное повторение блоков операторов.

В языке Visual Basic существует два основных вида циклов, которые реализуются при помощи конструкций For... Next и Do... Loop.

Цикл For... Next. Используется в том случае, когда количест­во повторов заданного блока операторов известно заранее. Дан­ная конструкция выглядит следующим образом:

For счетчик = нач. значение то кон. значение [Step шаг]

Операторы1 [Exit For]

Операторы2 Next [счетчик]

Когда приведенные операторы выполняются первый раз, то переменной-счетчику присваивается начальное значение, после чего возможны два варианта действий. Если в результате провер­ки условия счетчик > конечное и было получено значение True, то происходит завершение цикла, при этом блоки Опера­торы! и Операторы2 ни разу не выполняются. С другой сторо­ны, если результатом проверки условия является False, то в этом случае блоки операторов выполняются первый раз, после

438

чего происходит переход на начало цикла. Далее значение переменной-счетчика увеличивается на шаг, расположенный после ключевого слова Step (в случае его отсутствия устанавливается шаг = 1). После этого снова проверяется истинность условия счетчик > конечное значение и т. д., окончание цикла происходит в тот момент, когда результатом данной проверки станет значение True.

Зачастую бывает необходимо "аварийно" завершать работу цикла при выполнении какого-либо дополнительного условия. В этом случае внутри цикла следует использовать служебное словосочетание Exit For, которое обычно располагают в управляющей конструкции, например:

If условие Then Exit For

Если результатом проверки условия будет значение True, то выполнение цикла будет прекращено, причем блок Операторы1 будет выполнен очередной раз, а блок Операторы2 - нет.

Цикл Do—Loop. Применяется в том случае, когда число по­вторений операторов тела цикла заранее неизвестно. Существует четыре разновидности данной конструкции. При использовании первых двух цикл либо выполнится много раз, либо не выпол­нится вообще.

Do Until условие Операторы

Loop

Если результатом проверки условия является значение False, то блок Операторы выполняется, иначе осуществляется переход на оператор, расположенный после служебного слова Loop. С другой стороны, если первая проверка условия даст ре­зультат True, то цикл не выполнится ни разу.

Do While условие

Операторы Loop

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

439

В случае использования последних двух конструкций цикл будет выполнен хотя бы один раз.

Do

Операторы Loop Until условие

Блок Операторы выполняется до тех пор, пока результатом проверки условия является значение False, иначе выполнение цикла заканчивается.

Do

Операторы Loop While условие

В случае ложности условия выполняется блок Операторы, если же оно истинно, то есть результатом проверки является зна­чение True, то происходит окончание цикла.

В том случае, когда необходимо прервать выполнение цикла, применяются разновидности оператора Exit, который распола­гается в конструкции принятия решения. При этом для цикла For... Next используется Exit For, а для любого из циклов Do... Loop применяется Exit Do. После выполнения данного оператора происходит немедленное завершение цикла без вы­полнения каких-либо дополнительных операций.

Если аварийное завершение было использовано в цикле For...Next, то значение переменной-счетчика останется таким, каким оно было в момент выхода, в отличие от нормального за­вершения работы цикла, когда оно становится на единицу больше заданного конечного значения. Приведенная особенность зачас­тую может быть использована при решении различных задач.

Пример 6.1. Имеется массив из десяти числовых элементов. Необходимо определить среди них первое положительное значе­ние и его индекс, после чего завершить дальнейшую проверку.

Листинг 6.4. Поиск в массиве первого положительного элемента

Dim intArray(l To 10) As Integer

Dim inti As Integer

Dim intResult As Integer

' Ввод элементов массива

440

For inti = 1 to 10

If intArray(intI) > 0 Then

intResult = intArray(intI) Exit For

End If Next

Теперь в переменной intl 'содержится значение индекса 'найденного элемента массива