Создание средств визуального программирования
Что такое визуально-ориентированное программирование
Под визуально-ориентированным программированием обычно понимается автоматическая генерация кодов программ на некотором языке программирования при активизации различных графических объектов – чаще всего кнопок с наглядным изображением программируемых действий или с надписями, указывающими на такие действия.
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]