Оператор присваивания меняет значения переменных величин
Пока я не рассматривал программы, в которых переменные меняют свою величину. Теперь настало время такую программу рассмотреть:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim k As Integer
k = 10
Debug.WriteLine(k)
k = 25
Debug.WriteLine(k)
k = 4
Debug.WriteLine(k)
End Sub
В процессе работы программы содержимое ячейки k меняется. Так, при выполнении оператора k=25 там вместо значения 10 появляется 25. А куда же девается десятка? Она стирается, то есть компьютер забывает ее безвозвратно. Здесь действует общий принцип работы всех компьютеров:
Если в какую-нибудь ячейку или вообще в какое-нибудь место памяти или диска записывается новая информация, то старая информация, записанная там раньше, автоматически стирается, даже если она кому-то и нужна.
Раз теперь вместо 10 в ячейке k находится 25, то оператор Debug.WriteLine(k) печатает уже 25. (Слово «печатает» устарело, оно осталось от тех времен, когда мониторов еще не было, а вместо них были принтеры. Когда я по старинке говорю, что информация печатается, я подразумеваю, что она появляется на мониторе в том или ином окне.) Следующий оператор k=4 запишет на место 25 четверку, а Debug.WriteLine(k) ее напечатает. Проверьте.
Запишем схематически процесс изменения информации в ячейке k:
ПОРЯДОК ИСПОЛНЕНИЯ ОПЕРАТОРОВ | ЧТО НАХОДИТСЯ В ЯЧЕЙКЕ ПАМЯТИ k | ЧТО ВИДИМ
В ОКНЕ Output | |||
k=10 | 10 | ||||
Debug.WriteLine(k) | 10 | 10 | |||
k=25 | 25 | ||||
Debug.WriteLine(k) | 25 | 25 | |||
k=4 | 4 | ||||
Debug.WriteLine(k) | 4 | 4 |
А что напечатает следующая программа?
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim f As Integer
f = 30
Debug.WriteLine(f)
f = f + 4
Debug.WriteLine(f)
End Sub
Оператор f=30 запишет в ячейку f число 30. Затем оператор Debug.WriteLine(f) напечатает 34. А что сделает странный оператор f=f+4 ? Не думайте, что это уравнение или что-нибудь в этом роде. Это оператор присваивания, а значит и выполнится он согласно определению оператора присваивания. Сначала VB вычислит правую часть f+4 , подставив туда вместо f его значение, взятое из ячейки, и получит 34. Затем число 34 будет записано в ячейку, отведенную под переменную, обозначенную в левой части, то есть опять же в ячейку f. При этом старое значение 30 будет стерто. Оператор Debug.WriteLine(f) напечатает 34.
Таким образом, оператор f=f+4
просто увеличивает число в ячейке f на четверку или, другими словами, увеличивает f на 4.
Зачем это нужно? Узнаете позже. Очень даже нужно. Операторы такого типа встречаются настолько часто, что для них даже придумали сокращенную запись. Потренируемся:
Оператор |
Сокращенная запись |
Действие |
a = a + 1 |
a += 1 |
Переменная увеличивается на 1 |
s = s - 25 |
s -= 25 |
Переменная уменьшается на 25 |
b = b * 2 |
b *= 2 |
Переменная увеличивается в 2 раза |
t = t / 3 |
t / = 3 |
Переменная уменьшается в 3 раза |
Определите без компьютера, что будет напечатано при выполнении следующих фрагментов программ:
- a=100 : a=10*a+1 : Debug.WriteLine(a)
- a=100 : a= -a : Debug.WriteLine(a)
- a=10 : b=25 : a=b-a : b=a-b : Debug.WriteLine(a) : Debug.WriteLine(b)