пользователей: 30398
предметов: 12406
вопросов: 234839
Конспект-online
РЕГИСТРАЦИЯ ЭКСКУРСИЯ

Комп. Алгебра:
» 1.Делимость в кольце целых чисел. Свойства операции деление. Доказательство беск..
» 2. НОД целых чисел. Доказательство представимости НОД в форме безу
» 19. Операции над целыми числами
» 17.Задание функций
» 18. команды plot и display
» 20. оператор if. его синтаксис ...
» 21-22. Цикл for and while
» 20-22. if, for, while
» 23. Процедура
» 24. формальные параметры
» 27. выражение и их типы
» 28. операнды и выделение подоперандов
» 25.Локальные переменные и глобальные
» 29. Типы данных. Команды определение и проверки типа данных
» 30. Внутреннее представление выражений
» 31. Многочлены от одной переменной...
2 семестр алгебра:
» 2.Кривые эллиптического типа. Окружность, эллипс: определение, канон. уравне....
» 1. Общее уравнение линии 2 порядка.....
» Линии второго порядка. Эллипс и его каноническое уравнение. Окружность
I семестр:
» 37. Признаки сходимости несобственных интегралов от неотрицательных функций
» 38. абсолютная и условная сходимость несобственных интегралов
» 35. Несобственные интегралы на бесконечном промежутки
» 36. Несобственные интегралы на конечном промежутки
» 11. Метод интегрирование рациональных дробей
» 10. Метод интегрирование по частям
» 12. Интегрирование выражений вида R(Sin(x)),Cos(x)
» 4.Формулы Маклорена для основных элементарных функций
» 1. Эквивалентность функций
» 2. Формула Тейлора, Маклорена. Остаточный член формулы Тейлора в форме Пеано
» 3. Остаточный член формулы Тейлора в общей форме
» 5. Первый дифференциал функции. Инвариантность формы первого дифференциала
» 6. Дифференциал n-го порядка. Неинвариантность формы второго дифференциала
» 7. Первообразная и неопределенный интеграл. Таблица основных интегралов
» 8. Свойство неопределенного интеграла
» 9. Замена переменной в неопределенном интеграле
» 13. Интегрирование дробно-линейных иррациональностей
» 14. Интегрирование квадратичных иррациональностей посредством подстановок Эйлера
» 15. Интегрирование биноминального дифферинциала
» 16. Определенный интеграл по Риману, необходимые условия его существования
» 17-18.Суммы Дарбу,их свойство связанные с выборкой (18 - с разбиением)
» 19. Критерий интегрируемости интеграла по Риману
» 20. Интегрируемость непрерывной функции
» 21. Интегрируемость монотонной ограниченной функции
» 22-24. Свойство определенного интеграла, связанные с ......
» 25. Оценки интегралов. Теорема о среднем
» 26.Определенный интеграл с переменным верхним пределом. Формула Ньютона - лейбн.
» 27. Замена переменной и интегрирование по частям в определенном интеграле
» 28.Квадрируемость площадей плоских фигур. Вычисление площадей плоских фигур с..
» 29. Параметрическое представление кривых
» 30. Вычисление длины дуги плоской кривой, заданной параметрически
» 31. Вычисление длины дуги плоской кривой, заданной полярным уравнением
» 32. Площадь криволинейного сектора
» 33-34. Кубируемость обьемов тел вращение. Вычисление обьемов тел вращения

Локальные переменные

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

Введем команду присваивания некоторой переменной а значения b

a:=b;

[Maple Math]

после этого присвоим переменной b значение с

b:=c;

[Maple Math]

А теперь введем

a+1;

[Maple Math]

Таким образом, в интерактивном режиме Maple вычисляет все произведенные присвоения переменной а до конца и выводит последнее присвоенное значение. Используя командуeval можно вызвать первое присвоенное значение

eval(a,1);

[Maple Math]

второе присвоенное значение

eval(a,2);

[Maple Math]

а также любой другой уровень присвоения. Команда eval без указания уровня вычисляет до последнего уровня.

eval(a);

[Maple Math]

Теперь посмотрим, что будет происходить, если переменная является локальной переменной некоторой процедуры. В качестве примера запишем процедуру

f:=proc()
local a,b;
a:=b;
b:=c;
a+1;
end;

[Maple Math]

f();

[Maple Math]

Такой результат связан с тем, что при вызове процедуры Maple вычисляет только первое присвоенное значение локальных переменных. Функция eval позволяет вычислить последнее присвоенное значение.

eval(f());

[Maple Math]

Исключение - Ditto -оператор ( " ). Он является одной из переменных операционной среды (смотрите ниже), локальным для процедур. При вызове процедуры Maple назначает переменной " значение NULL (пустое выражение). В процессе выполнения процедуры Maple присваивает переменной " значение последнего выражения, вычисленного до последнего уровня присвоения:

f:=proc()
local a,b;
print(`Вначале ["] имеет значение`,[%]);
a:=b;
b:=c;
a+1;
print(`Теперь ["] имеет значение`,[%]);
end;

[Maple Math]
[Maple Math]
[Maple Math] [Maple Math]
[Maple Math]

f();

[Maple Math]

[Maple Math]

Глобальные переменные доступны изнутри любой процедуры и на интерактивном уровне. Таким образом глобальные переменные внутри процедуры вычисляются также, как в интерактивном режиме, то есть до последнего уровня присвоения, кроме тех случаев, когда глобальная переменная является таблицей, массивом или процедурой. В этих последних трех случаях переменная вычисляется до последнего присвоенного имени (last name evaluation).

 

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

Вычисление параметров происходит следующим образом. Фактические параметры вычисляются полностью еще до передачи внутрь процедуры. Внутри процедуры, везде где появляются в выражениях формальные параметры, они заменяются соответствующими значениями фактических параметров.

Для оперирования параметрами процедуры в Maple введены специальные функции:

args[i] или args[i..j] - последовательность фактических параметров (аргументов), передаваемых процедуре

и nargs - число параметров, передаваемых процедуре.

При помощи функции args[i] можно выделить часть последовательности параметров, передаваемых процедуре, что очень удобно при программировании некоторых процедур, например, в следующей процедуре определяется максимальное из последовательности чисел

maximum := proc () local r, i;
r := evalf(args[1]);
for i from 2 to nargs do if evalf(args[i]) > r then r := evalf(args[i]) fi od;
r
end;maximum(Pi,exp(1),3);

[Maple Math]
[Maple Math][Maple Math]

[Maple Math]

Формальные параметры процедуры можно также применить для передачи внутрь процедуры имени, с целью присвоения результата выполнения процедуры. Запишем процедуру

Square:=proc(x::anything, y::name)
y:=x^2;
end;

[Maple Math]

В этой процедуре результат присваивается второму параметру. Пусть, например этот параметр ans

Square(d,ans);ans;

[Maple Math]

[Maple Math]

Однако при таком использовании параметра нужно соблюдать осторожность. Если мы не отменим присвоение, то Maple сообщит ошибку при повторном вызове процедуры.

Square(d,ans);ans;

Error, Square expects its 2nd argument, y, to be of type name, but received d^2

[Maple Math]

Ошибка связана с тем, что Maple внутри процедуры не перевычисляет параметр y и пытается присвоить одно выражение другому. Чтобы этого не происходило нужно имя фактического параметра, в данном случае ans заключать в прямые кавычки, то есть писать 'ans`.

А теперь запишем первым параметром процедуры переменную а , которой произведено двухуровневое присвоение

a:=b:
b:=c:
Square(a,'ans');ans;

[Maple Math]

[Maple Math]

Мы видим, что в этом случае выполняется вычисление до последнего уровня присвоения. Это объясняется тем, что передаваемый внутрь процедуры фактический параметр вычисляется на интерактивном уровне еще до передачи внутрь процедуры.

http://www.exponenta.ru/soft/Maple/manson/poweredition/chapter8/8_1_2_1.asp


27.06.2016; 17:14
хиты: 80
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2025. All Rights Reserved. помощь