Вплоть до появления 7 версии системы MathCAD возможности программирования в них были крайне ограниченными. Фактически MathCAD позволяла реализовать лишь линейные программы, в основе которых лежит понятие функции. Функция if и ранжированные переменные в отдельных случаях могли заменить условные выражения и циклы, но с серьезными ограничениями. Отсутствовала возможность задания завершенных программных модулей.
Вы уже знаете о суперспособностях современного учителя?
Тратить минимум сил на подготовку и проведение уроков.
Быстро и объективно проверять знания учащихся.
Сделать изучение нового материала максимально понятным.
Избавить себя от подбора заданий и их проверки после уроков.
Просмотр содержимого документа
«Программирование в среде MathCAD»
14
РЕФЕРАТ НА ТЕМУ:
Программирование в среде MathCAD
Выполнила студентка группы МДФ-112 Шибаева О. Н.
Задание операторов пользователя
Первым признаком программирования является задание новых операторов пользователя. Такой оператор задается практически так же, как функция пользователя, но вместо имени выбирается какой-либо подходящий знак. Например, можно задать оператор деления в виде:
- задание нового оператора деления;
+(6,2) =3 — применение функции деления;
+6+2 = 3 — применение нового оператора деления.
При кажущейся простоте такого задания здесь есть проблемы. Встроенные в систему операторы нельзя переопределить. Поэтому набор доступных знаков для обозначения новых операторов ограничен. К примеру, нельзя задать новый оператор деления знаком / (он уже использован), но можно взять знак + поскольку этот символ как знак деления системой не используется.
Вторая проблема связана с вводом символа нового оператора. Скорее всего, его напрямую ввести нельзя. Придется воспользоваться типовыми приемами ввода новых символов в документы Windows. Один из этих приемов — использование приложения, выдающего таблицу символов, с возможностью его экспорта из этой таблицы в документ другого приложения (в нашем случае — в документ MathCAD).
Можно также воспользоваться подходящим знаком из набора Extra Math Symbol, имеющегося в составе шпаргалок QuickSheet, доступ к которым дает центр ресурсов. Для переноса знака можно скопировать его в буфер обмена с помощью операции Copy, а затем ввести в документ, используя операцию Paste.
После того как оператор задан, его можно использовать и как функцию и как оператор. Для применения нового оператора надо вывести его шаблон с помощью панели математических знаков. В нашем случае следует нажать кнопку xfy этой панели — она выводит особый шаблон вида . Введите операнды, например 6 и 2, в крайние прямоугольники, а символ оператора — в средний. Поставив после этой конструкции знак равенства, увидите результат — число 3.
Разумеется, можно задать и другие операторы, например, для работы с одним операндом. Так можно задать оператор для пересчета значения температуры по шкале Цельсия в температуру по шкале Фаренгейта, следующим образом
°С (х):= х+32 °F.=1
Затем, используя кнопку xf наборной панели символов отношения, можно выполнять операцию пересчета в виде.
37°С=98.6 °F
Проще и естественней задать нужную операцию с помощью функции пользователя. Однако есть области математики и физики, где задание новых операторов необходимо, поскольку является частью специфического языка их описания. Те, кто работает в этих областях, по достоинству оценят предоставляемую возможность, несмотря на определенные неудобства, связанные с назначением новых операторов и их использованием
Задание программных модулей
Вплоть до появления последних версий системы MathCAD возможности программирования в них были крайне ограниченными.
Фактически система MathCAD позволяла реализовать лишь линейные программы, в основе которых лежит понятие функции. Функция if и ранжированные переменные в отдельных случаях могли заменить условные выражения и циклы, но с серьезными ограничениями. Отсутствовала возможность задания завершенных программных модулей.
Инструкции
Возможность задания программных блоков (модулей) появилась в версии MathCAD PLUS 6. 0 PRO и в расширенном варианте имеются в описываемой версии MathCAD 2000 PRO. Они сосредоточены в палитре программных элементов.
Как видно на рисунке, программный модуль в системе MathCAD превратился в самостоятельный модуль, выделяемый в тексте документа жирной вертикальной чертой. Он может вести себя как безымянная функция, не имеющая параметров, но возвращающая результат — первый пример на вычисление квадратного корня из числа 12. Программный модуль может выполнять и роль тела функции пользователя с именем и параметрами — второй пример.
Обзор инструкций
Нетрудно заметить, что набор программных элементов для создания программных модулей весьма ограничен и содержит следующие элементы:
Add Line - создает и при необходимости расширяет жирную вертикальную линию, справа от которой в шаблонах задается запись программного блока;
- символ локального присваивания (в теле модуля);
if - условная инструкция;
for - инструкция задания цикла с фиксированным числом повторений;
while - инструкция задания цикла типа "пока" (цикл выполняется, пока выполняется некоторое условие);
otherwise - инструкция иного выбора (обычно применяется с if);
break - инструкция прерывания;
continue - инструкция продолжения;
return - инструкция возврата;
оn error - инструкция обработки ошибок.
Инструкция Add Line
Инструкция Add Line выполняет функции расширения программного блока. Расширение фиксируется удлинением вертикальной черты программных блоков или их древовидным расширением. Благодаря этому в принципе можно создавать сколь угодно большие программы.
Оператор внутреннего присваивания
Оператор выполняет функции локального внутреннего присваивания. Например, выражение х 123 присваивает переменной х значение 123. Локальный характер присваивания означает, что такое значение переменной х сохраняется только в теле программы. За пределами тела программы значение переменной х может быть неопределенным либо равным значению, которое задается операторами локального: = или глобального = присваивания вне программного блока.
Не следует путать оператор внутреннего присваивания с оператором символьного вывода , у которого стрелка направлена в другую сторону. Эти операторы решают совершенно разные задачи.
Условная инструкция if
ператор if является оператором условного выражения. Он задается в виде:
Выражение if Условие
Если Условие выполняется, то возвращается значение Выражения. Совместно с этим оператором часто используются инструкция прерывания break и инструкция иного выбора otherwise.
Инструкция for
Инструкция for служит для организации циклов с заданным числом повторений. Он записывается в виде:
forVarNmin.. Nmax
Эта запись означает, что если переменная Var меняется с шагом + 1 от значения Nmin до значения Nmax, то выражение, помещенное в шаблон, будет выполняться. Переменную счетчика Var можно использовать в выражениях программы.
Инструкция while
Инструкция while служит для организации циклов, действующих до тех пор, пока выполняется некоторое Условие. Эта инструкция записывается в виде:
while Условие
Выполняемое выражение записывается в расположенное ниже место ввода..
Инструкция otherwise
Инструкция иного выбора otherwise обычно используется совместно с оператором if. Это поясняет следующая программная конструкция:
f (x): = 1 if х0 возвращает 1, если х О
-1 otherwise возвращает -1 во всех иных случаях
Инструкция break
Инструкция break вызывает прерывание работы программы всякий раз, когда она встречается. Чаще всего она используется совместно с оператором условного выражения if и операторами циклов while и for, обеспечивая переход в конец тела цикла.
Инструкция continue
Инструкция continue используется для продолжения работы после прерывания программы. Обычно она применяется совместно с операторами задания циклов while и for, обеспечивая возвращение в точку прерывания и продолжение вычислений.
Инструкция return
Инструкция return прерывает выполнение программы и возвращает значение операнда, стоящего следом за ней. Например, в приведенном ниже случае
return 0 ifx
будет возвращаться значение 0 при любом х
Инструкция on error
Инструкция on error позволяет создавать процедуры обработки ошибок. Эта инструкция задается в виде:
Выражение_1 on error Выражение_2
Если при выполнении Выражения_1 возникает ошибка, то выполняется Выражение_2. С инструкцией on error связана функция error, которая обычно используется для возврата текстового сообщения об ошибке.
Примеры программирования
Несмотря на скромный набор программных средств, они дают системе MathCAD именно следующие возможности: задание функций с аппаратом локальных переменных, задание различных видов циклов (в том числе вложенных), упрощение алгоритмов с помощью операций присваивания и реализация по классическим алгоритмам итерационных и рекурсивных процедур. Изучить эти возможности на следующем примере:
Обратите особое внимание на второй пример вычисления факториала. Здесь использовано задание одного программного модуля внутри другого. Вообще говоря, для нескольких подмодулей, которые должны выполняться в составе циклов, надо использовать их объединение в виде жирной вертикальной черты. Для этого, как и для исходного задания блока, служит команда Add Line, добавляющая в модуль дополнительную вертикальную черту для подмодуля.
Программный модуль, в сущности, является функцией, но описанной с применением упомянутых сугубо программных средств. Эта функция может возвращать значение, определяемое последним оператором. Это значит, что после такого модуля, выделенного как целый блок, можно поставить знак равенства для вывода значения функции. В блоке могут содержаться любые операторы и функции входного языка системы. Для передачи в блок значений переменных можно использовать переменные документа, которые ведут себя в блоке как глобальные переменные.
Обычно модулю присваивается имя со списком переменных, после которого идет знак присваивания: =. Переменные в списке являются локальными, и им можно присваивать значения при вызове функции, заданной модулем Локальный характер таких переменных позволяет присваивать им те же имена, что и глобальным переменным документа. Однако лучше этого не делать и использовать разные имена для локальных переменных программных модулей и переменных документа.
Обработка ошибок в программных модулях
На рисунке показано применение операторов on error и return, а также действие функции error, задающей вывод надписи в желтом прямоугольнике при активизации мышью выражения, содержащего ошибку.
В этих примерах надо обратить внимание на два момента. Первый — возможность применения оператора on error вне программного блока для задания функции y (x) =sin (x)/x с исключительным значением 1 при х=0.
Таким образом, инструкция on error фактически играет роль процедуры обработки ошибок. Она позволяет создавать программные модули, защищенные от грубых ошибок.
Задание программных модулей позволяет реализовать любые специальные приемы программирования и может служить мощным средством расширения системы путем задания новых функций.
Следует также отметить, что система MathCAD допускает расширение путем включения в нее новых функций, написанных на языке Си или Си++.
При выполнении вычислений возможны ошибки. Система выводит сообщения об ошибках, закрашивая ошибочные имена идентификаторов в ярко-красный цвет
Ниже представлен список основных сообщений об ошибках:
only one array allowed — допустим только один массив;
overflow — переполнение;
significancelost— потеряны значащие цифры;
singularity — деление на нуль;
stack overflow — переполнение стека;
subscript too large — слишком большой нижний индекс;
too few arguments — слишком мало аргументов;
too few constraints — слишком мало ограничений;
too few elements — слишком мало элементов;
too few subscripts — мало нижних индексов;
too large to display — слишком велико, чтобы быть отображенным;
too many arguments — слишком много аргументов;
too many constraints — слишком много ограничений;
too many points — слишком много точек;
too many subscripts — слишком много индексов;
undefindet — не определено;
unmatchedparenthesis— дисбаланс скобок;
wrong size vector — неверный размер вектора.
Сообщения об ошибках кратки, но их анализ не вызывает особых затруднений. Заметим, что приведенный список содержит далеко не все ошибки, а лишь наиболее распространенные.