Главная » Просмотр файлов » Дьяконов В.П. Maple 9.5 и 10 в математике, физике и образовании

Дьяконов В.П. Maple 9.5 и 10 в математике, физике и образовании (1185901), страница 81

Файл №1185901 Дьяконов В.П. Maple 9.5 и 10 в математике, физике и образовании (Дьяконов В.П. Maple 9.5 и 10 в математике, физике и образовании.djvu) 81 страницаДьяконов В.П. Maple 9.5 и 10 в математике, физике и образовании (1185901) страница 812020-08-25СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 81)

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

При вызове процедуры выражением вида пате(Фактические параметры) фактические параметры подставляются на место формальных. Несоответствие фактических параметров типу заданных переменных ведет к сообщению об ошибке и к отказу от выполнения процедуры. В качестве примера ниже приведена процедура вычисления модуля комплексного числа 2 — в данном случае это единственный параметр процедуры (файл р4): > водсс=ргос(г) > еча!Г(аягс(ае(г)"2+1в(г)"2)) > епс); пюс(с: = ргос(2) еча(((ас) п(з((2) "2 + ((2)" 2)) епд ргос После ввода заголовка процедуры под строкой ввода появляется сообщение: «ууап)(пй, ргеп)а(цге епс! оГ (про(».

Оно указывает на то, что ввод листинга процедуры не закончен и должен быть продолжен до тех пор, пока не будет введено завершающее слово епс) листинга процедуры. Если после этого слова поставить символ точки с запятой, то листинг процедуры будет выведен на экран дисплея. Теперь для вычисления модуля достаточно задать обращение к процедуре п)ос)с(г), указав вместо 2 конкретное комплексное число: > вос)с(3.+1*4.)г 5.0000000000 Нетрудно заметить, что при знаке; после завершающего слова епо' текст процедуры повторяется в строке вывода (в общем случае в несколько ином виде).

20 за«. 180 /лава 1(/. Уиповые среоства программирования Если это повторение не нужно, после слова епс) надо поставить знак двоеточия. Обратите также внимание на то, что для обозначения действительной и мнимой частей процедуры в ее тексте появились готические буквы. 10.3.2. Графические процедуры В процедурах могут использоваться все вычислительные, графические и иные функции системы Мар!е. Так что материал предшествующих глав фактически уже был описанием возможностей языка программирования Мар!е. Как пример при- менения в процедуре графических средств, приведем процедуру построения коль- ца Мебиуса заданной ширины ххЫ()) (файл аргос): > шов: = расс (кис(ЕЬ) > р1оезс) ( ( (5~ось (1/2*с) 'о) *сов (С), (5+сов (1/2*1) *о) *ыо (с), ~хо (1/2*с) *о), с=0 .. 2*Р>, > о=.-нхс)ГЬ/5..ихо()1/5, чг>О=(50,10), > Лса1иос=цИСРН5ТГй1НЕ0> отзепеасхоо=(0, 140) ); ' ц *( ..

(х *:-*ц ::5, '"-1! х .:...О>,.>'.„";:. о-! !5 ' ' ',„,*,: и* ,г.~.>,. *.:,'!А-'-„-1,;; г .;::.**,.!, ",',." оо *,',;;.*;;. *";"...,::;~.,Ф.,У 4'.,-*5'(,;:' *;.:"*;**,* Р ,'...Ф*,:**. 'с.*ч'ъл" "4';:х."''...'-">*: . Рч*" "':;.:. (в >,'1х к:„.„.>' Хх > ч" '-!,.

','".ч. "'-, о>л 1":"." 'сх .'-':.":- ''.::::: ".".,";::::5', ,х:„,'*з.".,*о*„.,:.,",...к,,/5 ' '.. е о л:,:;г -*.'*' '". ',.:х,","';.Р.*,*, ":*, *",' о' „.,„: '>,:;.," "''',;';" '":л'-.5> ;„.„;:.~;",х"':" 2.;~":;;>,0 2:';.::-::~: .":-":-:: , ':.',.„...., . о, -:.„*,О'> „-",.':,.*-;,":;:.;., ':„*':.*:,*' '"-Х вЂ”:.* *,*;;,;* -" *, > ',.„.-" *'**;";:-; Хк - '.,„1Ч!;,***„'гт>-*;,„. Ля '*'- >0) .;,; '";*, -::;, *"-',:;„,,Х .1...,:,;!.,Ф>У 4:,.' " ° -„.*. ~ ... ",—;; "»:.*,." '.*..:" с ""."""„.. */ Зк:, '; '*,*;"!; оо: ';:,:, 1":,,;, 5 *"' '"„":о-'>х!.'..

"г ';;-' '.'5 'гг > ': ( .к Ф :,: ь., "* 'Й"',>*,. ',* ' . ":;Фт. ' -" ";"~*' ...,.>гз,. >ко,гх„;. *с>с)'„;,:'1,'!у;"',;, 611 10.3. Процедуры и процедуры-функции > еча1 (атот)с) ргос( г ) ечаИ(зцП( а]( 2 ) "2 + з ( 2 ) "2)) епд Ргос > госегеасе(чегьоаергос=1) > еча1(атос)с) ргос(г) ечаИ(я()г(()ц(г)"2+ т(2)"2))еп(] ргос Аналогичным образом можно просмотреть коды процедуры, уже созданной в Мар]е.

Например, не очень большой процедуры смены системы координат с]тапдесоог(]в из пакета расширении р!о(гс > гогегеасе (чегЬоаергос=о) т > еча1(р1оса[спалоесоогт)а]) ргос(р, соогт/) ... епд рптс > гпсегеасе (чегьоаергос-2) т > еча1(р1ога[спаооесоогт)а])т ргос (р, соог4 1оса1 с лате,а, Ь,с; орг!Оп 'СорупеЬ/ (с) /994 Ьу /Ье (/итчегг(ту о/' Магег/оо. А/1 г(иЬ/г геяегче4 а:=1; Ь:= 1/2; с:= 1/3; И (урс(сооп/, ~иисйои ) 1]теп с лате >сер(0, соогт/); Ивера(сооп/) = 1 1]теп а:=ор(1, сооп/) е1И поря(сооп/) = 2 бтеп а:= ор(1, соогт/); Ь:= ор(2, сооп() еИ порКсоогт/) = 3 1]теп а:=ор(1, соогт/); Ь:=ор(2, сооп/); с >аор(3, соои/) еЬе епог "1парргорпа(е ппп)Ьег о1 рагатпе(егв." еп(] И е!ве с лате:= сооп! епд И; И тпегпбег (с лапте, р]о(3(]/соопЬе(2' ( ) ) (]теп (р, с нате, а) еИ птетпЬег (с нагие „'р]о(3д/соопЬег ( ) ) Йеп р!о(а/с])апдесоопЫйгее(тапа' (р, с лате, а, Ь, с) еЬе епог "Саппо( сопчег( (о сооп[!Па(е вув(егп % Г, соогт/ епт] И епд ргос 20* огг глава ги.

типовые ереоства программироваиия 10.3.4. Оператор возврата значения ВЕТЦВР) Как отмечалось, процедуры, которые возвращают значение результата в ответ на обращение к ним, во многом тождественны функциям. Будем называть их процедурами-функциями. Обычно процедура возвращает значение последнего выражения в ее теле или выражения, намеченного к возврату специальным операторам возврата ВЕТ()й)ч' (файл р4): > вос)сс=ргос(г) > еча11(аягг (Ке (г) "2+1в (г) "2)) -' > кетоки(ъ) > еос); и ус: = ргос(1) ета)Г(гс)П(%(1)"2 + Кг)"2)); КЕТОК)Ч(%) еп4 ргос > вос)с(3.+1*4.)с 5.000000000 Параметром оператора ВЕТ()гс(Ч может быть любое выражение. В Мар!е не принято выделять процедуры-функции в какой-то отдельный класс. Действует правило — если не использован оператор ВЕТ0йй, процедура возвращает значение последнего выражения в ее теле.

Для устранения выдачи значений выражений внутри процедуры-функции после них просто надо установить знак двоеточия. 10.3.5. Статус переменных а процедурах и циклах Переменные, которые указываются в списке параметров (например, 2 в нашем примере) внутри процедуры являются локальяыми. Это означает, что изменение их значений происходит лишь в теле процедуры, то есть локально. За пределами тела процедуры эти переменные имеют то значение, которое у них было до использования процедуры. Это хорошо поясняет следующий пример (файл р5): > геагаггсгс=1; > вос)сс=ргос(г) > ееа11[аягг(Ке(г)"2+1в(г)"2!) > еос); тос(с: = ргос(1) етая(гс)п(%(1) "2 + 3(1)" 2)) еп() ргос > вос)с (3.

+1*4. ) с > г( Нетрудно заметить, что внутри процедуры 1 = 3 + Р4, тогда как вне нее значение 2 = !. Таким образом, имена переменных в списке параметров процедуры могут совпадать с именами глобальных переменных, используемых за пределами процедуры. Переменные, которым впервые присваивается значение в процедуре, также относятся к локальным. Кроме того, переменные, применяемые для организации циклов, являются локальными.

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

Поэтому Мар!е-язык программирования имеет встроенные средства для исключения побочных эффектов. Встречая такие операции присваивания. Мар1е-язык корректирует текст процедуры и вставляет в нее объявление переменных локальными с помощью ключевого слова !оса! и выдает предупреждающую надпись о подобном применении (файл р5): > геагагг:в:-0; > вес)с:=ргос(г] > в:-ееа1Г (аягс (Ве (г) "2+1в(г) "2) ): ВЕТОК (в) > есор Иаго1оо, в' ьа >вр11стг1у г)ес1агеб 1оса1 со ргосеооге 'воос' то((с:= ргос(2)!оса1т;и = еуа!Г(зцп(Я(2)"2+'.т(2)"2)); КЕТОК)Ч(т) епд ргос > вес)с(3.+1*4.); 5.000000000 Обратите внимание на то, что в тело процедуры было автоматически вставлено определение !оса! и), задающее локальный статус переменной и). Оператором рг1пс (вобс) можно вывести текст процедуры.

10.3.7. Объявления переменных глобальными с помощью слова д!оЬа! Говорят, что запретный плод сладок! Что бы ни говорили о нежелательности работы с глобальными переменными, бывает, что их применение желательно или даже необходимо. Чтобы сделать переменные внутри процедуры глобальными, достаточно объявить их с помощью ключевого слова д(оЬа), после которого перечисляются идентификаторы переменных. Следующий пример поясняет применение оператора д)оЬа! в процедуре (файл р5): > а:=1;Ь:=1; а:= ! > Го:=ргос(х,у) > о1оЬа1 а,Ь; > а:=х"2:Ь:=у"2: > Вктцаи(аягс(а+Ь)) > еоо; )':= ргос(х, у)е)оЬа) а, Ь; а:=х"2; Ь:=у"2; КЕТ$3К)Ч (я)П(а+Ь)) еп() ргос б14 Глава 20.

Типовые средства программирования > (а,Ь); (9, 161 В примере переменным а и Ь вначале присвоены значения 1. Поскольку они в процедуре объявлены глобальными, то внутри процедуры они принимают новые значения х' и у-. В результате при выходе из процедуры они имеют уже новые значения.

Это и есть побочный эффект при исполнении данной процедуры. Если пользователь не знает (или не помнит), что та или иная процедура имеет побочный эффект, то он рискует получить самые неожиданные (и неверные) результаты своих вычислений. Следует отметить, что нельзя делать глобальными переменные, указанные в списке параметров процедуры, поскольку они уже фактически объявлены локальными. Такая попытка приведет к появлению сообщения об ошибке следующего вида «Еггог, агйцгпеп( ап() 8!оЬа! 'х' Ьаче Озе аап)е пате».

Характеристики

Тип файла
DJVU-файл
Размер
14,75 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6381
Авторов
на СтудИзбе
308
Средний доход
с одного платного файла
Обучение Подробнее