Опубликован: 01.04.2010 | Уровень: для всех | Доступ: свободно | ВУЗ: Национальный исследовательский университет "Высшая Школа Экономики"
Лекция 6:

Операторы управления

< Лекция 5 || Лекция 6: 1234 || Лекция 7 >

Цикл Do…Loop

Этот цикл является логически прерываемым циклом. Цикл, организованный при помощи этой структуры, повторяет набор инструкций, пока выполнено некоторое условие. Такую форму цикла чаще всего используют в условиях неопределенности, когда нельзя заранее установить, сколько раз потребуется повторять действия. Например, если заранее неизвестно, скольким сотрудниками следует рассчитать зарплату, можно использовать оператор Do…Loop при условии, что значение некоторой переменной будет свидетельствовать об окончании расчета.

Синтаксис оператора

Do [(While|Until) condition]
[statements]
[Exit Do]
[statements]
Loop [(While | Until) condition]
  • condition - тестируемое выражение со значением True или False ;
  • While|Until1Запись While|Until означает, что в операторе присутствует только одно ключевое слово из двух. - ключевые слова, которые определяют, до каких пор будут выполняться команды, составляющие тело цикла:
    • While - повтор операторов, пока условие ( condition ) истинно;
    • Until - повтор операторов, пока условие ложно (пока условие не станет истинным).
    Таким образом, циклы с ключевым словом While эквивалентны циклам Until, в которых перед условием стоит Not:
    While condition = Until Not condition
  • Exit Do - оператор немедленного выхода из цикла;
  • statements - последовательность операторов, выполняемых в цикле.

По сути, оператор имеет пять вариантов синтаксиса. В первых двух вариантах While|Until condition проверяется в начале цикла. В следующих двух вариантах While|Until condition проверяется в конце цикла. Пятый вариант - оператор цикла без задания условия.

Замечания:
  • Если While|Until condition отсутствует, то в теле цикла должна осуществляться проверка условия выхода из цикла или продолжения цикла и должен стоять оператор немедленного выхода из цикла Exit Do.
  • Если условие выполнения цикла проверяется в начале, то команды внутри цикла не выполнятся ни разу, если при входе в цикл условие нарушено.
  • Команды тела цикла выполняются хотя бы один раз при проверке условия продолжения цикла в конце оператора цикла.
  • Возможно использование вложенных циклов, в том числе разных конструкций. Оператор Exit Do всегда завершает внутренний цикл.

Пример

Поиск первой непустой ячейки в первой строке рабочего листа.

Рассмотрим два способа записи оператора Do…Loop: с условием в начале оператора цикла (предусловие) ( рис. 6.9) и с условием в конце оператора цикла (постусловие) ( рис. 6.10).

Способ записи оператора Do…Loop с условием в начале оператора цикла

увеличить изображение
Рис. 6.9. Способ записи оператора Do…Loop с условием в начале оператора цикла
Способ записи оператора Do…Loop с условием в конце оператора цикла

увеличить изображение
Рис. 6.10. Способ записи оператора Do…Loop с условием в конце оператора цикла

Аргумент ActiveSheet.Cells(1,i) функции IsEmpty определяет очередную ячейку первой строки активного листа. Оператор Exit Sub немедленно завершает процедуру, если просмотрены все 256 ячеек первой строки и непустая ячейка не найдена ( i=257 ).

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

В первом случае цикл выполняется до тех пор, пока ячейка пуста. Тестирование выполняется до входа в цикл. Во втором случае цикл выполняется до тех пор, пока ячейка не станет непустой. Тестирование выполняется в конце цикла.

Цикл While…Wend

Этот способ организации цикла повторяет команды, пока заданное условие верно. Он полностью эквивалентен циклу Do…Loop с условием While в первой строке оператора.

Синтаксис оператора

While condition
statements 
Wend
  • condition - тестируемое выражение со значением True или False ;
  • statements - последовательность операторов, выполняемых в цикле.
Внимание:
  • При таком способе организации цикла не применяется оператор немедленного завершения цикла.

Приведем процедуру расчета зарплаты с использованием этого оператора цикла

Выполняется проверка введенных значений h и r, если оба не равны нулю, то проводится расчет и запрос на ввод данных о следующем сотруднике. В противном случае цикл завершается.

Пример цикла While… Wend

Рис. 6.11. Пример цикла While… Wend
< Лекция 5 || Лекция 6: 1234 || Лекция 7 >
Дмитрий Денисов
Дмитрий Денисов

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

Дмитрий Денисов
Дмитрий Денисов

Как записаться на курс, оплатить, не ориентируюсь в программе.

Ранее у Вас учился.

Работаю преподавателем, есть справка. Как получить скидку, т.е. оплата 2000


 

Андрей Гуменюк
Андрей Гуменюк
Молдова