Константа — это объект, значение которого известно ещё до начала работы программы.
Константы необходимы для оформления наглядных программ, незаменимы при использовании в тексте программы многократно повторяемых значений, удобны в случае необходимости изменения этих значений сразу во всей программе.
В языке Pascal существует три вида констант:
- неименованные константы (цифры и числа, символы и строки, множества);
- именованные нетипизированные константы;
- именованные типизированные константы.
Неименованные константы
Неименованные константы не имеют имён, и потому их не нужно описывать.
Тип неименованной константы определяется автоматически, по умолчанию:
- любая последовательность цифр (возможно, предваряемая знаком «—» или «+» или разбиваемая одной точкой) воспринимается компилятором как неименованная константа–число (целое или вещественное);
- любая последовательность символов, заключённая в апострофы, воспринимается как неименованная константа — строка;
- любая последовательность целых чисел, либо символов через запятую, обрамлённая квадратными скобками, воспринимается как неименованная константа — множество.
Кроме того, существуют две специальные константы true и false, относящиеся к логическому типу данных.
Примерами использования неименованных констант могут послужить следующие операторы:
int1 := -10;
real2 := 12.075 + x;
char3 := 'z';
string4 := 'abc' + string44;
set5 := [1, 3, 5] * set55;
boolean6 := True;
Нетипизированные константы
Именованные константы, как следует из их названия, должны иметь имя. Таким образом, эти имена необходимо сообщить компилятору, то есть описать в специальном разделе const.
Если не указывать тип константы, то по её внешнему виду компилятор сам определит, к какому (базовому) типу её отнести. Любую уже описанную константу можно использовать при объявлении других констант, переменных и типов данных. Вот несколько примеров описания нетипизированных именованных констант:
const n = -10;
const
n=-10;
m = 1000000000;
mmm = n * 100;
x = 2.5;
c = 'z';
s = 'string';
b = true;
Типизированные константы
Типизированные именованные константы представляют собой переменные с начальным значением, которое к моменту старта программы уже известно. Следовательно, во–первых, типизированные константы нельзя использовать для определения других констант, типов данных и переменных, а во–вторых, их значения можно изменять в процессе работы программы.
Описание типизированных констант производится по следующему шаблону:
const <имя_константы> : <тип_константы> = <начальное_значение>;
Из приведённых ниже примеров видно, как это сделать:
const
//Целое число
n: Integer = -10;
//Вещественное число
x : Real = 2.5;
//Символ
c : Char = 'z';
//Логический тип данных
b : Boolean = True;
//Массив строк
a:array[1..3,1..4] of string=(('11','22','33','44'),
('1','12','3','55'),
('10','23','35','4'));
//Массив целочисленных значений
b:array[1..5] of integer = (1,5,3,2,4);
//Массив вещественных значений
h:array[1..5] of real = (1.4,5.33,3,2.33,4);
//Массив символов
ch:array[1..5] of char = ('r','t','e','w','q');
Константы типа массивов Array
Описание
Объявление константы типа массива определяет значения компонентов массива.
Тип компонентов массива может быть любым, кроме файлового.
Type
Status = (Active, Passive, Waiting);
StatusMap = Array [Status] Of String[7];
Const
StatStr : StatusMap = ('Active', 'Passive', 'Waiting');
{компоненты StatStr:
StatStr[Active] = 'Active'
StatStr[Passive] = 'Passive'
StatStr[Waiting] = 'Waiting'}
Символьные массивы:
Упакованные константы со строковым типом (символьные массивы) могут быть определены и как одиночные символы, и как строки. Например, такое определение:
Const
Digits : Array [0..9] Of Char = ('0', '1', '2', '3', '4', '5','6', '7', '8', '9');
может быть выражено более коротко:
Const
Digits : Array [0..9] Of Char = '0123456789';
Нуль-основанные символьные массивы:
Нуль-основанный символьный массив — это такой массив, в котором индекс первого элемента равен нулю, а последнего — положительному ненулевому целому числу.
Array [0..X] Of Char;
Если вы включаете расширенный синтаксис (с помощью директивы компилятора {$X+}), то нуль-основанный символьный массив может быть инициализирован строкой, длина которой меньше, чем объявленная длина массива.
Const
FileName = Array [0..79] Of Char = 'TEST.PAS';
Если строка короче, чем длина массива, то оставшиеся символы устанавливаются равными NULL (0), и массив будет содержать строку с нулевым окончанием.
Константы — многомерные массивы:
Такие константы определяются, заключением констант каждой размерности в отдельные наборы круглых скобок, разделенные запятыми.
Type
Cube = Array[0..1, 0..1, 0..1] Of Integer;
Const
Array_Maze : Cube = (((0, 1), (2, 3)), ((4, 5), (6, 7)));