Примеры
Все нижеприведенные примеры прогоните в обычном и в пошаговом режиме.
Пример 1. Определите без компьютера, что напечатает фрагмент:
Dim a = 100
GoTo 8
a = a + 40
Dim k = 7
Debug.Write(a)
8: a = a + 2
k = k + 10
Debug.Write(a)
Этот фрагмент напечатает 102. Операторы выполняются в такой последовательности:
Dim a = 100
GoTo 8
a = a + 2
k = k + 10
Debug.Write(a)
А операторы
a = a + 40
Dim k = 7
Debug.Write(a)
выполнены не будут вообще, несмотря на то, что написаны. Цикла здесь нет.
Пример 2. Печатать числа 0, 1, 2, 3 . . . и так без конца.
Вот программа:
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim n As Long = 0
m1: Debug.Write(n & " ")
n = n + 1
GoTo m1
End Sub
Здесь в оператор Debug.Write(n & " ") вставлена печать пробела, чтобы как-то отделить друг от друга числа в одной строке.
Обратите внимание, что когда компьютер, скажем, в 24-й раз выполняет тело цикла, значение n как раз равно 24. Значит, зная в любой момент значение n, мы можем сказать, в какой раз выполняется тело цикла (еще говорят: какая итерация цикла выполняется). Переменная, обладающая таким свойством, называется счетчиком циклов.
Пример 3. Выводить числа 0, 1, 2, 3 . . . , но не на печать, а в элемент управления Label (что весьма приятно наблюдать).
Вот программа:
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim n As Long = 0
m1: Label1.Text = n
Label1.Refresh()
n = n + 1
GoTo m1
End Sub
Здесь новостью для нас является оператор Label1.Refresh(), который можно перевести так – «перерисовать, обновить, освежить Label1». Без него вы не увидели бы в Label1 никаких новых чисел, информация в ней просто не обновлялась бы. Метод Refresh подходит в некоторых случаях и к другим элементам управления.
Пример 4. Печатать числа 200, 205, 210, 215 . . . и так без конца.
Вот программа:
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim n As Long = 200
m1: Debug.Write(n & " ")
n = n + 5
GoTo m1
End Sub
Задание 23.
Определить без компьютера, что будет печатать программа:
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim n As Integer = 10
Dim k As Integer = 0
Debug.WriteLine("Считаем зайцев")
met5: Debug.Write(n)
n = n + k
GoTo m1
n = n + 1
m1: Debug.WriteLine(" зайцев")
k = k + 1
GoTo met5
Debug.Write("Посчитали зайцев")
End Sub
Если не можете определить – посмотрите в пошаговом режиме.