В качестве примера ниже приведена процедура вычисления модуля комплексного числа z — в данном случае это единственный параметр процедуры (файл р4):
> mode:=рroc(z)
> evalf(sqrt(Re(z)^2+Im(z)^2))
> end;
После ввода заголовка процедуры под строкой ввода появляется сообщение: «Warning, premature end of input». Оно указывает на то, что ввод листинга процедуры не закончен и должен быть продолжен до тех пор, пока не будет введено завершающее слово end листинга процедуры. Если после этого слова поставить символ точки с запятой, то листинг процедуры будет выведен на экран дисплея.
Теперь для вычисления модуля достаточно задать обращение к процедуре modc(z), указав вместо z конкретное комплексное число:
> mode(3.+I*4.);
Нетрудно заметить, что при знаке ; после завершающего слова end текст процедуры повторяется в строке вывода (в общем случае в несколько ином виде).
Если это повторение не нужно, после слова end надо поставить знак двоеточия. Обратите также внимание на то, что для обозначения действительной и мнимой частей процедуры в ее тексте появились готические буквы.
10.3.2. Графические процедуры
В процедурах могут использоваться все вычислительные, графические и иные функции системы Maple. Так что материал предшествующих глав фактически уже был описанием возможностей языка программирования Maple. Как пример применения в процедуре графических средств, приведем процедуру построения кольца Мебиуса заданной ширины width (файл gproc):
> mob := proc(width)
> plot3d([(5+cos(1/2*t)*u)*cos(t),
(5+cos(1/2*t)*u)*sin(t),sin(1/2*t)*u], t=0..2*Pi,
> u=-width/5..width/5, gnd= [60,10] ,
> scaling=UNCONSTRAINED, orientation= [0,140]);
> end:
Запуск этой процедуры командой
> mob(5);
строит фигуру, показанную на рис. 10.4.
Рис. 10.4. Кольцо Мебиуса, построенное графической процедурой
10.3.3. Просмотр кодов процедур
Коды процедур на языке Maple можно просмотреть с помощью функции eval(name) или pint(name), где name — имя процедуры. При этом уровень просмотра можно менять с помощью функции interface (verboseproc=N), где N — уровень вывода. Следующий пример иллюстрирует это для только что созданной процедуры mode (файл р4):
> eval(modc);
> interface(verboseproc=0);
> eval(modc);
> interface(verboseproc=1);
> eval(modc);
Аналогичным образом можно просмотреть коды процедуры, уже созданной в Maple. Например, не очень большой процедуры смены системы координат changecoords из пакета расширении plots:
> interface(verboseproc=0);
> eval(plots[changecoords]);
> interface(verboseproc=2);
> eval(plots[changecoords]);
proc
local
option
if typ
if nops(coord) = 1 then
elif nops
elif
else error 'Inappropriate number of parameters.'
end if
else
end if;
if member(
elif member(
`plots/changecoords/threetrans`
else error 'Cannot convert to coordinate system %1',
end if