Говорухин В., Цибулин Б. Компьютер в математическом исследовании (1185927), страница 80
Текст из файла (страница 80)
Теперь приготовим функции для работы с обьектами класса. Чтобы использовать для объектов нового класса знаки основных математических операций, созда- дим в каталоге ЙаиаФегп!Ьп функции с именами р1 аз и п>Ь!>гез, которые отвечают, соответственно, операциям сложения и матричного умножения. Список имен ма- тематических операций можно получить по команде Ье1р *. Реализуем операцию сложения кватернионов при помощи метода р) оз. (опс(>оп а О)о5(а.Ы ЖОоа(егп оп р1оз а х-а х«Ь.х; а у=а у»Ь.у: а.а=а.а+Ь лп а и-а.и>Ь.>«.
а=с!аез(а,'аиа(его'оп'), Аналогично для умножения кватернионов напишем функцию: (опс(>оп а-и(> ез(е,Ы ФОоа(егп>оп о1щ а х=а х"Ь х-а.у'Ь.у-а г*Ь.х-а.и*Ь >с о у-а.у*Ь.х+а.х*Ь.У+а.а*о,и-а и*Ь а, о.а=а.а*о.х+а.х*Ь.а а х »Ь.у-а.у"Ь.и. а.и-а и*Ь.х«а х*Ь.»-а.у*Ь х-ал*Ь.У: а-с1аее(а.'аоааегп(оп'); Для преобразования квагернио>щ к текстовому виду создадим функции> сваг и>, реалнзук>ц(ую метод представления переменных класса аиа1егп(оп: (ипс!>оп з-сьаг(а) ХОоагегп>оп сваг з-[поп2згг(а.х) Г»1*" пом2етг(а,у) "+О*" пим2з(г(ага) " К*" пим2е(г(а.и)1: Чтобы просматривать объекты, желательно иметь специальный метод ([(ар[ау. Для этого приготовим функцию О! зр1ау. и>, которая будет выводить содержимое объек- та, если в командной строке выражение с переменной этого класса не завершается разделителем точкой с запятой: Гопс(>оп О!зр)ау(а) ЖОоа(егшоп Шзр1ау Щ вр([>прогпаме(1) "-"1): О!ар(сваг(а)); Итак, в результате в каталоге ®Она[его(оп должны появиться функции с именами сваг л, 0 1зр1 аул, п>1!п>ез л, р1из л и аоатегп)опл.
Приведем несколько примеров обращения к построенным функциям. Определим кватернион по двум скалярным величинам: » а)-аоагегп(оп(0. 1) а1- 0+1*1+д*0~К*0 Используем в качестве входного параметра вектор Отладка 427 » С2=сэзтегюап((1 2 3 4)) е2 1«1*2«3*3«К*4 Вычислим выражение с использованием доопределенных для класса цоа(егп1оп операций умножения и сложения: » сз=а1"42 а1 43= -2+1*2+3*-4 К*3 Более детальные примеры по объектно-ориентированному программированию в сре- де МАТЮКАВ можно найти в документации по пакету или книгах [17, 20]. Отладка «Так уж человеку на роду написано — ошибаться до самой смертию — справедл иво замечал бравый солдат Швейк.
Если в процессе выполнения программы (э-функции) возникает ошибка, то МЛТ|ЛВ выводит диагностическое сообщение и номер строки, в которой, по мнению пакета, произошла ошибка. Эта информация полезна, но может быть довольно приблизительной, поэтому желательно в пропессе отладки программы иметь доступ к переменным для контроля вычислений и просмотра данных. Для отладки программ и э-функций могут быть полезны следующие простые рекомендации: Удалите подавляющие вывод данных на экран точки с запятой нли замените их запятымп. Тогда анализ промежуточных результатов может указать причину неверной работы.
сз Расставьте по тестируемому тексту операторы хеуЬоагЬ. При выполнении этих операторов МАТЕАВ приостановит работу, выведет приглашение (х»), и в режиме интерпретатора можно будет анализировать промежуточные результаты (выводить содержимое интересующих переменных, переопределять величины). о Превратите э — функцию в файл зспрд Закомментируйте описания в начале файла и выполните полученный файл. Кроме того, в МАТЕЛВ имеются специальные возможности для тестирования программ: набор команд отладки и средства редактора-отладчика п1еп)Ь В этом случае отладка заключается в расстановке точек останова, прогоне программы от точки к точке и просмотре данных.
Командный режим отладки является универсальным, поскольку одинаков для различных вычислительных систем, иодля среды %'1пг(о1чз режим отладки с использованием редактора шео)1 выглядит нагляднее и проще. Отладка в командном режиме Если отладку проводить при помощи команд среды МАТЮКАВ, то для установки и снятия точек останова применяются команды овзСор н оЬс1еаг, Каждая из этих тв28 Глава 16. Программирование в ИАТ[АВ команд имеет несколько вариантов применения, в частности команда 0Ь60ор еще и задает режимы отладки, а ОЬс! еаг отменяет назначения. Список команд отладки приведен в табл.
16.4. Таблица 1б.4. Команды отладки Команда Описание Определить точку останова Удалить точку (точки) останова Продолжить выполнение Выполнить команду отладки Завераить отладку Список точек останова дЬвсор дьс1еаг пьсопт 0Ьссер поен]С аьвгасх Полный список команд отладки с перечислением вариантов обращения можно посмотреть в системе справки (Ье1р ОеЬад), документации МАТ[.АВ или книгах, см., например, [П99]. Рассмотрим отладку для функции вычисления правой части системы Лоренца. чтобы определить точку останова в тексте функции 1ог, выполним команду Оьз[ор и укажем номер строки, по достижении которой работа функции должна быть приостановлена: » 6Ьвеор 1ог ! Запустим функцию 1ог » 1ог[0.
[О 1 5]', ' '.10,25,8731 Для продвижения отладки на шаг наберем К» 0Ьвтер Чтобы выйти из отлаживаемой функции, используем команду ОЬор, а чтобы вер- нуться — ОЬбоып. Посмотреть содержимое нужной функции можно при помощи ОЬЬуре. а стек вызова функций будет выведен по команде ОЬзтаск. Для завершения отладки введем К» 6ЬПЩС Чтобы убрать точки останова в функции 1ог, выполниы команду » поп!пег 1ог Когда интерпретатор достигнет помеченной строки, то выполнение функции остановится и МАТ[.АВ укажет соответствующее место (для %)пс(отчз будет запущен редактор птеб)си выделена строка), а в командном окне появится приглашение вводить команды в отладочном режиме Г». Используя это приглашение, можно вводить любые команды, например выведем значение параметра Ь: К» Ь Ь- 2.
6667 Отладка 429 Редактор ведИ и отладка Редактор-отладчик глеб)с обеспечивает удобную среду для подготовки и отладки гп-файлов в МАТ1АВ. Файл редактора гпеб16ехе находится в директории ~Ып и может быть вызван из командного окна МАТ|АВ (пункты йеы и Орел меню Г11е, запуск команды ебтг) или запущен как обычная программа. Редактор-отладчик предоставляет доступ к текстам и данным, в нем можно редактировать пз-файлы, вызывать для просмотра и изменения матричные переменные, организовывать отладку программ и функций.
Для просмотра данных нз рабочей области следует вызвать Ыогйзрвсе Вгоызег и выбрать (щелкнуть мышкой) нужную переменную. В редакторе откроется новый документ и появится таблица (матрица) с данными, которые можно просмотреть и переопределить. Эта возможность пока предоставляется для скалярных, векторных и матричных величин, так что многомерные массивы и структуры придется просматривать, запуская из командной строки вывод самой переменной или какой-то ее части. Если редактор гпебк вызван из командного окна, то в процессе вычислений редактирование становится невозможным. Чтобы в среде Жгпс)оьтв подготавливать код (файлы сценариев и функций) параллельно вычислениям, можно запустить редактор взел автономно от МАТ|АВ, но в этом случае просмотр данных будет невозможен.
Рассмотрим отладку с использованием средств редактора-отладчика. Назначения значков и соответствующих им пунктов меню Оебцй приведены в табл. 16.5. Таблица 1б.б. Пункты меню и значки отладки редактора шебгг Описание Значки Пункт меню й 5ет!С!еаг ВгеаХРо1пт Г12 а С1еаг А11 ВгеаХРозптз а 5тер 1п Е11 Расставитьгубрать точку останова Убрать все точки останова Построчное исполнение с заходом в вызываемые функции аа 51п51е 5тер Р10 й Сопы пое Построчное исполнение Выполнение до следующей точки останова Завершить отладку Оо1т ОеьиВО1пч Ряд пунктов меню позволяет установить режимы отладки, предусматривающие остановку при возникновении определенных ситуаций, см. табл.
16.6. Для отладки ш-функции вызовем из командного окна редактор птесйГ и считаем нужный файл. Чтобы указать точку останова в тексте функции, установим курсор на нужной строке и выполним пункт 5еГ~С1еаг Вгеайро! пс или щелкнем по отвечающему этому пункту значку. После расстановки точек останова запустим отлаживаемый файл. Пакет МАТ1.АВ выполнит все команды до первой точки и сделает 430 Глава 16. Программирование в ИАТВАВ паузу. Здесь можно просмотреть значения переменных, а затем продолжить работу программы. Таблица 16.6.
Пункты-указатели из меню отладки ОеЬид Пункт меню Назначение 51ор ~т гггог Остановка при ошибке 5тор тг Иагпчпд Остановка при предупреждающем сообщении 5тор тт Наи ог )пт Остановка при появлении нечисловой или бесконечной переменной На рис. 16.1 и 16.2 отражен процесс отладки рассмотренной в главе 15 «Численный анализ в МАТ).АВ» функции 1сг для вычисления правой части системы Лоренца. Рис. 16.1.