Константы
Вспомним процедуру рисования дерева из 11.2.2.:
Sub Дерево()
Dim x As Single = 200
Dim y As Single = 100
Dim Ширина_кроны As Single = 20
Dim Высота_кроны As Single = 60
Dim Длина_ствола As Single = 15
Гр.FillEllipse(Brushes.Green, x, y, Ширина_кроны, Высота_кроны)
Гр.DrawEllipse(Pens.Black, x, y, Ширина_кроны, Высота_кроны)
Гр.DrawLine(Pens.Black, x + Ширина_кроны / 2, y + Высота_кроны, _
x + Ширина_кроны / 2, y + Высота_кроны + Длина_ствола)
End Sub
При помощи пяти переменных мы можем управлять положением, размерами и формой дерева. Предположим, приходит ваш начальник, смотрит на дерево и говорит: «Хорошее дерево, особенно мне нравится ширина кроны. Приказываю, чтобы отныне все деревья, нарисованные этой процедурой, имели только такую ширину кроны и никакую другую, несмотря на дальнейшее развитие и усложнение процедуры.»
Как надежно выполнить приказ начальника? Ширина кроны задается оператором
Dim Ширина_кроны As Single = 20
Если не трогать этот оператор, можно ли быть уверенным, что ширина кроны в будущем не изменится? Нельзя, так как в будущем мы можем по забывчивости дописать в процедуру операторы типа Ширина_кроны = . . . Как бороться с забывчивостью? VB предлагает средство – так называемые константы. Константа – это переменная, которой мы задаем значение при объявлении, и которая неспособна это значение в дальнейшем менять. Чтобы отличить константу от обычной переменной, в операторе объявления мы вместо Dim пишем Const:
Const Ширина_кроны As Single = 20
Отныне, если мы попытаемся дописать в процедуру операторы, имеющие возможность изменить значение константы, типа Ширина_кроны =… , VB выдаст сообщение об ошибке.
Таким образом, при помощи объявления констант мы повышаем надежность программирования.
Имейте в виду, что термином «константа» до последнего времени часто обозначали два близких понятия: с одной стороны собственно константы, а с другой стороны литералы. Я буду стараться избегать возможной путаницы и литералы буду называть литералами. Литералы мы уже проходили. Напомню, что литералами называются те конкретные значения величин, которые мы видим в программе. Например, во фрагменте
a = 1 + 0.25
b = "Амазонка"
Debug.WriteLine("Волга")
If a > 3 Then . . .
литералы это 1 0.25 "Амазонка" "Волга" 3.
Кроме упомянутых выше констант, которые вы создаете сами, существует еще большое число констант, определенных в библиотеке классов .NET Framework. Объявлять их не надо, ими можно сразу пользоваться, если знать их имена и смысл. Например, такими константами являются математические константы PI и E, входящие в класс Math. Каждая из таких констант имеет конкретное значение (например, PI = 3.14159265358979323846). Мы могли бы вместо слова PI просто писать конкретное число 3.14159265358979323846, но названия запоминаются легче и записываются короче, чем числа.