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

Я говорил, что имеются две разновидности оператора For. Здесь я рассмотрю только одну. Вторая будет разобрана в 16.2.2.

Вспомните программу печати чисел 3 5 7 9:

f = 3

Do

Write(f & " ")

f = f + 2

Loop While f <= 9

Здесь было выполнено 4 итерации цикла Do или, как еще говорят, цикл выполнился 4 раза, или, как говорят уже не очень правильно, было выполнено 4 цикла. Но обычно, когда мы пишем операторы Do, нам совсем не интересно знать, сколько итераций будет сделано.

Тем не менее, существует множество задач, для решения которых цикл нужно выполнить именно определенное количество раз. В этом случае вместо оператора Do удобнее использовать оператор цикла For.

      1. Объясняю For на примерах

Задача 1: 200 раз напечатать слово ФУТБОЛ.

Очевидно, нам нужно написать циклическую программу, где цикл выполнялся бы 200 раз. Попробуем сначала решить задачу при помощи оператора GoTo. Для выхода из цикла оператор GoTo нужно включить в состав оператора If. Кроме этого нужна переменная, меняющая свое значение от одного выполнения цикла к следующему. Удобнее всего, если эта переменная будет менять свое значение на 1, начиная с 0 или 1. Напомним, что переменная, организованная таким образом, является счетчиком циклов (См. 8.1.3). Придумаем этой величине какое-нибудь имя, скажем i. Задачу решает такой причудливый фрагмент:

i = 1

m1: If i > 200 Then GoTo m2

Debug.Write("ФУТБОЛ ")

i = i + 1

GoTo m1

m2:

Здесь i вначале равно 1, но к каждому следующему выполнению цикла оно увеличивается на 1. В первый раз выполняя оператор If, компьютер проверяет условие 1>200 и найдя его ложным, выполняет следующий оператор – Debug.Write("ФУТБОЛ "). Во второй раз проверяется условие 2>200 и т.д. В 200-й раз компьютер проверяет условие 200>200 и найдя его ложным, в 200-й раз выполняет оператор Debug.Write("ФУТБОЛ "). В 201-й раз компьютер проверяет условие 201>200 и найдя его истинным, выходит из цикла, перейдя к метке m2. Все. ФУТБОЛ напечатан ровно 200 раз.

В нашем примере «полезную» работу выполняет только одна строка из пяти – Debug.Write("ФУТБОЛ "). Остальные строки заняты тем, что обеспечивают выполнение «полезной» строки ровно 200 раз. Чтобы избежать такого перекоса в сторону «обслуживающего персонала» и для вящей краткости, придумали оператор For и вместо верхних 2 строк:

i = 1

m1: If i > 200 Then GoTo m2

стали писать 1 строку:

For i = 1 To 200

а вместо нижних 2 строк:

i = i + 1

GoTo m1

тоже стали писать 1 строку:

Next i

смысл программы оставляя тем же самым.

Получилось вот что:

For i = 1 To 200

Debug.Write("ФУТБОЛ ")

Next i

Как видите, гораздо короче.

Слово For переводится «Для». Слово To переводится «до». Конструкция For i=1 To 200  понимается так: Для i, изменяющегося от 1 до 200, выполняй операторы, стоящие ниже вплоть до слова Next.

Слово Next говорит о том, что надо увеличивать i на 1 и возвращаться к началу цикла. При первом выполнении цикла i будет равно 1, при втором – 2, и так далее. При последнем – 200. Переменная i называется переменной цикла.

Задача 2. В предыдущем конкретном случае сами по себе значения i не были важны, нужный результат мы бы получили и с оператором

For i = 501 To 700

А вот где значения переменной цикла будут важны: Распечатать пары чисел – 101 1010 102 1020 103 1030 ……. 110 1100

Вот программа:

For a = 101 To 110

b = 10 * a

Debug.WriteLine(a & " " & b)

Next a