- •1. Общая структура программ в тп 7.0
- •2. Раздел объявлений и соглашений
- •3. Раздел текстов процедур и функций
- •4. Заголовок программы
- •Операторы языка Pascal
- •1. Составной и пустой операторы
- •2. Операторы ветвлений
- •3. Операторы повторений
- •Простые и структурные типы данных
- •1. Перечисляемый и ограниченный типы
- •2. Символьные строки
- •3. Множества
- •4. Записи
- •5. Запись с вариантами
- •6 Совместимость и преобразования типов
- •7 Типизированные константы
- •Процедуры и функции
- •1. Блочная структура программ
- •2. Общая структура подпрограммы
- •3. Области видимости объектов
- •4. Механизм передачи параметров
- •5. Предварительные и внешние описания подпрограмм
- •6. Специальные случаи
- •7. Рекурсия и побочный эффект
- •8. Распределение памяти под данные
- •9. Процедурные типы
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;