s
Sesiya.ru

Сложные типы данных. Множества (Turbo Pascal 7.0)

Информация о работе

Тема
Сложные типы данных. Множества (Turbo Pascal 7.0)
Тип Лекции
Предмет Программирование
Количество страниц 3
Язык работы Русский язык
Дата загрузки 2014-06-30 19:58:52
Размер файла 14.76 кб
Количество скачиваний 2

Узнать стоимость работы

Заполнение формы не обязывает Вас к заказу работы

Скачать файл с работой

Помогла работа? Поделись ссылкой

Сложные типы данных.

Множества

Тип "множество" является одним из сложных типов данных системы программирования Turbo Pascal 7.0. Тип "множество" является множеством всевозможных сочетаний объектов исходного порядкового типа. Число элементов исходного множества в Turbo Pascal не должно превышать 256. Все значения базового типа, образующие конкретные значения множественного типа, должны быть различны. Порядок "расположения" элементов в множестве никак не фиксируется. Это соответствует принятой в математике трактовке множества как бесповторной неупорядоченной совокупности объектов.
Описание (декларация) типа множество.
Для задания типа "множество" следет использовать служебные слова set и of, а затем указать элементы этого множества, как правило, в виде перечисления или диапазона, например:
Type
Alfa = set of A..Z;
Ten = set of 0..9;
Count = set of (Plus, Minus);
Введя тип "множество", можно задать переменные этого типа.
Var
CAlfa: Alfa;
U233: Ten;
Так же как и для других структурированных типов тип множество можно задать непостредственно при задании переменных.
Var
CAlfa: set of A..Z
Operation: set of (Plus, Minus);
U233: set of 0..9;
C: set of char;
Присвоение для переменных типа множество.
Множеству можно в программе присвоить то или иное значение. Обычно значение задаётся с помощью так называемого конструктора множества. Конструктор задаёт множество элементов с помощью перечисления в квадратных скобках выражений, значения которого дают элементы этого множества. Допустимо использовать диапазоны элементов.
CAlfa := [A, B, C];
C := [chr(0)..chr(31), D, F];
В каждое множество включается и т.н. пустое множество [], не содержащее никаких элементов. Конструктор множества можно использовать и непосредственно в операциях над множествами.
Операции над множествами.
Так же как и в математике в системе программирования Turbo Pascal 7.0 над множествами применимы следующие операции:
+ - объединение множеств. C := A+B;
Каждый элемент множества C является элементом либо множества A, либо множества В.

- - разность множеств. C := A-B;
Каждый элемент множества C является элементом множества A, но не является элементом множества В.
* - пересечение множеств. C := A*B;
Каждый элемент множества C является элементом множества A и B одновременно.
= - проверка эквивалентности двух множеств. A = B;
Множество A равно множеству B, если каждый элемент множества A является элементом множества B, и наоборот, каждый элемент множества B является элементом множества A. Результат операции логическая величина.
<> - проверка неэквивалентности двух множеств. A <> B;
Множество A не равно множеству B, если множество A содержит хотя бы один элемент, не являющийся элементом множества B, или (и) наоборот, множество B содержит хотя бы один элемент, не являющийся элементом множества A. Результат операции логическая величина.
<= - проверка, является ли левое множество подмножетвом правого.
A <= B; Множество A является подмножеством множества B, если все элементы множества A являются элементами множества B. Результат операции логическая величина.
>= - проверка, является ли правое множество подмножеством левого.
A >= B; Действие операции аналогично действию предыдущей операции. Результат операции логическая величина.
in - проверка, входит ли элемент (слева) в множество (справа).
C in B; результат операции логическая величина.
Примеры программ.
ПРИМЕР 1.
Из множества целых чисел 1..20 выделить: множество чисел, делящихся на 6 без остатка; множество чисел делящихся на 2 или на 3 без остатка. Вывести содержимое этих множеств на экран.
Program a6_23;

Var
N6 : set of integer; {множество чисел, делящихся на 6}
N23 : set of integer; {множество чисел, делящихся на 2 и 3}
k: integer; {параметр цикла с параметром}

Begin

N6 := []; {"обнуление" множества N6}
N23 : = []; {"обнуление" множества N23}

{ формирование множеств}

For k:=1 to 20 do begin
if k mod 6 = 0 then N6 := N6 + [k];
if (k mod 2 = 0) or (k mod 3 = 0) then N23 := N23 + [k];
end;

{ вывод содержимого множеств}

Writeln( На 6 без остатка делятся числа: );
for k:=1 to 20 do
if k in N6 then write(k:3);

Writeln;
Writeln( На 2 или 3 без остатка делятся числа: );
for k:=1 to 20 do
if k in N6 then write(k:3);

Readln; { пауза }

End.
ПРИМЕР 2.
Ввести строку символов, состоящую из латинских букв цифр и пробелов. Осуществить проверку правильности введённых символов.
Program Verify_string;

Var
s: string;
m: set of char;
k: integer;
Done: boolean;

Begin

{ формирование контрольного множества символов}
m := [ 0..9, A..Z, a..z, ];

{ ввод строки
----------- }
Writeln( Введите строку: );
Readln(s);

{ проверка правильности строки}
done := true;
for k:=1 to Length(s) do
if not (s[k] in m) then done := false;

{ вывод результата}
if done then
writeln(Правильная строка. );
else
writeln(Неправильная строка. );

Readln; { пауза }

End.

© Copyright 2012-2019, Все права защищены.