- Константин, что в переводе с греческого значит „постоянный“!
Стандартное представление главного героя
Покровских ворот
Сердце красавицы склонно к измене И к перемене, как ветер мая.
Дж. Верди. Риголетто
Константы - это параметры (объекты) программы, которые не могут изменять своё значение в ходе выполнения программы.
Как мы уже знаем, все числа являются числовыми константами. Из чисел, знаков операций, идентификаторов некоторых стандартных функций и круглых скобок можно составлять константные выражения:
123 ’ Z ’
Cos(3.14)
’stringl ’
Chr(255)
Точно так же из любых символов мы можем составить символьные (один любой символ) и строковые константы (любое количество любых символов, в том числе и ни одного). Такие константы заключаются в одинарные (не двойные!) кавычки:
’G’ ’R’ ’7’ ’Ж’ ’Э’ - символьные константы
’’ - пустая строка, в которой нет ни одного символа
’Delphi’ ’G’ ’Constant’ ’Строковая константа’ - строковые константы
Строковые и символьные константы можно соединять знаком +:
’Delphi’ + ’ - ’ + ’ это наш выбор! ’
Значением этого выражения будет строка «Delphi- это наш выбор!»
’205’ ’14.007’ ’2 + 2’ - тоже строковые константы! Их значениями являются именно строки, а не числа, поэтому значение выражение '2 + 2' вовсе не 4!
Если в строковой константе имеется одиночная кавычка, то её следует повторить дважды.
Кроме того, существуют логические константы True(соответствует значению истина), False(ложь), а также константа nil (0, используется как значение указателей).
Такие явные константы и константные выражения можно использовать в любых операторах и для этого их не нужно объявлять.
Именованные константы
Именованные константы описываются в разделе объявления констант модуля или подпрограммы. Он начинается зарезервированным словом const, за которым следуют объявления констант, состоящие из имени, знака равенства и значения константы. Завершается объявление точкой с запятой:
Const
Имя= значение;
Здесь значение - это константа или константное выражение.
Например:
const
num= 123; pi= 3.1415926; pi2= pi * 2; e12= 2.1728 / 2; str= ’string1’;
Flag= TRUE;
Ch= ’s’;
Именованные константы получают своё значение при объявлении и потом изменить его не могут.
Константы принято описывать раньше переменных, так как в их объявлениях часто эти константы используются.
Разделов объявления констант и переменных может быть сколько угодно:
const
num= 12 3; pi= 3.1415926; var s: single;
c1: char; const c: integer= $ffff;
Вы должны были обратить внимание на то, что тип констант разный, но нигде не указан. Тогда каким же образом компилятор определяет его? - По виду константы или константного выражения! Действительные числа должны быть записаны с десятичной точкой или в научной нотации. Все остальные числа считаются целыми (десятичными и 16-ричными). Символьные (один символ) и строковые (любое количество символов) константы должны быть заключены в одиночные кавычки. Логические должны иметь значение TRUEили FALSE.
При компиляции программы значения всех именованных констант вычисляются и подставляются в исполняемом коде вместо их идентификаторов. Это немного увеличивает скорость работы программы, но главная цель применения именованных (а не явных) констант в том, чтобы сделать исходный код более понятным и облегчить модификацию программы в случае необходимости.
Пусть нам нужно написать программу, играющую в шашки. Доска имеет 8 вертикалей и 8 горизонталей. Если эти числа использовать в исходном коде, то эти восьмёрки невозможно будет отличить от других восьмёрок, которые тоже могут оказаться в коде. Да и вообще число 8 никак не указывает на то, что это число вертикалей на шахматной доске. Пусть, несмотря на это, нам удалось написать шашечную программу. Но - аппетит приходит во время еды: мы решили взяться за 100-клеточные шашки, а там доска побольше: 10 горизонталей и столько же вертикалей. Придётся просматривать (и очень внимательно!) весь код и исправлять восьмёрки на десятки.
Конечно, лучше сразу объявить две константы:
Const
MAX_ROW = 8;
MAX_COL = 8;
Их же следует использовать и в коде программы, тогда при переходе от русских шашек к международным достаточно будет изменить только 2 числа в самом начале программы, где их отыскать совсем нетрудно:
MAX_ROW = 10;
MAX COL = 10;
Надеюсь, вы даже и не подумали, что после этого программа сумеет играть в международные шашки! Речь идёт только о размере доски, алгоритм игры изменится до неузнаваемости, но это уже ваша забота.
Переменные
Переменные - это параметры (объекты) программы, которые могут изменять своё значение в ходе выполнения программы.
Физически переменная представляет собой область памяти (её размер зависит от типа переменной; в этих ячейках памяти хранится значение переменной), связанную с её идентификатором.
Как и все другие объекты программы, до первого использования переменные должны быть объявлены. Переменные описываются в разделе объявления переменных модуля или подпрограммы. Он начинается зарезервированным словом var(от слова variable- переменная), за которым следуют объявления переменных.
При объявлении переменной указывается её имя, которое отделяется двоеточием от типа. Каждое объявление завершается точкой с запятой:
Var
I,i,n: integer;
Flag: boolean:
Ch: char;
X,y,z: single;
Переменные одного типа можно перечислять через запятую с последующим указанием их общего типа.
Типом переменной может быть:
- стандартный тип Delphi (integer, single, char...);
- ранее определённый пользователем тип:
Type
TNumber= 0..10;
Var
Num: TNumber;
- непосредственно вводимый при объявлении тип:
Var
0..10;
Num:
Хорошенько запомните: после объявления переменной её значение не определено. При выполнении программы для каждой переменной выделяется память, но в этих ячейках может оказаться всё что угодно, поэтому значение переменной будет меняться от одного запуска программы к другому. Это может привести к ошибкам: в некоторых случаях программа будет работать правильно, в других нет. Это значит, что все переменные должны быть инициализированы, то есть им должно быть присвоено какое-либо значение (конечно, не при объявлении):
var s: single; begin
s:= 3.1415926;
Никогда не используйте неинициализированные переменные!
Впрочем, Delphiследит за вами! После отладочного запуска программы проверяйте содержимое окна сообщений
В третьей строке компилятор предупреждает (такое легкомысленное отношение к переменным ошибкой не считается, но использовать её не следует!), что вы забыли задать значение переменной s.
Глобальные переменные инициализируются автоматически значением по умолчанию. Для числовых переменных - нуль, для строковых - пустая строка. Инициализация локальных переменных целиком лежит на совести программиста.
Два других сообщения - подсказки: вы объявили переменные, то не использовали их. Возможно, они лишние и их следует удалить.
const
num= 123; pi= 3.1415926; Flag= TRUE;
var s: single;
begin
s:= num; s:= pi; s:= flag;
Не забывайте также о совместимости типов переменных и присваиваемых им значений. В данном примере действительной переменной sможно присвоить значение целого или действительного типа, но никак не логического или строкового! В этом случае компилятор огорчит вас сообщением об ошибке и наотрез откажется запускать «дефективную» программу.