Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика - лекции.doc
Скачиваний:
18
Добавлен:
07.11.2018
Размер:
512.51 Кб
Скачать

Структурированные типы

Любой из структурированных типов (а в Турбо Паскале их четыре: массивы, записи, множества и файлы) характеризуется множественностью образующих этот тип элементов, т.е. переменная или константа структурированного типа всегда имеет несколько компонентов. Каждый компонент, в свою очередь, может принадлежать структурированному типу, что позволяет говорить о возможной вложенности типов. В Турбо Паскале допускается произвольная глубина вложенности типов, однако суммарная длина любого из них во внутреннем представлении не должна превышать 65520 байт(64К).

Массивы

Отличительная особенность массивов заключается в том, что все их компоненты суть данные одного типа (возможно, структурированного). Эти компоненты можно легко упорядочить и обеспечить доступ к любому из них простым указанием его порядкового номера, например:

type

digit = array [0..9] of Char;

var

d : digit;

i : Integer;

begin

d[1] := ‘A’;

d[i] := ‘B’;

d[i+1] := ‘C’;

end.

Описание типа массива задается следующим образом:

имя типа = array [диапазон индексов] of тип компонент;

В качестве индексных типов в Турбо Паскале можно использовать любые порядковые типы, кроме LONGINT u типов-диапазонов с базовым типом LONGINT.

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

var

a,b : array [1..10] of Real;

m1 : array [-10..10] of LongInt;

m2 : array [‘A’..’Z’] of Word;

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

tуре

mat = array [0..5] of array [-2..2] of Byte;

Такую запись можно заменить более компактной:

tyре

mat = array [0..5,-2..2] of Byte;

Глубина вложенности структурированных типов вообще, а следовательно, и массивов - произвольная, поэтому количество элементов в списке индексных типов (размерность массива) не ограничено, однако суммарная длина внутреннего представления любого массива, как уже говорилось, не может быть больше 65520 байт.

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

var

а : array [1..2,1..2] of Byte ;

begin

a[1,1] := 1;

а[2,1] := 2;

а[1,2] := 3;

а[2,2] := 4;

end.

то в памяти последовательно друг за другом будут расположены байты со значениями 1, 3, 2, 4 .

В Турбо Паскале можно одним оператором присваивания передать все элементы одного массива другому массиву того же типа, например:

var

a,b : array [1..5] of Single;

begin

a := b;

end.

После этого присваивания все пять элементов массива А получат те же значения, что и в массиве В.

Однако над массивами не определены операции отношения. Нельзя, например, записать

if а = b then ...

Сравнить два массива можно поэлементно, например:

var

a,b : array [1..5] of Single;

eq : Boolean;

i : Byte;

begin

eq := True;

for i := 1 to 5 do

if a[i] <> b[i] then eq := False;