Смекни!
smekni.com

Разработки интеллектуальной справочной системы по музыкальным произведениям (стр. 4 из 9)

Выходные параметры: вид данного исполнителя.

Способ вызова: при выборе исполнителя из ListBox.

Спецификацияоперации kind_of_performer.m4scp.

Идентификатороперации: descr_kind_of_performer.

Полноеимя: \operation\kind_of_performer.m4scp.

Комментарий: операция поиска в БЗ вида данного исполнителя.

Автор: Лукша Н.В.

6. Классификация операции year_of_foundation.m4scp.

Названиеоперации: year_of_foundation.

Предметная ориентация: МП.

Входные параметры: узел с именем исполнителя.

Выходные параметры: год основания данного исполнителя.

Способ вызова: при выборе исполнителя из ListBox.

Спецификацияоперации year_of_foundation.m4scp.

Идентификатороперации: descr_year_of_foundation.

Полноеимя: \operation\year_of_foundation.m4scp.

Комментарий: операция поиска в БЗ года основания данного исполнителя.

Автор: Лукша Н.В.

7. Классификация операции type_rec.m4scp.

Название операции: type_rec.

Предметная ориентация: МП.

Входные параметры: узел с именем альбома.

Выходные параметры: тип записи данного альбома.

Способ вызова: при выборе исполнителя из ListBox.

Спецификация операции type_rec.m4scp.

Идентификатор операции: descr_type_rec.

Полноеимя: \operation\type_rec.m4scp.

Комментарий: операция поиска в БЗ типа записи данного альбома.

Автор: Лукша Н.В.

8. Классификация операции vol.m4scp.

Название операции: vol.

Предметная ориентация: МП.

Входные параметры: узел с именем альбома.

Выходные параметры: тип записи данного альбома.

Способ вызова: при выборе исполнителя из ListBox.

Спецификация операции vol.m4scp.

Идентификатор операции: descr_vol.

Полноеимя: \operation\vol.m4scp.

Комментарий: операция поиска в БЗ типа записи данного альбома.

Автор: Лукша Н.В.

9. Классификация операции style_of_track.m4scp.

Название операции: style_of_track.

Предметная ориентация: МП.

Входные параметры: узел с именем альбома.

Выходные параметры: тип записи данного альбома.

Способ вызова: при выборе исполнителя из ListBox.

Спецификация операции style_of_track.m4scp.

Идентификатороперации: descr_style_of_track.

Полноеимя: \operation\style_of_track.m4scp.

Комментарий: стиль МП.

Автор: Лукша Н.В.

10. Классификация операции rewards.m4scp.

Название операции: rewards.

Предметная ориентация: МП.

Входные параметры: узел с именем альбома.

Выходные параметры: тип записи данного альбома.

Способ вызова: при выборе исполнителя из ListBox.

Спецификация операции rewards.m4scp.

Идентификатор операции: descr_rewards.

Полноеимя: \operation\rewards.m4scp.

Комментарий: награды данного альбома.

Автор: Лукша Н.В.

11. Классификация операции type_rec.m4scp.

Название операции: type_rec.

Предметная ориентация: МП.

Входные параметры: узел с именем альбома.

Выходные параметры: тип записи данного альбома.

Способ вызова: при выборе исполнителя из ListBox.

Спецификация операции type_rec.m4scp.

Идентификатор операции: descr_type_rec.

Полноеимя: \operation\type_rec.m4scp.

Комментарий: операция поиска в БЗ типа записи данного альбома.

Автор: Лукша Н.В.

12. Классификация операции rating.m4scp.

Название операции: rating.

Предметная ориентация: МП.

Входные параметры: узел с именем альбома.

Выходные параметры: тип записи данного альбома.

Способ вызова: при выборе исполнителя из ListBox.

Спецификация операции rating.m4scp.

Идентификатор операции: descr_rating.

Полноеимя: \operation\rating.m4scp.

Комментарий: рейтинг данной композиции.

Автор: Лукша Н.В.

13. Классификация операции label_rec.m4scp.

Название операции: label_rec.

Предметная ориентация: МП.

Входные параметры: узел с именем альбома.

Выходные параметры: тип записи данного альбома.

Способ вызова: при выборе исполнителя из ListBox.

Спецификация операции label_rec.m4scp.

Идентификатор операции: descr_label_rec.

Полноеимя: \operation\label_rec.m4scp.

Комментарий: поиск лейбла звукозаписи.

Автор: Лукша Н.В.


3.1.5 Декомпозиция операций на подпрограммы и содержательная структура библиотеки программ специфицированных операций

В написанных scp-операциях подпрограммы не использовались.

3.2 Алгоритмы и исходные тексты программ, реализующие операции машины обработки знаний прототипа интеллектуальной справочной системы

· поиск альбома по описанию (файл search_by_param.m4scp)

· входные параметры: узлы, характеризующие искомый альбом;

· выходные параметры: все альбомы подходящие под данное описание.

Алгоритм:

Делаем копию входных параметров.

Проверяем первый параметр.

Находим все альбомы, которые удовлетворяют п.2 и объединяем их в множество 1.

Проверяем второй параметр (если такового нет, переходим п.10).

Находим все альбомы, которые удовлетворяют п.4 и объединяем их в множество 2.

Проверяем третий параметр (если такового нет, переходим в п.9).

Находим все альбомы, которые удовлетворяют п.6 и объединяем их в множество 3.

Находим пересечение множеств 1 и 3 и записываем в множество 1.

Находим пересечение множеств 1 и 2 и записываем в множество 1.

Выводим множество 1 на новый лист.

Пример диалога:


Рисунок 3.2.1 - вопрос «Поиск альбома по описанию»

Рисунок 3.2.2 - ответ на вопрос «Поиск альбома по описанию»

Исходный текст операции:

//#Операция поиска альбома по его описанию

#include "scp_keynodes.scsy"

#include "../seb/planimetry.scsy"

procedure(search_by_param,

[[

sheet_type = "/proc/agents/shell/keynode/SCgSheet";

sheet_title = /"Операция прошла успешно"/;

atr1 = "/proc/keynode/1_";

atr2 = "/proc/keynode/2_";

ui_information;

layout;

"MB_TITLE_QUERY_RESULT" = /"Результатзапроса"/;

"MB_TEXT_METKA" = /"Метка"/;

"MB_TEXT_ERROR1" = /"Неравны"/;

"MB_TEXT_ERROR2" = /"А сломалося!"/;

"Альбомы";

"описание*";

"тип записи*"

]],

[{

sheet,

shift,

node,

node1,

node_temp,

node_temp1,

arc,

arc1,

arc2,

attr_arc,

selected_els,

selected_els_copy,

result_set,

result_set1,

result_set2,

temp_node_with_param,

test_node,

node_param,

result,

set_albums_copy,

node_album,

set_album_param,

temp_node,

temp_set_1,

temp_set_2,

temp_set_3,

temp_set_5,

temp_set_0,

resultSet1,

resultSet2,

resultSet3,

resultSet4,

node_out_resSet2,

node_out_resSet3,

node_out_resSet4,

output_set

}],

{[

1_: in_: selected_els,

2_: in_: sheet,

3_: in_: shift

]}

)

genEl([

1_: assign_: node_: output_set

])

genEl([

1_: assign_: node_: result_set

])

genEl([

1_: assign_: node_: result_set1

])

genEl([

1_: assign_: node_: result_set2

])

//#Копия selected_els_copy входныхданных

searchSetStr3([

1_: fixed_: selected_els,

2_: assign_: const_: pos_: arc_: arc,

3_: assign_: node_: const_: node,

set3_: assign_: selected_els_copy

])

//#Выделяемодинизэлементов temp_node_with_param множества selected_els_copy

searchElStr3([

1_: fixed_: selected_els_copy,

2_: assign_: arc_: pos_: const_: arc,

3_: assign_: node_: temp_node_with_param

])

//#Удаляемдугу arc проведеннуюиз selected_els_copy к temp_node

eraseEl([

1_: fixed_: arc

])

//#Делаемкопию set_albums_copy всехальбомов

searchSetStr3([

1_: fixed_: "Альбомы",

2_: assign_: const_: pos_: arc_: arc,

3_: assign_: node_: const_: node,

set3_: assign_: set_albums_copy

])

//#Проверяем описание каких альбомов удовлетворяет узел temp_node_with_param

//#Берем один альбом node_album из множества альбомов set_albums_copy

label(other_album)

searchElStr3([

1_: fixed_: set_albums_copy,

2_: assign_: arc_: pos_: const_: arc,

3_: assign_: node_: const_: node_album

],,not_other_album)

//#Удаляемдугу arc проведеннуюиз set_albums_copy к node_album

eraseEl([

1_: fixed_: arc

])

//#Найдеммножество set_album_param всехописанийальбома node_album

//#---------------1_проходимпервуюпару_------------------

searchSetStr5([

1_: assign_: const_: node_: node,

2_: assign_: pos_: arc_: const_: arc,

3_: fixed_: node_album,

4_: assign_: pos_: arc_: const_: arc1,

5_: fixed_:atr1,

set1_: assign_: resultSet1

])

searchSetStr3([

1_: fixed_: "описание*",

2_: assign_: pos_: arc_: const_: arc,

3_: assign_: node,

set3_: assign_: resultSet2

])

selectYStr3([

1_: fixed_: resultSet1,

2_: assign_: const_: pos_: arc,

3_: assign_: node_ : node,

set3_: fixed_: resultSet2

])

searchElStr3([

1_: fixed_: resultSet2,

2_: assign_: const_: pos_: arc,

3_: assign_: node_ : node_out_resSet2

])

searchSetStr5([

1_: fixed_: node_out_resSet2,

2_: assign_: pos_: arc_: const_: arc,

3_: assign_: const_: node_: node,

4_: assign_: pos_: arc_: const_: arc1,

5_: fixed_:atr2,

set3_: assign_: resultSet3

])

//#---------------2_проходимтройку_------------------

searchElStr3([

1_: fixed_: resultSet3,

2_: assign_: const_: pos_: arc,

3_: assign_: node_ : node_out_resSet3

])

searchSetStr3([

1_: fixed_: node_out_resSet3,

2_: assign_: pos_: arc_: const_: arc,

3_: assign_: node,

set3_: assign_: resultSet4

])

//#Альбомы описываются по трем критериям, проверяем каждый из

//#---------------1_Проверка по типу записи_--------------

label(other_handler)

searchElStr3([

1_: fixed_: resultSet4,

2_: assign_: const_: pos_: arc,

3_: assign_: node_ : node_out_resSet4

],,other_album)

//#Удаляемдугу arc проведеннуюиз resultSet4 к node_out_resSet4

eraseEl([

1_: fixed_: arc

])

//#--------Ищем альбом по его введенному описанию---------

searchSetStr5([

1_: assign_: const_: node_: node,

2_: assign_: pos_: arc_: const_: arc,

3_: fixed_: node_out_resSet4,

4_: assign_: pos_: arc_: const_: arc1,

5_: fixed_:atr1,

set1_: assign_: resultSet1

])

searchSetStr5([

1_: assign_: const_: node_: node,

2_: assign_: pos_: arc_: const_: arc,

3_: fixed_: temp_node_with_param,

4_: assign_: pos_: arc_: const_: arc1,

5_: fixed_:atr2,

set1_: assign_: resultSet2

])

selectYStr3([

1_: fixed_: resultSet1,

2_: assign_: const_: pos_: arc,

3_: assign_: node_ : node,

set3_: fixed_: resultSet2

],,other_handler)

genElStr3([

1_: fixed_: result_set,

2_: assign_: const_: pos_: arc,

3_: fixed_: node_album

],other_album,)

label(not_other_album)

////////////////////////////////////////////////////////////////////////

////

//#Выделяемодинизэлементов temp_node_with_param множества selected_els_copy

searchElStr3([

1_: fixed_: selected_els_copy,

2_: assign_: arc_: pos_: const_: arc,

3_: assign_: node_: temp_node_with_param

],,output)

//#Удаляемдугу arc проведеннуюиз selected_els_copy к temp_node

eraseEl([

1_: fixed_: arc

])

//#Делаемкопию set_albums_copy всехальбомов

searchSetStr3([

1_: fixed_: "Альбомы",

2_: assign_: const_: pos_: arc_: arc,

3_: assign_: node_: const_: node,

set3_: assign_: set_albums_copy

])

//#Проверяем описание каких альбомов удовлетворяет узел temp_node_with_param

//#Берем один альбом node_album из множества альбомов set_albums_copy

label(other_album1)

searchElStr3([

1_: fixed_: set_albums_copy,

2_: assign_: arc_: pos_: const_: arc,

3_: assign_: node_: const_: node_album

],,not_other_album1)

//#Удаляемдугу arc проведеннуюиз set_albums_copy к node_album

eraseEl([

1_: fixed_: arc

])

//#Найдеммножество set_album_param всехописанийальбома node_album

//#---------------1_проходимпервуюпару_------------------

searchSetStr5([

1_: assign_: const_: node_: node,

2_: assign_: pos_: arc_: const_: arc,