Перечислимый тип данных

Этот тип данных получил название перечисляемого, потому что он задается в виде перечисления некоторых значений. Эти значения образуют упорядоченное множество и являются константами. Для объявления переменной список возможных значений, разделенных запятой, указывается в круглых скобках.

Например,

Var month(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’)?


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: