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

           

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

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


 

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

10075. Концепція атаки web-орієнтованих пошукових систем 57.5 KB
  Концепція атаки web-орієнтованих пошукових систем І.А. Терейковський Запропонована нова концепція активного впливу атаки на популярні вітчизняні та закордонні Web-орієнтовані пошукові системи з метою підвищення рейтингу зареєстрованих в них сайтів. Доведено що для вп
10076. Понятие коммерческой деятельности 46 KB
  Понятие коммерческой деятельности. Коммерция означает торговля это часть управленческой деятельности непосредственно направленная на получение прибыли. Все организации делятся на: коммерческие и некоммерческие. Коммерческие отношения включают...
10077. Общее понятие исполнителя и алгоритма. Смысл понятия правильный алгоритм. Примеры 116.5 KB
  Общее понятие исполнителя и алгоритма. Смысл понятия правильный алгоритм. Примеры. Алгоритм Алгоритм последовательность определенных действий или шагов для решения поставленной задачи. Программа запись алгоритма на языке исполнителя Свва алгорит...
10078. Является ли история наукой. Развитие человеческого общества 167.5 KB
  Вопросы: Нужно ли знать историю Является ли история наукой Как развивается общество Периодизация истории России Является ли история наукой По мнению А.В.Островского история не является наукой: Историк в отличие от естествоиспытателя пише...
10080. Кризис феодально-крепостнической системы и буржуазная революция 60-х годов 19 века 32 KB
  Кризис феодальнокрепостнической системы и буржуазная революция 60х годов 19 века 17621796г при Екатерине 2 Российская империя достигла вершины своего развития Начавшееся в 16в переселение на окраины с середины 17в начинает тормозить государство. 1649г крестьяне окончате
10081. Рождение Российской империи и реформы Петра I 28.21 KB
  Рождение Российской империи и реформы Петра I внешние и внутренние предпосылки Петровский реформ реформы Петра 1 итоги и заключения реформ Изменение неополитического окружения 1617 вв. север: Швеция. финляндия корелия ЮЖ. побережья Балтийского моря
10083. Англо-Американская модель корпоративного управления 310.95 KB
  Англо-Американская модель корпоративного управления Современный американский менеджмент своей главной обязанностью считает заинтересовать работников в труде чтобы их работа была эффективнее. Поэтому американские менеджеры постоянно совершенствуют и улучшают пр