Перечислимый тип данных
Этот тип данных получил название перечисляемого, потому что он задается в виде перечисления некоторых значений. Эти значения образуют упорядоченное множество и являются константами. Для объявления переменной список возможных значений, разделенных запятой, указывается в круглых скобках.
Например,
Varmonth(january, february, march, april, may, june, july, august, september, october, november, december);
Порядок элементов перечисляемого типа определяется порядком их следования в описании. Левый имеет минимальное значение.
В любом порядковом типе для каждого значения, кроме первого, существует предшествующее значение, и для каждого значения, кроме последнего, существует последующее значение. В языке Паскаль имеются стандартные функции, которые позволяют определять предшествующее и последующее значения для заданного значения:
функция Pred(x) определяет значение, предшествующее х;
функция Ord(x) возвращает порядковый номер величины х;
функция Succ(x) определяет значение, следующее за х.
К переменным перечисляемого типа можно применять операции сравнения. Так, например, february<november.
Задача 3.Вычислить значения :
а) Ord(august);
б) Ord(succ(september));
в) Pred(Pred(december)).
Задача 4. Имеются описания :
var x,y : (winter, spring, summer, autumn);
t : (cold, warm);
а) Допустимы ли присваивания :x:=spring; t:=warm: t:=hot; y:=x; y:=t;
б) Вычислить значения выражений :
spring<summer;
autumn<winter;
Succ(spring);
Pred(autumn);
Ord(spring);
winter<=summer;
spring<>warm;
Pred(spring);
Pred(cold);
Pred(autumn) + Ord(cold);
в) Допустим ли оператор цикла с заголовком : For x:=spring To autumn Do
Задача 5.Даны описания следующих переменных :
VAR m, m1: (january, february, march, april, may, june, july, august,
september, october, november, december);
k: 1..maxint; n: 1..12;
Присвоить переменной m1:
а) название месяца, следующего за месяцем m;
б) название k-го месяца после месяца n.
Задача 6.Имеются описания :
VAR d: ‘0’..’9’; k: 0..9; n: integer;
а) Какие значения может принимать переменная d ? Каков ее базовый тип? Допустимы ли присваивания : d:=’7’; d:=’a’; d:=7 ?
б) Какие значения может принимать переменная k ? Каков ее базовый тип ? Допустимы ли присваивания : k:=5; k:=10; k:=-0: k:=’5’ ?
в) Есть ли ошибки в операторе :
if k+n>7*k then k:=abs(n) mod 10
else d:=chr(k+Ord(‘0’) ?
Дата добавления: 2015-01-15; просмотров: 1094;