Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Структурированные типы данных..doc
Скачиваний:
6
Добавлен:
05.09.2019
Размер:
98.82 Кб
Скачать

6.1. Массив

Тип-массив представляет собой фиксированное количество упорядоченных однотипных

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

type

<имя типа> = array[<тип индекса(индексов)>] of <тип компонент>;

Пример.

type

Arr = array[1..3] of Real; {тип—массив из 3 вещественных чисел}

Matrix = array[1..3, 1..2] of Integer; {тип - двумерный массив целых чисел, состоящий

из 3 строк и 2 столбцов}

Введя тип-массив, можно затем задать переменные или типизированные константы этого типа. Размерность массива может быть любой, компоненты массива могут быть любого, в том числе и структурированного, типа, индекс (индексы) может быть любого порядкового типа, кроме типа Longint.

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

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

соответствуют левому индексу, вложенные в них круглые скобки - следующему индексу

и т. д. Так, для введенных выше типов можно задать, например, следующие переменные и константы:

var

Ml, М2: Arr;

Matr: Matrix;

const

M3: Arr =(1, 2, 3);

Mat: Matrix = ((1, 2), (3, 4), (5, 6));

Последняя константа соответствует следующей структуре:

1 2

3 4

5 6

Примечание.

Тип-массив можно вводить непосредственно и при определении соответствующих переменных или типизированных констант.

Например:

var

Ml, M2: array [1..3] of Real;

Matr: array[1..3, 1..2] of Integer;

Здесь определены те же массивы, что и в предыдущем примере.

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

Доступ к компонентам массива осуществляется указанием имени массива, за которым в

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

M1[2], Matrix[X, Y], M2[Succ(I)] и т. д.

Одному массиву можно присвоить значение другого массива, но только идентичного типа. Так, если заданы следующие массивы:

var А, В: array[l..5] of Integer;

С: array [1. .5] of Integer;

то допустим следующий оператор:

A := В;

С другой стороны, оператор

С := А;

недопустим, т. к. массивы А и С - не идентичных типов.

Имеются некоторые отличия в работе с одномерными массивами символов (не путать с

величинами типа string - см. п. 6.2). Так, типизированным константам этого вида можно присвоить значение как обычным строковым константам, указав строку символов в апострофах, например

const

A: array[1..5] of Char='ааааа';

В: array[1..3] of Char='bbb';

Для таких массивов, как и для строк, можно использовать операции сравнения (даже если

они не идентичных типов и даже если имеют различный размер) и конкатенации (объединения) - см. п. 6.2. Их можно использовать в операторах вывода Write и WriteLn. Например,

для введенных выше массивов можно написать

if A > В then

WriteLn(A) else

WriteLn(B);