Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
теория.pdf
Скачиваний:
465
Добавлен:
11.05.2015
Размер:
1.15 Mб
Скачать

A[1,1] A[1,2]

A[2,1] A[2,2]

Расположение данного массива в памяти иллюстрирует рисунок 10.3.

A[1,1] A[1,2] A[2,1] A[2,2]

Слово (2 байта) – для типа Integer.

Рисунок 10.3 – Расположение двумерного массива в памяти

10.1.2. Действия над элементами массивов

Элементы массива называются индексированными переменными. Для обращения к конкретному элементу массива необходимо указывать имя массива и индексы элемента в квадратных скобках.

Элементы массива могут использоваться в выражениях аналогично простым переменным и вместе с простыми переменными. Например,

Sin (X [I + 5] ) * X [I] + Y.

Здесь Y – простая переменная, X [I + 5], X [I] – элементы массива X. Инициализация массива – это присвоение всем элементам массива

исходного значения.

Пример 10.7.

Инициализация двумерного массива.

Type

Mas = Array [1 .. 10, 1 .. 20] Of Integer; Var

J, I: Integer; Mas1, Mas2: Mas;

----------------------------------

{Инициализация: установка начального значения, равного 0}

For I := 1 To 10 Do For J := 1 To 20 Do

179

Mas1[I, J] := 0;

Пример 10.8.

Простейший ввод-вывод элементов массива (объявления – в соответствии с примером 10.7).

----------------------------------

{Ввод исходных значений в массив}

For I := 1 To 10 Do For J := 1 To 20 Do

Read (Mas1[I, J]);

{Вывод значений элементов массива}

For I := 1 To 10 Do For J := 1 To 20 Do

Writeln (Mas1[I, J]);

Ввод-вывод всех элементов массива как одной полной переменной в Паскале не предусмотрен.

Пример 10.9.

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

так:

For I := 1 To 10 Do

For J := 1 To 20 Do

Mas2 [I, J] := Mas1 [I, J];

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

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

180

10.1.3. Действия над массивами

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

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

Например,

В := А;

Здесь А и В – массивы одного и того же типа.

К этому моменту массив А уже должен быть определен – всем его элементам должны быть присвоены значения.

Это же касается и подмассивов. Например, если А и В – двумерные массивы одного типа, то запись

B[I] := A[I];

означает, что I-ой строке массива В будет присвоено значение I-ой строки массива А.

10.1.4. Типизованные константы типа массив

Для инициализации массива в языке Паскаль могут быть использованы типизованные константы типа массив.

Синтаксис константы-массив представляет рисунок 10.4.

( <Типизованная_константа> )

,

Рисунок 10.4 – Синтаксическая диаграмма задания типа массив

Типизованные константы-массив объявляются в разделе констант.

181

Пример 10.10.

Объявление одномерной константы-массив.

Type

Mas = Array [1..10] Of Integer;

Const

{Для присваивания типа типизованной константе-массив используется имя типа}

M: Mas = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

{Для присваивания типа типизованной константе-массив используется задание типа}

Simv: Array [1..5] Of Char = (‘A’, ‘B’, ‘C’, ‘D’, ‘E’);

{или (эквивалентная форма записи):

Simv: Array [1..5] Of Char = (‘ABCDE’);}

В данном примере элементам М[1], M[2], ..., M[10] константы-массив М присваиваются значения 1, 2, ..., 10 соответственно. Аналогично элементам Simv[1], Simv[2], ..., Simv[10] константы-массив Simv присваиваются значения

‘A’, ‘B’, ‘C’, ‘D’, ‘E’.

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

Array [1..M, 1..N, 1..K] Of <Тип>

с учетом полной формы задания массивов эквивалентно объявлению

Array [1..M, 1..N] Of Array [1..K] Of <Тип>

или

Array [1..M] Of Array [1.. N] Of Array [1..K] Of <Тип>

Многомерный массив фактически состоит из массивов меньшей мерности.

Отсюда следует, что при задании многомерной константы-массив в качестве <Типизованной_константы> (см. рисунок 10.4) следует использовать константу-массив на единицу меньшей размерности, чем текущая константамассив. Массив каждой размерности заключается в круглые скобки.

182

Пример 10.11.

Объявление многомерных констант-массивов.

Type

Mas3 = Array [1..2, 1..2, 1..2] Of Integer;

Const

M3: Mas3 = (((0,1), (2,3)), ((4,5), (6,7)));

Массиву М3 будут присвоены следующие начальные значения:

M3[1,1,1]

= 0

M3[1,2,1] = 2

M3[2,1,1] = 4

M3[2,2,1] = 6

M3[1,1,2]

=1

M3[1,2,2] = 3

M3[2,1,2] = 5

M3[2,2,2] = 7

Значения присваиваются в порядке размещения элементов массива в памяти машины. Наиболее быстро изменяется последний индекс.

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

С помощью структурной константы-массив может производиться инициализация массива.

Пример 10.12.

Инициализация массива с помощью структурной константы-массив (применительно к предыдущим примерам).

------------------

Var

M1: Mas;

MM: Mas3;

-----------------

Begin

M1 := M;

MM := M3;

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

183

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]