Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие.doc
Скачиваний:
158
Добавлен:
02.04.2015
Размер:
6.8 Mб
Скачать

1.5.8. Возврат значения (return)

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

Вместе с тем, можно прервать выполнение программы в любой ее точке (например с помощью условного оператора) и выдать некоторое значение, применив операторreturn. В этом случае при выполнении указанного условия значение, введенное в местозаполнитель после return, возвращается в качестве результата, а никакой другой код больше не выполняется. Вставляется в программу оператор return с помощью одноименной кнопки панели Programming (Программирование).

Применение оператора return:

1.5.9. Перехват ошибок (on error)

Программирование в Mathcad позволяет осуществлять дополнительную обработку ошибок. Если пользователь предполагает, что выполнение кода в каком-либо месте программного модуля способно вызвать ошибку (например, деление на ноль), то эту ошибку можно перехватить с помощью оператора on error. Чтобы вставить его в программу, надо поместить линии ввода в ней в нужное положение и нажать кнопку с именем оператора on error на панели Programming (Программирование). В результате появится строка с двумя местозаполнителями и оператором on error посередине (рис. 20).

Рис. 20. Вставка оператора перехода по ошибке

В правом местозаполнителе следует ввести выражение, которое должно выполняться в данной строке программы. В левом – выражение, которое будет выполнено вместо правого выражения, если при выполнении последнего возникнет ошибка.

В программном модуле рассчитывается функция обратного числа значению n. Если n0, то и присвоенное значение z0, поэтому в последней строке программы выполняется правое выражение расчета 1/z. Так происходит при расчете f(–2). Если попытаться вычислить f(0), то выполнение программы вызовет ошибку деления на ноль в последней строке. Соответственно, вместо выражения справа от оператора on error будет выполнено левое выражение, присваивающее функции f(n) строковое значение "user error: cannot divide by zero" (пользовательская ошибка: деление на ноль невозможно).

Оператор перехвата ошибок удобно применять в комбинации со встроенной функцией error(S). Она приводит к генерации ошибки в обычной для Mathcad форме с сообщением S. Пример обработки ошибки деления на ноль показан на рис. 21.

Рис. 21. Перехват ошибки деления на ноль

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

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

Рассмотрим два простых примера использования программных модулей в Mathcad для выполнения расчетов. В них используется большинство операторов, рассмотренных в данной главе.

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

Пример 1.

Пример 2.

Дан массив из десяти элементов. Рассчитаем сумму положительных элементов, а также произведение отрицательных.

Исходный массив имеет имя yи задается вне программы, обязательно перед её вызовом. Имя программыmyfunk. В программе сначала обнуляем переменнуюS, в которую будем накапливать сумму элементов, а также присваиваем переменнойPзначение 1, т. к. в неё будет занесено произведение элементов. Для организации цикла используем операторfor, т. к. заранее известно количество элементов в массивеy, т. е. количество повторений в цикле. С помощью оператора условияifосуществляется проверка неотрицательности текущего элемента массива. Если элемент неотрицателен, он прибавляется кS, иначе его значение умножается наP. Так как из программы необходимо вернуть не одно, а два значения, применяется функцияaugment(). С её помощью два значения, содержащиеся в переменныхSиP, сливаются в строку, которая и возвращается как единое целое. Можно использовать также функциюstack(), которая сливает значения перечисленных в скобках аргументов в вектор. Результаты, возвращаемые из программы, записываются в массив с именемz. В последней строке осуществлен просмотр его содержимого.