Алгоритмы преобразования одномерных массивов, страница 2

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

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

type < имя типа > = array [<диапазон индексов>] of <тип элементов>

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

Одномерный массив можно задать (объявить) несколькими способами:

1.       C помощью служебного слова type описывается тип массива, а затем с помощью var вводится переменная этого типа:

type <тип массива> = array [тип индекса] of <тип компонент>

var <переменная>: <тип массива>

2.       С помощью слова var сразу описывается переменная типа массив:

var <переменная>: array [тип индекса] of <тип компонент>

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

var

A, BB : array [1..40] of real;

C : array ['A'..'Z'] of integer;

D : array [-20..20] of word;

E : array [1..40] of real;

Теперь переменные A, BB и E представляют собой массивы из сорока вещественных чисел; массив C имеет индексы символьного типа и целочисленные элементы; массив D может хранить в себе 41 число типа word.

Основное отличие элемента массива от простой переменной состоит в том, что для элемента массива в квадратных скобках может стоять не только соответствующее значение индекса, но и выражение, приводящее к значению индексного типа. То есть реализуется косвенная адресация: BB[15] - прямая адресация;

BB[m] - косвенная адресация через переменную m, значение которой будет использовано в качестве индекса элемента массива BB.

Чтобы определить позицию элемента в двумерном массиве, необходимо задать два индекса. Каждый двумерный массив – матрица (прямоугольная таблица, набор векторов). Исходя из этого, удобно описывать двумерные массивы путем указания границ изменения индексов (номеров) строк и столбцов.

Например, таблица символов a × b, где a – число строк и b – число столбцов, может быть описана:

var tab : array [1..a, 1..b] of char;

Общая форма записи:

var <имя> : array [тип индекса строки, тип индекса столбца]

of <тип компонент>;

Но двумерный массив можно интерпретировать как вектор-столбец, каждый элемент которого является одномерным массивом (вектор-строка). Такой подход к определению двумерного массива влечет его описание с помощью двух строк, где первая содержит описание строки, а вторая – описание столбца:

type

line = array [1..b] of char;

stolb = array [1..a] of line;

var tab : stolb.

Здесь tab [i] – переменная типа line, а tab [i][j] – переменная типа char.

Описание двумерного массива:

Способ 1. В разделе описания переменных.

Имя Массива : array [Верх. Гр.1..Ниж. Гр.1, Верх. Гр.2.. Ниж. Гр.2] of тип элементов;

Способ 2. В разделе описания типов.

massive: array [Верх. Гр.1.. Ниж. Гр.1, Верх. Гр.2.. Ниж. Гр.2] of тип элементов;

Способ 3. В разделе описания констант.

const

massive: array [1..3,1..3] of real = ((1.2,2.4,0.4),(0.045,-0.47,0.003),(1.24,1,-7.4));

Таким образом, такой структурированный тип данных, как массив, позволяет при необходимости обращаться не к каждому элементу множества, а ко всему множеству сразу. Но это возможно при одном условии – это множество должно быть однородным. При соблюдении этого условия, применение массивов значительно упрощает действия над множествами однотипных данных путём задания циклов. Можно так же выполнять действия с каждым элементом массива по отдельности, например для редактирования значений.