Иллюстрированный самоучитель по Mathematica

         

Средства создания пакетов расширений


Для создания пакетов расширений в общем случае используются следующие средства системы:

  • Begin ["context'"] — устанавливает текущий контекст;
  • BeginPackage ["context'"] — делает context единственным активным контекстом. Возможна также форма BeginPackage [ "context" ", { "needl' ", "need2'",...}];'
  • Return [ ] — возвращает Null;

  • End [ ] — возвращает текущий контекст и переходит к предыдущему;
  • EndAdd [ ] — возвращает текущий контекст и переходит к предыдущему, предварительно добавляя текущий контекст к списку контекстов $Context-Path;
  • EndPackage [ ] — восстанавливает $Context и $ContextPath в их значениях до предшествующего BeginPackage и добавляет текущий контекст к списку $ContextPath;
  • Exit [ ] — завершает сеанс работы Mathematica;
  • Goto [tag] —просматривает текущее составное выражение в поиске Label [tag] и передает управление в эту точку;
  • Interrupt [ ] — производит прерывание в теле вычислений;
  • Label [tag] — представляет точку в составном выражении, в которую управление передается директивой Goto;
  • Quit [ ] — завершает сеанс работы Mathematica.

Приведем пример простого фрагмента программы, дающего определение новой функции ExpandBoth с помощью некоторых из представленных средств:

(* :Title: ExpandBoth *)

(* :Context: ProgramminglnMathematica'ExpandBoth" *)

(* : Author: Roman E. Maeder *)

ExpandBoth: : usage = "ExpandBoth [e] expands all numerators and denominators in e."

Begin ["' Private1"]

ExpandBoth [x_Plus] := ExpandBoth /@ x

ExpandBoth [x_] := Expand [ Numerator [x] ] / Expand [ Denominator [x] ]

End [ ] Null

Этот пример настолько прост, что читателю будет нетрудно разобраться с его сутью — расширением выражения по числителю и знаменателю. Ниже представлен сеанс работы с этим пакетом, файл которого expboth.m размещен в каталоге mypack, включенном в общий каталог пакетов расширений:

<<mypack\expboth.m

?ExpandBoth

ExpandBoth [e] expands all numerators and denominators in e.

ExpandBoth [124 /12]

31/3

ExpandBoth [1234/12]

617/6

Мы вернемся к рассмотрению построения пакетов расширений после более детального рассмотрения некоторых деталей этого процесса.



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