Программирование в среде Турбо Паскаль (Поляков, Круглов) - страница 54

- 83 -

| CONST

| R : Real = 1.1523;

| i : Integer = -10;

| S : String[10] = 'Привет!';

| P1 : Pointer = nil;

| P2 : Pointer = Ptr($A000:$1000);

| Done : Boolean = True;

Отличие от простых констант внешне небольшое: просто вклинилось описание типа. Но суть изменилась в корне. Можно использовать выражения, содержащие операции, ряд функций и простые константы (как и ранее). Но типизированные константы уже не могут принимать участие в выражениях для других констант; они ведь не столько константы, сколько переменные.

Стартовые значения сложных переменных задаются по-разному для различных типов. Массивы задаются перечислением их элементов в круглых скобках. Если массив многомерный (массив массивов), то перечисляются элементы-массивы, состоящие из элементов-скаляров. Выглядит это следующим образом:


| TYPE

| Dim1x10 : Array [1..10] of Real;

| Dim4x3x2 : Array [1..4, 1..3, 1..2] of Word;

{** это то же самое, что и задание: **}

{**Array [1..4] of Array [1..3] of Array [1..2] of Word **}

| CONST

| D1x10 : Dim1x10 =

| (0, 2.1, 3, 4.5, 6, 7.70, 8., 9.0, 10, 3456.6);

| D4x3x2 : Dim4x3x2 = (((1,2), (11,22), (111,222)),

| ((3,4), (33,44), (333,444)),

| ((5,6), (55,66), (555,666)),

| ((7,8), (77,88), (777,888)));

Здесь самым глубоким по уровню вложенности в задании переменной D4x3x2 (многомерного массива) оказывается самый дальний в описании типа массив — двухэлементный массив значений Word. Более высокий уровень — это уже массив из трех двухэлементных массивов, а вся структура переменной D4x3x2 состоит из четырех наборов по три массива из двух чисел.

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

- 84 -

| TYPE

| RecType = RECORD { тип запись }

| x, y : LongInt;

| ch : Char;

| dim : Array [1..3] of Byte

| END;

| CONST

| Rec : RecType = ( x : 123654; у : -898; ch : 'A';

| dim : (10, 20, 30));

Поле от своего значения должно отделяться знаком «:». Порядок следования полей в задании значения обязан соответствовать порядку их описания в типе, и поля должны разделяться не запятой, а точкой с запятой «;», как это делается в описании типа «запись».

В принципе, можно конструировать тип прямо в описании переменной, например:

| CONST

| XSet : Set Of Char = [ 'а', 'б', 'в' ];

но предпочтительнее использовать введенное ранее имя этого типа.

При задании структур типа Array of Char, базирующихся на символах, можно не перечислять символы, а слить их в одну строку соответствующей длины:

| CONST

| CharArray : Array [1..5] of Char='abcde'; {пять символов}