Оператор цикла For ... Next
ЦИКЛЫ
Понятие цикла
При разработке программ часто приходится изменять порядок следования операторов. Только в очень простых программах операторы выполняются один за другим – управление передается последовательно, от оператора к оператору. На практике необходимые средства для изменения порядка следования операторов, другими словами, передачи управления – обеспечивают операторы цикла и условные операторы.
Часто при решении задач приходится многократно вычислять значения по одним и тем же математическим зависимостям для различных значений входящих в них величин. Такие многократно повторяющиеся участки вычислительного процесса называются циклами. Использование циклов позволяет существенно сократить объем схемы алгоритма и длину соответствующей программы. Различают циклы с заданным и неизвестным числом повторений. К последним относятся итерационные циклы, характеризующиеся последовательным приближением к искомому значению с заданной точностью.
Для организации цикла необходимо выполнить следующие действия:
1) задать перед циклом начальное значение переменной, изменяющейся в цикле;
2) произвести необходимые действия;
3) изменить переменную на величину шага;
3) проверить условие окончания (или повторения) цикла;
4) переходить к п.2, если цикл не закончен.
Последние четыре действия повторяются многократно. Переменная, изменяющаяся в цикле, называется параметром цикла. Действия, повторяемые многократно, называются телом цикла.
Переменная, изменяющаяся в цикле, называется параметром цикла. В одном цикле может быть несколько параметров. Переменную, значения которой вычисляются машиной и хранятся в одной и той же ячейке памяти, называют простой переменной, а переменную, являющуюся элементом массива, – переменной с индексом. Следует иметь в виду, что параметром цикла является при использовании простой переменной сама переменная, а при использовании переменной с индексом – ее индекс.
Возможны три способа организации циклических структур алгоритмов:
1) цикл “повторять ... до” (цикл с постусловием);
2) цикл “пока” (цикл по условию или цикл с предусловием);
3) счетный цикл (цикл с управляющей переменной).
Схема реализации таких циклов представлена на рис. 1.
Рис. 1. Схемы организации циклов:
а – цикл с постусловием (проверка условия после тела цикла),
б – цикл с предусловием (проверка условия перед телом цикла),
в – счетный цикл (цикл с известным числом повторений)
В VBA циклы можно задать двумя способами:
– с использованием оператора цикла FOR ... NEXT;
– с использованием оператора цикла DO ... LOOP;
Оператор цикла For ... Next
Цикл For...Next используется, когда необходимо повторить действие или ряд действий заданное количество раз, известное до начала выполнения цикла.
Цикл For...Next имеет следующий синтаксис:
For счетчик = Начало To Конец [Step Шаг]
[Операторы цикла]
Next счетчик
Счетчик – любая переменная, по которой организован цикл.
В квадратных скобках указан не обязательный параметр.
По умолчанию VBA увеличивает счетчик на 1 каждый раз при выполнении операторов в цикле (шаг по умолчанию равен 1). Если нужно другое значение шага надо включать в оператор For необязательное ключевое слово Step.
При выполнении цикла For...Next VBA поступает следующим образом:
– присваивает значение Начало счетчику;
– выполняет все операторы, представленные с помощью Операторы цикла,пока не достигнет ключевого слова Next, которое указывает VBA на то, что достигнут конец тела цикла;
– изменяет счетчик на величину Шаг (если включается необязательное ключевое слово Step); если Stepне определено, то VBA увеличивает переменную на 1;
– возвращается к началу цикла и сравнивает текущее значение счетчика со значением Конец. Если значение счетчикаменьше или равно Конец, VBA выполняет цикл снова. Если значение счетчика больше значения Конец,VBA продолжает выполнение кода с первого оператора после ключевого слова Next.
Если Шаг >0, то такой цикл называется циклом с возрастающим счетчиком, если Шаг <0 – цикл с убывающим счетчиком. В последнем случае Начало должно быть больше Конец.
Цикл For...Next выполняется только в том случае, если начальное значение счетчика цикла плюс шаг изменения значения счетчика меньше или равно конечному значению счетчика. Если конечное значение счетчика меньше начального значения, то шаг должен быть отрицательным. Цикл выполняется до тех пор, пока текущее значение счетчика не выйдет за рамки конечного значения. При завершении текущего цикла к значению счетчика прибавляется значение шага. Если начальное значение и конечное значение счетчика имеют одно и то же значение, цикл выполняется один раз, вне зависимости от значения шага. Если шаг равен нулю, цикл продолжается неопределенное количество раз.
Пример. Построить и заполнить таблицу значениями функции на интервале с шагом 4°
Sub Demo_ForNext()
' Объявляем начало, конец цикла, шаг
Dim xStart, xEnd, xStep As Integer
Dim x As Integer
Dim i As Integer
Dim xradian, y As Single
' Чтение числовых значений из рабочего листа Excel
xStart = Cells(2, 2)
xEnd = Cells(3, 2)
xStep = Cells(4, 2)
' Номер строки заголовка таблицы значений функции
i = 1
For x = xStart To xEnd Step xStep
' Вычисляем значение x в радианах
xradian = 3.14 * x / 180
' Вычисляем значение функции
y = (2.51 * Sin(xradian) / (2 + 3 * Cos(xradian)) ^ (1 / 3))
i = i + 1
' Передаем полученные значения в рабочий лист
Cells(i, 4) = x
Cells(i, 5) = y
Next x
End Sub
При исполнении оператора For...Next автоматически осуществляется проверка условия продолжения цикла, изменяется значение аргумента на величину шага и осуществляется переход к строке, следующей за строкой с оператором FOR, если величина переменной цикла меньше или равна ее конечному значению.