Сборник по задачам и примерам Assembler


Множество



Множество

Соня закрыла глаза и задремала. Но тут Болванщик

ее ущипнул, она взвизгнула и проснулась.

—...начинается на М, — продолжала она. — Они

рисовали мышеловки, математику, множество...

Ты когда-нибудь видела, как рисуют множество?

— Множество чего? - спросила Алиса.

— Ничего, — отвечала Соня. — Просто множество!

— Не знаю, — начала Алиса, — может...

— А не знаешь — молчи, — оборвал ее Болванщик.

Льюис Кэрролл. «Алиса в стране чудес»

Множество как структура уровня представления является совокупностью различных объектов, которые могут либо сами являться множествами, либо представлять собой неделимые элементы, называемые атомами.

Множество как структура уровня хранения реализуется двумя способами:

ш простым — в виде данных перечислимого типа; в языках высокого уровня этот тип данных реализуют с помощью типа «множество» (в Pascal) или констант перечислимого типа (в С);

ш сложным — в виде вектора или связного списка.

Отличие этих двух способов в том, что данные перечислимого типа ограниченно поддерживают понятие множества, представляя собой совокупность объектов, которым сопоставлены некоторые значения. При реализации множеств с помощью вектора или связного списка становится возможным реализовать именно математическое понятие множества, согласно которому, над множествами определен ряд операций: объединение, пересечение, разность, слияние, вставка (удаление) элемента и т. д. С данными перечислимого типа эти операции невозможны.

В языке ассемблер также есть средства, позволяющие реализовать оба способа представления множеств. Так, описание данных перечислимого типа поддерживаются с помощью директивы enum. Как и в языках высокого уровня, данные перечислимого типа, вводимые этой директивой, являются константами, которым соответствуют уникальные символические имена. Директива enum имеет следующий синтаксис:

символ_имя enum значение[. значение[, значение....]]

Здесь значение представляет собой конструкцию символ_имя [=число], а символ_ имя — любое символическое имя, не совпадающее с ключевыми словами ассемблера или другими ранее определенными в программе символическими именами. Следующие примеры описания множеств эквивалентны.




- Начало -  - Назад -  - Вперед -