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

Раздел 10. Структурные типы

10.1. Массивы

10.1.1. Задание массивов

Все описанные в предыдущих разделах типы являются скалярными, т.е. типами, состоящими из одного элемента данных.

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

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

Тип элементов массива называется базовым типом массива.

Для выделения отдельных элементов массива используются индексы (индексные выражения). Индекс задает правило вычисления номера нужного элемента массива.

Для указания определенного элемента массива используется формат (рисунок 10.1).

Рисунок 10.1 - Синтаксическая диаграмма указания элемента массива

Индексное выражение – это выражение скалярного перенумерованного типа. Количество индексных выражений определяется количеством измерений массива.

Одномерный массив А можно представить как вектор

A[1], A[2], A[3], ..., A[N],

а двумерный массив В – как матрицу

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

Задание типа массив имеет формат, который представляет рисунок 10.2.

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

Здесь <Тип> – это тип элементов массива (базовый тип). Он может быть задан как <Имя_типа> или <Задание_типа> (см. рисунок 6.10 из раздела 6).

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

Пример 10.1.

Использование типа диапазон в качестве <Типа_индекса>.

Type

TDiapazon = 1 .. 20;

{Явное задание типа. Одномерный массив из 20 элементов

вещественного типа:}

TVector = Array [Diapazon] Of Real;

{Явное задание типа. Двумерный массив из 46 строк и 20 столбцов,

содержащий элементы ограниченного типа:}

TMatritca = Array [–5 .. 40, Diapazon] Of 0 .. 100;

Var

I: TDiapazon;

A, B: TVector;

E, F: TMatritca;

{Неявное задание типа. Одномерный массив из 20 элементов

типа Char:}

C, D: Array [1 .. 20] Of Char;

{Неявное задание типа. Одномерный массив из 4 элементов

перечислимого типа:}

Mes: Array [1 .. 4] Of (Pn, Vt, Sr, Ch, Pt, Sb, Vs);

Пример 10.2.

Использование перечислимого типа в качестве <Типа_индекса>.

Type

TFam = (Ivanov, Petrov, Sidorov, Andreev, Sergeev);

{Явное задание типа. Одномерный массив из 5 элементов

типа диапазон:}

TVozrast = Array [Fam] Of 18 .. 70;

{Или так:

Vozrast = Array[(Ivanov, Petrov, Sidorov, Andreev, Sergeev)] Of 18 .. 70;}

Var

Voz: TVozrast;

F: TFam;

{Неявное задание типа. Одномерный массив из 5 элементов

типа диапазон:}

TGodrozd: Array [Fam] Of 1920 .. 1980;

Переменную F можно использовать в качестве индекса для выделения отдельных элементов массивов Voz, Godrozd: