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

Операторы циклов:

- For…Next - заданное число раз;

- For EachNext - для каждого объекта из семейства объектов;

- Do…Loop - до тех пор, пока некоторое условие имеет значение True.

Циклы могут быть вложенными: один – внутри другого.

При работе с вложенными циклами существует простое правило: внутренний цикл должен закончиться раньше, чем начнется внешний.

Повторение под управлением цикла For…Next

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

В процессе выполнения переменная счетчик хранит информацию о числе выполненных проходов цикла. Синтаксис:

For имя счетчика = начало To конец

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

Next имя счетчика

Sub СчётДоДесяти( )

Dim j As Integer

For j = 1 To 10

Debug.Print "Дубль № " & j

Next j

End Sub

Пример вложенных циклов For…Next

Dim sngC ' переменная C предназначается на роль "случайного числа"

Randomize ' инициализация генератора случайных чисел (рандомайз).

For A = 1 To 5

sngC = Rnd( )

For B = 1 To 10

Debug.Print sngC * Rnd( )

Next B

Next A

Операции, которые выполняет программа:

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

  • начало внешнего цикла For…Next: VBA вызывает функцию Rnd, чтобы присвоить переменной sngC случайное значение;

  • начало внутреннего цикла For…Next: этот цикл вычисляет 10 других чисел повторяя вызов функции Rnd при каждом проходе цикла. Результат отображается в окне Immediate отладки (Debug);

  • завершение внутреннего цикла после выполнения им всех 10 вычислений.

Теперь снова продолжается выполнение внешнего цикла. Подчиняясь оператору Next A, программа возвращается к началу внешнего цикла; шаги второй и третий повторяются еще 4 раза.

Таким образом, например, составляя программу воспроизведения музыкальных произведений, можно сформировать случайный выбор 10 фрагментов из 5 компакт-дисков.

Оператор For… Next особенно важен при работе с массивами, например, при заполнении массива множеством вычисленных значений:

Sub Квадрат ()

Dim intКвадраты (14) As Integer

For a = 0 To 14

intКвадраты (a) = a * a

Next a

End Sub

Оператор For…Next очень удобно также использовать при обработке многомерных массивов, если организовать вложенные циклы так, чтобы каждый из них соответствовал одному измерению массива.

Важные замечания по поводу циклов For…Next

Старайтесь для ясности начинать цикл For… Next с единицы.

Исключения могут быть, когда идет работа с массивом.

В этом случае начало выбирается равным 0.

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

Однако всё-таки необходимо приучить себя включать имя счетчика в оператор Next, т. к. при этом даже в случае нескольких вложенных циклов For… Next можно сразу опознать, какому циклу принадлежит данный оператор Next.

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