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

на главную - закладки

Жанры

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

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

Шрифт:

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

f := proc(n) if n < 2 then n else f(n - 1)+f(n-2) end if end proc

> time(f(30));

4.891

> f(30);

832040

Вычисление f(30) по этой процедуре на ПК с процессором Pentium 4 НТ 2,6 ГГц в системе Maple 9.5 время вычисления

составляет менее 5 с — см. контроль этого времени с помощью функции time (результат в секундах).

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

> restart;

> fe:=proc(n) options remember; if n<2 then n else fe(n-1)+fe(n-2) fi

end:

> fe(30);

832040

> time(fe(30));

0.

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

10.3.11. Ключ builtin

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

> eval(type);

proc option builtin, 274 end proc

> eval(print) ;

proc option builtin, 235 end proc

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

10.3.12. Ключ system

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

10.3.13. Ключи operator и arrow

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

> o:=proc(x,y) option operator , arrow; x-sqrt(у) end;

о:=(x,y)→x-√y

> о(4, 2);

4 - 2

> о(4, 2.);

2.585786438

10.3.14.

Ключ trace

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

> o:=proc(x,y) option trace, arrow; x-sqrt(y) end;

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

> о(4, 2.);

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

2.585786438

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

2.585786438

10.3.15. Ключ copyright

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

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

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

> oo:=proc(х,у) option Copyright; x-sqrt(у) end;

oo:= proc(x,у) … end proc

> oo(4,2.);

2.585786438

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

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

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

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

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. Средства контроля и отладки процедур

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

Черный Маг Императора 6

Герда Александр
6. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
7.00
рейтинг книги
Черный Маг Императора 6

Оцифрованный. Том 1

Дорничев Дмитрий
1. Линкор Михаил
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Оцифрованный. Том 1

Кодекс Охотника. Книга XIV

Винокуров Юрий
14. Кодекс Охотника
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга XIV

Штуцер и тесак

Дроздов Анатолий Федорович
1. Штуцер и тесак
Фантастика:
боевая фантастика
альтернативная история
8.78
рейтинг книги
Штуцер и тесак

Я снова граф. Книга XI

Дрейк Сириус
11. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Я снова граф. Книга XI

Болотник

Панченко Андрей Алексеевич
1. Болотник
Фантастика:
попаданцы
альтернативная история
6.50
рейтинг книги
Болотник

Кодекс Крови. Книга III

Борзых М.
3. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга III

Жестокая свадьба

Тоцка Тала
Любовные романы:
современные любовные романы
4.87
рейтинг книги
Жестокая свадьба

Стеллар. Трибут

Прокофьев Роман Юрьевич
2. Стеллар
Фантастика:
боевая фантастика
рпг
8.75
рейтинг книги
Стеллар. Трибут

Голодные игры

Коллинз Сьюзен
1. Голодные игры
Фантастика:
социально-философская фантастика
боевая фантастика
9.48
рейтинг книги
Голодные игры

Последняя Арена 8

Греков Сергей
8. Последняя Арена
Фантастика:
боевая фантастика
рпг
5.00
рейтинг книги
Последняя Арена 8

Черный маг императора 2

Герда Александр
2. Черный маг императора
Фантастика:
юмористическая фантастика
попаданцы
аниме
6.00
рейтинг книги
Черный маг императора 2

Последний Паладин

Саваровский Роман
1. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин

Измена. Свадьба дракона

Белова Екатерина
Любовные романы:
любовно-фантастические романы
эро литература
5.00
рейтинг книги
Измена. Свадьба дракона