Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Создание пользовательских п ÒÉÌÏÖÅÎÉÊ ÓÒÅÄÓÔÁÍ...doc
Скачиваний:
6
Добавлен:
18.11.2019
Размер:
2.02 Mб
Скачать

Операторы цикла

Повтор действий в процедурах достигается при помощи организации циклов. Цикл – это многократно повторяемая последовательность операторов.

Важно

  • Существуют различные способы организации циклов, но во всех способах есть

  • строка, которая отмечает начало цикла, и строка, которая отмечает его конец;

  • условие выхода из цикла или продолжения выполнения цикла.

  • Условие выхода из цикла может располагаться в начале или конце цикла.

  • Нормальный выход из цикла производится, когда выполнено это условие.

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

  • Нельзя передавать управление внутрь цикла и из цикла во вне его.

  • Внутри цикла можно задать дополнительные условия выхода из цикла и использовать операторы немедленного завершения цикла.

В языке 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 осуществляет немедленный выход из цикла независимо от значения счетчика цикла.

Примеры

  1. В процедуре рассчитываются заработная плата, налог (единая ставка налога 13%) и сумма на руки для 2000 сотрудников.

Sub salary_cycle()

Dim h As Long, r As Long, s As Double, id As Integer

Dim Fund As Long, i As Integer

For i = 1 To 2000

id=Val(InputBox("Код сотрудника"))

h = Val(InputBox("Количество отработанных часов"))

r = Val(InputBox("Почасовая оплата"))

If h = 0 Or r = 0 Then

Exit For

End If

s = h * r

Fund = s * 0.13

s = sFund

MsgBox "Код сотрудника " & id & ", сумма на руки " & s

Next i

End Sub

Для каждого сотрудника вводятся его код, количество отработанных часов и размер почасовой оплаты. Функция Val преобразует введенное значение в числовое.

Если введены нулевые значения количества отработанных часов или размера почасовой оплаты, то происходит немедленный выход из цикла (дополнительное условие выхода из цикла). При нормальном выходе из цикла значение счетчика цикла равно 2001.

  1. В процедуре просматриваются первые двадцать ячеек столбца A, начиная с последней. Обнаруженные отрицательные числа меняют знак и размещаются в последовательных ячейках столбца B, начиная с первой.

Public Sub neg_forward()

Dim i As Integer, j As Integer

j = 1

For i = 20 To 1 Step –1

If Cells(i, 1).Value < 0 Then

Cells(j, 2) = –Cells(i, 1)

j = j + 1

End If

Next i

End Sub

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

Запись Cells(i,1).Value позволяет проанализировать значение i-ой ячейки первого столбца. Название свойства Value объекта Range можно не указывать, т.к. оно является свойством по умолчанию.