type
colors = (white, red, black); { ------- Правильные объявления: ----- }
const
CurrCol colors = red;
name String = 'Вирт Н.';
year Word =1989;
x Real = 0.1;
min Integer = 0;
max Integer =10;
days 1..31 = 1;
answer Char = ' Y'; {------ Неправильные объявления: ------ }
mass : array [min..max] of Real; {Нельзя использовать типизированные константы в качестве границ диапазона}
a,b,c : Byte = 0; {Нельзя использовать список идентификаторов}
var
NameF: String [22] = 'prog.pas'; {Нельзя объявлять типизированную константу в разделе переменных}
type
colors '= (white, red, black);
const
ColStr : array [colors] of String [5] =('white', 'red', 'blaсk');
vector : array [1..5] of Byte = (0,0,0,0,0); .
При объявлении массива символов можно использовать то обстоятельство, что все символьные массивы и строки в Турбо Паскале хранятся в упакованном формате, поэтому в качестве значения массива-константы типа CHAR допускается задание символьной строки соответствующей длины. Два следующих объявления идентичны:
const
digit : array [0..9] of Char =
('0', Ч','2','3','4','5','6', ' 7 ' , ' 8 ' , ' 9 ') ;
digchr: array [0..9] of Char =0123456789';
При объявлении многомерных констант-массивов множество констант, соответствующих каждому измерению, заключается в дополнительные круглые скобки и отделяется от соседнего множества запятыми. В результате образуются вложенные структуры множеств, причем глубина вложения должна соответствовать количеству изменений (размерности) массива. Самые внутренние множества констант связываются с изменением самого правого индекса массива.
Следующая программа выведет на экран три строки с монотонно увеличивающимися целыми числами:
var
i, j, k, 1 : Byte;
const
matr : array [1..3, 1..5] of Byte = ((0, 1, 2, 3,4),
(5, 6, 7, 8, 2) , (10,11,12,13,14)) ;
cube : array [0..1, 0..1, 0..2] of Integer =
(((0 ,1 ,2 ), (3 ,4 ,5 )), ((6 ,7 ,8 ), (9 ,10,11))) ;
mas4 : array [0..1, 0..1, 0..1, 0..1] of Word = (
(((0 ,1 ), (2 ,3 )) ,((4 ,5 ), (6 ,7 ))), (((8 ,9 ), (10,11)), ((12,13), (14,15))));
begin |
|
for i := |
1 to 3 do |
for j := |
1 to 5 do Write (matr[i,j] :3) ; |
writeln; |
|
for i := |
0 to 1 do |
for j := |
0 to 1 do |
for k := |
0 to 2 do Write (cube [i,j ,k] :3) ; |
writeln; |
|
for i := |
0 to 1 do |
for j := |
0 to 1 do |
for k := |
0 to 1 do |
for := |
0 to 1 do Write (mas4 [i,j ,k,l] :3) ; |
WriteLn |
|
end. |
Количество переменных в списке констант должно строго соответствовать объявленной длине массива по каждому измерению.
<идентификатор> : <тип> = (<сп.знач.полей>)
Здесь <идентификатор> - идентификатор константы;
<тип> - тип записи;
<сп.знач.полей> - список значений полей.
Список значений полей представляет собой список из последовательностей вида: имя поля, двоеточие и константа. Элементы списка отделяются друг от друга двоеточиями, например:
type
point = record
х, у : Real
end;
vect = array [0..1] of point;
month = (Jan, Feb, Mar, Apr, May, Jun,
Jly, Aug, Sep, Oct, Nov, Dec);
date = record
d : 1..31;
m : month;
у : 1900..1999
end;
const
origon :point = (x :0; у : -1) ;
line:vector = ((x:-3.1; у: 1.5) , (x: 5.9; у: 3.0)) ;
SomeDay: date = (d : 16; m : Mar; у : 1989);
Поля должны указываться в той последовательности, в какой они перечислены в объявлении типа. Если в записи используется хотя бы одно поле файлового типа, такую запись нельзя объявить типизированной константой. Для записей с вариантными полями указывается только один из возможных вариантов констант. Например:
type
forma = record
case Boolean of
true : (Birthplace: String [40]);
false : (Country : String [20] ; EntryPort : String [20] ;
EntryDate : array [1..3] of Word; count : Word)
end ;
const
Perconl : forma = (Country : 'Норвегия'; EntryPort :
'Мурманск'; EntryDate : (16, 3, 89); count : 12) ;
Percon2 : forma = (Birthplace : 'Москва');
type
days = set of 1. .31;
digc = set of ' 0 ' . . ' 9 ' ;
error = set of 1..24;
const
WorkDays : days = [1..5, 8.. 12, 15.. 19, 22.. 26, 29, 30];
EvenDigits: digc = ['0', '2', '4', '6', '8'];
ErrorFlag : error= [] ;
Константы - указатели
const
pr : Real= NIL;