Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
m08_lection1.DOC
Скачиваний:
0
Добавлен:
07.07.2019
Размер:
74.75 Кб
Скачать

6

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

Перечислимый тип = ( Идентификатор {, Идентификатор}).

  1. Перечисляемый тип задается списком значений, которые может принимать переменная этого типа.

type Day = (Mon, Tue, Wed, Thu , Fri, Sat, Sun);

Color = (White, Red, Black);

Name = (Anna, Oleg, Vova, Gala);

var WorkDay : Day; NameBoy , NameGirl : Name;

Continent : (Africa, Asia, America, Australia, Europe, Antarctica)

begin

WorkDay:=Mon;

NameBoy:=Oleg;

Continent:=Asia;

end.

  1. Идентификаторы всех элементов перечисляемого типа интерпретируются как константы. Например, White, Red, Black – константы типа Color, а Anna, Oleg, Vova, Gala - константы типа Name.

  2. Идентификатор, указанный в списке перечислимого типа, может присутствовать только в одном описании и один раз. Например, следующее ошибочно:

type Boy = (Sasha, Vova, Oleg);

Girl = (Anna, Sasha, Lena);

Name = (Lora, Oleg, Vova, Gala, Lora);

  1. Оператор присваивания для переменной перечислимого типа допустим, если справа стоит значение из описания типа именно этой переменной, например:

WorkDay :=Mon; Continrnt:=Africa; Но ошибочно: NameBoy:=Red;

Вопрос: а такое присваивание: Color:=Red; - верно?

  1. Идентификаторы в списке упорядочены целыми положительными числами, начиная с 0, поэтому к ним применимы функции Pred, Succ, Ord.

Например , следующие выражения истинны :

Ord(Asia)=1; Succ(Vova)=Gala; Pred(Sat)=Fri;

  1. К переменным перечислимого типа не применимы ни арифметические функции, ни процедуры Read и Write !

  2. Перечислимый тип данных употребляется для улучшения читабельности программы.

Ограниченный (диапазонный, интервальный) тип данных

Ограниченный тип = Ограничение .. Ограничение.

Ограничение = Константа порядкового типа.

Примеры: var X:1..5; Y: ‘A’..’D’; Z: -100 ..100;

  1. Ограниченный тип данных задается на базе какого - либо порядкового типа с указанием более узкого, чем у базового, диапазона возможных значений.

  2. Нижнее Ограничение не должно превышать верхнее.

  3. К переменным ограниченного типа применимы функции Ord, Pred, Succ.

  4. Ограниченный тип данных употребляется для контроля значений переменных, а также для улучшения наглядности программы.

  5. Для подключения контроля диапазона используется директива компилятору {$R+}, для отключения - {$R-}.

const Min = 16; Max = 75;

type Days = (Mon,Tue,Wed,Thu,Fri,Sat,Sun);

WorkDay = Mon . . Fri; FreeDay = Sat . . Sun; Letter = ‘A’ .. ‘Z’;

var Day : Days; Interval : Min .. Max; A : ‘0’ .. ‘9’; B: 0 .. 9; L : Letter;

begin

{$R+}

Write(‘введи большую английскую букву’};

Read(L);

case L of

‘A’ .. ‘Z’ : Writeln(‘ - это большая английская буква!’);

else : Writeln(‘ - это НЕ большая английская буква! ’);

end;

{$R-}

repeat

Write(‘введи любую цифру => ’};

Readln(B);

until (B>=0) and (B<=9) and (B-Trunc(B)=0)

Writeln(“Вы ввели цифру ”, B);

end.

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

Program Z1;

Uses Crt;

type Days=(Mon,Tue,Wed,Thu,Fri,Sat,Sun);

var Day,Yesterday,Today,Tomorrow:Days;

i:Byte;

begin

repeat

ClrScr;

Writeln('1 - понедельник');

Writeln('2 - втоpник');

Writeln('3 - сpеда');

Writeln('4 - четвеpг');

Writeln('5 - пятница');

Writeln('6 - суббота');

Writeln('7 - воскpесенье');

Write('Введи номеp дня => ' );

Readln(i);

until (i>0) and (i<8);

case i of

1: Today:=Mon;

2: Today:=Tue;

3: Today:=Wed;

4: Today:=Thu;

5: Today:=Fri;

6: Today:=Sat;

7: Today:=Sun;

end;

if Today=Sun then Tomorrow:=Mon

else Tomorrow:=Succ(Today);

if Today=Mon then Yesterday:=Sun

else Yesterday:=Pred(Today);

i:=1;

repeat

case i of

1:begin Write('вчеpа был день '); Day:=Yesterday;

end;

2:begin Write('сегодня '); Day:=Today;

end;

3:begin Write('завтpа будет '); Day:=Tomorrow;

end;

end;

case Day of

Mon : Write(' понедельник');

Tue : Write(' втоpник');

Wed : Write(' сpеда');

Thu : Write(' четвеpг');

Fri : Write(' пятница');

Sat : Write(' суббота');

Sun : Write(' воскpесенье');

end;

case Day of

Mon .. Fri : Writeln(' - pабочий день ');

Sat, Sun : Writeln(' - выходной день');

end;

i:=i+1;

until i>3;

end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]