Maple V Power Edition

За да създадете процедура (подпрограма), която можете да използвате многократно, програматаMapleизползва конструкциятаproc/end. Процедурата е написана по следния начин

>Име:=proc(param1::type1,param2::type2. ) local l1,l2. ; глобален g1,g2. ; опции op1, op2, . ; орган на процедурата; край;

неочакван контролен знак

Започва с име, на което е присвоена ключовата думаproc(съкратено от процедура), последвана от формалните параметри на процедурата в скоби, с незадължителна индикация за техния тип - разделени с двойно двоеточие). Може да последва незадължително изброяване на локални и глобални променливи, използвани в тялото на процедурата, завършващо със знака ; .Последван, ако е необходимо, от изброяване на опцията за процедурата, завършващо с ;. Следва тялото на процедурата - алгоритъмът за изпълнение на процедурата. Процедурата задължително завършва с думатаend, последвана от терминатора на командата (двоеточие или точка и запетая). Резултатът от изпълнението на процедура е резултатът от последната извършена операция, освен ако не е приложена една от командите за връщане RETURN или ERROR (вижте по-долу).

В следващия пример много проста процедура plotdiff начертава кривите на функция и нейната производна на една графика (фиг. 68).

edition

В тази процедура на локална променлива се присвоява стойността на производната на израз.

Локални променливи-това са временни места в паметта за съхраняване на стойностите на променливите в рамките на процедура, те се генерират при всяко извикване на процедурата. Правилата за оценяване на локални променливи вътре в процедурите са различни от правилата за оценяване на променливи в командния ред (в интерактивен режим).

Представяме на някои командата за присвояванепроменлива a стойности b

след това присвояваме стойността c на променливата b

А сега да влезем

Така в интерактивен режимMapleоценява всички присвоявания, направени на променливаaдо края и извежда последната присвоена стойност. С помощта на командатаevalможете да извикате първата присвоена стойност

втора зададена стойност

както и всяко друго ниво на приписване. Командатаevalбез да указва ниво, оценява до последното ниво.

Сега нека видим какво се случва, ако променливата е локална променлива на някаква процедура. Като пример, ние пишем процедурата

Този резултат се дължи на факта, че когато се извика процедуратаMaple, се изчислява само първата присвоена стойност на локални променливи. Функцията eval ви позволява да изчислите последната присвоена стойност.

Изключение правиDitto-оператор ("). Това е една от променливите на работната среда (вижте по-долу), локална за процедурите. Когато процедурата се извика,Mapleприсвоява стойностNULL(празен израз) на променлива". По време на изпълнението на процедурата, Maple присвоява на променливата"стойността на последния израз, оценен до последното ниво на присвояване:

>f:=proc() локален a,b; print(`Първоначално ["] има стойност`,[%]); a:=b; b:=c; a+1; print(`Сега ["] има стойност`,[%]); край;

Глобалните променливиса достъпни от всяка процедура и на интерактивно ниво. По този начин глобалните променливи в една процедура се оценяват по същия начин, както са интерактивно, тоест до последното ниво на присвояване, освен когато глобалната променлива е таблица, масив или процедура. В последните трислучаи, променливата се оценява до оценката на фамилията.