Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
28
Добавлен:
23.03.2015
Размер:
26.11 Кб
Скачать

СПЕЦИФИКАЦИЯ

абстракции данных

"Набор целых чисел 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] }

{--------------------------------------------------------------------}

{ ПОЯСНЕНИЯ: В массиве представления не может быть одинаковых эле- }

{ ментов и массив поддерживается в упорядоченном сост-ии }

{====================================================================}

Соседние файлы в папке INTSET2