
- •Шеверева е.А. Лекция № 1 по дисциплине 5422 «Средства разработки офисных приложений»
- •План лекции:
- •Текст лекции
- •1 Создание, редактирование и запуск программ
- •1.1 Редактор Visual Basic
- •1.2 Макросы
- •1.3 Процедуры
- •1.4 Использование значения, возвращаемого функцией
- •1.5 Выполнение процедуры Sub
- •1.6 Передача аргументов в процедуру
- •1.7 Именованные аргументы
- •1.8 Процедуры для обработки событий
- •1.9 Средства, ускоряющие написание программ
- •1.10 Проекты документов и шаблонов
- •1.11 Модули классов
- •2 Переменные, константы и типы данных
- •2.1 Типы данных в Visual Basic
- •2.2 Объявление константы, переменной или массива
- •2.3 Объявление объектной переменной
- •2.4 Встроенные константы
- •3 Управляющие конструкции
- •3.1 Операторы ветвления
- •Управляющая конструкция If…Then позволяет выполнять один или несколько операторов, если условие истинно. Можно использовать однострочный и блочный синтаксис.
- •3.2 Операторы цикла
- •3.3 Вложение управляющих конструкций
- •3.4 Выход из циклов и процедур
3.2 Операторы цикла
Данные операторы используются для повторного выполнения блоков кода (таблица 1.4).
Таблица 1.4 - Операторы цикла и их описание
Описание |
Циклы |
Проверяет условия в начале цикла, если оно True, переходит к выполнению цикла и продолжает, пока условие не станет False |
Do While … Loop |
Проверяет условия в начале цикла, если оно False, переходит к выполнению цикла и продолжает пока не станет True |
Do Until … Loop |
Выполняет цикл один раз, проверяя условие в конце цикла и, если оно True, продолжает пока условие не станет False |
Do … Loop While |
Выполняет цикл один раз, проверяя условие в конце цикла и, если оно False, продолжает пока условие не станет True |
Do … Loop Until |
Выполняет цикл заданное число раз, используя счетчик цикла с определенными начальным и конечным значениями, а также шагом приращения |
For … Next |
Выполняет цикл по разу для каждого объекта из набора |
For Each … Next |
Цикл Do … Loop позволяет выполнять блок операторов неопределенное число раз, используется в случаях, когда заранее не известно точное количество итераций. Существует несколько вариантов этого оператора, но в каждом из них проверяется условие и по результатам проверки делается вывод о необходимости продолжения цикла. Как и в операторе If … Then, условие должно быть значением или выражением, которое можно вычислить как True или False. Если блок операторов нужно выполнять заданное число раз, используется цикл For … Next.
Оператор Do While … Loop позволяет проверить условие перед началом цикла и выполняет цикл, пока оно истинно (True). Проверяемое в цикле Do While … Loop условие рано или поздно должно стать False, иначе цикл будет бесконечным. Чтобы остановить бесконечный цикл, предусмотрено сочетание клавиш Ctrl + Break. Процедура Function из следующего примера подсчитывает число вхождений одной строки в другую, выполняя цикл до тех пор, пока не будут найдены все вхождения. Поскольку проверка осуществляется в начале цикла, тот выполняется, только если заданная строка присутствует в другой строке.
Оператор Do Until … Loop позволяет проверять условие в самом начале цикла и продолжает выполнять цикл, пока оно не окажется истинным (True). Если окажется, что условие выполнено в самом начале цикла (даст True), то операторы в теле цикла пропускаются.
Если операторы цикла следует выполнить хотя бы раз, используется оператор Do … Loop While, который позволяет проверять условие в конце цикла. Операторы выполняются пока условие истинно.
В конструкции Do … Loop Until проверка осуществляется в конце цикла, поэтому цикл выполняется минимум один раз и прекращается, когда условие становится истинно (True).
Если заранее известно, что какой-то блок кода надо повторить определенное число раз, используется цикл For … Next. В отличие от операторов серии Do … Loop, в данном операторе используется счетчик, уменьшаемый или увеличиваемый на каждой итерации цикла. Если разновидности оператора Do … Loop завершают цикл, как только условие становится истинным или ложным, то цикл For … Next прекращается, как только счетчик достигает заданного значения.
По умолчанию (как и в этом примере) счетчик увеличивается на каждой итерации цикла на единицу. Ключевое слово Step позволяет изменить шаг приращения, если указывается отрицательное число - счетчик уменьшается на каждой итерации цикла.
Имя переменной в операторе Next указывать не обязательно, но ее присутствие облегчает восприятие программного текста, особенно если в ходе программы используется несколько вложенных циклов For.
Цикл For Each … Next похож на цикл For … Next за исключением того, что он выполняет одну и ту же группу операторов для каждого элемента набора объектов или массива. Он используется в том случае, когда заранее не известно число элементов в наборе или когда их количество может измениться в ходе выполнения процедуры. Синтаксис оператора выглядит следующим образом:
For Each элемент In группа
операторы
Next элемент
Встретив оператор For Each … Next, Visual Basic:
Считает элемент именем первого элемента в группе (если группа не пуста).
Выполняет операторы.
Проверяет, не последний ли это элемент в группе, и, если да, завершает цикл.
Подставляет вместо элемента имя следующего элемента в группе.
Повторяет операции, описанные в пунктах 2-4 данной последовательности.
Указывать имя переменной после Next не обязательно, но это облегчает восприятие текста в программе, особенно при наличии нескольких встроенных циклов For Each.
Если необходимо удалить все объекты из набора, следует использовать цикл For … Next, а не For Each … Next.
Применяя оператор For Each … Next, следует помнить о следующих ограничениях:
в случае наборов элементом может быть переменная типа Variant, Object или конкретного объектного типа из библиотеки объектов, а для массивов – только Variant;
оператор For Each … Next не годится для массивов пользовательских типов, так как в переменную типа Variant нельзя записать значение пользовательского типа.