пользователей: 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
хиты: 141
рейтинг:0
для добавления комментариев необходимо авторизироваться.
  Copyright © 2013-2026. All Rights Reserved. помощь