Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Pascal_учебник_3.doc
Скачиваний:
33
Добавлен:
11.04.2015
Размер:
937.47 Кб
Скачать

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).

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

Запрещен.

Примеры применения переменных множественного типа, описанных выше:

c :=['a'..'e']; {c:=['a','b','c','d','e']}

ch:=['d'..'f']; {c:=['d','e','f'] , c<>ch}

cc:=c+ch; {cc=['a','b','c','d','e','f'], cc>=c или c<=cc}

cc:=c*ch; {cc=['d','e']}

cc:=c-ch; {cc=['a','b','c']}

for cha:='a' to 'z' do if cha in cc then write(cha); {печать элементов множества сс}

c2:=[]; {пустое множество}

for i:=1 to 7 do можно заменить одним оператором:

c2:=c2+[i]; {множество c2:=[1..7];

чисел от 1 до 7}

for i:=1 to 7 do if i in c2 then write(i); {печать множества с2}

Правила приоритета для множественных операций:

Приоритетный уровень

Операции

Пояснения

1 (высший)

*

| Пересечение

2

+ –

Объединение, разность

3 (низший)

= <> in >= <=

Равенство, неравенство, принадлежность, подмножество (две операции) -

Задания

№1. Какие из следующих описаний неверны и почему?

type

{ 1 } Tochki = set of real;

{ 2 } bajt = array [1.. 8] of 0..1;

{ 3 } europe = (england, france,germany,spain,italy);

{ 4 } oset = set of europe;

{ 5 } vektor = array [1..10] of boolean;

{ 6 } oneset = set of vektor;

{ 7 } digits = '0'..'9';

{ 8 } threeset = set of digits;

{ 9 } matrica = array [digits] of threeset;

{ 10 } fiveset = set of boolean;

{ 11 } fourset = set of integer;

№2. Какие из следующих конструкций являются множествами (в смысле языка PASCAL), а какие нет и почему?

а) [9,3,6,0]; б) [2..3],5,7; в) [1..15,4..18];

г) ['*','*']; д) [0..0]; е) [true..false];

ж) [2,sqrt(9)]; з)['=','>=','>']; и) [[],[5]];

к) [ord(7),0<2]

№3. Что будет на экране в результате выполнения следующей программы:

Type

Primery=(Red,Yellow,Blue,White,Black);

Color =set of Primery;

Var

H0,H1:Color;

C1,C2,C3:set of Char;

B1,B2:Boolean;

Ch:Char;

Begin

{ лат.алф.:A,B,C,D,E,F,G,H,I,J,K,L,M,

N,O,P,Q,R,S,T,U,V,W,X,Y,Z }

H0:=[Yellow];

H1:=H0+[succ(Blue)];

if Blue in H1 then writeln('Blue');

C2:=['F'..'K','M','X'..'Z'];

C1:=['L','N'..'W'];

C3:=C1+C2;

for Ch:='A' TO 'Z' DO

if Ch in C3 THEN

Write(Ch:2);

Writeln;

B1:= C3 = C1 + C2;

B2:= C3 <= C2;

Writeln(B1,B2:6,'M' in C1:6);

End.

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

var

x,y,z:set of 8..22;

Переменной x присвоить множество всех целых чисел от восьми до 22, переменной y - множество всех составных чисел из этого же диапазона, а переменной z присвоить множество всех простых чисел из того же диапазона.

№5. Не используя дополнительные переменные, поменять местами значения переменных-множеств АиВ.

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