Private Sub Command1_Click()
а = 2 * 3 + 4
b = а
у = а + b + 1
Debug.Print a, b, y, b + у
End Sub
Запустите проект. Щелкните по кнопке Command1 — в окне Immediate должны появиться 4 числа:
10 10 21 31
Вы видите окно Immediate? Если нет, то — View->Immediate Window.
Какая польза от переменных величин?
Самая крохотная и простая польза в том, что с их помощью удобно решать несложные вычислительные задачи. Например, даны стороны прямоугольника: а=27018, Ь=3954. Вычислить его площадь и периметр (напомню, что периметр — это сумма длин сторон прямоугольника).
Создайте проект с кнопкой. Задачу решает следующая программа:
Private Sub Command1_Click()
а = 27018
b = 3954
S = а*b 'Площадь
p=2*a+2*b 'Периметр
Debug.Print S, p
End Sub
После запуска и щелчка по кнопке вы увидите в окне Immediate следующие два числа:
106829172 61944
Первое из них — площадь, второе — периметр. Без применения переменных величин операторы получились бы более громоздкими:
S = 27018*3954 'Площадь
р = 2*27018 + 2*3954 'Периметр
что особенно заметно в больших программах. Есть и масса других преимуществ, которые вы почувствуете в следующих главах.
Продолжаем о переменных величинах
Нужно иметь в виду, что в операторе присваивания слева от знака равенства не может стоять число или выражение. Можно писать с=34, но нельзя писать 34=с. Можно писать z=f-v+990, но нельзя писать f-v+990=z. Правило это принято вот почему. Оператор присваивания устроен так, что сначала смотрит или вычисляет, какое значение имеет правая часть, а затем присваивает это значение тому, что стоит в левой части. То, что справа от знака равенства, присваивается тому, что слева от знака равенства, а не наоборот. Нет смысла присваивать значение числу или выражению.
Обратите внимание еще на один важный момент. Когда школьник видит выражение (например, d+2d), он не обязательно его вычисляет. Он может его преобразовать или, скажем, упростить (получив 3d). Компьютер же, видя выражение, сначала его, может быть, и упростит, но затем обязательно вычислит. А для этого он должен знать численные значения входящих в него величин (в нашем случае это величина d). Таким образом, вычисляя правую часть оператора присваивания (например, у=а+Ь+1), компьютер должен обязательно заранее знать, чему равны переменные, из которых эта правая часть состоит (в нашем случае это а и Ь). Ответственность за это знание лежит полностью на программисте. Пусть забывчивый программист записал такой фрагмент:. а=10: у=а+Ь+1…, нигде в программе не придав Ь никакого значения. Естественно, при вычислении выражения а+Ь+1 компьютер не будет знать, чему равно Ь. В такой ситуации разные языки программирования поступают по-разному. Некоторые "злые" языки просто отказываются вычислять выражения, "вредный" Турбо-Паскаль может подставить вместо Ь какую-нибудь ерунду (и молчок, между прочим), Visual Basic же добрый, он подставляет вместо Ь нуль.
Проверим. Заставим Visual Basic в нашем последнем проекте про прямоугольник не выполнять оператор а = 27018. Для этого его можно просто стереть, но удобнее просто поставить перед ним кавычку, тогда Visual Basic подумает, что это комментарий и выполнять не будет:
’а = 27018
Вот результат:
0 7908
Действительно, все выполнилось так, как если бы а было равно нулю.
Объявление переменных величин InputBox
Как мы можем задать компьютеру какую-нибудь величину? Оператором присваивания — раз. Введя ее в текстовое поле, как мы делали в калькуляторе — два. Есть еще один удобный и приятный способ — InputBox.
В вашем проекте о прямоугольнике вы можете хоть сто раз нажимать на кнопку
— результаты все время будут одинаковые. Это потому что исходные данные а=27018 и Ь=3954 никто не меняет. Скучно. Хорошо бы компьютер при нажатии на кнопку каждый раз спрашивал нас, чему равны стороны прямоугольника. А мы бы ему отвечали. А уж потом он вычислял.
Для этого нам нужно слегка изменить программу:
Private Sub Command1_Click()
а = InputBox("Введите ширину прямоугольника")
b = InputBox("Введите высоту прямоугольника")
S = а*Ь
р = 2*а + 2*Ь
Debug.Print S, р
End Sub
Как видите, заменены первые две строки: а=27018 и Ь=3954.
Конструкция
а = InputBox("Введите ширину прямоугольника")
есть оператор присваивания и означает она приказ компьютеру вывести сначала на экран вот такое окно — >
После чего человек вводит в белое текстовое поле этого окна любое число и нажимает ОК. После этого компьютер присваивает переменной а введенное значение и продолжает работу, то есть переходит к выполнению следующего оператора. Запустите проект и посмотрите, как он работает.