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

7. Программирование в пакете MathCad

Дополнительные возможности по автоматизации расчетов в пакете MathCAD связаны с возможностью подключения инструментов программирования.

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

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

Через оригинальное имя осуществляется обращение к программе и возвращается в рабочий документ результат ее выполнения.

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

Тело программы, включает локальные операторы присваивания, условные операторы, операторы цикла, а также может включать вызов других программ-функций и функций пользователя.

Для ввода тела программы следует нажать на пиктограмму “Add line” из наборной панели Programming (Программирование). Это создает единый оператор и на экране возникает шаблон-заготовка программы с двумя полями для ввода операторов, образующих ее тело.

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

Примеры создания программы-функции и обращения к ней представлены на рис. 19 и 20.

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

,

где a, b, c – длины трех сторон треугольника, а p – его полупериметр. На рис. 21 приведен пример реализации этого алгоритма.

Рис. 19. Пример создания программы функции (1)

Рис. 20. Пример создания программы функции (2)

Рис. 21. Программирование линейного алгоритма

Для программирования разветвляющегося алгоритма, в котором присутствует несколько ветвей вычислительного процесса, следует предусмотреть выбор конкретной ветви в зависимости от выполнения (или невыполнения) заданных условий наложенных на значения переменных алгоритма. С этой целью в MathCAD имеется условный оператор if, позволяющий изменить последовательность выполнение операторов. Оператор позволяет вводить в программу альтернативу с одним плечом и может быть записан только внутри программы. Шаблон-заготовка при вводе этого оператора имеет вид, представленный на рис. 22:

Рис. 22. Шаблон-заготовка для программирования разветвляющегося алгоритма

В поле 2 вводится логическое выражение (выражение отношений), в поле 1 – арифметическое выражение, значение которого используется, если проверяемое логическое выражение истинно, а если оно ложно, то выбирается значение выражения из поля 3. В конструкции условия используются логические выражения, которые, для наиболее часто встречающегося случая отношения двух арифметических выражений имеет вид:

< выражение А > < знак отношения > < выражение В>.

Рис. 23. Программирование разветвляющегося алгоритма

В качестве знака отношения выступают символы, выбираемые из панели Булево (Boolean). Рекомендуется для однозначного вычисления логических выражений использовать круглые скобки. Примеры программирования разветвляющихся алгоритмов представляет фрагмент MathCAD документа представленный на рис. 23. Заметим, что оператор if часто используется совместно с оператором иного выбора – otherwise, который превращает неполную альтернативу в полную.

Циклические алгоритмы (циклы) содержат повторяющиеся вычисления, зависящие от некоторой переменной, называемой параметром цикла, а сами повторяющиеся вычисления составляют тело цикла . Циклы можно условно разделить на две группы:

  • циклы типа арифметической прогрессии для которых количество повторений тела цикла можно определить до начала его выполнения.

  • итерационные циклы, для которых окончание определяется не выходом параметра цикла за конечное значение, а более сложными условиями, так что количество повторений заранее определить нельзя;

Рис. 24. Пример программирования цикла (1)

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

После щелчка на кнопке for возникает заготовка, представленная на рисунке. В заготовку вписываются имя параметра цикла и указывается какие значения он может принимать, например i1..100 или ii1, i1+D..i2, или дискретный ряд значений: k(1,2,3.7). В нижнее пустое поле (черный квадратик) после помещения туда курсора вводятся операторы, составляющие тело цикла. Если одной строки недостаточно, то дополнительные строки создаются командой Add Line (слева от тела цикла появляется вертикальная черта). На рис. 24 приведен фрагмент документа MathCAD, в котором проиллюстрировано применение цикла типа арифметической прогрессии.

Рис. 25. Пример программирования цикла (2)

Для программирования итерационных циклов используется оператор while («пока»), который формирует цикл с предпроверкой (цикл выполняется, пока выполняется некоторое условие). Нажатие на эту кнопку вызывает появление конструкции с двумя пустыми квадратиками. В первый из них (правее while) записывается булево выражение (переменная), управляющее циклом, а во второй (ниже while) – тело цикла, операторы которого будут выполняться, пока булево выражение возвращает «Да» (числовое значение отличное от нуля). Если в теле цикла более одного оператора, то следует использовать кнопку Add Line.

На рис. 25 представлен фрагмент документа MathCAD, в котором производится расчет квадратного корня по итерационной процедуре, описываемой формулой:

Цикл прерывается, если в результате i-ой итерации удовлетворяется условие , где- заданная точность вычисления.

Рис. 26. Пример программирования цикла (3)

Применение оператора while, без дополнительных средств контроля может привести к зацикливанию (бесконечной работе программы), Так, к зацикливанию может привести задание отрицательного значения точности – < 0. В программе, представленной фрагментом документа MathCAD на рис. 26 реализован цикл с фиксированным числом повторений, а для выхода из цикла (и из программы) используется оператор Break (вводимый с панели Программирование в левое поле оператора if), который проверяет выполнение заданного условия по точности и прерывает выполнение программы, возвращая значение операнда, стоящего за ним.

К дополнительным операторам программирования кроме Break относятся: Continue – оператор продолжения выполнения цикла путем возврата в его начало; Returnоператор-функция возврата того или иного значения в зависимости от выполнения условия, On errorоператор обработки ошибок. Эти операторы фактически введены в силу отсутствия в инструментах программирования понятия метки и условного или безусловного перехода к ней.

Рис. 28 представляет фрагмент документа MathCAD, в котором приведен дополнительный пример по составлению программы-функций с использованием циклических процедур.

Рис. 28. Пример выполнения циклического алгоритма

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]