35. Структуры данных. Массивы.
Массивы (ARRAY)
Сущ-ет 2 способа описания массивов:
а) TYPE
имя типа = ARRAY [список индексных типов] OF тип;
VAR
Имя переменной: имя типа;
Список индексных типов - список, составленный из одного или нескольких (индексных) типов, разделенных запятыми. В кач-ве индексных типов в TURBO PASKAL-е можно использ-ть любые порядковые типы, кроме типа LONGINT и типа диапазон, где базовый тип- LONGINT.
Тип - это тип элементов массива. Все элементы массива должны быть одного и того же типа, при этом можно указывать любой тип TURBO PASKAL-я.
б) VAR
имя переменной: ARRAY [список индексных типов] OF тип;
Обычно в кач-ве индексного типа исп-ся тип диапазон, в кот. задаются границы изменения индексов, например:
VAR
A, B: ARRAY [1..10] OF REAL;
C: ARRAY [1..10, 1..20] OF REAL;
Размерность массива – количество элементов в массиве (количество индексов).
Как в нашем примере, размерность массивов А и В – 10, а у элемента С – 10 на 20.
TYPE
MAT = ARRAY [0..5] OF ARRAY [-2..2] OF ARRAY [CHAR] OF BYTE;
Обычно такая запись не применяется, а использ-ют такую:
TYPE
MAT = ARRAY [0..5, -2..2, CHAR] OF BYTE; (т.е. один массив вкладывается в другой).
Поскольку массивы широко применяются в математике, то максимальное кол-во задач программируют по массивам (на матрицы задачи).
Пр.: VAR
B, A: ARRAY [1..10, 1..20] OF REAL;
Элементы любого массива умещаются в памяти ЭВМ построчно, т.е.
А11, А12, … , А120
А21, А22, … , А220
………………….
А101, А102, … , А1020
Если 2 любых массива имеют одинаковый тип, то можно выполнить такое присваивание: А:=В.
Нельзя выполнять над массивами операции сравнения, т.е. Если А = В (IF A = B) – НЕЛЬЗЯ!!!.
Можно сравнивать только по-элементно (элементы массивов).
Пр.: Одномерный целочисленный массив, состоящий из n-элементов, где n-заданное натуральное число.
Произвести циклический сдвиг элементов данного массива на 1 элемент вправо.
А1 А2 А3 А4
А4 А1 А2 А3 (А4 B на место А1) A[I]:=A [I-1]
PROGRAM P1;
НАЧАЛО
CONST N=4;
VAR
Ввод А1, А2, … , АN
A: ARRAY [1..N] OF INTEGER;
I, B: INTEGER;
BEGIN
B = A [N]
FOR I:=1 TO N DO
READ (A[I]);
I = N, 2, -1
B:=A[N];
FOR I:=N DOWNTO 2 DO
A [I]:=A [I-1];
A [I] = A [I-1]
A [1] = B
A [1]:=B;
FOR I:=1 TO N DO
WRITELN (A[I]);
Вывод А1, А2, … , АN
END
КОНЕЦ
В языке программирования ТР данные подразделяются на след типы: простые(скалярные) и сложные.
Простые типы данных подразделяются на: стандартный (предопределенный) тип; тип, задаваемый пользователем (перечисляемый тип); тип диапазона (интервальный тип).
К стандартному типу относятся: вещественный тип, целочисленный тип, логический тип, символьный тип.
В Turbo Paskal-e используются след. сложные типы: массивы, строки, записи, множества, файлы, указатели, процедурные типы, объекты.
Любой из таких типов как массивы, строки, записи и множества характеризуются множественностью, образующих этот тип элементов, т.е. переменная или константа указанных типов всегда имеет несколько компонентов, при этом кажд. компонент в свою очередь также может принадлежать сложному типу, т.е. возможно вложение одного типа в другой.
В ТР-ле допускается произвольная глубина вложенности типов, но при этом суммарная длина люб. вложенности во внутреннем (двоичном) представлении не должна превышать 65 520 байт