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



                

Средства контроля и отладки процедур


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

Для контроля и отладки процедур прежде всего надо уметь вывести их текст. Для этого служит функция:

print(name); 

 где name — имя процедуры.

Однако перед тем, как использовать эту функцию, надо исполнить команду:

> interfасе(verboseproc=2,prettyprint-l.version);

Maple Worksheet Interface, Maple 7, IBM INTEL NT, May 28 2001 Build ID 96223

Ее смысл будет пояснен ниже. Пока же отметим, что эта команда обеспечивает полный вывод текста процедур библиотеки. Встроенные в ядро процедуры, написанные не на Maple-языке, в полном тексте не представляются. Поясним это следующими примерами:

> print(evalf);

proc() option builtin, remember; 167 end proc 

> print(erf);

proc(x::algebraic)

local Re_x, Im_x, sr, si, xr, xi;

option ' Copyright (c) 1994 by the University of Waterloo. All rights reserved`.;

 if nargs <> 1 then error "expecting 1 argument, got %1", nargs

elif type(x, 'complex(float)') then evalf('erf (x)) elif x = 0 then 0 elif type(x, 'infinity') then

if type(x, {'cxjnfinity', 'undefined'}) thenundefined + undefined*!

elif type(Re(x), 'infinity') then CopySign(l, Re(x))

elif type(x, 'imaginary') then x

else infinity + infinity*I

end if

elif type(x, 'undefined') then x*undefined elif type(x, 'complex(numeric)') 

then

if csgn(x) = -1 then -erf(-x) else 'erf'(x) 

end if elif type(x, '*') 

and type(op(l, x), 'complex(numeric)') 

and csgn(op(l, x)) = -1 then -erf(-x) elif type(x, ' +')

 and traperror(sign(x)) = -1 then -erfC-x)

else erf(x) := 'erf'(x) end if end proc

Здесь вначале выполнен вывод сокращенного листинга встроенной в ядро процедуры evalf, а затем выведен полный листинг процедуры вычисления функции ошибок erf.


Содержание  Назад  Вперед