Применение оператора безусловного перехода нежелательно,



Совет 1


Применение оператора безусловного перехода нежелательно, поскольку присутствие этого оператора в программе нарушает ее структурную целостность и наглядность. Такую программу трудно читать, отлаживать и модифицировать. Ниже будут рассмотрены операторы циклов, попробуйте изменить данный пример, организовав цикл проверки вместо безусловного перехода.
От операторов ветвления перейдем к рассмотрению операторов цикла. Если бы при выполнении программы каждый оператор выполнялся только один раз, программирование не имело бы особого смысла. Действительно, выполнить вручную какую-нибудь арифметическую операцию наД данными ненамного труднее, чем написать соответствующий оператор присваивания в программе. Весь смысл программирования состоит в том, чтобы поручить компьютеру проведение многочисленных расчетов, записав это поручение в компактной форме. Для решения таких задач существуют операторы цикла. Циклы позволяют многократно выполнять отдельный оператор или группу операторов.
Операторы цикла VBA делятся на три группы:
  • циклы со счетчиком (For. . .Next);
  • циклы с условием (Dо. . .Loop);
  • Циклы по структуре данных (For Each. . .Next).
Первый из рассматриваемых нами операторов цикла — For.. .Next. Данный оператор позволяет выполнять группу операторов (которая называется телом цикла) заранее определенное количество раз, при этом параметр цикла последовательно принимает ряд значений, определенных пользователем в заголовке цикла.
For счетчик = начало То конец [Step шаг]
[блокОператоров1] [Exit For]
[блокОператоров2] Next [счетчик]
Счетчик — это и есть тот числовой параметр цикла, который должен принимать ряд значений от значения начало до значения конец. Причем этот ряд может образовывать как возрастающую, так и убывающую арифметическую прогрессию. Необязательный параметр шаг, при необходимости мог бы указывать, с каким шагом следует пробегать заданный ряд значений (по умолчанию он равен 1).
БлокОператоров! — это блок операторов, который будет выполнен, пока счетчик не пробежит ряд значений до конца. Прервать же данный пробег вправе только оператор Exit For, предназначенный для выхода из цикла, не дожидаясь его завершения и передачи управления оператору, следующему непосредственно за Next. Как правило, оператор используется в тех местах тела цикла, где требуется из него выйти по условию.
В конце цикла ставится заключительный оператор Next, после которого указывается счетчик цикла. Хотя данное указание необязательно, мы рекомендуем всегда его использовать, поскольку программа станет более понятной, особенно в случае большого количества вложенных циклов.
Итак, рассмотрим работу конструкции цикла со счетчиком в целом. Оператор For инициализирует переменную счетчик значением начало, после чего выполняется блокОпера торов 1 до тех пор, пока не встретится оператор Exit For (выход) или оператор Next (следующий). Далее оператор Next проверяет, не достигнуто ли значение конец, и если нет, то прибавляется значение шага к счетчику и процедура повторяется, если да — работа оператора цикла завершается.
В программе 20.11 мы рассмотрим три примера работы с циклом For...Next. В первом примере мы запрограммировали решение задачи о вычислении факториала числа 20 (20!=1*2*3**20), причем значение счетчика явно используется в вычислениях. После чего вывели итоговый результат (~2,432Е+18).
Во втором примере мы показываем, что помимо простых конструкций с циклами существуют более сложные — вложенные циклы. Характерным примером для вложенных циклов является инициализация матрицы (n x m). Мы проинициализировали все элементы матрицы (6 х 5) единицей.
В последнем примере мы продемонстрируем работу оператора Exit For и счетчика с отрицательным шагом. Допустим, у нас есть проинициализирован-ный массив типа string. Необходимо найти элемент данного массива, равный строке "выход", причем проверка будет происходить с конца массива.


Содержание раздела