Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BorlandPascal.doc
Скачиваний:
54
Добавлен:
17.03.2015
Размер:
2.83 Mб
Скачать

Структурные типы

Структурный тип, характеризуемый методом структурирования и

типами своих компонентов, имеет более одного значения. Если тип

компонента является структурным, то получаемый в результате

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

Структурный тип может иметь неограниченные уровни структурирова-

ния.

----------------

структурный --T----------------T-->¦ тип массив +----->

тип ¦ --------- ^ ¦ L---------------- ^

L->¦ packed +-- ¦ ---------------- ¦

L--------- +-->¦ множественный +--+

¦ ¦ тип ¦ ¦

¦ L---------------- ¦

¦ ---------------- ¦

+-->¦ файловый тип +--+

¦ L---------------- ¦

¦ ---------------- ¦

+-->¦ тип "запись" +--+

¦ L---------------- ¦

¦ ---------------- ¦

L-->¦ объектный тип +---

L----------------

Слово packed (упакованный) в описании структурного типа тре-

бует от компилятора уплотнить хранимые данные, даже за счет

уменьшения скорости доступа к компоненту в переменной этого типа.

Слово packed не имеет никакого действия в Borland Pascal, пос-

кольку упаковка выполняется здесь автоматически всюду, где это

возможно.

Типы массив

Массивы содержат фиксированное число элементов одного типа,

так называемого типа элемента. На приводимой ниже синтаксической

диаграмме тип элемента следует за словом of.

-------- ---- -------- ---- ----- ------

тип -->¦ array +->¦ [ +--->¦ тип +-T->¦ ] +->¦ of +->¦ тип +>

массив L-------- L---- ^ ¦индекса¦ ¦ L---- L----- L------

¦ L-------- ¦

¦ ---- ¦

L----+ , ¦<---

L----

тип -----------------

индекса --->¦ порядковый тип +--->

L-----------------

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

указывается число элементов. Допустимыми индексными типами явля-

ются все порядковые типы, за исключением длинного целого и подди-

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

каждой размерности всеми значениями соответствующего индексного

типа; число элементов поэтому равно числу значений в каждом ин-

дексном типе. Число размерностей не ограничено.

Приведем пример типа массив:

array[1..100] of Real

Если тип элемента в типе массив также является массивом, то

результат можно рассматривать как массив массивов или как один

многомерный массив. Например,

array[boolean] of array[1..100] of array[Size] of Real

интерпретируется компилятором точно так же, как массив:

array[boolean,1..10,Size] of Real

Кроме того, можно записать выражение:

packed array[1..10] of packed array[1..8] of Boolean

как

packed array[1..10,1..8] of Boolean

Для доступа к элементам массива необходимо указать идентифи-

катор массива с одним или несколькими индексами в скобках (см.

раздел "Массивы, строки и индексы").

Тип массив, имеющий вид:

packed array[M..N] of Char

где M меньше N, называется упакованным строковым типом (слово

packed можно опустить, поскольку оно не оказывает действия в

Borland Pascal). Упакованный строковый тип имеет некоторые свойс-

тва, не характерные для других типов массив (см. раздел "Тождест-

венные и совместимые типы" далее в этой главе).

Массив вида:

array[0..X] of Char

где X - положительное целое число, называется массивом с нулевой

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

завершающим нулем, и, когда разрешен расширенный синтаксис (с по-

мощью директивы компилятора {$X+}), символьный массив с нулевой

базой совместим со значением типа PChar. Полностью эта тема об-

суждается в Главе 18 "Использование строк с завершающим нулем".

Параметр, описанный с помощью синтаксиса array of T, называ-

ется открытым строковым параметром. Открытые строковые параметры

позволяют передавать одной и той же процедуре или функции строко-

вые переменные изменяющегося размера.

Примечание: Открытые строковые параметры описываются в

Главе 9.

Соседние файлы в предмете Программирование на Pascal