Структурированный тип данных – это множество элементов данных (компонент) с одним именем. В отличие от данных скалярного типа, которые могут принимать одно значение, данные структурированного типа могут принимать множество значений одного типа (регулярный тип, например, массивы), либо разных типов (комбинированные типы, например, записи).
Возможность обработки структурированных типов данных является большим достоинством языка ТР и делает его универсальным языком программирования.
Регулярные типы данных. Массивы
Массив - это упорядоченное, ограниченное множество однотипных элементов, объединенных общим именем. Тип компонент (элементов) называется базовым и м.б. любым кроме файлового. Для обозначения элементов массива используется переменная с индексами.
Например: A[25], B[5, 8], X[i], Y[i, j], R[n+1].
Размер массива (длина) – число элементов массива.
Размерность массива – число индексов в массиве.
Индекс определяет положение элемента в массиве. В качестве индекса м.б. использовано выражение (индексное), переменная или константа (частный случай выражения). В качестве индексов м.б. любой порядковый тип кроме Longint. Тип индексов д.б. скалярным, упорядоченным и конечным. Чаще всего используются индексы интервального типа, при этом они м.б. отрицательными.
Все компоненты массива одинаково доступны и могут выбираться в произвольном порядке.
В программе массивы д.б. описаны одним из двух способов:
- С использованием раздела описания типов:
Type T = array[T1] of T2;
Var A, B, C :T;
где:
T - имя типа; {регулярный тип}
T1 - тип индекса;
T2 - тип компонент. {базовый тип}
Тип, определенный с помощью конструкции array . . of называется регулярным.
Например:
Type
vec_r = array[1. .n] of real;
vec1_i = array[1. .n] of integer;
vec1_l = array[False. .True] of Boolean;
vec1_S = array[‘A’1. . ‘Z’] of char;
Var
A, B :vec_r;
N, K :vec_i;
V, W :vec_l;
R, S :vec_s;
- Без использования раздела описания типов:
Var A, B, C : = array[T1] of T2;
Например:
Var
A, B : array[1. .n] of real;
N, K : array[1. .n] of integer;
V, W : array[False. .True] of Boolean;
R, S : array[‘A’1. . ‘Z’] of char;
Первый способ является более предпочтительным, хотя он и удлиняет размер описаний, но программа становится более ясной логически. Использование раздела Type свидетельствует о хорошем стиле программирования
К компонентам массива применимы операции, процедуры и функции, допустимые для данного базового типа.
Все действия с массивами выполняются в цикле, за исключением присваивания целиком элементов одного массива, другому.
Например: X:=Y.