СТАРШЕНСТВО МНОЖЕСТВЕННЫХ ОПЕРАТОРОВ
Приоритетный уро- Вень Операторы Операции
1. (высший) 2. 3. (низший)
* +, – =, <>, >=, <=, In пересечение объединение, разность равенство, неравенство, подмно- жество, принадлежность
Для изменения порядка выполнения используются круглые скобки.
Средства работы со множествами позволяют в некоторых случаях сокра- тить программы и сделать их более наглядными и эффективными за счет уменьшения числа различных проверок.
Пример 4.
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
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).
ВАРИАНТЫ ЗАДАНИЙ
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)
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.
Популярное: Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной... Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе... Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (600)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |