17586

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

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

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

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

Русский

2013-07-04

1.42 MB

18 чел.

ЛЕКЦИЯ 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 от каждого элемента матрицы и результатом также является матрица. Это иллюстрирует следующий фрагмент:

           

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

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


 

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

77882. Право на защиту чести, достоинства и деловой репутации 28.5 KB
  Диффамации которое распространяется на разглашение не только ложных но и действительных сведений позорящих честь и достоинство гражданина или юридического лица. Под распространением сведений следует понимать сообщение их различными способами как любому третьему лицу так и нескольким лицам неопределенному кругу лиц. При рассмотрении исков о защите чести и достоинства суду необходимо установить: имело ли место распространение сведений которые оспаривает истец; порочат ли они честь и достоинство истца; соответствуют ли они...
77883. Понятие, виды и исполнение обязательств в гражданском праве 28.5 KB
  Признаки обязательства: относительное гражданское правоотношение его субъектами являются строго определенные лица конкретный должник и конкретный кредитор; объектом обязательства является действие обязанного лица; содержанием являются права и обязанности сторон; опосредуют динамику гражданскоправовых правоотношений процесс перехода имущественных благ от одних лиц к другим; за невыполнение наступает гражданскоправовая ответственность; 6 реализация кредитором своего права возможно только через исполнение обязанности...
77884. Поручительство и банковская гарантия как способы обеспечения исполнения обязательств 30.5 KB
  Поручительство и банковская гарантия как способы обеспечения исполнения обязательств Поручительство способ по которому поручитель обязуется исполнить обязательство за должника. При поручительстве ответственным перед кредитором за неисполнение основного обеспечиваемого обязательства становится наряду с должником еще и другое лицо поручитель...
77885. Залог как способ обеспечения исполнения обязательств 28 KB
  Общие признаки: носят имущественный характер то есть интересы кредитора удовлетворяются за счет имущества должника; направлены на обеспечение удовлетворения интересов кредитора которое состоит в надлежащем исполнении ему обязательства; между должником и кредитором чаще всего существует два обязательства; возникает на основании закона или договора...
77886. Понятие и виды гражданско-правовых договоров 28.5 KB
  Свобода договора: недопущение понуждения к заключению договора; свобода выбора партнера при заключении договора; свобода участников гражданского оборота в выборе вида договора; свобода усмотрения сторон при определении условий договора кроме условий которые предусмотрены законом. Значение договора: договор представляет собой одно из самых уникальных правовых средств в рамках которого интерес каждой стороны в принципе может быть удовлетворен лишь посредством удовлетворения интереса другой стороны; договор...
77887. Формы и способы заключения договоров. Содержание гражданско-правовых договоров 31.5 KB
  Содержание гражданскоправовых договоров Содержание договора условия на которых достигнуто соглашение сторон: существенные условия которые необходимы и достаточны для заключения договора. Во-первых являются условия о предмете договора. Они включаются в текст договора по усмотрению сторон. Однако в отличие от обычных они приобретают юридическую силу лишь в случае включения их в текст договора.
77888. Договор купли-продажи. Обязанности 35 KB
  Продавец обязан передать товар в собственность покупателю надлежащего качества количества комплектности со всеми документами и принадлежностями если отказывается то предоставляется разумный срок не передал покупатель вправе отказаться от договора установленные законном или договором сроки пригодный для целей для которых товар такого рода обычно используется; товар свободный от 3 лиц либо уведомить покупателя об обременении данного товара....
77889. Договор дарения 30.5 KB
  Договор дарения Договором дарения называется договор по которому одна сторона даритель безвозмездно передает или обязуется передать определенное имущество другой стороне одаряемому либо освобождает или обязуется освободить ее от имущественной обязанности перед собой или перед третьим лицом. В отношении договоров дарения с участием юридических лиц ГК также предусматривает ряд специальных ограничений. Другое ограничение касается дарения вещей принадлежащих юридическому лицу на праве хозяйственного ведения или оперативного управления....
77890. Договор ренты 29 KB
  Договор ренты По договору ренты одна сторона получатель ренты передает другой стороне плательщику ренты в собственность имущество а плательщик ренты обязуется в обмен на полученное имущество периодически выплачивать получателю ренту в виде определенной денежной суммы либо предоставления средств на его содержание в иной форме. Реальный односторонний возмездный Возникающие из договора ренты отношения носят длительный стабильный а при пожизненном содержании с иждивением и доверительный характер. Форма подлежит...