Программирование циклических алгоритмов
Программные структуры, приводящие к неоднократному повторению одного или нескольких операторов, называются структурами организации циклов, потому что поток выполнения операторов процедуры проходит циклично по одним и тем же операторам неоднократно.
Процесс выполнения всех операторов, заключенных в структуру цикла, один раз называется итерацией (iteration) цикла. Некоторые структуры цикла организуются так, что они всегда выполняются заданное количество раз. Структуры цикла, всегда выполняющиеся заданное количество раз, называются циклами с фиксированным числом итераций (fixed iteration). Другие типы структур цикла повторяются переменное число раз в зависимости от некоторого набора условий. Поскольку количество раз повторений этих гибких структур цикла является неопределенным, такие циклы называются неопределенными циклами (indefinite loops).
Существует два основных способа создания неопределенного цикла. Можно построить цикл так, что VBA будет тестировать некоторое условие (детерминант цикла) перед выполнением цикла: если условие для повторения цикла не равно True, VBA пропускает все операторы в цикле. Можно также построить цикл таким образом, что VBA будет тестировать условие детерминанта цикла после выполнения операторов в цикле.
Для цикла, в котором детерминант проверяется перед выполнением операторов внутри цикла, VBA определяет следующую последовательность действий:
1. В верхней части цикла тестируется условие детерминанта.
2. Если условия для выполнения цикла удовлетворяются, выполняются операторы внутри цикла.
3. После выполнения последнего оператора внутри цикла VBA возвращается к началу цикла и снова оценивает условие детерминанта цикла.
4. Если условия для выполнения цикла все еще удовлетворяются, VBA повторяет операторы внутри цикла и снова возвращается к началу цикла тестирования детерминанта.
5. Как только условия для выполнения цикла перестанут удовлетворяться, VBA останавливает выполнение цикла и начинает выполнение операторов после цикла.
Когда VBA тестирует выполнение детерминанта первый раз, VBA не выполняет операторы внутри цикла ни разу, при этом тело цикла пропускается (не выполняется).
Тело цикла – это блок операторов VBA, находящихся между началом и концом цикла.
Для цикла, в котором детерминант проверяется после выполнения операторов в теле цикла, VBA определяет следующую последовательность действий:
1. Выполняются все операторы в теле цикла.
2. При достижении конца тела цикла, VBA оценивает условие детерминанта цикла.
3. Если условия для выполнения цикла удовлетворяются, VBA возвращается к началу цикла и повторяет инструкции в теле цикла.
4. В конце цикла VBA снова тестирует условие детерминанта цикла.
5. Как только условия для выполнения цикла больше не удовлетворяются, VBA прекращает выполнение цикла и начинает выполнение операторов после цикла.
Использование цикла For ….Next
Используется тогда, когда необходимо повторить действие или ряд действий заданное количество раз, известное до начала выполнения цикла.
Цикл For ….Next
Алгоритм цикла For….Next приведен на рис. 5.28.
Counter– любая численная переменная VBA, обычно переменная типа Integer или Long.
Start- любое численное выражение и определяет начальное значение для переменной Counter.
End – численное выражение, определяющее конечное значение для переменной Counter.
Statements – один, несколько или ни одного оператора. Эти операторы выполняют тело цикла. VBA выполняет каждый из этих операторов при каждом выполнении цикла.
Ключевое слово Next сообщает VBA о том, что достигнут конец цикла. Не обязательная переменная Counter поcле ключевого слова Next должна быть той же самой переменной Counter, которая была задана после ключевого слова For начале структуры цикла.
Counter=Start |
Counter=counter+StepSise |
Statements |
Counter>End |
T
Рис.9.28. Алгоритм цикла For….Next
Ключевое слово Next сообщает VBA о том, что достигнут конец цикла. Не обязательная переменная Counter поcле ключевого слова Next должна быть той же самой переменной Counter, которая была задана после ключевого слова For начале структуры цикла.
Синтаксис:
For counter = Start To End [Step StepSize]
Statemends
Next [conter]
При выполнении цикла For …Next VBA поступает следующим образом:
- Присваивает значение, представленное Star, переменной Сounter.
- Выполняет все операторы, представленные с помощью Statements, пока не достигнет ключевого слова Next. Ключевое слово Next показывает VBA на то, что достигнут конец тела цикла.
- Изменяет переменную Сounter на величину StepSize (если включается необязательное слово Step) Если Step не определено, то VBA увеличивает переменную counter на 1.
- Возвращается к началу цикла и сравнивает текущее значение переменной Сounter со значением, представленным End. Если значение Сounter меньше значения End, VBA продолжает выполнение с первого оператора после ключевого слова Next.
Дата добавления: 2015-08-11; просмотров: 1267;