Скачиваний:
24
Добавлен:
01.05.2014
Размер:
356.35 Кб
Скачать

Использование процедуры "з"

Интерфейс этой программы является таблично-управляемым. Пользователь опрашивает базу данных при помощи процедуры "з". У процедуры "з" имеется два аргумента: имя существующего состояния и имя со стояния, которое следует образовать в качестве потомка текущего со стояния. Процедура "з" выводит таблицу, состоящую из имен всех атрибутов базы данных, в которой хранятся сведения о бумаге. Если для атрибута уже установлен критерий выбора в существующем состоянии, то этот критерий автоматически печатается в надлежащем слоге таблицы, Если критерий выбора для атрибута не был установлен, то ничего не печатается, и пользователь может ввести этот критерий. Если же пользователь вместо ввода критерия нажмет клавишу возврата каретки, то по отношению к данному атрибуту не будут применяться критерии выбору

База данных со сведениями о бумаге

В базе данных со сведениями о бумаге имеется пять атрибутов, описывающих марку, вес, цвет, поверхность бумаги и ее тип (указывается, поступает ли бумага в виде листов или в виде рулонов). Вот эта б>п;1 данных:

% Состояние Тип Марка .Вес Поверхн. Цвет

вед_бум (бумага, листы, непрозрачная, 60, гладкая, голубой).

вед_бум (бумага, листы, непрозрачная, 45, матовая, зеленый)

вед_бум (бумага, листы, индексная, 50, матовая, красный).

вед_бум (бумага, листы, непрозрачная, 70, глянцевая, белый).

вед_бум (бумага, рулоны, непрозрачная, 100, гладкая, бежевый)

вед_бум (бумага, рулоны, индексная, 70, глянцевая, красный).

вед_бум (бумага, рулоны, непрозрачная, 110, гладкая, голубой).

вед_бум (бумага, рулоны, офсетная, 160, глянцевая, красный)

Процедура "отобразить" выводит все позиции ведомости, связанные с нужным состоянием. Эта процедура имеет один аргумент - имя состояния.

| ?— отобразить (бумага).

листы непрозрачная 60 гладкая голубой

листы непрозрачная 45 матовая зеленый

листы индексная 50 матовая красный

листы непрозрачная 70 глянцевая белый

рулоны непрозрачная 100 гладкая бежевый

рулоны индексная 70 глянцевая красный

рулоны непрозрачная 110 гладкая голубой

рулоны офсетная 160 глянцевая красный

да

Опрос базы данных (добавление нового состояния)

Для добавления нового состояния с именем « красная_рулоны » , которое должно располагаться под состоянием «бумага» и содержать все позиции ведомости, описывающие красную бумагу в рулонах, пользователь должен ввести следующий запрос:

% Существует Новое

| ? - з (бумага, красная_рулоны).

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

тип? рулоны

марка?

вес?

цвет? красный

поверхность?

Пользователь ввел значение «рулоны» в ответ на подсказку {{тип?}}, значение « красный » в ответ на подсказку «цвет? » и нажал клавишу возврата каретки в ответ на остальные сообщения-подсказки. В результате данного обращения к процедуре "з" образуется новое состояние « красная_рулоны » как потомок состояния « бумага » . Пользователь может исследовать это состояние при помощи процедур "отобразить" и "характер".

| ?— отобразить (красная_рулоны) .

бумага рулоны индексная 70 глянцевая красный

бумага рулоны офсетная 160 глянцевая красный да

| ?- характер (красная—рулоны).

тип: рулоны марка:

вес:

цвет: красный поверхность:

да

Добавление состояния {{ тяжелая— красная -.рулоны »

Предположим, что пользователь опять решил применить процедуру "з" для поиска позиций ведомости, в которых содержатся сведения о красной рулонной бумаге веса 160. При этом будет образовано новое состояние «тяжелая _красная„рулоны)), являющееся потомком порождающего состояния « красная „рулоны)).

%

| ?- з(красная_рулоны, тяжелая_красная_рулоны) .

тип? рулоны

марка?

вес? 160

цвет? красный

поверхность?

Поскольку состояние «тяжелая_красная_рулоны» наследует все значения атрибутов, установленные для состояния «красная_рулоны » , процедура "з" не запрашивает у пользователя данных о марке и цвете бумаги. Вместо этого она отображает значения этих атрибутов, которые были установлены ранее для состояния «красная_рулоны». Пользователь ввел значение 160 в ответ на подсказку «вес?» и нажал на клавишу возврата каретки в ответ на два других сообщения-подсказки.

| ?— отобразить (тяжелая_красная_рулоны).

бумага рулоны офсетная 160 глянцевая красный да

| ?— характер (тяжелая_красная_ рулоны) .

тип: рулоны марка:

вес: 160 цвет: красный поверхность:

да

Соседние файлы в папке Гл.6,7,Прилож.,Допол