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

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

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

  • 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

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

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.