logo search
Самоучитель по Maple

Ключ builtin

Ключ builtin придает процедуре статус встроенной. Он должен использоваться всегда первым. С помощью функции eval(name) можно проверить, является ли функция с именем name встроенной:

> eval(type);

proc() option builtin; 268 end proc

> eval(print);

proc() option builtin; 229 end proc

Числа в теле процедур указывают системные номера функций. Следует отметить, что в новой версии Maple 7 они существенно отличаются от принятых в предшествующих версиях.

Ключ system

Этот ключ придает процедуре статус системной. У таких процедур таблица памяти может быть удалена. У обычных процедур таблица памяти не удаляется и входит в так называемый «мусорный ящик» (garbage collector).

Ключи operator и arrow

Эта пара ключей задает процедуре статус оператора в «стрелочной» нотации (->). Это достаточно пояснить следующими примерами:

Ключ trace

Ключ trace задает вывод отладочной информации:

> о:=ргос(х,у) option trace, arrow; x-sqrt(y) end:

о := proc (x, y) option trace, arrow, x - sqrt(y) end proc

> o(4,2.);

{--> enter o, args = 4,2.

2.585786438

<-- exit о (now at top level) = 2.585786438}

2.585786438

Ключ copyright

Этот ключ защищает тело процедуры от просмотра. Это поясняют следующие два примера:

> o:=proc(x,y) x-sqrt(y) end:

о := proc (x, у) х- sqii(y) end proc

> oo:=proc(x.y) option Copyright; x-sqrt(y) end;

oo := proc(x,y) ... endproc

> oo(4.2);

2.585786438

Нетрудно заметить, что во втором примере тело процедуры уже не просматривается. Для отмены защиты от просмотра можно использовать оператор interfасе(verboseproc=2).

14.gif

15. Общая форма задания процедуры

Общая форма задания процедуры

Выше мы рассмотрели основные частные формы задания процедур. Все они могут быть объединены в общую форму задания процедуры:

name:-proc(<argseq>) # объявление процедуры

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

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

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

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

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

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

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