Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Ввод и вывод значений переменных перечисляемого типа ЗАПРЕЩЕН




Следующая программа иллюстрирует некоторые операции над данными, относящимися к перечисляемому типу.

type

Color=(White,Red,Blue,Yellow,Purple,Green,Orange,Black);

var

C,C1,X,Y:Color;

i:integer;

begin

readln(i);

case i of { задание значения для С1 }

0: C1:=White;

1: C1:=Red

else C1:=Black

end;

for C:=Black downto C1 do

i:=i-1;

case C1 of { вывод значения С1 }

White: writeln('White');

Red: writeln('Red');

Black: writeln('Black')

end

end.

ЗАДАНИЯ

№1. Имеются описания

type Sezon=(Zima,Vesna,Leto);

var x,y:Sezon;

t:(Teplo,Holodno);

a) Допустимы ли присваивания:

1) x:=ZimA; 2) y:=x; 3) y:=Vecna;

4) t:=Teplo; 5) y:=t; 6) t:=Jarko?

б) Вычислить значения выражений;

1) Vesna<Leto; 2) Zima<=Leto; 3) Osen<Zima;

4) Vesna<>Teplo; 5) succ(Vesna); 6) pred(Vesn);

7) succ(Osen); 8) pred(Holodno)

в) Вычислить значения выражений:

1) ord(Vesna); 2) ord(Leto)+ord(Holodno)

г) Допустим ли оператор цикла с заголовком

for x:=Zima to Leto do?

д) Допустимы ли следующие операции ввода-вывода:

1) read(x); 2) write(Leto);

3) writeln('Зимой ',t)?

№2. Имеются описания:

type Sezon=(Zima,Vesna,Leto,Osen);

Mesyc=(Jun,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,

Oct,Nov,Dec);

Var m:Mesyc; s:Sezon;

Написать программу для определения s - сезона, на который приходится месяц m.

№3. Имеются описания:

type Edinica=(mm,sm,dm,m,km);

{мм, см, дм, м, км}

Dlina =real;

var x:Dlina; p:Edinica;

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

№4. Имеются описания:

type Kurs = (S,V,U,Z); { север, восток, юг, запад }

Prikaz = (vpered,vpravo,nazad,vlevo);

var K1,K2:Kurs; Pr:Prikaz;

Корабль сначала шел по курсу K1, а затем его курс был изменен согласно приказу Pr. Определить K2 - новый курс корабля.

№5. Имеются описания:

type Nota =(do,re,mi,fa,sol,lya,si);

Interval=(sekunda,terciya,kvarta,kvinta,sekta,septima);

var N1,N2:Nota; i:Interval;

Определить i -интервал, образованный нотами N1 и N2 (N1?N2). Секунда - это интервал из двух соседних (по кругу) нот (например, ре и ми, си и до), терция - интервал через ноту (например, фа и ля, си и ре) и т.д.

10. ИСПОЛЬЗОВАНИЕ ПЕРЕМЕННЫХ ОГРАНИЧЕННОГО ТИПА

Тип, который определяется как подмножество другого, уже определенного типа, называется ОГРАНИЧЕННЫМ (типом-диапазоном).

В качестве базового может выступать любой порядковый тип, кро­ме типа диапазона. Определение ограниченного типа для типа REAL не допускается.

Ограниченный тип задается границами своих значений внутри базового типа:

<min значение>..<max значение >

где <min значение> - наименьшее значение;

<max значение> - наибольшее значение;

.. - специальный символ, которым разделяются границы типа - диапазона.

Общий вид описания ограниченного типа следующий:

TYPE

<Имя типа>=<Нижняя граница>..<Верхняя граница>;

Общий вид описания переменных ограниченного типа следующий:

VAR

<Имя переменной>:<Нижняя граница>..<Верхняя граница>;

или

VAR

<Имя переменной>:<Имя типа>;

Нижняя граница <= Верхняя граница

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

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

Введение ограниченного типа улучшает читабельность программ, так как представляет диапазон значений, которые может принимать переменная этого типа.

Примеры заданий ограниченных типов и переменных ограниченного типа:

Type

days =1..31; {дни месяца}

month=1..12; {месяцы}

napravlenie=(sever,ug,vostok,zapad); {перечислимый тип}

Var

a,b:days;

nedely:1..7;

x:month;

m:array [month] of days; {массив ограниченного типа}

world:ug..zapad;

ЗАДАНИЯ

№1. Имеются описания:

Type digit='0'..'9';

Var d:digit; k:0..9; n:integer;

Допустимы ли присваивания:

1) d:='7'; 2) d:='a'; 3) d:=7; 4) k:=5; 5) k:=10;

6) k:=-0; 7) k:='5'; 8) k:=ord(d); 9) k:=ord(d)-ord('0')?

№2. Указать ошибки в следующих описаниях:

const n=180; e=2.7;

type cifra='0'..'9';

bukva=a..z;

ugol =-n..n;

otrezok=0..n-1;

period=-e..e;

plus='+'..'+';

Color=(White,Red,Blue,Yellow,Purple,Green,

Orange,Black);

c_r =Blue..Green;

c_r2=Orange..Red;

№3. Имеется описание:

Var k:1..9;

Написать программу, которая будет печатать значение переменной k римскими цифрами.

11. ИСПОЛЬЗОВАНИЕ ПЕРЕМЕННЫХ МНОЖЕСТВЕННОГО ТИПА

В качестве базового типа множества может выступать любой простой порядковый тип (integer,char или какой-нибудь иной, определенный программистом).

Максимально возможное число значений - 256. Для целочисленных множеств могут присутствовать числа не меньше 0 и не больше 255.

Порядок элементов во множестве не имеет значения, т.е. [2,4,6] и [4,2,6] - одно и то же множество.

Многократное повторение какого-либо элемента никак не влияет на состав множества, т.е. [2,2,4,6] и [4,2,6,4] - одно и то же множество.

Объявление множества:

VAR идентификатор: SET OF порядковый тип;

# #

(имя_множества) (список_элементов_множества)

Примеры описания:

type

cw = (Red, Vellow, Blue, White); {перечислимый тип}

cv = set of 'a'..'k'; {ограниченный тип}

const

ch: cv = ['a','d'..'z']; {задание множества константой}

var

c4: cv; { c4 типа cv, т.е. множество символов от 'a' до 'f' }

cc,c: set of char;

c2: set of 1..7; {множество чисел от 1 до 7}

c5: set of RED..BLUE; {при наличии предыдущего описания cw}

cha: char; {элемент множеств cc,c,c4,ch}

i: integer; {элемент множества c2}

Чтобы во множестве появились какие-то элементы, необходимо выполнить предложение назначения, в левой части которого надо указать имя SET -переменной, а в правой - некоторое множественное выражение, например c2:=[1, 3..7].

Над множествами допустимы следующие операции (А, В - выражения (множества); x - выражение со значением (элемент множества), относящимся к базовому типу (типу, указанному после set of)):

A + B - объединение множеств (множество всех элементов A и B);

A * B - пересечение множеств (множество общих для А и В элементов);

A – B - разность множеств (множество всех элементов А, не входящих в В);

x in A - проверка на вхождение элемента во множество (если x входит в A, результат равен true, в противном случае – false);

A = B - равенство множеств;

A<>B -неравенство множеств;

A<=B - включение множества (true, если A подмножество В (все элементы множества A содержатся в множестве B), иначе - false);

A>=B - включение множества (true, если B подмножество A (все элементы множества B содержатся в множестве A), иначе - false).

Ввод значений и вывод переменных множественного т ипа




Поделиться с друзьями:


Дата добавления: 2014-12-27; Просмотров: 1065; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.019 сек.