Смекни!
smekni.com

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

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

//#Операция получения страны выбранного исполнителя

#include "scp_keynodes.scsy"

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

procedure(search_by_rating,

[[

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" = /"Метка"/;

sall = "/etc/im_keynode/get_search_rating";

cmd = "/operation/ui_io_exec_command_par/exec_command_par";

beg = /"...!!search_by_rating!!..\n"/;

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

"место в чарте*";

"Исполнители"

]],

[{

sheet,

shift,

node,

node1,

node2,

node3,

node4,

node5,

node6,

performer,

arc,

arc1,

arc2,

arc3,

selected_els,

selected_els_copy,

output_set,

set,

set1,

set2,

set3,

set4,

set_bean,

out,

descr

}],

{[

1_: in_: selected_els,

2_: in_: sheet,

3_: in_: shift

]}

)

genEl([

1_: assign_: node_: out

])

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

searchSetStr3([

1_: fixed_: selected_els,

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

3_: assign_: node_: const_: node,

set3_: assign_: selected_els_copy

])

label(other_copy)

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

searchElStr3([

1_: fixed_: selected_els_copy,

2_: assign_: const_: arc,

3_: assign_: const_: performer

])

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

eraseEl([

1_: fixed_: arc

])

//#Проходим первую пятерку пары

searchSetStr5([

1_: assign_: const_: node1,

2_: assign_: const_: arc1,

3_: fixed_: performer,

4_: assign_: const_: arc2,

5_: fixed_: atr2,

set1_: assign_: set_bean

],,other_copy,other_copy)

//#Под отношением место в чарте*

searchSetStr3([

1_: fixed_: "местовчарте*",

2_: assign_: const_: arc,

3_: assign_: const_: node,

set3_: assign_: set1

])

//#Находим пересечение множеств set и set1

selectYStr3([

1_: fixed_: set1,

2_: assign_: const_: arc3,

3_: assign_: node_ : node2,

set3_: fixed_: set_bean

],,other_copy,other_copy)

label(other_bean)

//#Выделяем один из элементов

searchElStr3([

1_: fixed_: set_bean,

2_: assign_: const_: arc,

3_: assign_: const_: node6

],,to_end,to_end)

//#Удаляем дугу arc проведенную

eraseEl([

1_: fixed_: arc

])

searchSetStr5([

1_: fixed_: node6,

2_: assign_: const_: arc1,

3_: assign_: const_: node5,

4_: assign_: const_: arc2,

5_: fixed_: atr1,

set3_: fixed_: out

],other_bean)

label(to_end)

printNl([1_: fixed_: beg])

callReturn([1_: fixed_: cmd,

2_: fixed_:{[

1_: out,

2_: sheet,

3_: sall

]}

], descr)

return()

end

поисккомпозициипорейтингу (файл search_by_rating.m4scp)

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

выходные параметры: обложка альбома.

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

Рисунок 3.2.8 - вопрос композиции с выбранным рейтингом


Алгоритм:

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

Ищем композиции по рейтингу.

Формируем результирующее множество.

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

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

#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,

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,