Еще раз повторяю вопрос - отправил договор и сканы документов по почте - в начале августа, до 5 го, внес предоплату - летом действовала скидка - чтобы пройти курс в августе, но я уезжал в Москву. По возвращению - и в течение месяца - никакого ответа, никаких зачислений, ничего. Как проверить, пришли ли мои документы в Интуит, предоплата, почему нет зачисления. |
Операторы управления
Операторы цикла
Повтор действий в процедурах достигается при помощи организации циклов. Цикл - это многократно повторяемая последовательность операторов.
- Существуют различные способы организации циклов, но во всех способах есть
- строка, которая отмечает начало цикла, и строка, которая отмечает его конец;
- условие выхода из цикла или продолжения выполнения цикла.
- Условие выхода из цикла может располагаться в начале или конце цикла.
- Нормальный выход из цикла производится, когда выполнено это условие.
- После выхода из цикла управление передается оператору, следующему за оператором окончания цикла.
- Нельзя передавать управление внутрь цикла и из цикла к оператору, расположенному вне цикла.
- Внутри цикла можно задать дополнительные условия выхода из цикла и использовать операторы немедленного завершения цикла.
В языке Visual Basic используется несколько форм операторов цикла:
- вычисляемые циклы повторяют набор команд определенное (вычисляемое) число раз;
- объектные циклы выполняют набор команд для каждого объекта группы;
- логически прерываемые циклы повторяют команды, пока условие имеет истинное значение или пока значение условия не станет таковым.
Одни и те же действия по повтору команд можно записать различными способами, но в разных ситуациях удобнее использовать определенные способы организации циклов.
Цикл For…Next
Оператор используется для организации вычисляемого цикла ( Counted Loop ), который применяется, если известно или может быть вычислено количество повторений.
Синтаксис оператора
For counter = start To end [Step step] [statements] [Exit For] [statements] Next [counter]
- counter - переменная цикла (счетчик цикла);
- start - начальное значение переменной цикла;
- end - конечное значение переменной цикла;
- step - шаг цикла. Необязательное значение. По умолчанию шаг цикла равен единице;
- Exit For - оператор немедленного выхода из цикла;
- statements - набор повторяемых команд (тело цикла);
- Next - оператор окончания цикла.
При первом входе в цикл счетчик цикла устанавливается в начальное значение ( start ). При каждом повторе к счетчику цикла прибавляется шаг цикла ( step ). Как только значение переменной цикла превысит конечное значение, цикл завершается. Можно подсчитать, сколько раз выполнится цикл: например, если шаг цикла равен единице, то цикл выполняется end-start+1 раз и каждый раз с новым значением счетчика цикла.
- counter - числовая переменная. Счетчик цикла обычно участвует в вычислениях внутри цикла.
- Параметры цикла start, end, step могут быть заданы числами, числовыми переменными или числовыми выражениями.
- Параметры цикла вычисляются при входе в цикл и не изменяются во время выполнения цикла, даже если меняются переменные, влияющие на эти значения.
- Параметры цикла могут иметь положительные и отрицательные значения.
- Внутри тела цикла не рекомендуется присваивать новые значения переменной цикла, т.к. это может вызвать зацикливание.
- Счетчик цикла можно использовать и по завершении цикла. По окончании цикла значение счетчика цикла равно конечному значению плюс шаг.
- Рекомендуется указывать в операторе Next идентификатор счетчика цикла, так как в случае использования вложенных циклов часто трудно определить, где кончается тот или иной цикл.
- Оператор Exit For осуществляет немедленный выход из цикла независимо от значения счетчика цикла.
Примеры
- Распечатать в окне Immediate первые пять целых чисел (
рис.
6.5).
Переменная i (счетчик цикла) в процессе выполнения цикла меняет значение от 1 (устанавливается выражением i=1 ) до значения 5, заданного выражением To 5. Шаг изменения значений переменной i по умолчанию 1.
Можно было бы записать все операторы на одной строке, используя двоеточие как разделитель между операторамиFor i=1 To 5: Debug.Print i : Next i.
- Подсчитать сумму чисел от 1 до 1000 (
рис.
6.6).
В процедуре используются два оператора присваивания: s=0, s=s+n. Первый оператор устанавливает начальное значение для суммы чисел, а второй наращивает эту сумму в процессе вычислений.
Цикл For Each…Next
Цикл объектного типа используется для массивов или групп (коллекций) объектов. Циклы объектного типа повторяют последовательность операторов ровно столько раз, сколько элементов содержится в массиве или в группе объектов. В отличие от вычисляемого цикла переменная цикла не является счетчиком цикла, а содержит значение элемента массива или ссылку на объект из группы объектов.
Синтаксис оператора
For Each element In group [statements] [Exit For] [statements] Next [element]
- element - переменная, значения которой суть элементы из группы;
- group - массив данных или группа объектов;
- statements - последовательность операторов, выполняемая для каждого элемента;
- Exit For - оператор, осуществляющий немедленный выход из цикла.
- Если цикл выполняется для массива, то переменная element должна быть переменной типа Variant.
- Если цикл выполняется для коллекции объектов, то тип переменной element - Object или должен совпадать с типом элементов коллекции объектов.
- Не рекомендуется внутри цикла изменять количество элементов массива или группы, так как новый элемент может не обработаться командами тела цикла.
- Цикл For Each для группы объектов более эффективен, чем цикл For Next.
Примеры
- Просуммировать элементы массива.
В вычисляемом цикле значения элементов массива устанавливаются равными номеру элемента массива.
В цикле объектного типа подсчитывается сумма элементов массива: переменная цикла i принимает значения элементов массива.
- Заполнить интервал ячеек последовательными натуральными числами.
Переменная Obj_range объявлена как объект Range и ее значение устанавливается оператором Set как ссылка на интервал ячеек A1:B6.
Переменная p (переменная цикла объектного типа) перебирает все ячейки интервала Obj_range, устанавливая их значения в номер элемента.