Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИНФОРМАТИКА_Паскаль.doc
Скачиваний:
7
Добавлен:
08.05.2019
Размер:
1.77 Mб
Скачать

10.2. Объявление массивов

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

ИМЯ ARRAY [тип индекса] OF тип элемента,

где ARRAY, OF - зарезервированные слова (массив, из).

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

TYPE

M1=ARRAY [1..100] OFREAL; {Массив из 100 вещественных чисел}

MM=ARRAY [1..10] OFARRAY [1..20] OFINTEGER; {Массив из 10 элементов, каждый из которых является массивом из 20 целых чисел}

VAR

VECTOR:M1;

MB,MC:MM;

MG:ARRAY [1..10, 1..20] OFREAL; {Прямоугольный массив вещественных чисел из 10 строк и 20 столбцов}

Число индексов в языке Pascal не ограничено. Необходимо отметить, что запись

V3:ARRAY [1..10] OFARRAY [1..20] OFREAL

изапись

V3:ARRAY [1..10,1..20] OF REAL

являются эквивалентными. По умолчанию элементам массива присваивается значение 0 или значение пустой строки в зависимости от типа элемента.

К любому элементу массива применимы те же операции, что и к переменной, тип которой совпадает с типом элемента массива (ввод, вывод, присваивание, сравнение и т.д.).

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

MAS1:=MAS2,

причем типы обоих массивов в этом случае должны быть эквивалентны (описаны одним и тем же идентификатором типа: VARMAS1,MAS2:array [1..5] ofSingle).

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

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

VAR MAS1: ARRAY[1.. 10] OF INTEGER;

I: INTEGER;

BEGIN

FOR I:=1 TO 10 DO

BEGIN

WRITE(‘MAS1[‘,I,’] = ‘);

READLN(MAS1[I]);

END.

Циклначинаетсяс I=1. Поэтому для элемента массива MAS1[1] после вывода на экран сообщения с номером элемента осуществляется ввод значения, которое присваивается 1-му элементу. Затем прибавляется к параметру единица и новое значение параметра I=2. Все повторяется для второго элемента массива.

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

Если массив двумерный, то перебор элементов должен осуществляться последовательно: выбор строки и перебор всех столбцов этой строки. Затем увеличение индекса строки на 1 и опять перебор всех индексов столбцов строки. Такое чередование индексов обеспечивают два вложенных цикла:

FORI:=1 TO 5 DO

FOR J:=1 TO 10 DO READLN(MAS2[I,J]);

В данном примере массив состоит из 5 строк и 10 столбцов, I – номер строки, J – номер столбца. Легко заметить, что на одно изменение индекса строки выполняется 10 изменений индекса столбца.

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