| CONST
| Lower = 14;
| Upper = 27;
| TYPE
| Diapason = Lower ..Upper;
| Massiv1 = Array [Lower..Upper] of Real;
| Massiv2 = Array [Lower+1 .. Upper+1] of Integer;
Теперь в той же ситуации достаточно поправить два числа. В этом примере Lower и Upper простые константы (есть и сложные разновидности констант, но они рассматриваются совместно с переменными).
Константы вводятся исключительно для удобства программиста. В работающей программе выполнимый код будет одинаков для обоих рассмотренных примеров. Дело в том, что компилятор запоминает
- 76 -
все значения простых констант и при трансляции программы заменяет все имена констант на их значения. Именно поэтому простые константы не могут стоять слева в операторе присваивания и вообще не могут изменить свое значение в программе. Они могут участвовать в выражениях, вызовах функций, в операторах циклов, их можно выводить на печать (а вот вводить уже нельзя!), лишь бы не было попыток изменить их значение.
Константы описываются в блоке CONST (или в блоках, если их несколько). Синтаксис их прост:
CONST
ИмяКонстанть1 = Значение1;
ИмяКонстанты2 = Значение2;
и т.п. или
ИмяКонстанты = ЗначениеВыраженияСтоящегоСправа;
Имя и значение константы разделяются знаком равенства «=» (но не знаком присваивания «:=»). После задания константы обязательна точка с запятой. Концом блока констант считается начало любого другого блока или описания процедур и функций.
Все, что касается констант в стандарте Паскаля, верно и для Турбо Паскаля. Согласно стандарту значение простой константы имеет простой тип и не может быть записано выражением:
| CONST
| Min = 0; { константа — целое число }
| Мах = 500; { константа — целое число }
| е = 2.7; { константа — вещественное число}
| SpecChar = '\'; { константа — символ }
| HelpStr = 'Нажмите клавишу F1'; { константа — строка }
| NoAddress = nil; { константа — адрес }
| OK = True; { логическая константа истинно }
| { Можно задавать простые константы типа множество: }
| Alpha = [ 'А'..'Я' ];
Обращаем внимание, что тип значения не указывается никоим образом. Он определяется автоматически при анализе значения константы.
Расширением Турбо Паскаля является возможность определять константы как выражения из чисел, некоторых функций языка и определенных ранее простых констант. Так, приведенный список констант можно продолжить следующими примерами:
- 77 -
| Interval = Мах - Min + 1;
| Key = Chr(27); { символ с кодом 27 }
| e2 = е*е;
| BigHelpString = HelpStr + 'для подсказки';
| Flag = Ptr($0000, $00F0); { задание адреса }
В выражениях могут использоваться все математические операции (+,-,/,*,div,mod), поразрядные (битовые) действия, логические операторы (not, and, or, xor) и операции отношения (=,<,> и т.п., включая операцию in для множеств). Из стандартных функций Турбо Паскаля в выражениях констант могут участвовать только такие: