Циклы с пред- и постусловиями используются тогда, когда заранее неизвестно количество их повторений (итераций). Если количество итераций известно заранее, то используются циклы с параметром.
Часто встречающиеся ошибки программирования:
1. Использование в качестве условия выражения не логического типа:
Until (n + m);
2. Отсутствие условия после слова Until:
3. Использование после слова Repeat двоеточия или точки с запятой:
Until (n >= 10);
Управление работой циклов с параметром осуществляется не условием, а значением специальной переменной – параметра цикла (счетчика).
Схему цикла с параметром можно представить в следующем виде:
где i – параметр цикла – любая переменная порядкового типа (целого, символьного, интервального, перечисляемого),
i_нач – его начальное значение,
i_кон – его конечное значение.
Действия цикла:
1. параметру цикла i присваивается его начальное значение i_нач,
2. если оно не превосходит конечного (i_нач ≤ i_кон), то выполняется тело цикла,
3. параметр цикла автоматически увеличивается на единицу, и цикл повторяется до тех пор, пока параметр цикла не достигнет своего конечного значения,
4. если начальное значение параметра цикла больше его конечного значения (i_нач > i_кон), то цикл не выполняется ни разу.
В Паскале циклы с параметром реализуются оператором цикла:
For i := iнач To iкон Do это заголовок цикла
или
For i := iнач To iкон Do
Если в заголовке цикла используется служебное слово To (к), то шаг изменения параметра цикла равен +1.
Если в заголовке цикла используется служебное слово DownTo (уменьшаядо), то шаг изменения параметра цикла равен -1.
Внимание! После слова Do точка с запятой никогда не ставится!
Пример: определить сумму s натуральных чисел от 1 до 100.
Схема алгоритма: Программа:
Program Gauss;
Var n, s : Word;
For n:=1 To 100 Do
s := s + n;
WriteLn(‘Сумма равна ’, s);
Эту же задачу можно решить, суммируя числа справа налево, то есть от 100 до 1:
Var i, s : Word;
For i:=100 DownTo 1 Do
s := s + i;
WriteLn(‘Сумма равна ’, s);
Построение операторов цикла For подчиняется следующим правилам:
1. начальное и конечное значения параметра цикла можно задавать константами (как в примере), заранее определенными переменными или выражениями,
2. внутри области цикла нельзя самому изменять начальное и конечное значения параметра цикла: эти значения задаются в заголовке цикла один раз, запоминаются и до выхода из цикла не меняются, даже если соответствующие им переменные меняются в теле цикла:
For j := m To n Do
a[j] := j + 10;
m := m + 1; ошибка!
n := n + 1; ошибка!
Выходим из этого цикла со значением параметра цикла j, равным 10.
Нежелательно внутри области цикла самому изменять значение параметра цикла - это может привести к появлению бесконечных циклов:
For k := 1 To n Do
k := k + 1;
s := s + k;
End;
Эта программа вычисляет сумму s четных целых чисел от 2 до 10, равную 30. При этом конечное значение параметра цикла k равно 10 .
Зададим n = 11:
For k := 1 To n Do
k := k + 1;
s := s + k;
End;
Цикл превратится в бесконечный: значение параметра цикла k никогда не будет равным заданному конечному значению 11. Оно перепрыгнет это значение и уйдет в бесконечность.
Если же цикл не выполняется ни разу, то параметр цикла сбрасывается на ноль:
For k := 10 To 1 Do
p := p * k;
s := s + k;
End;
Выходим из этого цикла со значением k, равным 0.
3. допускается использование цикла в цикле, при этом циклы должны иметь различные параметры цикла:
For i := 1 To n Do эти циклы выводят элементы массива Anm
Begin в виде матрицы, построчно
For j:= 1 To m Do
Write(a[i,j]:5);
4. после окончания работы цикла значение параметра цикла сохраняется,
5. в область цикла можно входить только через заголовок цикла For; неразрешается переход с помощью операторов If и GoTo, расположенных вне данного цикла, на операторы в области цикла:
If (p Mod s > 10)
Then GoTo 5; ошибка – переход в тело цикла, минуя его заголовок
For i := 1 To 10 Do
s := s + i;
5: p := p + i;
6. операторами If и GoTo, расположенными внутри тела цикла, можно переходить на любой оператор в теле цикла или вне его, при этом значение параметра цикла сохраняется:
For i := 1 To 100 Do
If (a[i]=0)
Then Goto 2; переход внутри тела цикла
a[i] := 1 / a[i];
2:
7. с помощью оператора Break можно досрочно выйти из цикла:
For i := 1 To 100 Do
If (a[i] < 0)
Then Break; поиск первого отрицательного элемента в векторе
8. оператор Continue позволяет досрочно перейти к следующей итерации цикла:
For i := 1 To 100 Do
If (a[i] = 0)
Then Continue; если ноль, то на следующую итерацию
a[i] := 1 / a[i];
Основное назначение циклов с параметром – обработка массивов, причем параметр цикла отождествляется с индексом (номером) элемента массива.
Примеры:
1. Задать элементы целочисленного вектора vectorn случайными числами, лежащими в диапазоне от vect_min до vect_max.
Для решения этой задачи используется стандартная функция – генератор случайных чисел Random(k). При каждом обращении к этой функции она вырабатывает целое случайное число, лежащее в диапазоне от 0 до k - 1.
Const n = 10; задание исходных данных в виде именованных констант
vect_min = -10;
vect_max = 20;
Var i : Word; параметр цикла
Vector : Array [1..n] Of Integer; описание вектора сиспользованием константы n
ClrScr; очистка экрана
Randomize; запуск генератора случайных чисел
For i:=1 To n Do заполнение вектора случайными числами
For i:=1 To n Do форматный вывод вектора на экран в однустроку
Write(Vector[i]:5);
WriteLn; переход на новую строку на экране
ReadLn; задержка картинки на экране до нажатия на ENTER
2. Задать элементы целочисленного массива massivnm случайными числами, лежащими в диапазоне от mass_min до mass_max. Полученный массив вывести на экран построчно.
Const n = 5;
m = 8;
mass_min = -50;
mass_max = 50;
Var i, j : Word; параметры циклов
Massiv : Array [1..n, 1..m] Of Integer; описание массива сиспользованием констант n и m
Randomize; запуск генератора случайных чисел
For i:=1 To n Do заполнение массива случайными числами
For i:=1 To n Do форматный вывод массива на экран построчно
For j:=1 To m Do
Write(Massiv[i, j]:5);
WriteLn; переход на новую строку на экране
3. Задать элементы целочисленного массива massivnm в виде чисел от 1 до n*m . Полученный массив вывести на экран построчно:
Const n = 3;
m = 5;
Var i, j, k : Word;
Massiv : Array [1..n, 1..m] Of Word;
k:= 0; рабочая переменная для задания элементов массива
For i:=1 To n Do заполнение массива
For j:=1 To m Do
k:= k + 1;
Massiv[i, j]:= k;
For i:=1 To n Do форматный вывод массива на экран построчно
For j:=1 To m Do
Write(Massiv[i, j]:5);
4. Задать элементы целочисленного вектора vectorn случайными числами, лежащими в диапазоне от vect_min до vect_max. Вывести полученный вектор на экран в одну строку. Определить индекс i_max и значение vector_max максимального элемента вектора.
Перед поиском максимального элемента вектора за таковой принимается первый элемент вектора, а затем он сравнивается с остальными элементами:
Const n = 10; задание исходных данных в виде именованных констант
Vector_max:= Vector[1]; пока максимальный элемент – первый
i_max:= 1; элемент вектора
For i:=2 To n Do поиск начинаем со второго элемента!
If (Vector[i] > Vector_max) Then если очередной элемент больше
Begin текущего максимального,
Vector_max := Vector[i]; то максимальным элементом
i_max := i; становится очередной элемент вектора
WriteLn(‘Vector_max=’, Vector_max);
WriteLn(‘i_max=’, i_max);
5. Задать элементы целочисленного вектора vectorn случайными числами, лежащими в диапазоне от vect_min до vect_max. Вывести полученный вектор на экран. Определить сумму S элементов вектора.
Перед началом суммирования сбрасываем сумму на нуль, потом в цикле будем добавлять в нее очередной элемент:
Const n = 10; задание исходных данных в виде именованных констант
6. Задать элементы целочисленного вектора vectorn случайными числами, лежащими в диапазоне от vect_min до vect_max. Вывести полученный вектор на экран. Перевернуть вектор: поменять местами первый и последний элементы, второй и предпоследний, и так далее (поплавок):
7. Задать элементы целочисленного вектора vectorn случайными числами, лежащими в диапазоне от vect_min до vect_max. Вывести полученный вектор на экран. Определить сумму S элементов вектора, лежащих в диапазоне от min до max, и количество count этих элементов.
Перед началом суммирования сбрасываем сумму и количество на нуль, потом в цикле будем добавлять в нее очередной элемент, отвечающий заданным условиям:
Const n = 10; задание исходных данных в виде именованных констант
If (Vector[i] >= min) And (Vector[i] <= max) проверка условия
s:= s + Vector[i];
count:= count + 1;
WriteLn(‘s=’, s);
WriteLn(‘count=’, count);
8. Задать элементы целочисленного вектора vectorn случайными числами, лежащими в диапазоне от vect_min до vect_max. Вывести полученный вектор на экран. Поменять местами максимальный max и минимальный min элементы вектора.
Перед началом поиска максимального и минимального элементов за таковые принимается первый элемент вектора. Для обмена местами этих элементов необходимо определить их номера (индексы) i_min и i_max:
max:= Vector[1]; и максимального элементов массива
i_min:= 1; индексы этих элементов
i_max:= 1;
For i:=2 To n Do начинаем просмотр со второго элемента
If (Vector[i] < min) Then если очередной элемент вектора
Begin меньше минимального,
min:= Vector[i]; то за минимальный принимаем
i_min:= i; этот очереднойэлемент
End; и запоминаем его индекс
If (Vector[i] > max) Then если очередной элемент вектора
Begin больше максимального,
max:= Vector[i]; то за максимальный принимаем
i_max:= i; этот очереднойэлемент
End; и запоминаем его индекс
WriteLn(‘Минимальный элемент=’, Vector[i_min]);
WriteLn(‘Его индекс=’, i_min);
WriteLn(‘Максимальный элемент=’, Vector[i_max]);
WriteLn(‘Его индекс=’, i_max);
k:= Vector[i_min]; меняем их местами через
Vector[i_min]:= Vector[i_max]; третью переменную
Vector[i_max]:= k;
WriteLn(‘Полученный вектор:’);
For i:=1 To n Do
Write(Vector[i]:5);
9. Задать элементы целочисленного вектора vectorn случайными числами, лежащими в диапазоне от vect_min до vect_max. Вывести полученный вектор на экран. Поменять местами первый отрицательный и последний положительный элементы массива. Предусмотреть случай, когда элементы массива имеют один знак – только отрицательные или только положительные.
Обозначим их индексы как i_otr и i_pol. Перед началом поиска сбросим их на ноль. Если после поиска какой-нибудь из них останется равным нулю, то в векторе – элементы одного знака:
10. Задать элементы целочисленного вектора vectorn случайными числами, лежащими в диапазоне от vect_min до vect_max. Вывести полученный вектор на экран. Сдвинуть элементы вектора вправо на один шаг, причем последний элемент должен встать на первое место.
Для решения этой задачи запомним последний элемент вектора на переменной posl, сдвинем все элементы на шаг вправо, начиная с предпоследнего, а затем значение переменной posl поместим в первый элемент массива:
posl:= Vector[n]; запоминаем последний элемент вектора
For i:= n DownTo 2 Do
k:= Vector[i]; сдвигаем элементы вектора
Vector[i]:= Vector[i-1]; на один шаг вправо
Vector[i-1]:= k;
Vector[1]:= posl; вставляем последний элемент
на первое место
WriteLn(‘Полученный вектор:’);
For i:=1 To n Do
Write(Vector[i]:5);
11. Задать элементы целочисленного вектора vectork случайными числами, лежащими в диапазоне от vect_min до vect_max. Вывести полученный вектор на экран. Разместить элементы вектора в массиве massivnm построчно (n*m = k):
Const k = 12; задание исходных данных в виде именованных констант
12. Задать элементы целочисленного квадратного массива massivnm случайными числами, лежащими в диапазоне от mass_min до mass_max. Исходный массив вывести на экран построчно. Разместить элементы массива в векторе Vectorkпострочно (k = n*m):
13. Задать элементы целочисленного квадратного массива massivnn случайными числами, лежащими в диапазоне от mass_min до mass_max. Исходный массив вывести на экран построчно. Транспонировать массив, заменив его строки соответствующими столбцами: первую строку – на первый столбец, вторую – на второй, и так далее. Транспонированный массив вывести на экран построчно:
Const n = 5;
mass_min = -50;
mass_max = 50;
Var i, j, k : Integer;
Massiv : Array [1..n, 1..n] Of Integer; описание массива сиспользованием константы n
For j:=i To n Do столбцы начинаем с главной диагонали
Begin
k:= Massiv[i,j]; транспонирование массива с использованием
Massiv[i,j]:= Massiv[j,i]; алгоритма циклического обмена
Massiv[j,i]:= k; значениями двух переменных через третью
WriteLn(‘Транспонированный массив:’);
For i:=1 To n Do
Begin
For j:=1 To n Do
Write(Massiv[i, j]:5);
WriteLn;
14. Задать элементы целочисленного массива massivnm случайными числами, лежащими в диапазоне от mass_min до mass_max. Исходный массив вывести на экран построчно. Сдвинуть столбцы массива на шаг вправо, причем последний столбец должен встать на место первого.
Решение задачи заключается в запоминании элементов последнего столбца и последующем сдвиге элементов каждой строки на шаг вправо. Запомненный элемент становится на первое место в текущей строке:
posl:= Massiv[i, m]; запоминаем последний элемент строки
For j:=m DownTo 2 Do
Begin
k:= Massiv[i,j]; сдвигаем элементы строки на шаг Massiv[i,j]:= Massiv[i, j-1]; вправо
Massiv[i, j-1]:= k;
Massiv[i,1]:= posl; вставляем последний элемент на первое место в строке
End; конец цикла по строкам
WriteLn(‘Полученный массив:’);
For i:=1 To n Do
Begin
For j:=1 To m Do
Write(Massiv[i, j]:5);
WriteLn;
15. Задать элементы целочисленного квадратного массива massivnn случайными числами, лежащими в диапазоне от mass_min до mass_max. Исходный массив вывести на экран построчно. Повернуть массив на 900 по часовой стрелке, например:
Для выполнения этой операции массив сначала транспонируют, а затем применяют для каждой строки поплавок – переворачивают строки:
For j:=i To n Do столбцы начинаем с главной диагонали
Begin
k:= Massiv[i,j]; транспонирование массива с использованием
Massiv[i,j]:= Massiv[j,i]; алгоритма циклического обмена
Massiv[j,i]:= k; значениями двух переменных через третью
WriteLn(‘Транспонированный массив:’);
For i:=1 To n Do
Begin
For j:=1 To n Do
Write(Massiv[i, j]:5);
WriteLn;
For i:=1 To n Do перебираем строки массива
For j:=1 To m Do переворачиваем каждую строку
k:= Massiv[i,j];
Massiv[i,j]:= Massiv[i, n – j + 1];
Massiv[i, n – j + 1] := k;
WriteLn(‘Полученный массив:’);
For i:=1 To n Do
Begin
For j:=1 To n Do
Write(Massiv[i, j]:5);
WriteLn;
16.Задать элементы целочисленного массива massivnm случайными числами, лежащими в диапазоне от mass_min до mass_max. Исходный массив вывести на экран построчно. Определить седловую точку массива. Седловой точкой массива называется элемент, наименьший в своей строке и одновременно наибольший в своем столбце:
j_min:= 1; номер столбца с минимальным элементом в этойстроке
For j:=2 To m Do
If (Massiv[i,j] < min) Then
Begin
min:= Massiv[i,j];
j_min:= j;
max:= Massiv[1, j_min]; ищем максимальный элемент в столбце,
i_max:= 1; содержащем минимальный элемент этой строки
For k:=2 To n Do
If (Massiv[k,j_min] > max) Then
Begin
max:= Massiv[k,j_min];
i_max:= k;
If (i = i_max) Then
WriteLn(‘Номер строки=’,i,
‘ Номер столбца=’,j_min,
‘ Седловая точка=’, Massiv[i, j_min]);
End; конеццикла по строкам
17. Задать элементы целочисленного квадратного массива ann случайными числами, лежащими в диапазоне от mass_min до mass_max. Исходный массив вывести на экран построчно. Заполнить вектор vkсуммами элементов исходного массива, расположенных параллельно побочной диагонали (k = 2n – 1).
Для решения этой задачи рассмотрим исходный массив поэлементно:
a11 a12 a13 a14 . . . a1n
a21 a22 a23 a24 . . . a2n
a31 a32 a33 a34 . . . a3n
an1 an2 an3 an4 . . . ann
Заметим следующую закономерность образования сумм элементов по диагоналям, параллельным побочной:
vector[t]:= vector[t] + a[i,j]; вычисляем сумму элементов массива
WriteLn(‘Полученный вектор’);
For i:=1 To k Do
Write(vector[i]:5);
18. Задать элементы целочисленного квадратного массива ann случайными числами, лежащими в диапазоне от mass_min до mass_max. Исходный массив вывести на экран построчно. Заполнить вектор vkсуммами элементов исходного массива, расположенных параллельно главной диагонали (k = 2n – 1).
Для решения этой задачи рассмотрим исходный массив поэлементно:
a11 a12 a13 a14 . . . a1n
a21 a22 a23 a24 . . . a2n
a31 a32 a33 a34 . . . a3n
an1 an2 an3 an4 . . . ann
Заменим элементы исходного массива элементами вычисляемого вектора:
19.Задать элементы целочисленного трехмерного массива massivknm по слоям в виде чисел от 1 до k*n*m . Вывести на экран верхнюю, переднюю и правую грани массива:
Const k = 3; количество слоев
n = 4; количество строк в слое
m = 5; количество столбцов в слое
Var i, j, b, c : Word;
Massiv : Array [1..k, 1..n, 1..m] Of Word;
Begin порядок следования индексов: слой, строка,столбец
c:= 0; рабочая переменная для задания элементов массива
For i:=1 To k Do заполнение слоев массива
For j:=1 To n Do заполнение строк массива
For b:=1 To m Do заполнение столбцов массива
c:= c + 1;
Massiv[i, j, b]:= c;
WriteLn('Верхняя грань:');
For i:=1 To n Do
For j:=1 To m Do
Write(Massiv[1, i, j]:5);
WriteLn('Передняя грань:');
For i:=1 To k Do
For j:=1 To m Do
Write(Massiv[i, n, j]:5);
WriteLn('Правая грань:');
For i:=1 To k Do
For j:=1 To n Do
Write(Massiv[i, j, m]:5);
Результат работы программы:
Верхняя грань:
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
Передняя грань:
16 17 18 19 20
36 37 38 39 40
56 57 58 59 60
Правая грань:
5 10 15 20
25 30 35 40
45 50 55 60
Часто встречающиеся ошибки программирования:
1. Заголовок цикла заканчивается точкой с запятой. Это приводит к тому, что цикл отрабатывает пустой оператор заданное количество раз, и после этого один раз вычисляется тело цикла:
For i := 1 To 100 Do;
s := s + i; в этом случае s = 100
2. При использовании слова To конечное значение параметра цикла превосходит его начальное значение. В этом случае цикл не выполняется ни разу:
For i := 100 To 1 Do
s := s + i; в этом случае s = 0
3. Использование в качестве параметра цикла переменной вещественного типа:
For i := 1.0 To 100.0 Do
s := s + i;
4. Изменение внутри области цикла значения параметра цикла, а также его начального и конечного значения:
For j := m DownTo n Do
a[j] := j + 10;
j := j + 1; ошибка!
m := m + 1; ошибка!
n := n – 1; ошибка!
Множества – это структуры данных, наряду с переменными, массивами и строками.
Понятие множества является одним из основных понятий современной математики.
Под множеством понимается неупорядоченная совокупность неповторяющихся объектов (элементов), обладающих некоторыми одинаковыми свойствами и находящихся в некоторых отношениях между собой и с элементами других множеств: множество учебных заведений, множество студентов в институте и т.д.
Под множеством в Паскале понимается неупорядоченный набор фиксированного количества (не более 255) неповторяющихся однотипных элементов, имеющих общее имя – имя множества.
В отличие от массива – упорядоченной совокупности элементов, в которой каждый элемент однозначно определяется значением своего индекса (индексов), элементы множества таких индексов не имеют. Они размещаются во множестве неупорядоченно, поэтому значение отдельного элемента нельзя прочитать из множества, а можно только установить, входит или нет он в данное множество. Значит, множества используются в тех случаях, когда интерес представляет не конкретное значение отдельного элемента множества, а лишь факт его наличия или отсутствия в данном множестве однотипных элементов.
В Паскале допускаются только множества с заранее определенным числом элементов одного типа, который называется базовым типом множества. Допускаются множества следующих типов:
1. целого (множество целых чисел, не более 255 чисел),
2. логического (множество, состоящее из двух логических констант: TRUE и FALSE),
3. символьного (множество символов таблицы ASCII),
4. перечисляемого,
5. интервального.
Таким образом, в Паскале не определено множество, состоящее из чисел с дробной частью (REAL).
Прежде чем использовать множество в программе, его необходимо описать – назвать его имя и указать базовый тип. Описание множества можно произвести следующими способами:
1. объявлением его имени и типа в разделе описания переменных Var :
Var r : Set Of ‘a ’. . ’c’;
d : Set Of 1 . . 4;
Описано множество r символов алфавита от ‘a’ до ‘c’ и множество d целых чисел 1, 2, 3, 4.
Внимание! Между начальным и конечным значениями интервала ставятся две точки!
2. объявлением типа множества в разделе определения типов Type и его имени – в разделе описания переменных Var :
Type TSymb = Set Of ‘a’ . . ‘c’;
TNumb = Set Of 1 . . 4;
Var r : TSymb;
d : TNumb;
3. заданием множества как типизированной константы:
Constr : Set Of ‘a ’. . ’c’ = [‘a’,’c’];
d : Set Of 1 . . 4 = [2,1,3];
Внимание! Элементы множества перечисляются в квадратных скобках через запятую.
Элементы множества можно задавать следующими способами:
Множество может принимать значения любых наборов элементов, указанных в его описании. Например, описанное ранее множество r может принимать следующие значения:
[‘a’, ‘b’, ‘c’]
[‘a’, ‘b’]
[‘a’, ‘c’]
[ ‘b’, ‘c’]
[‘a’]
[ ‘b’]
[ ‘c’]
[] пустое множество
а множество d - следующие:
[1, 2, 3, 4]
[1, 2, 3]
[1, 3, 4]
[1, 2, 4]
[2, 3, 4]
[1, 2]
[1, 3]
[1, 4]
[2, 3]
[2, 4]
[3, 4]
[1]
[2]
[3]
[4]
[]
Таким образом, любое множество может принимать 2n значений, где n – количество элементов в описании множества.
Порядок следования элементов во множестве не устанавливается, поэтому, например, значения множества [‘a’, ‘b’, ‘c’] и [‘b’, ‘c’, ‘a’] эквивалентны.
При работе со множествами в Паскале можно использовать следующие операции:
+ объединение (сумма) множеств,
* пересечение (произведение) множеств,
- разность множеств,
Inвхождение элемента во множество.
Пересечением двух множеств называется множество, состоящее из элементов, одновременно входящих в оба множества-сомножителя:
[3, 4, 5] * [1, 3, 5] = [3]
[3, 4, 5] * [3, 4, 5] = [3, 4, 5]
[2, 1, 0] * [] = []
[2, 9, 8] * [6, 7] = [] пустое множество
[‘a’, ‘b’, ‘c’] * [‘d’, ‘c’, ‘a’] = [‘a’, ‘c’]
Объединением двух множеств называется множество, состоящее из элементов, входящих хотя бы в одно из множеств-слагаемых:
Разностью двух множеств называется множество, состоящее из элементов множества-уменьшаемого без элементов множества-вычитаемого:
[3, 4, 5] – [1, 3, 5] = [4]
[2, 9, 5] – [3, 7] = [2, 9, 5]
[2, 4] – [5, 4, 2] = []
Эти операции используются для построения выражений, содержащих множества, причем в этих выражениях сначала выполняются операции пересечения, а затем – операции объединения и разности. Порядок выполнения операций может быть изменен с помощью скобок:
sport * smok = [1, 2, 3, 4, 5] * [7, 8] = [] - пустое множество – спортсмены не курят!
4. множество некурящих отличников:
otl – smok = [2, 3, 6, 7] – [7, 8] = [2, 3, 6]
Для проверки вхождения какой-либо константы или переменной в определенное множество используется операция In , результатом которой является TRUE, если это значение входит во множество, и FALSE – если не входит:
5 In [1, 5, 7] = TRUE
‘b’ In [‘a’, ‘c’, ‘d’] = FALSE
Наряду с этими операциями, над множествами определены и операции сравнения, используемые для сравнения однотипных множеств. Пусть A и B -два однотипных множества, тогда:
A <= B равно TRUE, если все элементы множества A входят во множество B:
[5, 3, 2] <= [1, 2, 3, 4, 5] = True
A >= B равно TRUE, если все элементы множества B входят во множество A:
[‘d’, ‘e’, ‘f’, ‘g’] >= [‘d’, ‘g’] = True
A = B равно TRUE, если элементы этих множеств полностью совпадают:
[1, 2, 3] = [3, 2, 1] = TRUE
A <> B равно TRUE, если эти множества различаются хотя бы одним элементом:
[1, 2, 3] <> [5, 2, 1] = TRUE
Выражения со множествами, построенные с помощью операций *, + и - , могут быть использованы в операторах присваивания вида: