AlgStr / Библиотека / ЗАДАЧИ / INTSET2 / INTSET
.DOC
СПЕЦИФИКАЦИЯ
абстракции данных
"Набор целых чисел intset"
intset = DATA TYPE IS create, insert, delete, member, size, choose, equal, similar, copy
ОПИСАНИЕ
Наборы целых чисел intset - это неограниченные математические
множества целых чисел. Наборы целых чисел ИЗМЕНЯЕМЫЕ: операции
insert и delete добовляют и удаляют целые числа из набора.
ОПЕРАЦИИ
create = PROC () RETURNS (intset)
EFFECTS Возвращает новый, пустой набор intset
insert = PROC (S: intset, X: int)
MODIFIES S
EFFECTS Добавляет X к элементам S; после добавления - воз-
вращает Spost = S U {X}, где Spost - это набор зна-
чений в S при возврате из insert.
delete = PROC (S: intset, X: int)
MODIFIES s
EFFECTS Удаляет X из S (т.е. Spost = S - {X}).
member = PROC (S: intset, X: int) RETURNS (bool)
EFFECTS Возвращает значение true, если X Ї S.
size = PROC (S: intset) RETURNS (int)
EFFECTS Возвращает число элементов в S
choose = PROC (S: intset) RETURNS (int)
REQUIRES Набор S не пуст.
EFFECTS Возвращает произвольный элемент S
equal = PROC (S1, S2: intset) RETURNS (bool)
EFFECTS Возвращает значение true, если S1 и S2 - один и тот же
объект intset.
similar = PROC (S1, S2: intset) RETURNS (bool)
EFFECTS Возвращает значение true, если s1 и S2 содержат одинаковые элементы.
copy = PROC (S: intset) RETURNS (intset)
EFFECTS Возвращает новый объект intset, содержащий те же элементы, что и S.
END intset
Функция АБСТРАКЦИИ
для абстракции данных
"Набор целых чисел intset"
REP = array[int]
{====================================================================}
{ Типичный набор данных intset есть: {x1, x2, ..., xn} }
{--------------------------------------------------------------------}
{ Функция АБСТРАКЦИИ есть }
{ A(r) = { r[i] | low(r) <= i <= high(r) } }
{ где { x | p(x) } - есть набор всех таких x, что }
{ p(x) имеет значение true }
{====================================================================}
Функция ИНВАРИАНТ ПРЕДСТАВЛЕНИЯ
для абстракции данных
"Набор целых чисел intset"
REP = array[int]
{====================================================================}
{ ИНВАРИАНТ ПРЕДСТАВЛЕНИЯ есть }
{ Для всех целых i и j таких, что low(r) <= i <= high(r) }
{ r[i] < r[j] }
{--------------------------------------------------------------------}
{ ПОЯСНЕНИЯ: В массиве представления не может быть одинаковых эле- }
{ ментов и массив поддерживается в упорядоченном сост-ии }
{====================================================================}