Курс: Элементы компьютерной математики компьютерной математики Лектор – Склярова Елена Александровна.

Презентация:



Advertisements
Похожие презентации
Глава 6. УПРАВЛЯЮЩИЕ СТРУКТУРЫ Оператор присваивания Простой и составной операторы Условный оператор Оператор множественного выбора Оператор цикла с предусловием.
Advertisements

Лекция 4 Программирование на Паскале. Элементы языка Турбо Паскаль 7.0. Типы данных. Управляющие конструкции.
АЛГОРИТМИЗАЦИЯ. Алгоритм Алгоритм – описание конечной последовательности действий, приводящей от исходных данных к нужному результату. Где встречаются.
Языки и методы программирования Преподаватель – доцент каф. ИТиМПИ Кузнецова Е.М. Лекция 5.
Переменные и операторы УРОК 2. Переменные ПЕРЕМЕННАЯ – ?... контейнер для хранения данных. Переменная имеет имя – это….? последовательность букв, цифр.
Часть 1 Простейшая программа Программа на языке QBASIC состоит из последовательности инструкций – команд компилятору. Если в строке записано несколько.
Министерство образования Республики Беларусь Белорусский государственный университет Управляющие структуры языков программирования.
Основы алгоритмизации Алгоритмы. Типы алгоритмов. Алгоритмы. Типы алгоритмов. Блок-схемы. Вопросы и задания. Вопросы и задания.
Объектно-ориентированный язык программирования. Переменная - эта поименованная ячейка памяти, хранящая какое-либо одно значение (одно число, один фрагмент.
Практическое занятие 6. Функции. Большинство языков программирования используют понятия функции и процедуры. C++ формально не поддерживает понятие процедуры,
Тест классы По программированию Pascal.
Процедуры и функции. Разработал учитель информатики МБОУ СОШ 50 г. Краснодара Ракута Елизавета Григорьевна « Учиться и, когда придет время, прикладывать.
Лекция 4 Представление основных структур: итерации, ветвления, повторения. Вспомогательные алгоритмы и процедуры.
Понятие переменной Переменная – это величина, которая изменяется в процессе работы программы. Для описания переменной следует указать имя переменной,
Этапы решения задач на компьютере.
Лекция 3 Операторы Цикла 1 Российский государственный университет нефти и газа имени И.М. Губкина Кафедра «Информатики»
Процедуры и функции Вербицкая Ольга Владимировна, Заозерная школа 16.
Что такое программирование? Совокупность процессов, связанных с разработкой программ и их реализацией. В широком смысле к указанным процессам относят все.
Понятие оператора и программы 11 класс. Программирование.
Лекция 7. Структура языка С/С++. Операторы ветвления: условный оператор if. Полное ветвление. Неполное ветвление. Оператор множественного выбора switch.
Транксрипт:

Курс: Элементы компьютерной математики компьютерной математики Лектор – Склярова Елена Александровна

Тема: Моделирование физических явлений при помощи пакета Mathematica Основы программирования 1. Методы программирования 2. Образцы (patterns) и их применение 3. Функции пользователя 4. Функции FixedPoint и Catch 5. Реализация рекурсивных и рекуррентных алгоритмов 6. Использование процедур 7. Организация циклов 8. Условные выражения и безусловные переходы 9. Контексты Лекция 9

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

Язык программирования системы Mathematica является типичным интерпретатором и не предназначен для создания исполняемых файлов. Поэтому документы Mathematica не имеют самостоятельного значения и могут исполняться только в среде этого пакета. Язык систем класса Mathematica вобрал в себя лучшие средства ряда поколений языков программирования. Благодаря этому он позволяет легко реализовать все известные типы (концепции) программирования: - структурное, - объектно-ориентированное, - функциональное, - логическое, - рекурсивное и т. д. Возможности языка программирования системы Mathematica

С понятием объекта тесно связаны три основных свойства, перечисленные ниже: 1.инкапсуляция объединение в одном объекте как данных, так и методов их обработки; 2.наследование означает, что каждый объект, производный от других объектов, наследует их свойства; 3.полиформизм свойство, позволяющее передать ряду объектов сообщение, которое будет обрабатываться каждым объектом в соответствии с его индивидуальными особенностями. h/ : h [x_] +h [y_] : =hplus [х, у] h/:p[h[x_],x]:=hp[x] h/:f_[h[x_]] :=fh[f,x] Возможности языка программирования системы Mathematica

Образцы (или шаблоны) в системе Mathematica служат для задания целых классов выражений. Это необычайно гибкое и мощное средство обобщенного представления математических выражений. Признаком образца являются знаки подчеркивания "_" (от одного до трех). Наиболее распространенное применение образцов указание на локальный характер переменных при задании функций пользователя. Например, функция fsc[x_,y_]:=x*Sin[y]+y*Cos[x]+z в списке параметров содержит два образца: х_ и у_. В правой части этого выражения переменные х и у, связанные с образцами х_ и у_, становятся локальными переменными, тогда как переменная z будет глобальной. Образцы (patterns)

Образцами можно задавать некоторые общие свойства функций. Например, In[1]:= f[x_,x_]:= p[x] означает, что функция f двух идентичных аргументов становится тождественной функции р[х]. Следовательно, In[2]:= f[а, а] + f[a,b] даст выход в виде Out[2]= f[a,b] + р[а], а In[3]:= f[a^2 - 1, а^2 - 1] даст выход Out[3]= p[-1 + а^2]. Образцы (patterns)

Вместе с образцом можно указывать тип его данных: x_Integerобразец целочисленный, x_Realобразец с действительным значением, x_Complexобразец с комплексным значением, x_h образец с заголовком h (от слова head заголовок). Образцы (patterns)

В системе Mathematica используются следующие типы образцов: ОбозначениеНазначение образца _ Любое выражение x_ Любое выражение, представленное именем х x:pattern Образец, представленный именем х pattern ? test Образец, возвращающий True, когда test применен к значению образца _h Любое выражение с заголовком h x_h Любое выражение с заголовком h, представленное именем х __ Любая последовательность с одним и более выражениями ___ Любая последовательность с нулем или более выражений х__ или х___ Последовательности выражений, представленные именем х __h или h___ Последовательности выражений, каждое с заголовком h х__h или х___h Последовательности выражений с заголовком h, представленные именем х x_:v Выражение с определенным значением v x_h:v Выражение с заголовком h и определенным значением v х_. Выражение с глобально заданным определенным значением v Optional[x_h] Выражение с заголовком h и глобально заданным значением х pattern.. Образец, повторяемый один или более раз pattern... Образец, повторяемый нуль или более раз

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

Процедуры и их задание Процедуры задаются своим именем и отождествляются с выполнением некоторой последовательности операций. Они могут быть заданы в одной строке с использованием в качестве разделителя символа ";" (точка с запятой). Пример задания процедуры, отождествленной с именем r: In[1]:= =(1+х)^2; r=Expand[r]; r-1 Out[1]= 2 х + х 2 Обратите внимание, что в теле процедуры символ r используется и как вспомогательная переменная. Эта процедура возвращает символьное выражение Expand[(l+x)^2] - 1.

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

Блоки для задания процедур Для создания более совершенных процедур может использоваться базовая структура - блок: Пример использования базовой структуры: In[5]:= g[x_]:=Block[{u},u=(1+x)^2;u=Expand[u]] In[6]:= g[a+b] Out[6]= 1 + 2а + a 2 + 2b + 1ab + b 2 In[7]:= u Out[7]= u Здесь последние действия указывают на то, что переменная u, введенная в тело базовой структуры, является действительно локальной переменной и присвоение ей символьного выражения (1+х)^2 в теле блока не действует, когда эта переменная используется вне блока. Block[{x,y,...},procedure] - задание процедуры с декларацией списка локальных переменных х, у,...; Block[{x=x0,y=y0,...}, procedure] - задание процедуры с декларацией списка переменных х, у,... с заданными начальными значениями.

Функции и их задание Понятие функции ассоциируется с обязательным возвратом некоторого значения в ответ на обращение к функции по ее имени с указанием в квадратных скобках аргументов (параметров). Функции подразделяются на встроенные в ядро системы (внутренние) и функции, заданные пользователем (внешние). Примером первых могут быть Sin[x], BesselI[n,x] и т. д. Mathematica охватывает практически все широко распростра- ненные элементарные и специальные математические функции. Функции пользователя, как уже отмечалось, задаются с помощью комбинированного символа присваивания ":=", например: In[2]:= f[x_]:=(t=(1 + х)^2; t=Expand[t])

Переменные списка параметров, после имени которых стоит знак _, являются локальными в теле функции или в теле процедуры с параметрами. На их место подставляется фактическое значение соответствующего параметра, например: In[3]:= f[a+b] Out[3]= 1 + 2a + a 2 + 2b + 1ab + b 2 In[4]:= t Out[4]= 1 + 2a + a 2 + 2b+1ab + b 2 Обратите внимание, что переменная t в выражении In[2] является глобальной. Функции и их задание

Создание формальных функций Приведем пример, поясняющий задание функции с помощью описанных выше средств: In[1]:= F=Function[{x,y},x^2+y^2] Out[1]= Function[{x, y}, x 2 + y 2 ] In[2]:= F[8/4,3] Out[2]= 13 Для создания формальных функций с телом body можно использовать следующие функции языка системы: Function[body] - функция без побочного эффекта, формальными параметрами которой являются # (или #1), #2 и т.д. Имеет упрощенную форму: body&; Function[x, body] создает функцию без побочного эффекта с телом body и единственным формальным параметром х; Function[{xl,x2,...},body] создает функцию без побочного эффекта с телом body и со списком формальных {xl,х2,...} параметров; Function[{xl,x2,...},body, {attributes}] создает функцию ряда переменных, имеющих заданные атрибуты.

Хотя в системах Mathematica имеется около тысячи встроенных функций, любому пользователю рано или поздно может потребоваться создание какой-либо своей функции. Кажется естественным задать ее по правилам, принятым во многих языках программирования. Например, функцию для возведения х в степень n можно было бы определить так: powerxn[x, n] := x^n Однако такая функция отказывается работать: {powerxn[2, 3], powerxn[a, b]} Причина этого кроется в том, что в системе Mathematica символы х и n являются обычными символами, не наделенными особыми свойствами. Будучи использованными в качестве параметров функции, они не способны воспринимать формальные параметры [2,3] или [ а, b ]. Функции и их задание

Так что вычислить нашу ущербную функцию можно лишь при предварительном присваивании х иn нужных значений: х := 2; n := 3; powerxn[x, n] 8 Разумеется, заданная таким образом функция является неполноценной. Для того чтобы функция пользователя нормально воспринимала переданные ей аргументы, в списке параметров надо использовать образцы в виде переменных, но имеющие после своих имен символы подчеркивания. Образцы способны быть формальными параметрами функций и воспринимать значения фактических параметров (в нашем случае значений 2 и 3). Таким образом, правильной будет запись функции пользователя в виде powerxn[x_, n_] := х^n Теперь вычисление по заданной функции пользователя пройдет гладко, причем как в численном, так и в символьном виде: {powerxn[2, 3], powerxn[z, у], powerxn[x, n]} {8, zy, 8} Заметим, что для уничтожения определения заданной функции можно использовать команду-функцию Clear [Name_f unction], где Name_f unction имя функции. Функции и их задание

Теперь вычисление по заданной функции пользователя пройдет гладко, причем как в численном, так и в символьном виде: {powerxn[2, 3], powerxn[z, у], powerxn[x, n]} {8, zy, 8} Заметим, что для уничтожения определения заданной функции можно использовать команду-функцию Clear [Name_f unction], где Name_f unction имя функции. Функции и их задание

Ряд правил для задания функций пользователя: А) функция имеет идентификатор – имя, которое должно быть уникальным и достаточно понятным; Б) в списке параметров функции, размещенном в квадратных скобках после идентификатора, должны использоваться образцы переменных, а не просто переменные; В) может использоваться отложенное (: =) или немедленное (=) присваивание; Г) тело функции может содержать несколько выражений, заключенных в круглые скобки, при этом возвращается значение последнего выражения; Д) переменные образцов в списке параметров являются локальными и действуют только в пределах тела функции; Е) в теле функции могут использоваться глобальные переменные, но при этом возможны побочные эффекты; Ж) возможно обращение к функции из тела этой же функции (рекурсия). Функции и их задание

Организация циклов Многие задачи в системе Mathematica решаются с использованием линейных алгоритмов и программ. Они могут быть представлены непрерывной цепочкой выражений, выполняемых последовательно от начала до конца. Однако в большинстве случаев серьезные вычисления базируются на использовании циклических и разветвленных алгоритмов и программ. При этом в зависимости от промежуточных или исходных данных вычисления могут идти по разным ветвям программы, циклически повторяться и т. д. Для peaлизации разветвленных программ язык программирования должен содержать управляющие структуры, т. е. специальные конструкции языка, реализующие в программах ветвление.

Организация циклов К важнейшим управляющим структурам в языках программирования относят циклы. С их помощью осуществляется циклическое исполнение некоторого выражения ехрг заданное число раз. Это число нередко определяется значением некоторой управляющей переменной (например, i, j и т.д), меняющейся либо с шагом 1, либо от начального значения imin до конечного значения imax с шагом di. Циклы могут быть одинарными или множественными вложенными друг в друга. Последние используют ряд управляющих переменных. Такого рода циклы организуются с помощью функции Do: Do[expr,{imax}] - выполняет imax раз вычисление ехрг и возвращает список вычисленных значений; Do[expr,{i,imax}] - вычисляет ехрг с управляющей переменной i, до imax (с шагом 1), и возвращает список вычисленных значений; Do[expr,{i,imin,imax}] - вычисляет ехрг с переменной i, последователь но принимающей значения от imin до imax c шагом 1, и возвращает список вычисленных значений Do[expr,{i,imin,imax,di}] вычисляет ехрг с переменной i, последовательно принимающей значения от 1 до imax с шагом di и возвращает список вычисленных значений Do[expr,{i,imin,imax},{j,jmin, jmax},...] вычисляет ехрг, организуя ряд вложенных циклов с управляющими переменными j, i и т. д., и возвращает кратный список вычисленных значений.

Организация циклов

Циклы типа For Другой вид цикла реализуется функцией: For[start,test,incr,body] В ней внутренняя управляющая переменная вначале приобретает значение start, затем циклически меняется от этого значения до значения body с шагом изменения incr, и так до тех пор, пока условие test не перестанет давать логическое значение True. Когда это случится, т. е. test даст False, цикл закончится.

Организация циклов Циклы типа While Итак, функция For позволяет создавать циклы, которые завершаются при выполнении (эволюции) какого-либо условия. Такие циклы можно организовать и с помощью функции While: While[test,expr]выполняет expr до тех пор, пока test дает логическое значение True.

Организация циклов В циклах указанных типов можно использовать следующие директивы- функции: Break[ ]- выполняет выход из ближайшего тела цикла; Continue[ ]- возобновляет выполнение прерванного цикла.

Условные выражения и безусловные переходы Для подготовки полноценных программ помимо средств организации циклов необходимы и средства для создания разветвляющихся программ произвольной структуры. Обычно они реализуются с помощью условных выражений, позволяющих в зависимости от выполнения или невыполнения некоторого условия condition выполнять те или иные фрагменты программ. У большинства языков программирования условные выражения задаются помощью оператора или функции If. If[condition,t,f] - возвращает t, если результатом вычисления condition будет True, и f, если результат - False; If[condition,t,f,u] возвращает u, если в результате вычисления condition не будет получено ни True, ни False (в остальных двух случаях результат работы подобен приведенному для первой формы функции).

Условные выражения и безусловные переходы Функция If обеспечивает ветвление максимум по двум или трем (во второй форме) ветвям вычислений. Для ветвления по многим направлениям можно использовать древовидные структуры программ с множеством функций If. Однако это усложняет программы.

Функции-переключатели Для организации ветвления по многим направлениям в современных языках программирования используются операторы-переключатели. В системе Mathematica множественное ветвление организовано с помощью функций-переключателей Which и Switch: Which [test1, value1, test2,value2,...] вычисляет в порядке следования каждый из testi, сразу возвращая именно ту величину из valuei, которая относится к первому testi, давшему True; Switch[expr,form1, value1,form2,value2,...] вычисляет ехрг, затем сравнивает его последовательно с каждым formi, вычисляя и возвращая то значение valuei, которое соответствует первому совпадению Приведем примеры работы функции Which: Ввод (In)Вывод (Out) Which[l==2,l,2==2,2,3==3,3]2 Which[l==2,x,2==2,y,3==3,z]y

Функции-переключатели В целом условные выражения в языке программирования системы позволяют реализовать любой вид ветвления в программах. Однако иногда бывает полезно без лишних раздумий указать в программе явный переход к какой-либо ее части. Для этого используется оператор безусловного перехода Goto[Tag], позволяющий перейти прямо к тому месту программы, которое отмечено меткой Label[Tag]. Это иллюстрирует следующий пример (знаки \ в конце каждой строки означают объединение с ней следующей строки): n:=0;\ Label[S];\ If[++n

Текстовые сообщения и комментарии Ценность многих программ на любом языке программирования нередко сводится к нулю из-за отсутствия подробных текстовых комментариев. Из-за этого даже сами разработчики программ через месяц-другой перестают понимать собственные творения. А что говорить о пользователях, рискующих применить такие программы? Для создания текстовых комментариев различного назначения (как выводимых, так и не выводимых на экран в ходе работы с пакетом) в языке программирования системы Mathematica используются следующие средства: (* Comment *) задание не выводимого на экран текстового комментария, как однострочного, так и многострочного, в любом месте пакета; Message [symbol: : tag] вывод сообщения symbol::tag, если только вывод сообщений не отключен; Message [symbol: :tag, e1, e2,...] выводит сообщение, вставляя значения ei по мере необходимости; $MessageList глобальная переменная, возвращающая список имен сообщений, вырабатываемых во время вычисления текущей входной строки. Имя каждого сообщения заключено в HoldForm [ ]. $MessageList сохраняется в MessageList [n] и переустанавливается в { } после того, как произведена п-я выходная строка;

Текстовые сообщения и комментарии MessageList [n] глобальный объект, который является списком имен (сообщений), которые вырабатываются в процессе обработки п-й входной строки; MessageName, применяется в виде symbol: : tag или MessageName [symbol, "tag" ] имя для сообщения; $MessagePrePrint глобальная переменная, чье значение, если установлено, применяется к выражениям перед тем, как они помещаются в текст сообщений; $Messages возвращает список файлов и каналов, в которые направляется вывод сообщений; Messages [symbol] возвращает все сообщения, присвоенные данному символу symbol.

Функции ввода-вывода, позволяющие организовать диалог с системой: Функции ввода-вывода Input[]Приостанавливает работу системы и возвращает значение выражения, которое вводится в появляющееся диалоговое окно (оно служит для организации диалогового ввода) Input[promt]Выполняет те же функции, что и предыдущая функция, но при дополнительном выводе в диалоговое окно комментария promt InputString[]Обеспечивает ввод в диалоговом режиме цепочки символов и возвращает ее InputString[promt]Обеспечивает ввод строки символов с комментарием promt Print[expr]Выводит на экран дисплея значение выражения expr, совместно с Input может использоваться для организации диалога Print[promt,expr]Выводит на экран дисплея текстовый комментарий, указанный в кавычках, а следом и значение выражения expr

Функции ввода-вывода

Подготовка пакетов расширений системы Mathematica Мощным средством расширения возможностей системы Mathematica является подготовка пакетов расширений. Пакеты расширений позволяют создавать новые процедуры и функции и хранить их на диске в виде файлов с расширением. m. После считывания такого пакета с диска все входящие в него определения функций становятся доступными для использования в соответствии с правилами, принятыми для встроенных функций. Текст пакета расширения не выводится после его вызова, чтобы не загромождать документ вспомогательными описаниями. В сущности, пакеты расширения это просто наборы программ на языке программирования системы Mathematica, подобранные по определенной тематике.

Типовая структура пакетов расширения Структура пакета расширений (программы) в минимальном виде выглядит следующим образом: (* Вводный комментарий *) BeginPackage["Имя_пакета' "] Mean::usage = "Имя функции[Параметры] Текстовый комментарий" Begin[" 'Private' "] Unprotected[Список_имен] Определения новых функций End[ ] Установка атрибутов защиты EndPackage[ ] (* Завершающий комментарий *)

Типовая структура пакетов расширения Особая структура пакетов расширений связана с реализацией описанной выше идеологии контекстов. Пакет открывается необязательным текстовым комментарием, который обрамляется двойными символами « (*» и «*) ». Он может быть как однострочным, так и многострочным. Обычно вводный комментарий включает в себя имя пакета, наименование фирмы и автора создателей пакета, историю развития, дату создания и т. д. Если вы программируете для себя, можете на первых порах опустить все эти комментарии. Но не забудьте их ввести после отладки пакета, как того требуют культура и дисциплина программирования. Затем пакет открывается словом BeginPackage. Это слово дается с квадратными скобками, в которых указывается контекст (см. выше) пакета. Обратите внимание на то, что после имени пакета должен стоять апостроф или цепочка символов, обрамленная апострофами. Имя пакета не должно совпадать ни с одним из известных, то есть быть уникальным. Эта команда изменяет список контекстов, и он принимает вид {Имя_пакета',System'}.

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

Типовая структура пакетов расширения Затем следует главная часть пакета определения новых функций. Она открывается определением Begin [" ' Private ' "]. Оно, не меняя список контекстов, устанавливает новый текущий контекст Имя_пакета' Private'. Он присваивается всем ранее не встречавшимся символам. Имя Private принято в пакетах расширения системы Mathematica, хотя, в принципе, может быть любым другим именем. После него следуют сами определения, в которых могут использоваться любые средства, включенные в ядро системы. В некоторых случаях имена функций могут повторять ранее определенные в ядре системы. Это полезно, если пользователь считает, что введенное им определение уже известной функции более точно или более универсально, чем использованное в системе. В таких случаях перед новым применением идентификатора надо позаботиться о снятии с него защиты с помощью функции Unprotect. Именно эта часть и определяет существо пакета и его ценность.

Типовая структура пакетов расширения Завершается эта часть определением End [ ]. При этом восстанавливается контекст, который был до определения Begin [" ' Private' " ], то есть контекст с именем пакета. После этого идет необязательная часть с указанием атрибутов защиты. Пакет завершается определением EndPackage [ ], которое восстанавливает контекст, бывший текущим до загрузки пакета.

Средство создания пакетов расширения Для создания пакетов расширений в общем случае используются следующие средства системы: 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

Пример программы

Лекция окончена Нажмите клавишу для выхода