Компьютерная алгебра в программе Mathematica 4

         

Создание средств визуального программирования


 



Что такое визуально-ориентированное программирование

Под визуально-ориентированным программированием обычно понимается автоматическая генерация кодов программ на некотором языке программирования при активизации различных графических объектов — чаще всего кнопок с наглядным изображением программируемых действий или с надписями, указывающими на-такие действия.

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'V

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]

Справа показано окно, в котором выполнены операции, шаблоны которых выводит созданная палитра функций. Это окно создается если нажать кнопку Create New Notebook (Создать новый документ)

Рис. 10.7. Работа с созданной палитрой функций

Созданная чисто демонстрационная палитра позволяет вводить в окно документа шаблоны нескольких операций. Например, если нажать кнопку f[x ]:= то шаблон этой операми (задание функции пользователя) Аналогично можно ввести в документ шаблоны и для ряда операций.

К сожалению, даже из приведенного простейшего примера видно, что программы, создающие визуально-ориентированные инструментальные средства, достаточно громоздки. Они используют целый ряд функций, не имеющих никакого отношения к математическим вычислениям и служащих лишь для создания элементов пользовательского интерфейса. Объем данной книги не позволяет описать эти функции более подробно. Читателю рекомендуется просмотреть функции, вошедшие в приведенный пример, и изучить ряд других примеров на создание элементов пользовательского интерфейса.

Среди этих примеров стоит отметить построение в виде палитры элементов периодической системы Менделеева (рис. 10.8). Активизация любой кнопки с именем химического элемента заносит в строку ввода текущего документа данные об этом элементе.

Рис. 10.8. Палитра периодической системы Менделеева и ее применение

 

Содержание раздела