Создание средств визуального программирования
Что такое визуально-ориентированное программирование
Под визуально-ориентированным программированием обычно понимается автоматическая генерация кодов программ на некотором языке программирования при активизации различных графических объектов – чаще всего кнопок с наглядным изображением программируемых действий или с надписями, указывающими на такие действия.
Mathematica изначально реализует визуально-ориентированное программирование с помощью палитр, содержащих математические операторы и символы. Однако язык программирования системы поддерживает возможность создания таких панелей для произвольных программных модулей. Целый ряд документов, готовящих средства визуально-ориентированного программирования, включен в справочную систему и дает наглядное представление о технике программирования в этой области.
Пример создания палитры функций
С помощью директивы Notebook […] можно создать документ-"блокнот". Ниже представлен такой документ, создающий палитру из нескольких простых функций.
Notebook[{
Cell[BoxData[GridBox[{{
ButtonBox[\(Create\ a\ New\ Notebook\),
ButtonFunction:
>
CompoundExpression[ Needs[
"Graphics'Graphics*"
],
Needs[
"Graphics'Colors' "
], Clear[ targetNB], Set[ targetNB,
NotebookCreate[ ] ] ], ButtonEvaluator
>
Automatic]}, {ButtonBox[\(f[x_]:
=
\)]},
{ButtonBox[\(Apply\ DefinitionX),
ButtonFunction:
>
CompoundExpression[ NotebookWrite[ targetNB, Cell[
BoxData[
FractionBox[ RowBox[ {
RowBox[ {
"f"
,
"["
,
"x"
,
"]"
}]
/
"-"
, RowBox[ {
"f"
,
"["
,
"a"
,
"]"
}]}], RowBox[ {
"x"
,
"-"
,
"a"
}]]],
"Input"
], All],
SelectionEvaluateCreateCell[ targetNB]], ButtonEvaluator
>
Automatic]},
{ButtonBox[\(Cancel[\[SelectionPlaceholder]]\)]},
{ButtonBox[\(Limit[\[SelectionPlaceholder], x
>
a]\)]}, {ButtonBox[\(DisplayX TogetherX),
ButtonFunction:
>
CompoundExpression[ NotebookWrite[ targetNB, Cell[
BoxData[
RowBox [ {
RowBox[ {
"DisplayTogether"
,
"["
,
"\n"
,
"\t"
,
RowBox[ {RowBox[ {
"Plot"
,
"["
,
RowBox[ {RowBox[ {
"f"
,
"["
,
"x"
,
"]"
}],
","
,
RowBox[ {
"{"
, RowBox[ {
"x"
,
","
,
RowBox[ {
"-"
,
"5"
}],
","
,
"5"
}],
"}"
}],
","
,
RowBox[ {
"PlotStyle"
,
" > "
,
RowBox[ {
"{"
,
"Orange"
,
"}"
}]}]}],
"]"
]],
RowBox[ {
"Plot"
,
"["
,
RowBox[ {
"\[Placeholder]"
,
","
,
RowBox[ {
"{"
,
RowBox[ {
"a"
,
","
,
D
/
-
M7i2
^
vr;
" "
" "
5
"}] "
,
", "
5
"}] '} "
} ],
", "
KOWBOX [
1
~л
-
3
)J,,, Э ] \, s) J,,,
RowBox[ {
"PlotStyle"
,
" > "
, RowBox [ {
"{"
,
"Violet"
,
"}"
}]}]}],
"]"
}]}']
/
"]"
}],
";"
}]],
"Input"
], All]], ButtonEvaluator
>
Automatic]}}, RowSpacings
>
0
, ColumnSpacings
>
0
,
GridDefaultElement:
>
ButtonBox[
"\\[Placeholder]"
]]],
NotebookDefault,
CellMargins
>
{{Inherited, Inherited}, {
5
, Inherited}}, Evaluatable
>
True
,
CellGroupingRules
>
"InputGrouping"
, PageBreakAbove
>
True
, PageBreakWithin
>
False
,
GroupPageBreakWithin
>
False
, CellLabelMargins
>
{{
11
, Inherited},
{Inherited, Inherited}},
DefaultFormatType
>
DefaultInputFormatType, LineSpacing
>
{!.
25
,
0
},
AutoItalicWords
>
{}, FormatType
>
InputForm, ScriptMinSize
>
9
, ShowStringCharacters
>
True
,
NumberMarks
>
True
, Counterlncrements
>
"lnput"
, StyleMenuListing
>
None
,
FontFamily
>
"Courier"
, FontWeight
>
"Bold"
]},
FrontEndVersion
>
"Microsoft Windows 3.0"
, ScreenRectangle
>
{{
0
,
800
}, {
0
,
544
}},
Editable
>
False
, WindowToolbars
>
{},PageWidth
>
358
WindowSize
>
{
151
,
105
},
WindowMargins
>
{{
291
, Automatic} Automatic,
19
}},
WindowFrame
>
"Palette"
, WindowElements
>
{},
WindowFrameElements
>
"CloseBox"
,
WindowClickSelect
>
False
,
ScrollingOptions
>
{
"PagewiseScrolling"
>
True
}, ShowCellBracket
>
False
,
CellMargins
>
{{
0
,
0
}
/
{Inherited,
0
}}, Active
>
True
, CellOpen
>
True
,
ShowCellLabel
>
False
, ShowCellTags
>
False
, ImageMargins
>
{{
0
, Inherited},
{Inherited!
0
}}, Magnification
>
l]