Запись и считывание данных Язык С Фортран Макрос Внешние вызовы Установка закладок Графические результаты двумерные графики трехмерные графики Числа и числовые константы Комплексные числа Списки выражений Массивы, векторы и матрицы

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

Ключи в процедурах

В объявление процедуры можно включить ключевые слова, вводимые словом

 options opseq

Иногда их называют расширяющими ключами. Предусмотрены следующие ключи:

Ключ remember

Ключ remember обеспечивает занесение результатов обращений к процедуре в таблицу памяти, которая используется при исполнении процедуры. Функция ор позволяет вывести таблицу:

> f:=proc(x) options remember; х^3 end: 

> f(2):

8

> f(3):

27

> op(4,eval(f)): table([2 = 8, 3 = 27]) ,

Ключ remember особенно полезен при реализации итерационных процедур. К примеру, в приведенной ниже процедуре (без использования ключа remember) время вычисления n-го числа Фибоначчи растет пропорционально квадрату n: 

> f:=proc(n) if n<2 then n else f(n-l)+f(n-2) fi end;

 f:=proc(w)if n <2 then и else f(n - l) + ft>-2)endif endproc 

> time(f(30)): 27.400 

> f(30): 832040

Вычисление f(30) по этой процедуре на ПК с процессором Pentium II 350 МГц занимает около 30 с — см. контроль этого времени с помощью функции time (результат в секундах).

Стоит добавить в процедуру ключ remember, и время вычислений резко уменьшится:

> restart;

> fe:-proc(n) options remember: if n<2 then n else fe(n-l)+fe(n-2) fi end: 

> fe(30);

832040

> time(fe(30)); 

0.

При этом вычисление fe(30) происходит практически мгновенно, так как все промежуточные результаты в первом случае вычисляются заново, а во втором они берутся из таблицы. Однако это справедливо лишь тогда, когда к процедуре было хотя бы однократное обращение. Обратите внимание на то, что данные процедуры являются рекурсивными — в их теле имеется обращение к самим себе.

 

Ключ 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).

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