Старшенство множественных операторов

Приоритетный уро-

Вень Операторы Операции

1. (высший)

2.

3. (низший)

*

+, –

=, <>, >=, <=, In

пересечение

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

равенство, неравенство, подмно-

жество, принадлежность

Для изменения порядка выполнения используются круглые скобки.

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

Пример 4.

старшенство множественных операторов - student2.ru Program Prim 5; Var Stroka: string; i: integer;

Prav: boolean; Begin i := 1; writeln('введите строку'); readln(Stroka);

L := Length(Stroka); {число введенных символов} Prav := L > 0; {True, если не нулевая стро-

ка}

while Prav and (i <= L) do

begin {проверка допустимости

символа}

Prav := Stroka[i] In ['0'..'9', 'A'..'Z', 'a'..'z', ' '];

i := Succ(i); {следующий номер}

end; if Prav then writeln('правильная строка') else writeln('неправильная строка');

End.

Для вывода элементов некоторого множества, сформированного в про- цессе выполнения программы, необходимо воспользоваться оператором цикла, внутри которого была бы проверка на принадлежность текущего значения па- раметра цикла выводимому множеству. Например, для множества ВВ, описан- ного как ВВ: Set of 'A'..'Z'; можно организовать вывод элементов следующим образом:

Пример 6.

For i := 'A' to 'Z' do

if i in BB then write(i:2);

Причем параметр цикла i должен быть описан либо как символьная пе- ременная, либо как i: 'A'..'Z'. Печать элементов множества производится в том порядке, в котором они встречаются в базовом множестве.

Приведенная ниже программа Lat формирует множество LB, в которое входят только латинские буквы, встретившиеся во входной строке, и множест- во знаков препинания PR из входной строки (пример 7).

Пример 7.

Program Lat; Var

c, i, j: char;

LB: Set of 'A'..'Z'; PR: Set of '!'..'?';

Begin

write('=>');

LB := [ ]; PR:= [ ];

repeat

старшенство множественных операторов - student2.ru read(c)

if c In ['A'..'Z']

then LB := LB + [C]

else

if c In [':', ';', '.', ',', '!', '?']

then PR := PR + [C]

until Eoln; writeln('Латинские буквы:'); for i := 'A' to 'Z' do

if i in LB then write(i:2);

writeln;

writeln('Знаки препинания:');

for j := ':' to '?' do

if j in PR then write(j:2); End.

КОНТРОЛЬНЫЕ ВОПРОССЫ

1. Какие типы данных используются в качестве базовых при построении

множественных типов?

2. Дано описание переменной множественного типа: Var Pm: Set of (Red, Grey, Blue, Black). Выписать все допустимые значения этой переменной.

3. Какие операции определены над переменными множественного типа и ка-

ков их приоритет?

4. Будут ли равны множества:

a. ['A'..'D'] и ['A','B','C','D'];

b. [White, Black] и [Black, White].

5. Вычислить следующие выражения:

a. [5] <= [1..5];

b. ['A'..'D', 'K'..'M'] + ['D'..'K'];

c. [Jan, Feb, Мar]*[Mar];

d. [2, 1, 3..6] = [1..7];

e. 15 In [1..10];

f. [',', '(', ')', '.'] – [',', '.'].

6. Вычислить выражение: [1..14]*[5, 12..60] + [4..7] – [2*16]*[6].

7. Упростить данные выражения множественного типа:

a. [11..17]*[2] + [7, 17..40]*[2..17] – [2..8];

b. (A – B)*A + (A – B)*B;

c. (A + B)*(A – B)*(B – A); d. A – B – (A – B) – (B – A); e. A – (A – B).

ВАРИАНТЫ ЗАДАНИЙ

старшенство множественных операторов - student2.ru 1. Дана непустая последовательность символов. Требуется построить и напе- чатать множество, элементами которого являются встречающиеся в после- довательности:

1) цифры от '0' до '9';

2) буквы от 'A' до 'F' и от 'X' до 'Z';

3) буквы от 'G' до 'N' и цифры от '0' до '9';

4) знаки препинания;

5) буквы от 'A' до 'Z' и цифры от '0' до '5';

6) буквы от 'T' до 'X' и знаки препинания;

7) знаки арифметических операций и знаки препинания;

8) цифры и знаки арифметических операций;

9) знаки препинания и буквы от 'E' до 'N';

10) цифры от '5' до '9' и знаки препинания;

11) знаки операций отношения;

12) цифры от '3' до '9', буквы от 'A' до 'F' и знаки препинания;

13) знаки арифметических операций и операций отношения;

14) буквы от 'F' до 'M' и знаки арифметических операций;

15) знаки препинания и операций отношения;

16) цифры от '0' до '5' и буквы от 'K' до 'R'.

2. Операции над массивами. При выполнении задания следует учесть прие-

мы программирования, использованные в приведенной ниже программе:

Program Eratosphen; Const

n = 256; Var

Sieve, Primes: Set of 2..n; Next: byte;

j: word;

Begin

Sieve := [2..n]; Primes := [ ];

Next := 2;

repeat

while not (Next in Sieve) do Next := Next + 1;

Primes := Primes + [Next];

j := Next;

while j <= n do

begin

Sieve := Sieve-[j];

j := j + Next

end; until Sieve = [ ]; for j := 2 to n do

if j In Primes then Write(j:5)

старшенство множественных операторов - student2.ru End.

1) Из множества целых чисел [1..1000] методом решета Эратосфена

получить множество простых чисел и вывести их на экран.

2) Из множества целых чисел [1..1000] получить множество чисел, являющихся квадратами четных чисел и вывести их на экран.

3) Из множества целых чисел [1..1000] получить множество чисел, являющихся квадратами нечетных чисел и вывести их на экран.

4) Дано целое n от 2 до 1000. Используя метод решета Эратосфена, напечатать в убывающем порядке все простые числа из диапазона n..2n.

5) Из множества целых чисел [1..500] методом решета Эратосфена

получить множество простых чисел и вывести их на экран.

6) Из множества целых чисел [1..500] получить множество чисел, являющихся квадратами четных чисел и вывести их на экран.

7) Из множества целых чисел [1..500] получить множество чисел, являющихся квадратами нечетных чисел и вывести их на экран.

8) Дано целое n от 2 до 500. Используя метод решета Эратосфена, на- печатать в убывающем порядке все простые числа из диапазона n..2n.

Наши рекомендации