logo
учебники и задачи по числ методам / Дьяконов_В

1.7.2. Задание программных модулей

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

Инструкция Add Line

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

Оператор внутреннего присваивания

Оператор  выполняет функции внутреннего (локального) присваивания. Например, выражение x  123 присваивает переменной x значение 123. Локальный характер присваивания означает, что такое значение переменной x хранится только в теле программного модуля. За пределами тела программы значение переменной x может быть неопределенным, либо равным значению, которое задается вне программного блока операторами локального (:=) или глобального (º) присваивания.

Условная инструкция if

Инструкция if позволяет строить условные выражения:

Выражение if Условие

Если Условие выполняется, то возвращается значение Выражения. Совместно с этой инструкцией часто используются инструкции прерывания break и иного выбора otherwise. Очевидный пример применения оператора if представлен ниже:

Инструкцияfor

Инструкция for служит для организации циклов с заданным числом повторений. Она записывается в виде:

for Var Î Nmin .. Nmax

Эта запись означает, что выражение, помещенное в расположенное ниже место ввода, будет выполняться для значений переменной Var, меняющихся от Nmin до Nmax с шагом +1. Переменную счетчика Var можно использовать в исполняемом выражении. Ниже даны примеры задания функций вычисления сумм и произведений:

Инструкцияwhile

Инструкция while служит для организации циклов, действующих до тех пор, пока выполняется некоторое условие. Она записывается в виде:

while Условие

Выполняемое выражение записывается в расположенное ниже место ввода. Например, две приведенные ниже программы вычисляют значение факториала:

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

Инструкция otherwise

Инструкция иного выбора otherwise обычно используется совместно с инструкцией if. Это поясняет следующая программная конструкция:

В данном случае функция f(x) возвращает 1, если x > 0, и –1 во всех остальных случаях.

Инструкция break

Инструкция break вызывает прерывание выполнения программы. Чаще всего эта инструкция используется совместно с условной инструкцией if и инструкциями циклов while и for, обеспечивая переход в конец тела цикла.

Инструкция continue

Инструкция continue используется для продолжения работы после прерывания программы. Она также чаще всего используется совместно с инструкциями циклов while и for, обеспечивая возвращение в точку прерывания и продолжение вычислений.

Инструкция return

Особая инструкцияreturn прерывает выполнение программы и возвращает значение операнда, стоящего следом за ней:

Обратите внимание на то, что в первом примере задание F(3) приводит к ошибочной ситуации - обращение к функции будет окрашено красным цветом, а результат не будет выводиться. Однако, если курсор мыши наведен на вызов, то появится сообщение «No value!!!».

Инструкция on error и функция error

Инструкция on error позволяет создавать процедуры обработки ошибок. Эта инструкция задается в виде:

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

Если при выполнении Выражения_1 возникает ошибка, то выполняется Выражение_2. Для обработки ошибок полезна также функция error(S), которая, будучи помещенной в программный модуль, при возникновении ошибки выводит всплывающую подсказку с сообщением, хранящимся в символьной переменной S.