Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Massivi.doc
Скачиваний:
5
Добавлен:
26.08.2019
Размер:
86.53 Кб
Скачать

Массивы

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

Например, доступ к элементу x массива X=[x ] осуществляется 3 путем переменной X[3], а доступ к элементу y , находящемуся в строке i и столбце j массива Y=[y ], - через Y[I,J].

Если массив состоит из переменных с одним индексом, то он называется одномерным, с двумя индексами - двухмерным, с n индексами

- n мерным, а при n>2 - многомерным. Одномерные массивы обычно используются для представления векторов, а двухмерные - для работы с матрицами.

Описание типа массива и переменных этого типа имеет вид

TYPE <имя типа>=ARRAY[<тип индекса или типы индексов через запятую в случае двух или более индексов>] OF <тип элементов массива>;

VAR <имя массива или имена массивов через запятую>:<имя типа>; В качестве типа индекса может быть тип диапазон с любым

возможным базовым типом, кроме LONGINT, перечисляемый тип, логический, символьный, BYTE и SHORTINT. Тип элементов массива может быть любой.

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

VAR <имя массива или имена массивов через запятую>:ARRAY[<тип индекса или типы индексов через запятую>]OF <тип элементов массива>;

Пример описаний и использования переменных с индексами.

Const N1=4; N2=6;

Type CLASS =(K1,K2,K3,K4); VEC1=array[1..5] of integer;

Var V1:VEC1; V2:array[byte]of word;

MR:array[1..N1,1..N2] of real;

BC:array[boolean] of char;

CS:array[CLASS] of shortint;

Begin

V1[5]:=-700; V2[15]:=365; MR[3,1]:=3.7;

BC[false]:='A'; CS[K1]:=-100;

. . .

Так как тип элементов массива может быть любым, то он может быть, в частности, и другим массивом, например

Type MAS2=array[1..5]of array[-2..2]OF array[char]of integer;

Такую запись можно заменить более компактной.

Type MAS2=array[1..5,-2..2,char]of integer;

Размерность массива теоретически может быть любой, но она ограничена тем, что об ем оперативной памяти, занимаемой каждым массивом (а также данным другого структурированного типа) не может быть больше 65520 байт (максимального размера сегмента данных или стека) и, кроме того, общий об ем памяти, занимаемой всеми глобальными переменными программы не может превышать 64 K байт (64 килобайт, равных 65536 байт). Поэтому для конкретной переменной или типизированной константы следует выбирать среди допустимых для нее типов тот, при котором она занимает наименьший об ем памяти.

Элементы массива располагаются в памяти компьютера последовательно друг за другом. Элементы с меньшими значениями индексов хранятся в более низких адресах памяти. Многомерные массивы располагаются таким образом, что самый правый индекс массива возрастает самым первым. Например, для массива с описанием

VAR Z:ARRAY[1..2,1..2] OF REAL;

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

Z[1,1],Z[1,2],Z[2,1],Z[2,2].

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

TYPE VECT=ARRAY[1..5] OF INTEGER;

VAR D,E:VECT; F:VECT; G,H:ARRAY[1..5] OF INTEGER;

BEGIN

D:=E; F:=E; G:=H;

G:=E;

В отличие от операторов D:=E; и F:=E; и G:=H; оператор G:=E; недопустим.

Над массивами в целом (за исключением одномерных массивов символов array[<тип индекса>] of char) не определены операции отношения. Например, для массивов D и E нельзя записать

IF D=E then u:=1 else u:=0;

Сравнить два массива можно поэлементно, например

for i:=1 to 5 do if D[I]=E[I] then u:=1

else begin

u:=0; break

end;

Для осуществления действий над элементами массива используются переменные с индексами, которые могут применяться как простые переменные. Например, они могут находиться в выражениях в качестве операндов, использоваться в операторах (например, FOR, WHILE, REPEAT, READ, READLN, WRITE, WRITELN); им можно присваивать любые значения, соответствующие их типу.

Ввод значений элементов массива может осуществляться различными способами:

1) с клавиатуры или из файла с помощью READ и READLN;

2) с использованием типизированной константы-массива;

3) с помощью генератора псевдослучайных чисел, если элементы массива являются случайными числами.

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