Партнерка на США и Канаду по недвижимости, выплаты в крипто

  • 30% recurring commission
  • Выплаты в USDT
  • Вывод каждую неделю
  • Комиссия до 5 лет за каждого referral

[1..10, 100..110]        –        множество целых чисел от 1 до 10 и от 100 до 110.

[Pn, Vt, Sr]        –        множество из 3-х элементов перечислимого типа.

[X.. 5*X]        –        множество целых чисел от текущего значения X до значения выражения 5*X.

Конструктор множества – это фактически множественная константа.

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

Например, множества [1, 2, 3] и [1, 3, 2] – это одно и тоже множество.

4.3. Задание множественного типа

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

Синтаксис задания множественного типа имеет вид, который представляет рисунок 4.2.


Рисунок 4.2 – Синтаксическая диаграмма задания множественного типа

Как уже отмечалось, <Базовый_скалярный_тип> - это любой перенумерованный тип, значения которого попадают в диапазон 0 .. 255.

Например:

Set Of 1..3 – значениями этого множественного типа могут быть множества [], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3].

Set Of Boolean – значениями этого множественного типа могут быть множества [True], [False], [True, False], [].

В качестве базового типа может быть использовано имя типа или задание типа.

НЕ нашли? Не то? Что вы ищете?

Задание типа Set аналогично представлению множества с помощью массива:

Array [<Базовый_скалярный_тип>] Of Boolean.

Обработка таких массивов в Паскале неэффективна, поэтому используется тип Set.

Пример 4.3.

Объявление множественного типа.

Type

         Ned = (Pn, Vt, Sr, Ch, Pt, Sb, Vs);

         Denned = Set Of Ned; {Используется имя базового типа}

         Log = Set Of Boolean; {Используется имя базового типа}

Var

         Den: Denned;

         L1, L: Log;

         I1, I2, I: Set Of 1..10; {Используется задание базового типа}

       B: Boolean;

В данном примере Den, L1, L, I1, I2, I – это множественные переменные (переменные-множества).

Для присваивания значений множественным переменным используются множественные выражения.

Множественное выражение – это выражение, значением которого является множество. Частным случаем множественных выражений являются множественные переменные и конструкторы множества.

Пример 4.4.

Использование множественных выражений. Для переменных, объявленных в примере 4.3, можно записать:

L1 := [True];

L := L1; {Значение L1 к этому моменту должно быть определено}

I := [1, 3, 5];

Den := [Sub, Vos];

4.4. Операции над множествами

Над множествами определены операции, которые представляет таблица 4.2.

Таблица 4.2 – Операции над множествами

Операция

Описание операции

Тип результата

=

Равно

Boolean

<>

Не равно

<=

Результат операции равен True, если левое множество является подмножеством правого

>=

Результат операции равен True, если правое множество является подмножеством левого

In

Результат операции равен True, если некоторое скалярное значение (левый операнд) является элементом множества (правый операнд)

Not *)

Дополнение множества (одноместная операция)

Set

+

Объединение множеств

*

Пересечение множеств

Разность множеств A – B = A * Not B

Xor *)

Исключающее объединение множеств

A Xor B = A + B – A * B


Здесь *) – операции, определенные не во всех версиях языка Паскаль.

Над множественными переменными определена одна встроенная функция – Sizeof(X), указывающая количество байт для представления значения X множественной переменной.

Операция In представляет собой операцию проверки вхождения элемента в множество. Левый операнд должен принадлежать базовому типу, правый операнд – множественному типу, построенному на основе этого базового типа.

Пример 4.5.

Операции над множествами. Пусть имеются объявления, приведенные в примере 4.3.

I := [1, 3, 5];

B := 2 In I {в B значение False}

B := [3, 5]<=I {в B значение True}

B := [4, 5]<=I {в B значение False}

I := Not I {в I значение [2, 4, 6..10] – дополнение множества}

       

В двухместных операциях оба операнда должны принадлежать одному и тому же множественному типу значений.

Объединение множеств (I2 := I + I1) – это множество, состоящее из элементов, входящих хотя бы в одно из исходных множеств I и I1. Объединение множеств иллюстрирует рисунок 4.3.

Рисунок 4.3 – Объединение множеств

Пересечение множеств (I2 := I * I1) – это множество, состоящее из элементов, входящих в оба исходных множества I и I1. Пересечение множеств иллюстрирует рисунок 4.4.

Рисунок 4.4  – Пересечение множеств

Разность множеств (I2 := I – I1) – это множество, состоящее из элементов множества I, не входящих в множество I1. Разность множеств иллюстрирует рисунок 4.5.


Рисунок 4.5 – Разность множеств

Пример 4.6.

Операции над множествами. Пусть имеются объявления, приведенные в примере 4.3.

I1 := [1, 2, 3];

I := [1, 3, 5];

I2 := I1 + I;  {в I2 значение [1, 2, 3, 5]}

I2 := I1*I;  {в I2 значение [1, 3]}

I2 := I – I1;  {в I2 значение [5]}

Выражения, приведенные в примере 4.6, представляют собой множественные выражения.

Старшинство операций в множественных выражениях аналогично старшинству в арифметических выражениях: вначале вычисляются выражения в скобках, затем операция *, после этого операции + и – в порядке их следования слева направо.

Например, результатом вычисления множественного выражения

[1, 2, 5, 6, 7] * [2 .. 6] + [3, 9]

является множество

[2, 3, 5, 6, 9].

Пример 4.7.

Использование множественного типа. Подсчитать общее количество букв X, Y, Z в исходном тексте, оканчивающемся точкой.

Program Mno;

       Var

               Kol: Integer;

               B: Char;

       Begin

                 Kol := 0;

                 Read (B); {Чтение первой буквы текста}

                 While B<>’.’ Do

                       Begin

                               If B In [‘X’, ‘Y’, ‘Z’] Then {Если значение буквы входит в множество [‘X’, ‘Y’, ‘Z’]}

                                       Kol := Kol + 1;

                               Read (B); {Чтение очередной буквы текста}

                       End;

               Writeln (Kol);

       End.

4.5. Ввод / вывод значения множественной переменной

Для ввода значения множественной переменной используется операция объединения множеств.

Пример 4.8.

Ввод значения переменной типа множества больших латинских букв из входного файла. Признак окончания ввода множества – точка.

Var

       B: Char;

       Mn: Set Of ‘A’..‘Z’; {Тип элементов вводимого множества}

Begin

       Mn := []; {Начальное значение множества – пустое множество}

       Repeat

                 Read (B); {Чтение очередного элемента множества}

                 Mn := Mn + [B] {Объединение множеств}

       Until B = ’.’; {‘.’ – признак конца текста}

       ...

Во входном файле необходимо подряд записать все значения, составляющие значение данной множественной переменной.

Если очередное значение переменной B не относится к базовому типу множества, то оно в множество Mn не занесется.

Для вывода значения множественной переменной используется операция проверки вхождения элемента в множество.

Пример 4.9.

Продолжение примера 4.8. Вывод значения переменной типа множества латинских букв.

For B := ’A’ To ‘Z’ Do {Организация цикла по базовому типу множества}

         If B In Mn Then        {Анализ вхождения очередного значения базового типа в значение множественной переменной}

               Write (B: 5);

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33