17586

МОДУЛЬНОЕ ПРОГРАММИРОВАНИЕ В MATHCAD

Лабораторная работа

Информатика, кибернетика и программирование

ЛЕКЦИЯ 4. Модульное программирование в Mathcad Общая идея модульного программирования состоит в следующем: реализации вычислительных процессов в виде отдельных программных единиц модулей; в обращении к этим модулям в других программах с передачей данных необход

Русский

2013-07-04

1.42 MB

12 чел.

ЛЕКЦИЯ 4.

Модульное программирование в Mathcad

 Общая идея модульного программирования состоит в следующем:

реализации вычислительных процессов в виде отдельных программных единиц - модулей;

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

 Модульное программирование позволяет уменьшить объем исходных текстов программ, сделать их более читаемыми, ускорить написание и тестирование программ, уменьшить расходы на сопровождение (эксплуатацию) программ.

Модульное программирование в пакете Mathcad можно реализовать двумя методами:

модульное программирование в пределах одного документа Mathcad;

модульное программирование в нескольких документах Mathcad.

4.1. Модульное  программирование  в  одном документа

Этот метод характеризуется тем, что:

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

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

 Пример 1. Реализуем в виде программы-функции вычисление определенного интеграла   вида

                                                   

используя формулу Симпсона с автоматическим выбором числа узлов. При этом программа-функция Simpson(f,a,b,N) вычисляет определенный интеграл по формуле Симпсона при фиксированном числе интервалов N, а программа-функция Adapt(f,a,b) выбирает по заданной точности вычисления интеграла (равной 10-8 ) количество интервалов.

 

Используя эти программы - функции вычислим определенный интеграл от функции  f(x) = x2  на отрезке [0,1]. Точное значение интеграла равно 1/3=0.33333333333333... Обращение к программе-функции Adapt дает результат

                                

Перед обращением  к программе-функции Adapt необходимо описать функцию пользователя f(x) в виде

                                        f(x) : = x2,

так как имя функции f(x) используется в качестве фактического параметра.

4.2. Модульное    программирование

в   нескольких   документах   Mathcad

В предыдущем способе реализации модульного программирования описание модулей (функций пользователя и программ-функций) и их вызов находится в одном документе. Такой способ имеет ряд недостатков:

невозможность  параллельной разработки программ несколькими разработчиками;

невозможность  "автономной" отладки  программ-функций и их модификации  в процессе эксплуатации программного обеспечения;

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

Для преодоления этих недостатков  описание программы-функции выполняют в одном документе MathCAD, а  ее вызов размещается в другом документе (этот прием широко используется в современных алгоритмических языках высокого уровня). Однако при этом возникает вопрос : как при вызове программы-функции в одном документе "присоединить" файл с другим документом MathCAD, в котором находится описание вызываемой программы-функции? Для такого присоединения служит специальный оператор Reference, который записывается в виде, показанном на рис. 4.1.

                    Рис. 4.1. Структура  оператора   Reference

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

 Шаг 1. Щелкнуть левой кнопкой мыши в том месте, куда будет вставлен оператор Reference.

 Шаг 2. Обратиться к пункту меню  Insert  и выполнить команду Reference.

 Шаг 3. В  поле ввода появившегося диалогового окна ввести полное имя файла, содержащего документ с описанием вызываемой функции. Для задания имени можно щелкнуть кнопку Browse и в появившемся диалоговом окне указать диск, папку и имя файла ( в поле ввода отразится полное имя файла).

 Шаг 4. После выполненных установок щелкнуть кнопку  OK

После выполнения этих шагов в документе появится оператор Reference, показанный на рис. 4.1.

Таким образом реализация модульного программирования в нескольких документах МаthCAD включает следующие этапы (которые будем иллюстрировать на примере вычисления определенного интеграла с использованием программ-функций примера 1) :

Описание в документе МаthCAD необходимых программ-функций и сохранение этого документа в файле в нужной папке и под нужном именем (в нашем примере документ будет включать описание двух программ-функций Simpson и Adapt и документ будет сохранен на диске D: в папке MathCad_Apll в файле под именем Adapt_Integration.mcd).

Вставка оператора Reference в документе, в котором вызываются описанные программ-функций путем выполнения шагов 1 - 4. В нашем примере вставленный оператор Reference будет иметь вид:

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

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

ДОПОЛНИТЕЛЬНЫЕ ОПЦИИ

Ниже приводится дополнительная информацию о некоторых объектах и конструкциях MathCAD, используемых при программировании в этом пакете.

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

                                                                                                      

Значок  кнопки

      Назначение  наборной панели

         

Ввод знаков арифметических операций, цифр

       

   Ввод знаков отношений, используемых    при записи условий

       

   Построение различных графиков

       

    Ввод матричные  операторы

       

    Ввод операторов суммирования,    интегрирования и дифференцирования

       

Ввод конструкций  программирования   ( панель Программирования)

       

    Ввод операторов символьной

    математики

       

    Ввод букв греческого алфавита

Для вызова на экран нужной наборной панели достаточно щелкнуть левой кнопкой мыши на значке, а затем приемом "перетащить-и-оставить" разместить раскрывшуюся наборную панель в удобном для работы месте программного окна MathCAD.

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

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

Функции  пользователя. В Mathcad могут быть также определены так называемые функции пользователя ( называемые также локальными функциями ). В отличие от простой переменной, значение такой функции зависит от значений аргументов, а в отличии от встроенной функции ( например, функция sin(x)) эта функция определяется самим пользователем. Для того, чтобы использовать функцию пользователя в вычислениях ее обязательно перед этим нужно определить.

Определение  функции пользователя имеет вид

имя—функции(список формальных параметров) : =

арифметическое выражение, зависящее от формальных параметров 

Пример 2. Определим функцию dist(x,y), вычисляющую расстояние между точкой с координатами (x,y) и началом координат.  Вводим следующие символы:

                      dist(x,y): x^2+y^2

Ввод двоеточия “ : ” вставляет на экране символ : = и на экране появляется следующее описание  функции пользователя

                   dist(x,y) : =

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

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

Возможные варианты использования функции dist(x,y), описанной в вышеприведенном примере :

Напомним, что описание  функции пользователя должно опережать обращение к ней.

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

 используя выделяющую рамку, выделить объекты, к которым применяется оператор;

нажать одновременно клавиши [ Ctrl ] и "Минус", чтобы применить оператор векторизации ( объекты, к которым применяется оператор  вверху имеют стрелку).

Оператор векторизации меняет смысл операций. Например, А некоторая матрица. Тогда запись  exp(A) некорректна, так как аргументом функции exp  должна быть простая переменная, а не матрица. Применение к этой функции оператора векторизации приводит к вычислению функции exp от каждого элемента матрицы и результатом также является матрица. Это иллюстрирует следующий фрагмент:

           

Аналогичный пример можно привести с функцией "корень квадратный"

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


 

А также другие работы, которые могут Вас заинтересовать

59191. Ой на Йвана, ой на Купала 32.5 KB
  Добре й літом у лісочку На травичці в холодочку Відпочити погуляти Зілля квітів тут нарвати Дівчата прикрасимо нашу купальницю щоб була ще красивіша. Дівчата збирають квіти плетуть вінки прикрашають ними деревце купальницю і співають...
59193. Новий рік 17.5 KB
  ік старий вирушає в дорогу Залишає нам зоряний дім Кожний кожному щастя нового Зичить радісно з роком Новим. Ведуча: Пада пада сніг лапатий Вже ступило на поріг В кожен дім це світле свято Здравствуй здраствуй Новий рік.
59194. Свято матері 33.5 KB
  ІІ Ведучий: Свято це прийшло до нас з американського континенту у 1914 р. І Ведучий: Так цей день Друга неділя Травня кожного року став міжнародним святом у найкращому розумінні цього слова. ІІ Ведучий: А 1929 рік за почином Союзу Українок був першим роком Свята Української Матері в Галичині.
59195. Свято останнього шкільного дзвоника 44 KB
  Починається нове життя від шкільного порога хай веде вас до вершин невідома дорога. Кожному з вас вони подарували найцінніше життя. Вам жити і дарувати життя іншим. Хай завжди скрізь і всюди зігрівається і освітлює вашу життєву дорогу полумя символічного фактела життя.
59196. Свято памяті українських Січових Стрільців 47.5 KB
  Ведучий: УСС єдина армія того жорстокого часу який ні тодішні ні пізніші противники ніколи не залишили жодного факту мародерства насильництва щодо полонених чи населення. Ведучий: Густо падали жертви під час кровопролиття під час боїв густо росли білі березові хрести на стрілецьких могилах...
59197. СВЯТО ПИСАНКИ 44 KB
  Для чого пишуть писанки роль писанки у весняних обрядах. Про писанки існує багато легенд та переказів у різних народів світу. То ж поговоримо коли як і для чого пишуть писанки.
59198. Свято урожаю 48.5 KB
  А ми тут говоримо говоримо і зовсім забули що у нас сьогодні таке велике свято. Урожай: Здрастуйте дорогі наші друзі Я б не сказав дивлячись на вас на всіх хто зібрався тут в такій кількості на всіх запрошених що хтось забарився.
59199. Сценарій конкурсу: Чарівна україночка 41.5 KB
  Багатьма такими рисами наділені і наші сьогоднішні дівчата які будуть брати участь у конкурсі Чарівна україночка. Ведучий знайомисть з конкурсантками. Ведучий: Для всіх болільників глядачів я нагадую які конкурси чекають на наших красунь.