Манзон Б.М. Maple V Power Edition (1185908), страница 18
Текст из файла (страница 18)
Эти команды могут использоваться в следующих вариантах: + ггасе((); е (гасе(Г,Е,(),...); + вв(гасе((); + ив(гасе((,а,)),...); гле Г, а, )(, ... — имена процедур, которые будут трассироваться командой. Команда (тасе инициирует в течение выполнения программы вывол на дисплей точек входа, результат выполнения операторов программы н точек выхода трассируемой процедуры. В точках входа выводятся значения фактических параметров процедур, в точках выхода — значения возвращаемых функций.
Функция ив(гасе выключает трассировку по указанным процелурам. В качестве примера включим трассировку процедуры я, предварительно установив > рк1ххС1ехге1:=1( ргиг(еиг(:= ! > стасе(д)т > й(х)т ( †> ептет о, атяя = х у ц:=О <- ЕККОК тп д (пои тп т) = дтчтятоп Ьу вето) Еттот, (тп д) т(тчтятоп Ьу вето Мы видим, что трассировка при выполнении процедуры г" включена только для вложенной процедуры я. Если выполняемая процедура булет вводиться с символом двоеточия в конце команды, то на дисплей будут выводиться только параметры в точках входа и выхода процедуры, а результат выполнения операторов выводиться не будет.
> Ьхасе(й,д)гй(х) ( — > епсет Е, атея = х (-> ептет д, атдя = х, у <- ЕККОК тп д (пои тп й) = Ычтятоп Ьу вето) <- ЕККОК тп Е (пои ат тор 1ече1) = с((ч(ятоп Ьу вето) Еттот, (тп д) Жчтятоп Ьу гете 8. Программирование в среде )Ьгарге 173 Отиад чик Для отладки процедур в Мар!е имеется также более мощное средство— отладчик процедур. Отладчик вызывается автоматически при встрече с одной из меток, установленных в процедуре: в1ора1, агорттйеп, в1ореггог.
Когда отлалчик вызывается, он выводит на экран выражение, команду, которая должна выполняться следующей и приглашение ввода команды отладчика ГДОВО>. Если отладчик вызван командой прерывания (а(ора1), выводимое на экран выражение есть результат последней выполненной команды.
Если он вызван командой наблюдения за переменной (в1ортгйеп), выражение представляет собой равенство, левая часть которого — имя наблюдаемой переменной, а правая часть — значение, присвоенное этой переменной. Если отладчик вызван меткой сообщения об ошибке (вгореггог), выражение — сообщение об ошибке. Перечислим некоторые команды, которые можно вводить в режиме отладки; + соп1 — продолжить выполнения процедуры до следующей точки прерывания или до конца; + вгер — выполнить следующую команду; е он(1, попе, или в1ор — полностью остановить выполнение процедуры; е зйотгя1а1 [имя процедуры] [номер оператора[,.номер оператораЦ— вывести на экран операторы заданной процедуры с заданными номерами; е впоевгор — вывести на экран список всех процедур, солержащих метки; е в1орв1 [имя процедуры ] [номер оператора] [условие] — установить точку прерывания в заданной процедуре на операторе с заданным номером. Необязательное "условие", которое должно быть булевым выражением, приводит к остановке программы только в случае выполнения '"условия"; е нпв1ора1 [имя процедуры] [номер оператора] — удалить из процедуры указанную точку прерывания; е в1ортгпеп [имя процедуры переменная] — установить точку наблюления за заданной локальной или глобальной переменной и вывести на экран список точек наблюдения; ь нпв1орвйеп [имя процедуры переменная] — удалить из процедуры точки наблюдения за заданной переменной; 1 в1ореггог [сообщение об ошибке] — установить точку наблюдения за заданной ошибкой или вывести список установленных меток; е нпвгореггог [сообщение об ошибке] — удалить точку наблюдения за ошибкои; е любое выражение Мар1е — вычислить значение выражения в точке останова, 174 Мер!е У Роввег Ес((бои Приведем пример.
Пусть задана процедура и команда прерывания, включаюшая отладчик, > й: расс (х, у) 1оса1 а) о1оЬа1 Ь) йй х < у ЬЬеп а г х) Ь := у + а) е1ве а := у; Ь : х + а) Ы) а+Ь+х+у аг вЬораЬ(й)) > й(2,3)) 1: 1* 1й х < у СЬеп е1ее > аСориЬеп Ь $ 'устанавливаем точку наолзодения аа переменной Ь' (Ь] й: 1* 11 х < у спеп е1ве $ 'продолжаем выполнение программы ' > солт. Ь:= 5 й: б а+Ь+х+у > зЬоивйат.
$ 'выводим на экран текущее состояние' й := рхос(х, у) 1оса1 а; а1оЬа1 Ь; 8. Программирование в среде Марlе 175 * 2 з х < у Гиеп а := х; Ь := у+а е1ве а := у; Ь := х+а Йх; а+Ь+х+у 6 епд > еуа1с $ 'выходим ив режима отладчика' иатп~пд, соврпсасхоп ~псеттпрсей Чтение кодов библиотечных лроцедур > еча1 (имя процедуры); выводит на лисплей пользовательские процедуры полностью, однако библио- течные процедуры только схематично в форме ргос(х) ... епй; Если ввести команду > хптехйасе(чехЪоверхос ~ 2)г устанавливающую для переменной тегЬояергос значение 2, то командой ета) можно распечатать полный кол библиотечных процедур, но не процелур ядра (которые, как уже упоминалось, написаны на языке Си).
Примеры > еча1(й1папсе(аппихсу)); ргос('Сахй, Каге, Нрег~о<Ь) йеасг(рбоп 'Ргеяеп1 та1ие о('ап аппшгу раутя Сай регрегюйХог Хрепой репосЬ ' епо Иногда бывает необходимо прочитать кол встроенной процедуры Мор!е, чтобы, например, понять, почему она дает не тот результат, который вы ожидаете. С этой целью используется функция !птегГасе взаимодействия программы Мор!е с пользовательским интерфейсом. Эта функция используется лля установки и запроса всех переменных, которые определяют формат вывода на лисплей, но не связаны с вычислениями.
Одна из переменных этой функции чегЬоаергос определяет форму вывода на дисплей встроенных процелур Мор/е. По умолчанию эта переменная равна 1, при этом команда 176 Мвр!е 1/ Ромгег ЕбШоп 8.1.4. Сохранение процедур и чтение их в сеансе Иар/е Для сохранения кода созданной вами процедуры (или нескольких процедур) используется команда ваге 61епате или ваге пате!, пате2, ..., натек, 6!епагпе. Если команда записана в первой форме, то она сохранит все присвоенные имена в указанном файле, а если во второй, — только перечисленные имена.
Например, для сохранения всех созданных вами процедур в файле айзп в каталоге е:'~Май!еу4~Му1!Ь\ наберите просто в командной строке > вахте'е:/Иар1еЧ4/Иу11Ыайй.хв') Теперь можно из любого сеанса Мар!е получить доступ к процедурам, записанным в файле айлп, введя команду > кеес 'ес/Иар1е%4/Иуз йЫайй.ш'з 8.1.5. Создание собственной библиотеки и оформление справки по ее командам Теперь покажем, как можно пополнить библиотеку Май!е созданной вами процедурой и ввести справку о ней в базу данных, чтобы можно было в дальнейшем пользоваться ею как собственной Май!е-процедурой.
Предположим, что вы хотите использовать в дальнейшем созданную вами процедуру оператора аффинного преобразования для функции от одной переменной. > кевсакстайй:=расс(й,а::сопвсап~,Ь::сопвсап~) ипарр1у(й(а*х+Ь),х)т епо! а//:= ргвс(/ ахсолвалб Ьхсопвалг) ипарр!у(/(а*х + Ь), х) епй > айй ( (х->х) *сов, Рй, ехр(1) ) (х) ! (л х + е) сов(л х + е) В том же пакете вы хотите сохранить команду построения графика, содержашего кривые исходной функции 1" и функции а)Т(!). Назовем эту команду а(Тр1о! > аййр1осг=рхос(й,а:есопвсапс,Ь::сопвсапс,к".:хапае) р1ос((й,айй(й,а,Ь)),х]) епб) акр!ог:= ргос(/ ахсолиапб Ьхсотгалб г.:галле) р1о!(К а(((/; а, Ь)), г) еп4 8. Программирование в среде Мар!е 177 Например, применяя ее к функции х*соз(х), получим (рис. 72) > аййр1о~((х->х)*сов,РХ,ехр(1),О..Рх); Рис.
72 Прежде всего нужно создать каталог вашей библиотеки. Пусть этот каталог е:~Мар)еУ4~Му11Ь. Теперь нужно записать в нее коды созданных вами команд > вахте айй, аййр1оС,'е:/Мар1еЧ4/МуЬ1Ь/айй.та'т Чтобы из любого сеанса Мар(е получить доступ к процедурам, записанным в файле а(Т.пз, достаточно ввести команду: > аеас 'е: /Мар1еу4/ИуЬхЫайй.ш' р Для создания справки по команде нужно в отдельном рабочем документе оформить текст справки с возможными примерами использования так, как вы хотели бы, чтобы выглядел ваш справочный файл. Если придерживаться стандартов справок Шар!е, то этот файл будет выглядеть следуюшим образом: Оператор: ай — оператор аффинного преобразования функции Функция: а((р(о1 — функция построения графика кривых исходной и преобразованной функций 178 Мер)е 1/ Роигег Ее((т(оп Способ вызова; а(Г(Г, а, Ь) аГГ(р1ос(Г, а, Ь, г) Параметры: à — функция от одной переменной а — число Ь вЂ” число г — диапазон изменения переменной, имеет тип гапяе и записывается в виде г1..г2, где г1, г2 — границы диапазона.
Описание: + ай' возвращает функцию, эквивалентную зцЬз(х=а*х+Ь,Г(х)). + а(Гр!ог возвращает график с изображением исходной функции Ги функции аГГ(Г). Примеры: > хеас1 'ег/Иар1еЧ4/ИуЫЫайй.ш'е айй(иЯзз*сои,а Ы (зе)т Пример построения графика (рис. 73) > аНр1ос(ахп*соа,езер(1),Ра/4,0..Р1)т Рис. 73 8. Программирование в среде (йар!а 179 Теперь нужно сохранить его в виде рабочего документа Мар!е (с расширением щах) либо текстового файла (с расширением дх!). После этого вы должны включить его в базу данных справки. Для этого существует спепиальная команда шайеЬе!р, Она записывается в следующем виде: ша$сеЬе!р(название темы, файл справки, библиотека), где е название темы — название темы создаваемого файла справки; е текстовый файл — имя текстового файла, содержащего текст справки; е библиотека — библиотека, в которой должен быть сохранен файл справки, Название темы должно быть записано в форме 'имя ', или 'имя!/имя2'.