Смекни!
smekni.com

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

return()

end

сравнение альбомов (файл ass.m4scp)

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

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

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


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

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

Алгоритм:

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

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

Находим все параметры описания для второго альбома и записываем в множество 2.

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

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

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

//#Операция общее между двумя альбомами

#include "scp_keynodes.scsy"

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

procedure(ass,

[[

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,

set1,

set2,

set3,

set4,

node_in,

node_to_result_set1,

node_to_result_set2,

node_out,

node_to_description,

node_start_descr,

set_with_node_start_descrp,

node_to_result,

set_album1,

set_album2

}],

{[

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

])

genEl([

1_: assign_: node_: result

])

genEl([

1_: assign_: node_: set_album1

])

genEl([

1_: assign_: node_: set_album2

])

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

])

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

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

])

searchElStr5([

1_: fixed_: node_out_resSet2,

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

3_: assign_: const_: node_: node_to_description,

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

5_: fixed_:atr2,

])

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

searchSetStr3([

1_: fixed_: node_to_description,

2_: assign_: const_: pos_: arc,

3_: assign_: node_ : node_start_descr,

set3_: assign_: set_with_node_start_descrp

])

//#--------------_Записываем все параметры в сеты для каждого альбома----------------

label(next_descrp)

searchElStr3([

1_: fixed_: set_with_node_start_descrp,

2_: assign_: arc,

3_: assign_: node_in

],,next_album)

//#----_ydalili dugu k yzly_---

eraseEl([

1_: fixed_: arc

])

//#--------_Пройдемпятерочку_----

searchElStr5([

1_: assign_: node_out,

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

3_: fixed_: node_in,

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

5_: fixed_: atr1

])

searchElStr5([

1_: fixed_: node_out,

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

3_: assign_: node_to_result,

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

5_: fixed_: atr2

])

genElStr3([

1_: fixed_: set_album1,

2_: assign_: arc_: arc,

3_: fixed_: node_to_result

],next_descrp,)

//#-----_povtaryaem vse dlya vtorogo alboma_--------

label(next_album)

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

searchElStr3([

1_: fixed_: selected_els_copy,

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

3_: assign_: node_: node_album

])

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

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

])

searchElStr5([

1_: fixed_: node_out_resSet2,

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

3_: assign_: const_: node_: node_to_description,

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

5_: fixed_:atr2,

])

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

searchSetStr3([

1_: fixed_: node_to_description,

2_: assign_: const_: pos_: arc,

3_: assign_: node_ : node_start_descr,

set3_: assign_: set_with_node_start_descrp

])

//#--------------_Записываем все параметры в сеты для каждого альбома----------------

label(next_descrp2)

searchElStr3([

1_: fixed_: set_with_node_start_descrp,

2_: assign_: arc,

3_: assign_: node_in

],,out)

//#----_ydalili dugu k yzly_---

eraseEl([

1_: fixed_: arc

])

//#--------_Пройдемпятерочку_----

searchElStr5([

1_: assign_: node_out,

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

3_: fixed_: node_in,

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

5_: fixed_: atr1

])

searchElStr5([

1_: fixed_: node_out,

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

3_: assign_: node_to_result,

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

5_: fixed_: atr2

])

genElStr3([

1_: fixed_: set_album2,

2_: assign_: arc_: arc,

3_: fixed_: node_to_result

],next_descrp2,)

label(out)

//#--------_Naxodim obschie elementy_--------

selectYStr3([

1_: fixed_: set_album2,

2_: assign_: const_: pos_: arc,

3_: assign_: node_ : node,

set3_: fixed_: set_album1

])

//#--------_Вывод_-------

ui_sheet_create([

1_: assign_: sheet,

2_: fixed_: sheet_type,

3_: fixed_: sheet_title,

4_: fixed_: layout

])

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

return()

end

поиск года основания исполнителя (файл year_of_foundation.m4scp)

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

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

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


Рисунок 3.2.6 - вопрос год основания исполнителя

Алгоритм:

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

Ищем год основания исполнителя.

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

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

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

#include "scp_keynodes.scsy"

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

procedure(year_of_foundation,

[[

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_year";

cmd = "/operation/ui_io_exec_command_par/exec_command_par";

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

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

"год основания*";

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

]],

[{

sheet,

shift,

node,

node1,

node2,

node3,

node4,

node5,

performer,

arc,

arc1,

arc2,

arc3,

selected_els,

selected_els_copy,

set,

set1,

set2,

set3,

set4,

result_set,

output_set,

out,

descr

}],

{[

1_: in_: selected_els,

2_: in_: sheet,

3_: in_: shift

]}

)

//#Копия 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_: atr1,

set1_: assign_: set

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

],,other_copy,other_copy)

searchElStr3([

1_: fixed_: set,

2_: assign_: const_: arc,

3_: assign_: const_: node3

])

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

searchSetStr5([

1_: fixed_: node3,

2_: assign_: const_: arc1,

3_: assign_: node4,

4_: assign_: const_: arc2,

5_: fixed_: atr2,

set3_: assign_: set2

],,other_copy,other_copy)

searchElStr3([

1_: fixed_: set2,

2_: assign_: const_: arc,

3_: assign_: const_: node1

])

//#Проходимтройку

searchSetStr3([

1_: fixed_: node1,

2_: assign_: const_: arc,

3_: assign_: const_: node,

set3_: assign_: set

])

label(other_node)

searchElStr3([

1_: fixed_: set,

2_: assign_: const_: arc,

3_: assign_: const_: node5

])

//#Удаляемдугу arc

eraseEl([

1_: fixed_: arc

])

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

searchSetStr5([

1_: assign_: const_: node1,

2_: assign_: const_: arc1,

3_: fixed_: node5,

4_: assign_: const_: arc2,

5_: fixed_: atr1,

set1_: assign_: set3

],,other_node,other_node)

//#Под отношением год основания*

searchSetStr3([

1_: fixed_: "годоснования*",

2_: assign_: const_: arc,

3_: assign_: const_: node,

set3_: assign_: set4

])

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

selectYStr3([

1_: fixed_: set4,

2_: assign_: const_: arc3,

3_: assign_: node_ : node2,

set3_: fixed_: set3

],,other_node,other_node)

searchElStr3([

1_: fixed_: set3,

2_: assign_: const_: arc,

3_: assign_: const_: node3

])

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

searchSetStr5([

1_: fixed_: node3,

2_: assign_: const_: arc1,

3_: assign_: const_: node5,

4_: assign_: const_: arc2,

5_: fixed_: atr2,

set3_: assign_: out

])

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.7 - вопрос композиции с выбранным рейтингом

Алгоритм:

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

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

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