Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика VBA.pdf
Скачиваний:
891
Добавлен:
27.03.2016
Размер:
1.1 Mб
Скачать

в цикле последовательно присваивать A значения a1, a2, a3,...,am. Однако, если первый член a1ряда слагаемых выпадает из общей закономерности их вычислений (например: S = 2 + n + n2+ n3+ ...), то его следует сразу присвоить переменной SUM (SUM=2), а затем в цикле последовательно придавать A значения a2, a3,..., am.

Представим сказанное как схемы накапливания суммы

где A= a1, a2, a3,..., am

где A= a2, a3,..., am

Рисунок 4.1 – Схемы накапливания суммы элементов группы

При накапливании произведения группы чисел в первой схеме вместо начального значения «0» задается единица («1»), а символ операции сложения заменяется на символ операции умножения («звездочка»).

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

Циклы могут быть организованы с использованием оператора сравнения If с командой GoTo (см. примеры 3.3 и 3.4). Однако во всех языках программирования для организации циклов существуют специальные операторы. В языке VBA такими операторами являются операторы For и Do. Переменная, которая определяет количество повторений цикла, называется параметром цикла.

4.1 Оператор цикла For

Оператор цикла For служит для организации циклов с предусловием, параметр которого меняется по закону арифметической про-

54

грессии либо выбирается из группы элементов. Оператор For имеет две разновидности - оператор For для организации циклов, в которых параметр цикла изменяется по закону арифметической прогрессии, и оператор For Each.

Синтаксис оператора For для организации циклов, в которых параметр цикла изменяется по закону арифметической прогрессии:

For α = αнач. To αкон. [Step α]

тело цикла

Next [α]

где

α- переменная числового типа, являющаяся параметром цикла, определяет количество выполненных итераций;

αнач. - начальное значение параметра цикла – любое арифметическое выражение (в частном случае – константа или переменная);

αкон. -конечное значение параметра цикла – любое арифметическое выражение;

α- шаг изменения параметра цикла – любое арифметическое

выражение.

Оператор Next последний оператор цикла. Он ограничивает действие оператора For. Имя переменной, являющейся параметром цикла, в операторе Next можно не указывать. Но если имя переменной цикла указано (это повышает наглядность и читаемость программы), оно должно совпадать с именем параметра предыдущего оператора For – ошибка при написании имени переменной приведет к синтаксической ошибке при выполнении программы.

Цикл, заданный оператором For, является циклом с предусловием и работает следующим образом. Генерируется арифметическая прогрессия последовательности значений параметра цикла в диапазо-

55

не от αнач до αкон с шагом α. Операторы, образующие тело цикла, выполняются для каждого значения α из этой последовательности, при этом изменять параметры α, αнач ,αкон, α внутри цикла недопустимо. Если шаг арифметической прогрессии равен единице, то служебное слово Step с числом 1 можно не задавать. После завершения цикла переменная, являвшаяся параметром цикла, будет равна последнему значению арифметической прогрессии плюс шаг (Δα).

Для цикла с предусловием проверка на выполнение очередной итерации осуществляется перед ее началом. Цикл может не выполниться ни разу, если при положительном значении шага (Δα) значение αнач, будет больше значения αкон , либо, если при отрицательном значении шага (Δα) значение αнач, будет меньше значения αкон.. Однако переменная, обозначающая параметр цикла, при этом получит значение, равное αнач..

Для досрочного завершения цикла For следует использовать команду Exit For, которую, как правило, располагают в управляющей конструкции If, например:

If условие Then Exit For

При досрочном завершении цикла переменная, являющаяся параметром цикла, сохраняет свое текущее значение.

При задании конечного значения параметра цикла следует учитывать то обстоятельство, что любое арифметическое действие над вещественными числами в компьютере выполняется с некоторой погрешностью. Это связано с тем, что не каждое десятичное число можно точно перевести в двоичную систему счисления, а также с тем, что мантисса вещественного числа содержит либо 7 (тип Single), либо 15 (тип Double) цифр. Поэтому, при записи оператора For с вещественным параметром цикла конечное значение параметра следует немного увеличивать для положительного значения шага α, либо

56

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

Оператор цикла For Each

Параметром цикла, образованного конструкцией такого вида оператора For, является элемент из некоторой группы данных, например, такой как коллекция объектов или массив.

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

For Each имя_элемента In группа тела цикла

Next [имя_элемента]

где имя_элемента - переменная, используемая для обозначения очередного элемента из группы;

группа - это объект коллекции или массив; тело цикла – операторы, осуществляющие обработку значения

очередного элемента из группы.

Пример 4.1. На активном листе таблицы Excel (см. рисунок4.2) выделена группа ячеек. Определить количество и сумму чисел выделенной области.

Рисунок 4.2 - Изображение данных в таблице и выделенная группа объектов

57