Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЭМЛ. теория алгоритмов.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
307.71 Кб
Скачать

Массивы

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

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

Переменные, представляющие компоненты массивов, называются переменными с индексами. Индекс (порядковый номер элемента) записывается в квадратных скобках после имени массива. Например, A[7] — седьмой элемент массива А; D[6] — шестой элемент массива D. Индекс в обозначении компонент массивов может быть константой, переменной или выражением порядкового типа.

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

Массив описывается так:

имя_массива: Array [начальное_значение_индекса .. конечное_значение_индекса] Of базовый_тип;

Например:

Var Mass : Array [1..5] Of Real;

    R : Array [1..34] Of Char;

Здесь описываются массивы c именем Mass, состоящий из 5 элементов и символьный массив с именем R, состоящий из 34 элементов.

Массивы бывают одномерные и многомерные. Из многомерных наиболее часто приходится иметь дело с двумерными. Двумерные массивы хранятся в памяти ПК по строкам. Двумерный массив можно представить как матрицу элементов. Описание такого массива выглядит так:

Type

Matrix = array [1..20, 1..10] of Real;

Var

X, Y: Matrix;

Z: array [1..10, 1..10] of Integer;

Массивы X и Y имеют двадцать строк и десять столбцов. Массив Z представляет собой квадратную матрицу размером 10X10.

Для доступа к элементам массива необходимо указать идентификатор массива с одним или несколькими индексами в скобках (в зависимости от размерности массива). Конкретный элемент массива обозначается с помощью имени переменной массива, за которой указывается индекс, определяющий данный элемент.

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

Если тип элемента в типе массив также является массивом, то результат можно рассматривать как массив массивов или как один многомерный массив.

Например, array[boolean] of array[1..100] of array[Size] of Real интерпретируется компилятором точно так же, как массив: array[boolean,1..10,Size] of Real.

Массив вида: array[0..X] of Char, где X - положительное целое число, называется массивом с нулевой базой. Массивы с нулевой базой используются для хранения строк с завершающим нулем, и, когда разрешен расширенный синтаксис (с помощью директивы компилятора {$X+}), символьный массив с нулевой базой совместим со значением типа PChar.

Для работы со всем массивом используется идентификатор массива без указания индекса. К массивам приемлемы только операции отношения "=", "<>". Массивы, являющиеся операндами, должны соответствовать друг другу по структуре, т.е. быть одного типа (одинаковые количество и типы элементов). Таким образом, для двух однотипных массивов

X, Y:array [1..30] of Integer;

приемлемы следующие выражения:

  • - X=Y (равно TRUE, если значения каждого элемента массива X равны соответствующим элементам массива Y);

  • - X<>Y (TRUE, если хотя бы одно значение элемента массива X неравно значению соответствующего элемента массива Y).

Инициализация элементов массива

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

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

Инициализация массивов (присвоение начальных значений всем компонентам массивов) осуществляется двумя способами. Первый способ - с использованием типизированных констант, например:

type

Mass= Array[1..10] of Real;

const

K: Mass= ( 0, 2.1, 4, 5.65, 6.1, 6.7, 7.2, 8, 8.7, 9.3 );

При инициализации двумерных массивов значения компонент каждого из входящих в него одномерных массивов записывается в скобках:

type

Mass3x2= Array[1..3,1..2] of Integer;

const

L: Mass3x2= ( (1, 2)(3, 4)(5, 6) );

Второй способ инициализации - использование разновидности процедуры FillChar:

FillChar( var V; NBytes: Word; B: {Byte|Char} );

Эта процедура заполняет участок памяти однобайтовым значением. Например, для обнуления массива A[1..10] of Real можно записать:

FillChar(A, 40, 0); или FillChar(A, SizeOf(A), 0);

Пример. Ввод элементов двумерного массива

B:array [1..20,1..20] of Real.

For i:=1 to 20 do

For i:=1 to 20 do

begin

Write('Введите B[', i,']');

Read(B[i])

end;