Смекни!
smekni.com

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

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_handler1)

searchElStr3([

1_: fixed_: resultSet4,

2_: assign_: const_: pos_: arc,

3_: assign_: node_ : node_out_resSet4

],,other_album1)

//#Удаляемдугу 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_handler1)

genElStr3([

1_: fixed_: result_set1,

2_: assign_: const_: pos_: arc,

3_: fixed_: node_album

],other_album1,)

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

label(not_other_album1)

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

//

//#Выделяемодинизэлементов 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_album2)

searchElStr3([

1_: fixed_: set_albums_copy,

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

3_: assign_: node_: const_: node_album

],,not_other_album2)

//#Удаляемдугу 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_handler2)

searchElStr3([

1_: fixed_: resultSet4,

2_: assign_: const_: pos_: arc,

3_: assign_: node_ : node_out_resSet4

],,other_album2)

//#Удаляемдугу 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_handler2)

genElStr3([

1_: fixed_: result_set2,

2_: assign_: const_: pos_: arc,

3_: fixed_: node_album

],other_album2,)

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

label(not_other_album2)

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

label(output)

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

searchSetStr3([

1_: fixed_: result_set,

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

3_: assign_: node_: const_: node,

set3_: fixed_: output_set

])

//#Проверим является ли множество result_set1 пустым

searchElStr3([

1_: fixed_: result_set1,

2_: assign_: const_: pos_: arc,

3_: assign_: node_ : node

],,out)

selectYStr3([

1_: fixed_: result_set1,

2_: assign_: const_: pos_: arc,

3_: assign_: node_ : node,

set3_: fixed_: output_set

])

//#Проверим является ли множество result_set2 пустым

searchElStr3([

1_: fixed_: result_set2,

2_: assign_: const_: pos_: arc,

3_: assign_: node_ : node

],,out)

selectYStr3([

1_: fixed_: result_set2,

2_: assign_: const_: pos_: arc,

3_: assign_: node_ : node,

set3_: fixed_: output_set

])

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

label(out)

ui_sheet_create([

1_: assign_: sheet,

2_: fixed_: sheet_type,

3_: fixed_: sheet_title,

4_: fixed_: layout

])

ui_output([1_: fixed_: sheet, 2_: fixed_: output_set])

return()

end

поискальбомапотипузаписи (файл search_by_type.m4scp)

входные параметры: узел, содержащий тип записи;

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

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

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

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

Алгоритм:

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

Находим все узлы альбомов, подходящие под введенное описание и записываем их в множество 1.

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

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

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

#include "scp_keynodes.scsy"

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

procedure(search_by_type,

[[

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,

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

}],

{[

1_: in_: selected_els,

2_: in_: sheet,

3_: in_: shift

]}

)

genEl([

1_: assign_: node_: result_set

])

//#Копия 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

])

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

],,other_handler)

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

])

//#--------_Выделяем одно из описаний типа записи node_param_----------

searchElStr3([

1_: fixed_: resultSet3,

2_: assign_: const_: pos_: arc,

3_: assign_: node_ : node_param

])

//#--------_Проверка равенства найденного описания и введенного пользователем_-----

ifCoin([

1_: fixed_: node_param,

2_: fixed_: temp_node_with_param

],,other_album)

//#--------_Если альбом удовлетворяет условию, то заносим его в result_set_-------

genElStr3([

1_: fixed_: result_set,

2_: assign_: const_: pos_: arc,

3_: fixed_: node_album

],other_album,other_album,other_album)

label(not_other_album)

ui_sheet_create([

1_: assign_: sheet,

2_: fixed_: sheet_type,

3_: fixed_: sheet_title,

4_: fixed_: layout

])

ui_output([1_: fixed_: sheet, 2_: fixed_: result_set])