Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Понятно о Visual Basic.NET. Самоучитель.Ч2.2005...docx
Скачиваний:
46
Добавлен:
25.11.2019
Размер:
4.02 Mб
Скачать
      1. Шаг цикла

До сих пор переменная цикла менялась с шагом 1. Но оказывается шаг можно задавать любой и тогда оператор For удобно использовать вместо Do – программы получаются короче.

Пусть нужно распечатать числа 600, 605, 610, 615 . . . 900. Вот программа:

Dim a As Integer

For a = 600 To 900 Step 5

Debug.WriteLine(a)

Next a

Здесь Step 5 означает «Шаг 5».

Пусть нужно распечатать числа 3.00, 3.02, 3.04 . . . 5.00. Вот программа:

Dim a As Decimal

For a = 3 To 5 Step 0.02

Debug.WriteLine(Format(a, "0.00"))

Next a

Как видите, шаг может быть дробным. Тип переменной цикла я выбрал Decimal, если бы я выбрал Double, то при многократном прибавлении шага значение a стало бы чуть-чуть неточным.

Пусть нужно распечатать числа 5.00, 4.98, 4.96 . . . 3.00. Вот программа:

Dim a As Decimal

For a = 5 To 3 Step -0.02

Debug.WriteLine(Format(a, "0.00"))

Next a

Как видите, шаг может быть отрицательным.

Сравниваем For и Do. Таким образом, оператор For удобнее оператора Do в двух случаях: когда цикл нужно выполнить определенное количество раз и когда нам известны начальное и конечное значения переменной цикла и шаг. Однако за компактность и удобство For платит бедностью возможностей. Do гораздо более гибок, чем For.

      1. Синтаксис и работа оператора For

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

For переменная цикла = выражение1 To выражение2 [ Step выражение3 ]

операторы

операторы

……………..

Next [ переменная цикла ]

Переменная цикла должна иметь числовой тип. Обычно назначают Integer. Допустимы также нечисловые типы, для которых имеют смысл операции сложения и сравнения. В качестве примера приведу перечисления (см. 13.3).

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

Вместо чисел в операторе For можно писать переменные и выражения. Пример записи:

For I = s To 2*s+1 Step k*10

Если шаг не указан, он считается равным 1, то есть переменная на каждой итерации увеличивается на 1. Если же мы хотим уменьшать ее на 1, нам придется явно указать Step -1.

Работа оператора For

при положительном (или нулевом) шаге:

Прежде всего вычисляется выражение1, и переменной цикла (пусть это будет i) присваивается его значение. Затем вычисляется выражение2 и сравнивается с i. Если i > выражения2, то оператор For завершает свою работу, так ничего и не сделав. В противном случае выполняются операторы, стоящие между строками For и Next. После их выполнения значение i увеличивается на значение выражения3 (или при его отсутствии на 1) и снова сравнивается с выражением2. Если i > выражения2, то оператор For завершает свою работу, иначе снова выполняются операторы, снова i увеличивается и т.д.

при отрицательном шаге:

Прежде всего вычисляется выражение1, и переменной цикла (пусть это будет i) присваивается его значение. Затем вычисляется выражение2 и сравнивается с i. Если i < выражения2, то оператор For завершает свою работу, так ничего и не сделав. В противном случае выполняются операторы, стоящие между строками For и Next. После их выполнения значение i уменьшается на значение модуля выражения3 и снова сравнивается с выражением2. Если i < выражения2, то оператор For завершает свою работу, иначе снова выполняются операторы, снова i уменьшается и т.д.

Примечание: В VB 2003 в отличие от VB вы можете объявлять переменную цикла не заранее (оператором Dim), а непосредственно в заголовке цикла:

For переменная цикла As тип = выражение1 To …….

В этом случае областью видимости переменной цикла является блок оператора For (см. 11.3.4).