Простой тип - это тип, который может представлять только одно значение. Кроме стандартных скалярных типов в ТР к простым типам относятся также переменные типы: перечисляемый и диапазон.
Интервальный тип данных
Интервальный (ограниченный, диапазон) тип данных, представляет собой диапазон значений любого порядкового типа (любого скалярного кроме вещественного типа) который является базовым.
Описание интервального типа задается двумя константами, представляющими нижнюю и верхнюю границу значений, разделенных двумя точками.
Описание производится в разделе описания типов либо непосредственно в разделе описания переменных.
Например:
Type
n = 1..100;
Day =1..31;
Month =1..12;
Year =1900..2004;
Letter= ‘A’..’Z;
LP=Fasle..True;
Var
i, j : n;
D1, D2 : Day;
M1, M2 : Month;
G : 1900..2004;
R, S : Letter;
L :LPe;
Над переменными интервального типа могут выполняться все операции, процедуры и функции которые применимы к соответствующему базовому типу.
Так как эти типы данных являются порядковыми (наряду с типами: целый, логический символьный) то к ним можно применять также стандартные функции SUCC, PRED и ORD.
Применение переменных интервального типа улучшает наглядность программы и повышает ее надежность т.к. в программах осуществляется контроль выхода значений переменных за пределы указанного диапазона с помощью директивы {$R+}.
При выполнении программы попытка присвоить такой переменной значение за пределами указанного диапазона приводит к прекращению работы программы и выдаче соответствующего сообщения об ошибке.
Перечисляемый тип данных
Перечисляемый тип задается списком значений (имен), которые могут принимать переменные этого типа.
Описание перечисляемого м.б. выполнено с использованием раздела типов либо без него.
1. Type<имя типа>=(<список констант>);
Var<имя переменной>:<имя типа>;
2. Var<имя переменной>:(< список констант >);
Например:
Type
MONTH=(JAN, FEB, MAR, APR, MAY, JUN,
JUL, AUG, SEP, OCT, NOV, DEC);
COLOR=( White, Blue, Yellow , Brown, Red, Cyan, Green, Magenta, Black);
(Белый, Синий, Желтый, Коричневый, Красный, Голубой, Зеленый, Фиолетовый, Черный)
Var
M :MONTH;
CO :COLOR;
Значения перечисляемого типа упорядочены и изменяются от 0 до 255. Для перечисляемого типа применимы только операции сравнения (=, <, >, <>, <=, >=) они м. б. использованы в логических выражениях..
Для перечисляемого типа применимы следующие стандартные функции:
SUCC(X) –возвращает последующее значение; например: SUCC(AUG)=SEP;
PRED(X) - возвращает предыдущее значение ; PRED(AUG)=JUL;
ORD(X) - возвращает порядковый номер ; ORD(AUG)=8.
Ограничения, связанные с перечислимым типом:
- Объектами перечисляемого типа не м. б. числа, символьные и логические константы.
- В различных перечислениях не д. б. одинаковых элементов.
- Нельзя переменной одного типа присваивать значения из другого типа.
- Нельзя непосредственно вводить и выводить значения переменных перечислимого типа (можно использовать оператор CASE).
Пример 10.1. Составить программу ввода из файла d1.txt и подсчета размера среднемесячной зарплаты.
Файл d1.txt
1231.23 1324.34 1145.54 1376.13 1263.65 1132.54
1143.76 1231.76 1321.76 1243.87 1287.87
Текст программы
Program zpl;
Uses CRT;
Type Month=(Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec);
vec_z=array[Month] of real;
Var
zp :vec_z;
sz :real;
i :Month;
f :text;
Begin
clrscr;
Assign(f,'d1.txt'); Reset(f);
Writeln('Помесяная зарплата:');
For i:= Jan to Dec do
Begin
Read(f,zp[i]);Write(zp[i]:7:2,' ':3);
End;
sz:=0;
For i:= Jan to Dec do sz:=sz+zp[i]/12;
Writeln;
Writeln('Результат:');
Writeln('Средняя зарплата составляет:');
Writeln('sz=',sz:8:2);
Close(f);
Readln;
End.
Результат работы программы:
Помесячная зарплата:
1231.23 1324.34 1145.54 1376.13 1263.65 1132.54 1287.43 1143.76
1231.76 1321.76 1243.87 1287.87
Результат:
Средняя зарплата составляет:
sz= 1249.16
Пример 10.2. Составить программу, которая по введенному значению порядкового номера выводит соответствующее значение переменной.
Текст программы
Program pt;
Uses CRT;
Type COLOR=(Red, Green, Yellow);
Var
co :color;
n :byte;
Begin
clrscr;
Write('Введите n=>');
Read(n);
Case n of
0: co:=Red;
1: co:= Green ;
2: co:= Yellow;
End;
Write('Цвет=>');
Case co of
Red : Writeln('Red');
Green : Writeln('Green');
Yellow : Writeln('Yellow ');
End;
Repeat Until KeyPressed;
End.
Результат работы программы:
Введите n=>1
Цвет=>Green