Множества в Turbo Pascal.
Множество- это структурированный тип данных, представляющий собой набор данных, взаимосвязанных по какому-либо признаку или группе признаков объектов.
Каждый отдельный объект называется элементом множества. Все элементы множества могут принадлежать любому скалярному типу, кроме вещественного. Этот тип называется базовым типом множества.
Базовый тип задается диапазоном или перечислением.
Константы множественного типа записываются в виде заключенной в квадратные скобки последовательности элементов или интервалов базового типа, разделенных запятыми, например:
['A', 'C'] [0, 2, 7] [3, 7, 11..14]. : [1,2,3,4],[‘a’,’b’,’c’,’d’],[‘a’..’я’].
Если множество не имеет элементов, то оно называется пустым и обозначается []
Для описания множественного типа используется словосочетание SET OF (множество из). Множество можно описать как новый тип в разделе type
Type
<Имя типа>=set of<элемент1, элемент 2, элемент3…элемент n>;
Var
<идентификатор>:<имя типа>
или описать переменные используя тип set в разделе переменных.
Var
<идентификатор>:set of < элемент1, элемент 2, элемент3…элемент n >;
Пример:
Type
Simvol=set of ‘a’..’h’;
Number=set of 1..31;
Var
S: Simvol;
N: Number;
D: set of char;
В данном примере переменная s может принимать любые значения символов от ‘a’ до ‘h’, N от 1 до 31.попытка присвоить любые другие значения переменным вызовет программное прерывание. Количество элементов множества не должно превышать 226. Объем памяти, занимаемый одним элементом множества, составляет 1 бит.
Операции над множествами.
При работе с множествами допускается использование операций отношения, объединения, пересечения, разности, операции IN. Результатом всех этих операций может быть истина(true) или ложь (false).
Операция равно(=).
Два множества считаются равными, если они состоят из одних и тех же элементов. Порядок следования элементов значения не имеет.
Значение А | Значение В | Выражение | Результат |
[1,2,3,4] | [1,2,3,4] | A=B | True |
[‘a’,’b’,’c’] | [‘a’,’c’] | A=B | False |
[‘a’..’z’] | [‘z’..’a’] | A=B | True |
Операция не равно(<>).
Два множества называются не равными, если они отличаются по базовому типу или значению хотя бы одного элемента.
Операция больше или равно (меньше или равно).
Пусть даны два множества А и В. Множество А>=B, если все элементы множества В содержатся в множестве А.
Операция IN
Операция IN используется для проверки принадлежности какого-либо значения данному множеству.
Значение А | Значение В | Выражение | Результат |
[1,2,3] | A in B | true | |
‘v’ | [‘a’..’h’] | A in B | False |
[‘1’,’2’,’3’] | A in B | False |
При использовании операции In множество не обязательно описывать, достаточно перечислить его элементы в квадратных скобках. Операция позволяет эффективно производить сложные проверки условий. Например, выражение
If (a=1)or(a=2)or(a=3)or(a=4)or(a=5)or(a=6) then…
можно заменить более коротким
if a in [1..6] then…
Объединение множеств.(+)
Объединением двух множеств называется новое множество, которое состоит из элементов обоих множеств.
Значение А | Значение В | Выражение | Результат |
[1,2,3] | [1,2,69,9] | A+B | [1,2,3,9,69] |
[‘a’] | [‘s’..’z’] | A+B | [‘a’, ‘s’..’z’] |
[] | [] | A+B | [] |
Пересечение множеств.(*)
Пересечением двух множеств называется третье множество, которое содержит элементы, входящие в оба множества.
Значение А | Значение В | Выражение | Результат |
[1,2,3] | [1,2,69,9] | A*B | [1,2] |
[‘a’] | [‘s’..’z’] | A*B | [] |
[] | [] | A*B | [] |
Разность множеств.(-)
Разностью двух множеств называется третье множество, которое содержит элементы первого, не входящие во второе.
Значение А | Значение В | Выражение | Результат |
[1,2,3] | [1,2,69,9] | A-B | [3] |
[‘a’] | [‘s’..’z’] | A-B | [‘a’] |
[3] | [3,4,5] | A-B | [] |
Использование в программе типа set дает преимущества: упрощаются сложные условия для условных, циклических операторов, алгоритмы наиболее наглядны.
Лекция 32.
Вопросы:
1. Что такое тип множество. Как описать переменные этого типа.
2. Перечислить операции над множествами. Охарактеризовать.
Основные задачи по теме множества:
Заполнить множество М, состоящее из чисел 1..50 с клавиатуры 10 числами.
Program _;
Var M: set of 1..50;
X,I: integer;
Begin
M:=[];
For i:= 1 to 10 do
Begin
Writeln(‘Введите ’,I,’элемент множества’);
Readln(x);
M:=m+[x];
End;
End.
В Turbo Pascal отсутствуют средства ввода-вывода множества, поэтому чтобы просмотреть значения каждых переменных, необходимо выполнить программу по шагам, просматривая результаты в окне просмотра.
Выполнение программы по шагам: Run→Trace Info(F7).
Просмотр текущих значений переменных, выражений Debug→Watch. При выполнении данной команды на экране появляется окно, в которое необходимо ввести имена переменных ( при помощи клавиши insert) значения которых мы хотим просматривать.
Определить сколько в данной строке согласных и гласных букв.
program _;
uses crt;
type lette=set of 'А'..'я';
var let,gl_l,sog_l: lette;
i,g,sg: integer;
s:string;
begin
clrscr;
let:=['А'..'я'];
gl_l:=['А','а','Е','е','И','и','О','о',У','у','Ы','ы','Э'..'Я','э'..'я'];
Sog_l:=let-gl_l;
Writeln('введите строку');
readln(s);
for i:=1 to length(s) do
begin
if (s[i] in gl_l) then g:=g+1;
if (s[i] in sog_l) then sg:=sg+1 ;
end;
writeln('гласных букв в предложении ',g);
writeln('coгласных букв в предложении ',sg);
Writeln;
end.
Составить программу, которая вырабатывает и выводит на экран дисплея наборы случайных чисел для игры в "Спортлото 5 из 36".
Для заполнения каждой карточки спортлото необходимо получить набор из пяти псевдослучайных чисел. К этим числам предъявляются два требования:
-числа должны находиться в диапазоне 1..36;
-числа не должны повторяться.
Program Lotto;
uses crt;
var kol,x:integer;
m:set of 1..36;
begin
clrscr;
randomize;
textcolor(5);
writeln('Вас приветствует игра 5 из 36');
writeln('сегодня мы назовем выигрышные номера');
kol:=1;
m:=[];
while kol<=5 do
begin
x:=random(36);
if not(x in M) then
begin
m:=m+[x];
kol:=kol+1;
write(x,' ');
end;
end;
readln;
end.
Лекция 33.
Дата добавления: 2016-05-25; просмотров: 1135;