Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
паскаль.doc
Скачиваний:
7
Добавлен:
25.09.2019
Размер:
222.21 Кб
Скачать

7 Типизированные константы

Описываются в разделе констант: <идентификатор> : <тип> = < значение > В ходе выполнения программы можно присваивать другие значения. При повторном входе в блок (процедуру или функцию), в котором объявлена типизированная константа, переинициализации не происходит и она сохраняет то значение, которое имела при выходе из блока. Могут быть любого типа, кроме файлов. Нельзя так же объявить типизированную константу-запись, если хотя бы одно её поле файлового типа. Нельзя использовать в качестве значения при объявлении других констант или границ типа-диапазона.

Примеры: 1. Типизированные константы простых типов и типа String: Type Colors = (White, Red, Black); Const {Правильные объявления} Cyrrcol: Colrs = Red; Name: String = 'Ку-Ку'; Year: Word = 1989; X: Real = 0.1; Min: Integer = 0; Max: Integer = 10; Days: 1..31 = 1; Answer: Char = 'Y';   {Неправильные объявления} Mars: Arrray [Min..Max] Of Real; A,B,C: Byte = 0; X: Real = Pi;   Var Namef: String [22] = 'Prog.Pas';

2. Типизированные константы-массивы В качестве начального значения используется список констант, отделённых друг от друга запятыми, список заключается в круглые скобки: Type  Colors = (White, Red, Black); Const  Colstr: Arrray [Colors] Of String [5] = ('White', 'Red', 'Black');  Vector: Array [1..5] Of Byte = (0, 0, 0, 0, 0);

При объявлении массива символов можно использовать то обстоятельство, что все символьные массивы и строки в Турбо- Паскале хранятся в упакованном формате,.поэтому в качестве значения массива-константы типа Char допускается указывать символьную строку: Const Digit: Array [0..9] Of Char = ('0','1','2','3','4','5','6','7','8','9'); Digchr: Aray [0..9] Of Char = ('0123456789');

При объявлении многомерных - множество констант, соответствующее каждому измерению заключается в дополнительные круглые скобки и отделяется от соседей множества запятыми.

Множество констант с максимальной глубиной вложения связывается с изменением самого правого индекса массива.

Пример - вывести на экран три строки с монотонно увеличивающимися целыми числами:

Var   I, J, K, L: Integer; Const   Matr: Array [1..3, 1..5] Of Byte = ((0, 1, 2, 3, 4), (5, 6, 7, 8, 9), (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   {Циклы и Writeln} End.

Количество переменных в списке констант должно строго соответствовать объявленной длине массива по каждому измерению.

3. Типизированные константы-записи. <идентификатор>:<тип> = (<список значений полей>) <тип> - предварительно объявленный тип записи. <список значений полей > - список из последовательностей следующего вида: имя поля, двоеточие и константа; элементы списка отделятся друг от друга точкой с запятой.

Пример: Type  Point = Record     X,Y: Real;   End;  Vect = Array [0..1] Of Point;  Month = (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec);  Date = Record     D: 1..31;     M: Month;     Y: 1900..1999;  End; Const   Orign: Point = (X: 0; Y: -1);   Line: Vector = ((X: -3.1; Y: 1.5), (X: 5.9; Y: 3.0));   Someday: Date = (D: 16; M: Mar; Y: 1989);

Для записей с вариантными полями указывается только один из возможных вариантов констант:

Type   Forma = Record     Case Boolean Of     True:     (Place: String [40]);     False:     (Country: String [20];     Port: String [20];     Date: Array[1..3] Of Word;     Count: Word)   End; Const   Con1: Forma = (Country: 'Россия';   Port: 'Москва';   Date: (16,3,89);   Count: 10);   Con2: Forma = (Place: 'Петрозаводск');

4. Типизированные константы множества. Значение типизированной константы множества задаётся в виде правильного конструктора множества:

Type   Days = Set Of 1..31;   Dige = Set Of '0'..'9';   Error = Set Of 1..24; Const   Workdays: Days = [1..5, 8..12, 15..19, 22..26, 29, 30];   Evendigits: Dige = ['0', '2', '4', '6', '8'];   Errorflag: Error = [ ];

5. Типизированные константы указатели. Единственным значением типизированной константы указателя может быть только Nil: Const Pr: ^Real = Nil; P: POINTER = Nil;