Цель: показать практическое использование этого типа данных при решении задач.
Множества можно описать в разделе описания типов:
type имя множества = set of тип элементов;
var идентификатор переменной : имя множества;
или же в разделе переменных:
var идентификатор переменной : set of имя типа элементов;
Тип элементов задается диапазоном или перечислением идентификаторов (в последнем случае обязательны круглые скобки), например:
type den = set of 1..5;
этим мы определили множество с именем den, значениями которого могут быть наборы целых чисел в диапазоне от 1 до 5: [], [1], [2], [3], [4], [5], [1,2], [2,3], [1,3], [2,3] ,[1,2,3], [1,2,3,4,5] и другие сочетания (в данном случае упорядоченные по возрастанию). Для экономии времени можно взять меньший диапазон значений.
var а: den; описана переменная типа множества den.
Описание в разделе переменных может выглядеть так:
Var s: set of'А'..'В';
Описана переменная s как множество, значениями которого могут быть: [], ['А'],['В'] и ['А','В'].
Или
var kinder : set of (inna,ivan);
Описана переменная kinder как множество, значениями которого могут быть: [], [inna],[ ivan] и [inna, ivan].
Множество можно описать в разделе констант:
const p=[3,7,9]; (простая константа)
типизированная константа так:
const m:set=[‘a’..’z’];
или так: const mn0:set of char=[‘a’..’z’];
Всe элементы множества должны иметь одинаковый тип (char, boolean, ограниченный, перечисляемый). Элементами множества могут быть выражения. Число элементов множества называют мощностью множества (число элементов до 255, поэтому в описании множества нельзя указать типы integer и real). Порядок следования элементов и способ их записи не играет роли: одинаковы множества [1,2,3], [3,2,1], [3,1,2], [1+2,1,2], [1..3], [3,3,3,1,2,3], но, если множество обозначается как диапазон, важно, чтобы начальный элемент был меньше, чем конечный, иначе множество будет считаться пустым. Например, ['z'..'а'] - пустое множество.
[ ] - также пустое множество.
При работе с множествами можно использовать следующие правила или операции:
* - пересечение множеств; с:=a*b, где а и b - переменные типа множество.
+ - объединение множеств; с:= а+ b ;
- - разность множеств; с:=а- b ;
=, <>, >=, <= - проверки на равенство, неравенство и т.д.
а> b и т.д.
in - проверка на принадлежность; d in а.
Практическая работа.
label 1;
type mn=set of char;
var ml,m2,m3,m4:mn;
a,b,m:integer;
c:char;
u:boolean;
bs:string[5];
begin
l:ClrScr;
GotoXY(10,4); ,
Writeln('Bы работаете с программой демонстрации операций с множествами');
Writeln;
WritelnC Создадим два множества, в каждом из которых по 5-10 символов:');
т1:=П; ,
т2:=[];
тЗ:=[];
т4:=['д';Д'Д','и];
Writeln; ;
WriteC Введите мощность (число элементов) множества ml:');
repeat
GotoXY(55,8);
ClrEol;
Readln(bs);
val(bs,b,a);
until (a=0) and ((b>l) and (b<20));
WritelnC При вводе элементов множества клавишу Enter использовать не надо');
WriteC Вводите множество ml из ',Ь,' символов:');
for m:=l to b do WriteC Проверка вхождения: ml >= m2 ');
u:=(ml >= m2);
Writeln(u);
Writein; ,
WriteC Введите какой-либо символ:');
c:=ReadKey;
Write(c);
Writein;
WriteC Проверка вхождения:',c,'inml ');
u:=c in ml;
Writeln(u);
WriteC Проверка вхождения:',c,'in m2 ');
u:~c in m2;
Writeln(u);
Writein;
Writein;
WriteC Еще будете работать с программой? (д/н)');
c:=ReadKey;
if с in m4 then Goto 1;
end.
После загрузки предлагаем им познакомиться с описанием программы, но не заостряем внимание на самой структуре, так как нас интересует работа операций.
Предлагаем учащимся запустить программу и в дальнейшем следовать указаниям программы.
После выполнения этой работы предлагаем учащимся выполнить еще одну работу, предварительно объяснив им условие задачи:
Задано множество целых положительных чисел от J до п . Создать из элементов этого множества такие подмножества, элементы которых удовлетворяют следующим условиям:
элементы подмножества не больше 10;
элементы подмножества кратны 8;
Дата: 2019-12-22, просмотров: 349.