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

Многомерные массивы

Массивы, у которых указан один индексный тип и типом компонент которых не является массив, являются одномерными. Иногда одномерные массивы называют векторами.

Пример: одномерный массив (вектор)

type

TVector = array [ 1..10 ] of real;

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

Пример: многомерные массивы

type

TArray1 = array [ 1..10 ] of real; {одномерный массив}

TArray2 = array [ -3..3 ] of TArray1;

{массив массивов – двухмерный массив}

TArray2b = array [ -3..3 ] of array [ 1..10 ] of real;

{массив массивовдвухмерный массив}

TArray3 = array [ 1..10, boolean, ‘A’..’Z’ ] of integer;

{трехмерный массив}

Частным случаем многомерных массивов является двумерный массив – матрица, таблица. В этом случае обычно первый индекс определяет номер строки, второй – номер столбца.

Массив может быть проиндексирован по каждой размерности всеми значениями соответствующего индексного типа, поэтому число элементов равно произведению числа значений в каждом индексном типе. Число размерностей не ограничено.

Пример: число элементов в массивах

type

TArray1 = array [ 1..10 ] of real; {10 элементов}

TArray2 = array [ -3..3 ] of TArray1; {7*10 = 70 элементов}

TArray2b = array [ -3..3 ] of array [ 1..10 ] of real; {7*10 = 70 элементов }

TArray3 = array [ 1..10, boolean, ‘A’..’Z’ ] of integer;

{10*2*26 = 520 элементов}

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

Пример: обращение к элементам многомерных массивов

type

TMatrix = array [ -3..3 ] of array [ 1..10 ] of real;

var

M: TMatrix;

M[1][2] := 3;

M[-2, 9] := 6;

M[i-2, i+6] := M[i][i];

Допустимые операции с массивами

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

Пример:

A:=B;

X:=Y;

В случае массивов типы переменных являются идентичными, если:

  • тип описан в разделе описания типов;

Пример:

type

Cube = array[0..1,0..1,0..1] of integer;

var

A, B: Cube;

  • переменные записаны в разделе var через запятую.

Пример:

var

X, Y: array[0..1,0..1,0..1] of integer;

Пример: типы переменных A и X не идентичны.

Пример: неидентичные типы:

type

MyArray1 = array[1..5] of byte;

MyArray2 = array[1..5] of byte;

Пример: неидентичные типы переменных:

var

K: array[1..5] of byte;

N: array[1..5] of byte;

Вводятся и выводятся массивы покомпонентно. Для ввода или вывода массива в список ввода или вывода помещается переменная с индексом, а операторы ввода или вывода выполняются в цикле.

Пример: вывод вектора на экран

const

N=10;

type

TVector = array[1..N] of integer;

var

X: TVector;

i: integer;

for i:=1 to N do writeln(X[i]);

Массивы нельзя сравнивать (можно покомпонентно).