Вход/Регистрация
Maple 9.5/10 в математике, физике и образовании
вернуться

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

Шрифт:

local<nseq>; # объявление локальных переменных

global<nseq>; # объявление глобальных переменных

uses<useg> # объявление структур use ... in ... end use

options<nseq>; # объявление расширяющих ключей

description<stringseq>; # объявление комментарий

<stateq> # выражения — тело процедуры

end; (или end:) # объявление конца процедуры

Эта форма охватывает все описанные выше частные формы и позволяет готовить самые сложные и надежно работающие процедуры. Читателям-программистам стоит детально изучить по справке возможности этой формы задания процедур, а также возможности конструкции use … in … end use.

10.4. Средства отладки программ

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

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

print(name);

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

Перед тем как использовать ее, надо также исполнить команду

> interface(verboseproc=2,prettyprint=1,version);

1, 3, Classic Worksheet Interface, Maple 9.50, Windows, Aug 9 2004 Build ID 163356

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

> print(evalf);

proc option builtin, remember; 171 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, ' cx_infinity') then undefined + undefined*I

elif type(x, 'undefined') then NumericTools:-ThrowUndefined(x)

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

elif type(x, 'imaginary') then x

else infinity + infinity*I

end if

 elif type(x, 'undefined') then NumericTools:-ThrowUndefined(x, 'preserve' = 'axes')

 elif `Symbolic/Sign`(x) = -1 then -erf(-x)

 else 'erf'(x)

 end if

end proc

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

Но вернемся к функции interface. Она служит для управления выводом и задается в виде

interface(arg1, arg2, …)

где аргументы задаются в виде равенств вида name=value и слов-указателей:

ansi autoassign echo errorbreak errorcursor

imaginaryunit indentamount labelling labelwidth latexwidth

longdelim patchlevel plotdevice plotoptions plotoutput

postplot preplot prettyprint prompt quiet

rtablesize screenheight screenwidth showassumed verboseproc

version warnlevel

Рассмотрим только некоторые, наиболее важные возможности этой функции.

Указание verboseproc=n задает степень детальности вывода листинга процедур. При n=0 текст не выводится, при n=1 выводится текст только заданных пользователем процедур, а при n=2 — всех процедур на Maple-языке. Пример этого был дан выше. Указание prettyprint=0 или 1 управляет выводом стандартных сообщений. Указание plotdevice=string управляет выводом графики, например plotdevice=gif указывает на то, что запись графиков в виде файлов будет происходить в формате .gif.

  • Читать дальше
  • 1
  • ...
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: