![]() ![]() ![]() ![]() ![]()
Раздел: Документация
0 ... 43 44 45 46 47 48 49 ... 177 4.6. Поиск ошибок в программах ❖ 151 Пример 4.20. Вывод сообщения об ошибке Т(х) >= "cant devide by zero" on error —— x - l Т(я)« 0.113 T(0.3)--1.099 T( 1) « "cant devide by zero" Обратите внимание, как интересно задана функция в примере 4.20: оператор ал error возвращает значение самого выражения в том случае, если в нем нет ошибки. Если вас не устраивает форма сообщения в виде текстовой строки, то его можно вывести в принятой в Mathcad форме, то есть в виде желтой всплывающей подсказки. Для этого нужно использовать специальную функцию error(«S»), где 5 — текст сообщения (рис. 4.2)..CtV Tf>J - Mro<ceo4d*videbyi«folM *) on иг»- Т(») -0.113 ТГ0Д) - -1 DW TCI) - "TmtiI (toviito by zoiotli [ Рис. 4.2. Использование функции error 4.6. Поиск ошибок в программах До тех пор пока вы не приобретете достаточно опыта, ваши программы вряд ли будут работать с первого же запуска. Почти наверняка они будут содержать множество ошибок и незамеченных опечаток. Конечно, большинство из них может быть легко кайлено, но если вы сталкиваетесь с ошибкой такого типа впервые, определить ее расположение будет непросто. Особенно это касается больших программ, запутаться в которых очень и очень легко даже опытному программисту. В универсальных языках программирования высокого уровня ошибки обычно находит сама система при процедуре, называемой компиляцией. В Mathcad подобной процедуры нет. однако возможность быстро и легко определять ошибки в синтаксисе алгоритма имеется. Рассмотрим конкретную ошибочную ситуацию (рис. 4.3): при попытке использования программы, вычисляющей интеграл по методу трапеций, система выдает сообщение This variable is undefined (Эта переменная не определена), При проверке всех используемых в программе переменных они оказываются заданными верно. В чем же реальная причина сбоя? У авторов этой книги, столкнувшихся с данной проблемой при написании раздела об интегрировании, самостоятельно найти ошибку не получилось. Если не получится и у вас, то стоит обратиться за помощью к система Для этого щелкните правой кнопкой мыши на функции, в которой возникла ошибка. При этом откроется ее контекстное меню, в котором следует выбрать команду, расположешгую в его верхней строке. Trace Error (Поиск ошибки). Если вы это сделаете, то откроется специальная одноименная панель, содержащая различные параметры поиска ошибки. InBT.a.b.rO - for i с I n Jftb-*- < + 1) h+ «Л j[gt(f,0,».lp00)- , IJ [This variable в undefined." 3 t- S + i Рис. 4.3. Ошибочная ситуация Панель Trace Error (Поиск ошибки) (рис. 4.4) содержит несколько кнопок.
Рис. 4.4. Панель Trace Error □ Mrst (Первая). Если нажать эту кнопку, то тот фрашент программы, который вызывает ошибку, будет выделен курсором (рис. 45). В нашем случае будет выделен сомножитель А в первом выражении в цикле for. Проанализировав, где именно в выделенном выражении может быть ошибка, обнаруживаем, что между ft и скобкой с полусуммой функций нет знака умножения. А это означает, что h рассматривается как функция со значением аргумента, равным величине в скобках. Однако, так как h не является функцией одного переменного, запись такая некорректна, что приводит к появлению сообщения об ошибке. Кстати, с учетом того, что знаки умножения но умолчанию в Mathcad не отображаются, найти ошибку такого рода очень сложно.
Рис. 4.5. В программе найдена ошибка □Previous (Предыдущая). Так как влияние ошибки распространяется иногда уровнями (например, прн неправильном задании индекса), бывает нужным произвести исправления в разных фрагментах программы. Чтобы подняться на уровень выше, н используется данная команда □Next (Следующая). Команда, идентичная предыдущей по функциям, но противопо-. ложная по направлению. 4.7. Символьное вычисление программ * 153 □Last (Последняя). Команда помещает курсор на последний уровень распространения ошибки. □Close (Закрыть). Команда служит для сворачивания окна Trace Error (Поиск ошибки). Использовать панель Trace Error (Поиск ошибки) можно не только в случае программ, но н везде, где есть последовательность выполнения каких-то действия. Объективно говоря, производить отладку программ Mathcad довольно сложно. Панель Trace Error (Поиск ошибки) и всплывающие сообщения могут помочь лишь тогда, когда допущена синтаксическая ошибка. Если же ошибка имеется в самом алгоритме, то система ее, естественно, не обнаружит. Как же действовать в подобном случае? В первую очередь нужно внимательно проанализировать код алгоритма. Вполне вероятно, что причина сбоя — это обычная описка. Если же ничего явно неверного в коде обнаружено не будет, программу следует исследовать в работе. Для этого обычно нужно проверять, как меняются переменные, когда срабатывают условия, или сколько итераций делают циклы. Полученную информацию необходимо записывать в вектор, который должен быть возвращен как результат работы программы. 4.7. Символьное вычисление программ Аналогично большинству операторов и встроенных функций, программы Mathcad могут быть просчитаны как численно, так и символьно, Однако аналитический расчет алгоритмов пользователя не согласован с операторами on error и return, поэтому он может быть произведен лишь в случае программ, в коде которых данных операторов нет. Также символьно невозможно рассчитывать рекурсивные алгоритмы. В качестве примера аналитически просчитываемой программы можно привести создание функции, находящей ряд Фурье для произвольной функции. Пример 4,21. Символьное вычисление программ ![]() while m s п ![]() f(0eos(nM)dt coa(nvt) + — f(i)-sin(mO dtsin(m-t) ![]() m «- m + 1 s цЧ) i + ж ![]() ![]() 0 ... 43 44 45 46 47 48 49 ... 177 |