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

11. Объявления переменных локальными с помощью оператора local Объявления переменных локальными с помощью оператора local

Если в теле процедуры имеются операции присваивания для ранее определенных (глобальных) переменных, то изменение их значений в ходе выполнения процедуры создает так называемый побочный эффект. Он способен существенно изменить алгоритм решения сложных задач и, как правило, недопустим. Поэтому Maple-язык программирования имеет встроенные средства для исключения побочных эффектов. Встречая такие операции присваивания, Maple-язык корректирует текст процедуры и вставляет в нее объявление переменных локальными с помощью ключевого слова local и выдает предупреждающую надпись о подобном применении:

> restart:m:=0;

m := 0

> modc:=proc(z)

> m:=evalf(sqrt(Re(zr2+Im(zr2)):RETURN(m)

> end:

Warning, 'm' is implicitly declared local to procedure 'mode'

mode := proc (z) local т; т := evalf(sqrt(9*(z)A2 + 3(z)A2)); RETURN(m) end proc

> modc(3.+I*4.): 5.000000000

> m;

0

Обратите внимание на то, что в тело процедуры было автоматически вставлено определение local m, задающее локальный статус переменной т. Оператором print можно вывести текст процедуры:

> print(modc);

proc(z) local m; m := evalf(sqrt(R(z)^2 + J(z)^2)); RETURN(m) endproc