ЛАБОРАТОРНАЯ РАБОТА №6 РАБОТА С ПАКЕТОМ MATHCAD. ПРОГРАММИРОВАНИЕ
ЦЕЛЬ РАБОТЫ
Познакомится с возможностями пакета MathCAD.
![]() |
КРАТКИЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
Создатели Mathcad изначально поставили перед собой такую задачу, чтобы дать возможность профессионалам-математикам, физикам и инженерам самостоятельно проводить сложные расчеты, не обращаясь за помощью к программистам. Несмотря на блестящее воплощение этих замыслов, выяснилось, что вовсе без программирования Mathcad серьезно теряет в своей силе, в основном, из-за недовольства пользователей, знакомых с техникой создания программ и желающих осуществить свои расчеты в привычном для себя программистском стиле. Вместо знакомых принципов программирования, пользователям старых версий Mathcad предлагалось комбинировать несколько специфичных встроенных функций и ранжированные переменные.
Последние версии Mathcad имеют не очень мощный, но весьма элегантный собственный язык. С одной стороны, он дает возможность программисту эффективно применять программный код в документах Mathcad. С другой, простота и интуитивность языка программирования позволяет быстро ему обучиться. Наконец, программные модули внутри документа Mathcad сочетают в себе и обособленность (поэтому их легко отличить от остальных формул), и простоту смыслового восприятия.
Несмотря на небольшое число операторов, язык программирования Mathcad позволяет решать самые различные, в том числе и довольно сложные, задачи и является серьезным подспорьем для расчетов.
В ранних версиях Mathcad встроенного языка программирования не было. Чтобы применять привычные операции проверки условий и организовывать циклы, приходилось изобретать причудливую смесь из встроенных функций условия if и until и комбинаций ранжированных переменных.
Функция условия
Организация цикла при помощи ранжированной переменной
Фактически, использование ранжированных переменных — мощный аппарат Mathcad, похожий на применение циклов в программировании. В подавляющем большинстве случаев намного удобнее организовать циклы (в том числе вложенные) с помощью ранжированных переменных, чем заниматься для этого программированием. Полезнее освоить технику, связанную с ранжированными переменными, векторами и матрицами, поскольку на ней основаны главные принципы расчетов в Mathcad, в частности подготовка графиков.
Панель инструментов Programming
Для вставки программного кода в документы в Mathcad имеется специальная панель инструментов Programming (Программирование), которую можно вызвать на экран нажатием кнопки Programming Toolbar на панели Math (Математика). Большинство кнопок этой панели выполнено в виде текстового представления операторов программирования, поэтому их смысл легко понятен.
Основными инструментами работы в Mathcad являются математические выражения, переменные и функции. Нередко записать формулу, использующую ту или иную внутреннюю логику (например возвращение различных значений в зависимости от условий), в одну строку не удается. Назначение программных модулей как раз и заключается в определении выражений, переменных и функций в несколько строк, часто с применением специфических программных операторов.
Функция условия, определенная с помощью программы
Несмотря на принципиальную эквивалентность определения функций
и переменных через встроенные функции Mathcad или программные модули, программирование имеет ряд существенных преимуществ, которые в ряде случаев делают документ более простым и читаемым:
· возможность применения циклов и условных операторов;
· простота создания функций и переменных, требующих нескольких простых шагов;
· возможность создания функций, содержащих закрытый для остального документа код, включая преимущества использования локальных переменных и обработку исключительных ситуаций (ошибок).
Программный модуль обозначается в Mathcad вертикальной чертой, справа от которой последовательно записываются операторы языка программирования.
Чтобы создать программный модуль:
Введите часть выражения, которая будет находиться слева от знака присваивания и сам знак присваивания. В нашем примере это имя функции f(х).
Нажмите на этой панели кнопку Add Line (Добавить линию).
Если приблизительно известно, сколько строк кода будет содержать программа, можно создать нужное количество линий повторным нажатием кнопки Add Line (Добавить линию) соответствующее число раз.
В появившиеся местозаполнители введите желаемый программный код, используя программные операторы. После того как программный модуль полностью определен и ни один местозаполнитель не остался пустым, функция может использоваться обычным образом, как в численных, так и в символьных расчетах.
Не вводите с клавиатуры имена программных операторов. Для их вставки можно применять лишь сочетания клавиш, которые приведены в тексте всплывающей подсказки.
Начало создания программного модуля
Вставка программного оператора
Вставка условия в программу
Вставить строку программного кода в уже созданную программу можно в любой момент с помощью той же самой кнопки Add Line (Добавить линию). Для этого следует предварительно поместить на нужное место внутри программного модуля линии ввода. Например, расположение линии ввода на строке приведет к появлению новой линии с местозаполнителем перед этой строкой. Если передвинуть вертикальную линию ввода из начала строки в ее конец, то новая линия появится после строки. Если выделить строку не целиком, а лишь некоторую ее часть, то это повлияет на положение в программе новой строки кода.
Не забывайте, что для желаемого размещения линий ввода внутри формулы можно использовать не только мышь и клавиши со стрелками, но и пробел. С помощью последовательных нажатий пробела линии ввода "захватывают" разные части формулы.
Вставка новой строки в существующую программу
Положение линий ввода влияет на положение новой линии
Результат вставки новой линии в программу
Пример усовершенствования программы
В режиме выполнения программы, а это происходит при любой попытке вычислить f (х), выполняется последовательно каждая строка кода.
Язык программирования Mathcad не был бы эффективным, если бы не позволял создавать внутри программных модулей локальные переменные, которые "не видны" извне, из других частей документа. Присваивание в пределах программ, в отличие от документов Mathcad, производится с помощью оператора Local Definition (Локальное присваивание), который вставляется нажатием кнопки с изображением стрелки <- на панели Programming (Программирование).
Ни оператор присваивания :=, ни оператор вывода = в пределах программ не применяются.
Действие условного оператора if состоит из двух частей. Сначала проверяется логическое выражение (условие) справа от него. Если оно истинно, выполняется выражение слева от оператора if. Если ложно —
ничего не происходит, а выполнение программы продолжается переходом к ее следующей строке.
Оператор otherwise используется совместно с одним или несколькими условными операторами if и указывает на выражение, которое будет выполняться, если ни одно из условий не оказалось истинным.
Вставка условного оператора
В языке программирования Mathcad имеются два оператора цикла: for
и while. Первый из них дает возможность организовать цикл по некоторой переменной, заставляя ее пробегать некоторый диапазон значений. Второй создает цикл с выходом из него по некоторому логическому условию.
Вставка оператора цикла
В нижний местозаполнитель введите тело цикла, т. е. выражения, которые должны выполняться циклически.
При необходимости дополните программу другими строками и введите в них нужный код.
Диапазон значений переменной в условии цикла for можно задать как
с помощью диапазона ранжированной переменной, так и с помощью вектора.
Оператор цикла for с ранжированной переменной
Оператор цикла for с вектором
Опратор цикла while
Иногда необходимо досрочно завершить цикл, т. е. не по условию в его заголовке, а в некоторой строке в теле цикла. Для этого предназначен оператор break.
Оператор break внутри цикла for
Оператор break внутри цикла while
Чтобы обозначить границы завершения тела цикла, в нем может использоваться дополнительная строка с оператором continue, который вводится одноименной кнопкой панели Programming.
Оператор continue в конце цикла while
Оператор continue в конце цикла for
Если для определения переменной или функции применяется программный модуль, то его строки исполняются последовательно при вычислении в документе этой переменной или функции. Соответственно, по мере выполнения программы рассчитываемый результат претерпевает изменения. В качестве окончательного результата выдается последнее присвоенное значение. Чтобы подчеркнуть возврат программным модулем определенного значения, можно взять за правило делать это в последней строке программного модуля.
Возврат значения обозначенявно в последней строке программы
Вместе с тем, можно прервать выполнение программы в любой ее точке (например с помощью условного оператора) и выдать некоторое значение, применив оператор return. В этом случае при выполнении указанного условия значение, введенное в местозаполнитель после return, возвращается в качестве результата, а никакой другой код больше не выполняется. Вставляется в программу оператор return с помощью одноименной кнопки панели Programming (Программирование).
Применение оператора return
Программирование в Mathcad позволяет осуществлять дополнительную обработку ошибок. Если пользователь предполагает, что выполнение кода в каком-либо месте программного модуля способно вызвать ошибку (например деление на ноль), то эту ошибку можно перехватить с помощью оператора on error. Чтобы вставить его в программу, надо поместить линии ввода в ней в нужное положение и нажать кнопку с именем оператора on error на панели Programming (Программирование). В результате появится строка с двумя местозаполнителями и оператором on error посередине.
Вставка оператора перехода по ошибке
В правом место заполнителе следует ввести выражение, которое должно выполняться в данной строке программы. В левом — выражение, которое будет выполнено вместо правого выражения, если при выполнении последнего возникнет ошибка. Приведем пример применения оператора on error в программном модуле, который рассчитывает функцию обратного числа значению n. Если n=0, то и присвоенное значение z=0, поэтому в последней строке программы выполняется правое выражение расчета i/z. Так происходит при расчете f (-2). Если попытаться вычислить f (0) как в конце листинга, то выполнение программы, заложенной в f (n), вызовет ошибку деления на ноль в последней строке программы. Соответственно, вместо выражения справа от оператора on error будет выполнено левое выражение, присваивающее функции f(n) строковое значение "user error: cannot divide by zero" (пользовательская ошибка: деление на ноль невозможно). Конечно, этой строке можно присвоить и текст на русском языке.
Перехват ошибки деления на ноль
Оператор перехвата ошибок удобно применять в комбинации со встроенной функцией error(S). Она приводит к генерации ошибки в обычной для Mathcad форме с сообщением s.
![]() |
ЗАДАНИЕ
1. Напишите программу для нахождения значения определенного интеграла заданной функции методом прямоугольников.
2. Напишите программу по блок-схеме составленной в лабораторной работе №2.
![]() |
КОНТРОЛЬНЫЕ ВОПРОСЫ
1. Условный оператор;
2. Операторы цикла.
3. Обработка ошибок
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.