Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Прогр_пас_3.doc
Скачиваний:
111
Добавлен:
04.11.2018
Размер:
13.31 Mб
Скачать

2.5. Производные типы

2.5.1 Перечислимые типы

Перечислимый тип - нестандартный скалярный тип. Он определяется набором идентификаторов, перечисляемых через запятую в круглых скобках. Каждый идентификатор - допустимое значение данного типа. Порядок перечисления идентификаторов существенен. Первому идентификатору присваивается номер 0, второму - номер 1 и т.д. Функция Ord от значения перечислимого типа дает порядковый номер значения. К переменным перечислимого типа применимы также функции Pred и Succ, описанные ранее. Переменная перечислимого типа может быть параметром параметрического цикла.

Пример задания перечислимого типа:

Type week = (sun, mon, tus, wen, the, fr, sat);

Var a : week;

2.5.2. Тип - диапазон

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

Type num = 5 .. 15;

Использование переменных такого типа в качестве параметра цикла повышает надежность программ, т.к. значение этих переменных не может выйти за заданные границы.

2.5.3. Регулярные типы (массивы)

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

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

Для задания массива надо задать базовый тип и тип индекса. Тип индекса обязательно должен быть перечислимым ограниченным типом, как правило, это диапазон целых чисел.

Регулярный тип задается конструкцией:

array[ <тип индекса>] of <тип компонентов>;

Например: Type gr = 1 .. 100 ;

vek = array[ gr ] of real;

st = array[ 1 .. 50 ] of integer;

Var x : vek;

y : st;

В этом примере переменная x типа vek состоит из 100 вещественных чисел, а переменная y типа st состоит из 50 целых чисел.

Чтобы обратиться к элементу массива, надо написать имя массива и за ним в квадратных скобках индекс. Например: x[10], x[ i ], x[ i+k ].

Рассмотрим пример программы с использованием массива.

Пусть задан x - массив из n чисел. Надо найти максимальное значение в массиве.

Наиболее простой метод решения этой задачи состоит в следующем. Введем в рассмотрение некоторую переменную Xmax. В ней будет храниться максимальное из рассмотренных значений элементов массива. Сравнивая это значение со значением следующего элемента массива, заменим его на элемент массива, если он больше Xmax. Проделав это для всех элементов массива, получим искомое максимальное значение. Естественно перед началом процесса сравнений необходимо переменной Xmax присвоить значение первого элемента массива.

Разработаем блок-схему алгоритма и напишем программу. Для этого введем вспомогательную переменную целого ограниченного типа i, в которой будет содержаться номер рассматриваемого элемента массива.

Рис. 11

В представленном на рис. 11 алгоритме ввод массива показан одним блоком, в то время как в программе для ввода массива Х построен цикл.

Program MAX;

Const n = 50;

Type vekt = array [ 1 .. n ]of real;

Var i : 1 .. n;

x : vekt;

Xmax : real;

Begin

{ввод массива x}

Writeln(‘введите массив x’);

For i := 1 to n Do

Read( x[ i ] );

Xmax := x[ 1 ];

For I :=2 to n Do

If x[ i ] > Xmax Then Xmax := x[ I ];

Writeln(’ Xmax = ‘, Xmax)

End.