Важно
: Поскольку типизированные константы это, на самом деле, обычные переменные, их нельзя использовать в описаниях других констант и типов. Следующий фрагмент показывает пример НЕПРАВИЛЬНОГО использования типизированных констант:
CONST
Min : Byte = 0;
Max : Byte = 1;
e : Real = 2.7;
Interval = Max - Min + 1; {
Ошибка }
e2 = e*e; { Ошибка }
VAR
V : array[Min..Max] of Integer; { Ошибка }
Зачем нужны типизированные константы?
Когда программа начинает работать, места под значения переменных уже выделены, но не очищены. Это означает, что в ячейках памяти может быть что угодно (остатки предыдущей программы или ее следы). Поэтому в Паскале очень важно, чтобы каждая переменная перед использованием была бы заполнена имеющим смысл или хотя бы пустым (нулевым) значением. Выполнить это требование можно, начиная программу со "скучной" перепеси переменных
x := 0; y := 0; ch := 'n';
flag := FALSE;
a[1] := 1; a[2] := 0; a[3] := -1; a[4] := 0;
Более элегантное решение этой проблемы - переменная со стартовым значением: вводим идентификатор переменной, указываем ее тип и тут же (!) определяем ее начальное значение. Все просто!
В качестве фактических параметров подпрограммы, подставляемых на место фомальных параметров-значений, могут выступать: переменные, константы и выражения (точнее их значения), причем их типы должны быть совместимы по присваиванию с типами соответствующих формальных параметров-значений.
В качестве фактических параметров подпрограммы, подставляемых на место фомальных параметров-переменных, могут выступать ТОЛЬКО ИДЕНТИФИКАТОРЫ ПЕРЕМЕННЫХ.