Обзор программных операторов

Нетрудно заметить, что набор программных элементов для создания программных модулей весьма ограничен. Ниже приводится их перечень. 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 служит для организации циклов с заданным числом повторений. Он записывается в виде:

For Var e Nmin.. 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 if x<0

будет возвращаться значение 0 при любом х < 0.

Оператор on error

Операторon error является оператором обработки ошибок, позволяющим создавать конструкции обработчиков ошибок. Этот оператор задается в виде:

Выражение_1 on error Выражение_2

Если при выполнении Выражения_1 возникает ошибка, то выполняется Выражение_2. С операторомon error связана функцияerror, которая обычно используется для возврата текстового сообщения об ошибке.

Примеры программирования

Несмотря на столь скромный набор программных средств, они дают системе MathCAD именно те возможности, которые ранее попросту отсутствовали: задание функций с аппаратом локальных переменных, задание различных видов циклов (в том числе вложенных), упрощение алгоритмов с помощью операций присваивания и реализация по классическим алгоритмам итерационных и рекурсивных процедур. Рекомендуется внимательно изучить рис. 12. 10, на котором показана часть этих возможностей.

Обратите особое внимание на второй пример вычисления факториала. Здесь использовано задание одного программного модуля внутри другого. Вообще говоря, для нескольких подмодулей, которые должны выполняться в составе циклов, надо использовать их объединение в виде жирной вертикальной черты. Для этого, как и для исходного задания блока, служит


Рис. 12. 10 Примеры задания программных блоков

командаAdd Line, добавляющая в модуль дополнительную вертикальную черту для подмодуля.

Программный модуль в сущности является функцией, но описанной с применением упомянутых сугубо программных средств. Эта функция может возвращать значение, определяемое последним оператором. Это значит, что после такого модуля, выделенного как целый блок, можно поставить знак равенства для вывода значения функции. В блоке могут содержаться любые операторы и функции входного языка системы. Для передачи в блок значений переменных можно использовать переменные документа, которые ведут себя в блоке как глобальные переменные.

Обычно модулю присваивается имя со списком переменных, после которого идет знак присваивания: =. Переменные в списке являются локальными,


Рис. 12. 11 Применение директив on error и return

и им можно присваивать значения при вызове функции, заданной модулем Локальный характер таких переменных позволяет присваивать им те же имена, что и глобальным переменным документа. Однако лучше этого не делать и использовать разные имена для локальных переменных программных модулей и переменных документа.

На рис. 12. 11 показано применение операторовon error и return, а также действие функцииerror, задающей вывод надписи в желтом прямоугольнике при активизации мышью выражения, содержащего ошибку.

В этих примерах надо обратить внимание на два момента. Первый — возможность применения оператораon error вне программного блока для задания функции y (x) =sin (x)/x с исключительным значением 1 при х=0. Второй — применение этого оператора для решения уравнения, имеющего комплексные корни. Когда при таком решении задается действительное начальное приближение для х, то функция root (f, x) дает ошибку. Она исправляется с помощью оператораon error при задании функции RF (f, x), имеющей обработчик ошибок.

Задание программных модулей позволяет реализовать любые специальные приемы программирования и может служить мощным средством расширения системы путем задания новых функций.

Теперь рассмотрим достаточно сложный и поучительный пример применения программного блока. На рис. 12. 12 показан документ, в котором программный модуль вычисляет коэффициенты Фурье для заданной функции — пилообразного импульса (его можно менять).


Рис. 12. 12 Вычисление коэффициентов А и В разложения функции в ряд Фурье

Тут вычисление коэффициентов ряда Фурье выполнено по их классическим интегральным представлениям. Это хорошо иллюстрирует возможность применения в программных блоках весьма мощных средств входного языка системы. Продолжение этого документа, реализующее гармонический синтез, представлено на рис. 12. 13.

На рис. 12. 13 показаны векторы коэффициентов, приведена формула гармонического синтеза исходной функции по ее гармоническому ряду и на графике проведено сопоставление исходной функции с ее представлением рядом Фурье с ограниченным числом гармоник N


Рис. 12. 13 Реализация гармонического синтеза

Еще один пример применения программного модуля для задания точек некоторой функции в трехмерном пространстве показан на рис 12 14 Там же представлено построение этих точек внутри параллелепипеда

Рис. 12. 14 Применение программного модуля для построения точек заданной функции в пространстве


Разумеется, подобные задачи могут в системе MathCAD решаться и без использования в явном виде программных средств Однако эти средства облегчают решение сложных задач, особенно когда имеется описание их программной реализации на каком-либо языке программирования Тогда несложно перевести реализацию решения задачи с этого языка на язык программирования системы MathCAD

Вообще, надо отметить, что проблема включения в документы программных блоков в MathCAD решена изящно и красиво, такие блоки подчас просто украшают документы и позволяют пользоваться всеми средствами не только математически ориентированного входного языка MathCAD, но и классического программирования.

Много интересного и поучительного можно найти в примерах задания и применения программных модулей разделаQuickSheet (Шпаргалки), доступного из центра ресурсов системы. Нельзя не отметить, что характер задания программных модулей в MathCAD весьма удачен: модули прекрасно вписываются в документы, выглядят просто и естественно.

Следует также отметить, что система MathCAD PLUS 7. 0 допускает расширение путем включения в нее новых функций, написанных на языке Си или Си++. Впрочем, возможности системы настолько широки, что трудно себе представить необходимость в таком кардинальном шаге. Это расширение скорее может оказаться полезным для разработчиков системы, чем для подавляющего большинства ее пользователей.

Интересующиеся этой возможностью могут воспользоваться описанием ее в [14].

Наши рекомендации