Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие Алгоритмизация и программирование.doc
Скачиваний:
57
Добавлен:
11.03.2015
Размер:
796.67 Кб
Скачать

23. Типизованные константы в тp

TP позволяет инициализировать переменные при их описании. Описание с инициализацией переменных производится в разделе описаний констант:

Идентификатор имя переменной.

Переменные, инициализированные типизованными константами, имеют особенность по сравнению с обычными переменными: инициализация выполняется только при первом вхождении в блок, в котором они описаны. Если этот блок является процедурой или функцией, то при последующих обращениях к этому блоку повторная инициализация не выполняется. Локальные переменные, инициализированные типизованными константами, помещаются в сегмент данных, а не в стек.

Типизованная константа может быть: константой простого типа, константой-массивом, константой-строкой, константой-записью, константой-множеством, пустой ссылкой nil.

Типизованная константа простого или строкового типа представляет собой литерал или константное выражение. Константа-множество описывается обычным способом (см. главу 21). Например,

сonstn:integer=10;

c: char=’A’;

s: string[5]=’YES’;

f: real=1.3e-5;

m :set of 1..5=[1,3];

При описании типизованной константы структурированного типа необходимо задать значения всехее компонентов. Естественно, что компоненты таких констант не могут иметь файловый тип.

Значения элементов одномерного массива заключаются в круглые скобки и перечисляются через запятую. Например,

consta :array[1..3] of byte = (1,2,3);

Константа символьный массив может быть описана двумя способами: как константа-массив и как строковая константа. Например,

const digits1 : array[0..9] of char = (‘0’,’1’,’2’,’3’,’4’,’5’,’6’,’7’,’8’,’9’);

digits2 : array[0..9] of char = ‘0123456789’;

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

constb :array[1..2,1..3] of byte = ((1,2,3),(4,5,6));

(1,2,3) первая строка, (4,5,6)вторая строка матрицы.

Описание типизованной константы типа запись имеет вид

Обязательное условие: поля перечисляются в том же порядке, что и при описании типа. Например,

Type t_exam=record name: string[10];

marks: array[1..4] of 2..5

end;

Const exam: t_exam=( name: ’Иванов’; marks: (4, 3, 5, 4));

24. Множество

Описание типа множество:

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

Число элементов базового типа множества ограничено. Ограничение определяется реализацией языка. В ТР число элементов базового типа не должно превышать 256. Базовый тип является перечисляемым типом или поддиапазоном перечисляемого типа. Кроме того, объем памяти, занимаемой значением базового типа, один байт. Например, правильными описаниями являются: set of char, set of 10..100,setof‘a’..’z’. Описанияsetof200..300 иsetof10..10 недопустимы, так как в первом случае базовый тип не является однобайтовым, во второмперечисляемым.

Конструкция

определяет значение типа множество. При этом значения всех перечисленных выражений принадлежат одному типу. Порядок перечисления выражений и диапазонов произвольный. Более того, в списке могут быть выражения с одинаковыми значениями. Например, [5, 0, 3..10] числовое множество, [‘0’..‘9’]символьное множество, ['a','a','c'], ['c','a'] и ['a','c']равные символьные множества.