* Данный текст распознан в автоматическом режиме, поэтому может содержать ошибки
Язык программирования системы Maple
> modc(3.+I*4.);
1047
5.000000000
> m;
0 Обратите внимание на то, что в тело процедуры было автоматически вставлено определение local m, задающее локальный статус переменной m. Оператором print можно вывести текст процедуры:
> print(modc);
Говорят, что запретный плод сладок! Что бы ни говорили о нежелательности работы с глобальными переменными, бывает, что их применение желательно или даже необходимо. Чтобы сделать переменные внутри процедуры глобальными, достаточно объявить их с помощью ключевого слова global, после которого пе речисляются идентификаторы переменных. Следующий пример поясняет применение оператора global в процедуре:
> a:=1;b:=1;
a := 1 b := 1
> > > > > fg:=proc(x,y) global a,b; a:=x^2:b:=y^2: RETURN(sqrt(a+b)); end;
> fg(3,4);
5
> [a,b];
[9, 16] В данном примере переменным a и b вначале присвоены значения 1. Посколь ку они в процедуре объявлены глобальными, то внутри процедуры они принима ют новые значения x2 и y2. В результате при выходе из процедуры они имеют уже новые значения. Это и есть побочный эффект при исполнении данной процедуры. Следует отметить, что нельзя делать глобальными переменные, указанные в списке параметров процедуры, поскольку они уже фактически объявлены ло кальными. Такая попытка приведет к появлению сообщения об ошибке следую щего вида: «Error, argument and global `x` have the same name». При этом соответ ствующие переменные останутся локальными.
14.2.7. Вывод сообщений об ошибках
При профессиональной подготовке процедур пользователь должен предусмот реть их поведение при возможных ошибках. Например, если он готовит процеду ру или функцию, вычисляющую квадратный корень из действительных чисел, то надо учесть, что такой корень нельзя извлекать из отрицательных чисел (будем,