ПОНЯТНО О Visual Basic NET (том 2)

Оператор Exit Do


Оператор Exit Do нужен для того, чтобы выходить из цикла не в начале тела цикла, как в вариантах 3-4, не в конце, как в вариантах 1-2, а в середине. Добавим, например, Exit Do в тело цикла одного из вариантов предыдущей программы:

        Write("Начало счета   ")

        f = 3

        Do

            Write(f & "  ")

            Exit Do

            f = f + 2

        Loop While f <= 9

        Write("Конец счета")

Вот результат работы этой программы:

Начало счета   3  Конец счета

Как видите, Exit Do – это всего лишь приказ перейти к оператору, следующему за словом Loop.  Толк от Exit Do будет тогда, когда его поместят внутрь оператора ветвления:

        Write("Начало счета   ")



        f = 3

        Do

            Write(f & "  ")

            If f >= 5 Then Exit Do

            f = f + 2

        Loop While f <= 9

        Write("Конец счета")

Вот результат работы этой программы:

Начало счета   3  5  Конец счета

Пока в Exit Do особого смысла вы не видите. А увидите вы его в следующей задаче, где не подойдет ни один из вариантов 1 – 4 оператора Do, а подойдет Exit Do в совокупности с 0 вариантом.

Задача. Выполнить с использованием Do и Exit Do Задание 41: Для х=2700, 900, 300, 100 .. . и т.д. вычислять и печатать y=x/4+20  и  z=2y+0.23  до тех пор, пока yz не станет меньше  1/х.

Загляните в ответ – как решена задача без Do. А вот как – с Do.

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click

        Dim x, y, z As Double

        x = 2700

        Do

            y = x / 4 + 20

            z = 2 * y + 0.23

            If y * z < 1 / x Then Exit Do

            Debug.WriteLine(Format(x, "0.000000") & "  " & Format(y, "0.000000") & "  " & Format(z, "0.000000"))

            x = x / 3

        Loop

End Sub

Как видите, очень похоже. Обратите внимание, что если вы захотите обойтись без Exit Do и использовать один из вариантов 1 – 4 оператора Do, то у вас при использовании 1-2 вариантов «новый» x в условии  y*z<1/x  будет сравниваться со «старыми» y и z (в нашем конкретном случае это не приведет к катастрофе, но все равно это нехорошо). А использование 3-4 вариантов вообще невозможно без неоправданного усложнения программы.

Задание 33.                    

Решить чуть измененную задачу про «Хватит так хватит» из предыдущего раздела: Компьютер предлагает человеку ввести слово, после чего распечатывает это слово, снабдив его восклицательным знаком. Затем снова предлагает ввести слово и так до тех пор, пока человек не введет слово «Хватит». Его он не распечатывает вообще, а отвечает «Хватит так хватит» и заканчивает работу. Указание: Используйте Exit Do в совокупности с 0 вариантом Do. Остальные варианты не подойдут или подойдут плохо.



Содержание раздела