Чтение онлайн

ЖАНРЫ

Maple 9.5/10 в математике, физике и образовании

Дьяконов Владимир Павлович

Шрифт:

> Matlab(mode);

Warning, the function names {Im, Re} are not recognized in the target

language

function modcreturn = modc(z)

 modcreturn = (sqrt(Re(z) ^ 2 + Im(z) ^ 2));

Из этих примеров очевидно, что пользователь системой Maple, интересующийся программированием в ней, имеет возможности легко ознакомиться с листингами процедур написанных на языке программирования системы Maple, да и на ряде других языков программирования. Более подробное рассмотрение применения программных кодов на других языках программирования в задачи

данной книги не входит, хотя оно вполне возможно и система Maple располагает средствами для этого.

10.4.3. Работа с отладчиком программ

В большинстве случаев составители программ (процедур) редко прибегают к пошаговой их отладке. Средства общей диагностики уже в Maple развиты настолько хорошо, что позволяют выявлять грубые ошибки в процедурах при их выполнении. Иногда, правда, для этого приходится неоднократно «прогонять» процедуру, пока она не начнет работать как задумано. Тем не менее, для отладки процедур служит специальный интерактивный отладчик (debugger). Опишем, как его запустить и как с ним работать.

Допустим, мы составили некоторую процедуру demo, вычисляющую сумму квадратов чисел (1^2+2^2+...+n^2):

> demo:=proc(n::integer) local y,i:

> у:=3:

> for i to n do y:=y+i^2 od

> end;

demo := proc(n::integer) local y,i; y: = 0; for i to n do у:=i^2 end do end proc

> demo(3);

14

Чтобы включить отладчик в работу, надо исполнить команду stopat:

> stopat(demo);

[demo]

> demo(3); demo:

 1* y := 0;

DBG>

Признаком, указывающим на работу отладчика, является изменение приглашения к вводу со знака > на DBG> (как нетрудно догадаться, DBG означает debugger). Теперь, подавая команды next (следующий), step (шаг) и stop (остановка), можно проследить выполнение процедуры:

DBG> next

0

demo:

 2 for i to n do

...

end do

DBG> step

0

demo:

 3 y := y+i^2

DBG> step

1

demo:

 3 y := y+i^2

DB3> step

5

demo:

 3 y := y+i^2

DBG> step

14

В последнем случае процедура по шагам дошла до конца вычислений; на этом работа отладчика завершается сама собой.

Можно также вывести листинг процедуры с помощью команды showstat:

> showstat(demo);

demo := proc(n::integer)

local y, i;

1* y := 0;

2 for i to n do

3 y := y+i^2

end do

end proc

Обратите

внимание, что в этом листинге строки вычисляемых элементов пронумерованы. Это сделано для облегчения разбора работы процедуры.

В общем случае отладчик выключается при выполнении команд stopat, stopwhen или stoperr. Если используется команда stopat, то вывод на экран соответствует исполнению последней выполненной команды. Для отмены этой команды используется команда unstopat.

Команда stopwhen позволяет установить точку наблюдения за указанной в команде переменной. Отменить ее можно командой unstopwhen. Команда stoperror позволяет задать остановку при появлении определенной ошибки. Для отмены этой команды используется команда unstoperror.

Команда cont используется для продолжения работы до следующей точки прерывания, установленной указанными выше командами, или до конца процедуры. Для прерывания отладки можно использовать команду quit После команды stop можно вычислить любое Maple-выражение.

В действительности команд отладчика намного больше и их функции более развиты, чем это описано выше. Пользователи, заинтересованные в серьезной работе с отладчиком (скорее всего, их немного) могут просмотреть его подробное описание. Для этого в разделе справочной системы Context найдите раздел Programming, а в нем — раздел Debugging.

10.5. Файловые операции с программными модулями

10.5.1. Считывание и запись программных модулей

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

Для записи на диск используется оператор save:

save filename — запись всех определений текущего файла под именем filename;

save name_1, name_2,…, name_k, filename — запись избранных модулей с именами name_1, name_2, name_k под именем filename.

Считывание имеющегося на диске файла filename осуществляется оператором read:

read <filename>

При считывании все имеющиеся в файле определения становятся доступными для рабочих документов Maple. При записи файлов отдельных определений используется специальный внутренний Maple-формат файлов. Для загрузки файлов типа *.m из стандартной библиотеки используется функция readlib. А для записи файлов в качестве библиотечных достаточно в имени filename оператора save указать расширение .m. Разумеется, можно считывать такие файлы и оператором read, указав в имени файла расширение .m (файл р7):

> save my_proc, `my_lib.m`: # запись файла my_proc и

> # библиотечного файла my_lib.m;

> load `my_lib.m`: # считывание библиотечного файла

> # my_lib.m.

10.5.2. Создание своей библиотеки процедур

Если приведенные выше примеры составления процедур кажутся вам простыми, значит, вы неплохо знаете программирование и, скорее всего, уже имеете несколько полезных процедур, которые вы хотели бы сохранить — если не для потомков, то хотя бы для своей повседневной работы. Сделать это в Maple довольно просто.

Поделиться с друзьями: