Дьяконов В.П. Maple 9.5 и 10 в математике, физике и образовании (1185901), страница 80
Текст из файла (страница 80)
Использование хотя бы одного параметра функции в виде числа с плавающей точкои ведет к тому, что функция возвращает результат также в виде числа с плавающеи точкой. 10.1.2. Конструктор функций цпарр<у Еще один способ задания функции пользователя базируется на применении функции-конс~нруктора цпарр1у: паве:нцпарр1у(ехрг,чаг1,чаг2,...) Ниже даны примеры такого задания функции пользователя (файл р1): > геегагг; > гв:вепарр1у(ес)гг(х"2+у"2),х,у) дн: = (х, у) -+ ~~х+у) > Гв(4.,3.) / 5.000000000 > ге: гепарр1у (х" 2+у" 2, х, у) 1е: = (х, у) -+ х~ + у > ге (его (х), сох <х) ); Б!п(х) +сов(х) > е1вр11гу (ге (а1п (х), сох (х) ) ): Последний пример показывает возможность проведения символьных операций с функцией пользователя. 10.1.3.
Визуализация функции пользователя В ряде случаев весьма желательна визуализация результатов выполнения функций пользователя. Порой она может давать неожиданный результат. На рис. 1О.! представлены примеры задания двух функций пользователя от двух переменных и построение их графиков с помощью функции р(о(Зс). При задании функций пользователя рекомендуется просмотреть их графики в нужном диапазоне изменения аргументов. К сожалению, наглядными являются только графики функций одной и двух переменных.
602 [ > 22: (х.у) ->х1п [х>у) / (хху) > р1охзс[[42(х,у),х -4..4,у -4..4,ог[опьпоуоп [60,2511) с 1 О [ Глава 10. Типовые ередеп(ва программирования вп СО ЬХ их Р:хо ГО4 4 и 4, Ьхх [ Задание функции пользователя двух переменных и построение их графиков [> 41: (Х,У) ->-ОО4 (Х*У) / (Х*У>З): > р1охза(21 [х,у),х -6..6,у -6.. б,о>хоп[ 14[оп [З5,2511; .М. [о х 1 б03 10.2 Управляющие структуры Лля графической визуализации импликативных функций служит функции впрйсйр!о1 пакета р!ог5.
На рис. 30.2 представлено задание двух импликатцвных функций и построение их графиков. >>КХЕИ>" ИХК 4 ° Ккк х [ Задание имппикативннк функции и построение ик графиков [ > н11Н(р1ст>1: ! > !тсх1: 2*х"2 + 5*у 2 15: У 1:=1 -+5к =15 > знр11с11р1ск! 11ип1. х — 5 .. 5. у -5 .. 5.сс1сс-Ы>сЦ 1 .„' "-; —; """";"-' «;"";~е";ь~,",, >Ф','!!" '," ';„-„.~„'-. ';.: .~ „:,"-"""„-;."""""', '",>кк;,~' "У:~,:::!:„' Е-:.-.„-'»':- та в ' ' КЕ З )ар ';К'„а: Е";.'У З'„' ' Глава 10.
Типовые ереогтва лрограммироваиии В вертикальных чертах ~ ~ указаны необязательные элементы данной конструкции. Следующие два вида условных выражений чаще всего используются на практике: 11 <Условие> 1))еп <Элементы 1> б — если Условие выполняется, то исполняются Элементы 1, иначе ничего не выполняется; 11 <Условие> 11)еп <Элементы 1> е(ве <Элементы 2> б — если Условие выполняется, то исполняются Элементы 1, иначе исполняются Элементы 2. В задании условий используются любые логические конструкции со знаками сравнения 1«, =, », =, =, <>1 и логические операторы ап0, ог и по1, конструкции с которыми возвращают логические значения ((це и 1а(ве.Рассмотрим следующий простой пример (файл р2): > х:=-5.
> дг х<0 сЬев ргдвс('Неоасдче') гд: Феда((че > х:=1: > дг х<0 спев ргдпс('Неоасдне') Ед; В этом примере анализируется значение х. Если оно отрицательно, то с помощью функции вывода рпп1 на экран выводится сообщение «(Чейа()че». А вот если х неотрицательно, то не выводится никакого сообщения. В другом примере если х неотрицательно, то выводится сообщение «Ров)1(че»: > х:=-5: > дг х<0 слеп ргдвс('иеоасдне') е1ае ргьпс('Роадсдче') гд; Феда(те > х:=1: > дг х<0 спев ргдпс('иеоасдче') е1ае ргдвс('Роадсдче ) гд; Роги(че Приведем еще один пример, показывающий особую форму задания конструкции 114))еп-е(ве-6: > х:=-5: > дй' (х<0, ргдвс('иедас1че'),рг1пс('Роедсдче')) )уе~а((че > х:=1: > дг' (х<0, ргдпс('иеоасдче'),ргдвс('Роадсдче')) Ройте В этой конструкции вида 'дда '(Условие, Выражение1, Выражение 2) если Условие выполнятся.
то будет исполнено Выражение1, в противном случае будет исполнено Выражение2. Ввиду компактности записи такая форма условного выражения нередко бывает предпочтительна, хотя она и менее наглядна. На рис. 10.3 представлено применение данной конструкции для моделирования трех типов сигналов.
К сожалению, функции на базе конструкции 11 не всегда корректно обрабатываются функциями символьной математики. Поэтому нало тщательно контролировать полученные в этом случае результаты. б05 10.2. Управляющие структуры а(С> Ех кс» ): 1 с м~ Н р [ ГРаФики ряда функции, ссдержашик условные выражения с функциеи В > р1ос('11 (>1о(к]/х>О,а]о(х)/х,-х(о(х)/х],к -10..10,со1ог 0)ася) .в - ° ° „в > р1ос('11' (Б1П(х)> 0,1,-1],к -10 .10,со1ог ыаск) ' */)с,'!с;>'* """,жР]сс(] и",;/О';"',) ",:.",".~-' Глава 10. Типовые средства ироераммирования В нем выводятся значения переменной ! в ходе выполнения цикла. Нетрудно заметить, что она и впрямь меняется от значения 1 до значения 5 с шагом +1.
Следующий пример показывает, что границы изменения управляющей переменной можно задать арифметическими выражениями: > гог 1 ггов 7/(2+5! го 2+3 с(о ргупг(г! оФ А еше один пример показывает задание цикла, у которого переменная цикла меняется от значения 1 до 1(! с шагом 2: > аког 1 ггов 1 го 10 Ьу 2 г(о рггпг<1) обц В этом случае выводятся нечетные числа от 1 до 9. Шаг может быть и отрицательным: > гог 1 Ггов 9 го 1 Ьу -2 оо рггпг(г! ос(; Следует отметить, что ехрг1>ехрг2 задать заведомо невыполнимое условие. например, ехрг1)ехрг2 и положительное значение шага, то цикл выполнятся не будет. В цикл можно прервать с помощью дополнительного блола (н(7!!е <ехрг4>. Цикл с таким блоком выполняется до конца или до тех пор, пока условие ехрг4 истинно: > гог г ггов 1 го 10 Ьу 2 ив>1е г<б оо рггпг(1] обц б07 10.2.
Управляющие структуры Таким образом, конструкция цикла в Мар!е-языке программирования вобрала в себя основные конструкции циклов [ог и ууП)]е. Есть еше одна, более специфическая конструкция цикла: [Гог <паже>) )гп <ехрг1>) )еь11е <ехрг2>) оо <аГаеевепГ аеяпепое> оог Здесь ехрг) задает список значений, которые будет принимать управляющая переменная пате. Цикл будет выполняться, пока не будет исчерпан список и пока выполняется условие, заданное выражением ехрг2. Следующий пример иллюстрирует сказанное: > Гог 1 уп [1, 2, 5, -1, 7, 12) оо рггпе (1) оо) > Гог 1 вп [1,2,5,-1,7,12] еа11е г>0 с)о рг1пГ(г! ос)г В цикле этого вида управляющая переменная может меняться произвольно.
10.2.3. Вложенные циклы и задание с их помощью матриц Циклы могут быть вложенными. Это иллюстрирует следующий пример, создающий единичную матрицу на базе заданного массива М: > М:=аггау(1 .. 3,1 ..3); М: = аггау(! .. 3, 1 .. 3, [ )) > ГОГ 1 ГО 3 <)О ГОГ 3 ГО 3 ОО М[Г,31:=0;1Г >=3 ГПЕП М[Г,3):=1 ГГ о<) оог > еча1М(М)г Этот пример имеет не более чем познавательное значение, поскольку для создания такой матрицы Мар[е имеет функции [с[еп([(у, с помощью которой функция аггау позволяет сразу создать единичную матрицу: > аггау (1 ..
3, 1 .. 3, гвеп<1Гу); ,] Однако по образцу этого примера читатель может задавать другие, нужные ему, матрицы. Глава 10. Толовые греоства програло ер 10.2.4. Упрощенная конструкция циклов В заключение отметим, что возможна упрощенная частная конструкция цикла типа (вп)!е: еиг1е ехрг оо егагееЧ обо Здесь выражения в!а!ве() выполняются, пока выполняется логическое условие ехрг. Пример такого цикла: > п:=1; п:= 1 > еиг1е п<1б г(о и:=2*и оо; и."=2 В этом примере идет удвоение числа и с начальным значением и = 1 до тех пор, пока значение п меньше 16. 10.2.5. Операторы пропуска и прерывания циклов Иногда бывает нужным пропустить определенное значение переменной цикла.
Для этого используется оператор пех! (следующий). Приведенный ниже пример иллюстрирует применение оператора пех! в составе выражения йзй для исключения вывода значения ! = — 2: > гог г ги (1,2,3,-2, (] с(о гг г=-2 Гьеп пехг е1ее ргьпг(1) гг ос(; Другой оператор — Ьгеа)( — прерывает выполнение фрагмента программы (или цикла) Его деиствие поясняет слегка модифицированный предшествующий пример: > гог г ги (1,2,3,-2,4) оо 1Г 1=-2 гйеи Ьгеак е1ее ргупс(г) гг ог(; В данном случае при значении ! = -2 произошло полное прекращение выполнения цикла. Поэтому следующее значение 4 переменной! присвоено не было и зто значение на печать не попало. Любой из операторов ()ц!(, ()опе или в!ор обеспечивает также прерывание выполнения текущей программы (в частности цикла), но при этом окно текущего документа закрывается.
609 10.3. Процедуры и процедуры-функции 10.3. Процедуры и процедуры-функции 10.3.1. Простейшие процедуры Процедурой называют объект программы, имеющий самостоятельное значение и выполняющий одну или несколько операций. Процедуры являются важнейшим элементом структурного программирования и служат средством расширения возможностей системы Мар(е пользователем. Каждая процедура имеет свое уникальное имя и список параметров (он может быть пустым). Процедуры вызываются так же как встроенные функции — указанием их имени со списком фактических параметров. При этом просто с)роцедуры обычно не возвращают каких-либо значений после своего исполнения. хотя могут присваивать значения входящим в них переменным. Прадед)ры-функции в ответ на обращение к ним возвращают некоторое значение.