Меню сайта

Множества в Pascal
Множества

Множество является одним из фундаментальных математических понятий. К операциям и отношениям со множествами сводится большинство математических моделей. Паскаль — один из немногих языков, который имеет встроенные средства для работы со множествами. В отличии от математики, Паскаль использует конечные множества, причем не боле 256 элементов.

Все элементы множества долж­ны быть одного порядкового типа (например, integer, word, longint).

Примеры обозначения множеств:

[1,2,3]

[] -– пустое множество

[2+х, 8-3] -– множество может быть задано выражением.

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

Операции над множествами сводятся к поразрядным логическим операци­ям над последовательностями битов. Например, объединение множеств выпол­няется путем поразрядного логического сложения битов.

Объединение мно­жеств х -у

х: 0110000010

у:0111111000

х — -у: 1101111010

Множества в Паскале— это наборы однотипных, логически связанных между собой объектов, которые рассматриваются как единое целое. Причем ха­рактер связи подразумевается программистом и никак не контролируется Пас­калем. Например, множество согласованных букв кириллицы- множество про­стых чисел от 1 до 100.


Каждый объект в множестве называется —элементом множества. —Все эле­менты множества должны принадлежать к одному из скалярных типов. Этот тип называется —базовым типом.Базовый тип задается диапазоном или пере­числением. Если множество не имеет элементов, оно называется —пустым —([]).

Для изображения множеств используют квадратные скобки, в которые за­ключается перечень элементов.

Пример -1:

type — — color=(white, red, black)-

Number=set of 1..31- —{явноеописание}

Var — — — — col: set of color- —{неявноеописание}

nl, n2: number- letter: set of char- —{неявноеописание}

Попытка присвоить недопустимый символ вызовет прерывание.

В Паскале разрешены следующие операции над множествами: сравнения (=, &lt- &gt-, &gt- =, &lt- =), n (and), u (or), разность мно­жеств (-), включение в множество — -in.

«=» два множества равны тогда и только тогда, когда они имеют одинако­вые элементы. Порядок следования роли не играет.

«&lt-&gt-» два множества не равны, если они отличаются хотя бы одним элементом.

«&gt-=» используется для определения принадлежности одного множества – другому.
A&gt-=B, значит все элементы множества B содержатся в множестве A.

«in» используется для проверки принадлежности какого-либо значения множеству. Пусть — — — — х~а’, y=’z’, В — множество символов ‘а’..’п’. Тогда х in В true, у in В-false.

Обычно операция in используется в условном операторе. Например, вме­сто:

If (a=l) or (а=5) or (а=7) or (а=11) or (а=15) then…,

можно записать: —if a in [ 1,5,7,11,15] then…,

т. е. «in» позволяет более эффективно производить сложные проверки ус­ловий. При этом множество не обязательно предварительно описывать в раз­деле описаний.

Если необходимо проверить, не принадлежит ли п множеству А, можно

записать: —Not (n in А) —(неверно: —n Not in А).

Объединение множеств -, «+». —Объединением двух множеств является третье множество, содержащее элементы обоих множеств (выполняется путем поразрядного логического сложения).

Пусть А:=[ 1,2,3], В:=[4,5], С=А+В, тогда С[1,2,3,4,5].

Пересечение множеств ?, «*» — содержит элементы, входящие одновре­менно в оба множества.

Пусть А:=[1,2,3], В:=[1,4,2,5], тогда А*В=[1,2].

Разность множеств «-» — третье множество, которое со­держит элементы первого множества, не входящие во второе:

Пусть А := [1,2,3,4], В:= [3,4,1], тогда А-В=[2].

Преимущества использования типа set: значительно упрощаются сложные условия в операторе if, увеличивается степень наглядности, экономятся память, время компиляции и выполнения.

Отрицательные стороны: отсутствуют средства ввода-вывода элементов.

Пример 2.

Заполнить мн
ожество A путем ввода n значений:

const — — — n=20-
var — — — — — -A: set of 1 ..200-

j, х : byte-

begin — — — A:=[]-

for j := 1 to n do

begin

readln(x)-

A:=A+[x]

end-

for x := 1 to 200 do

if x in A then writeln(x)-

end-

Категория: Обучение Pascal | Дата: 25.04.13

Меню раздела
Блок