Кирьянов Д. - MathCad 11 (1077323), страница 26
Текст из файла (страница 26)
Функция условия|f[x) := if (х < 0 , "negative" , "positive" )f(1) = "positive"f(-1) = "negative"1 Листинг 6.2. Организация цикла при помощи ранжированной переменнойi : = 0 . . 10.2X; := 1Фактически, использование ранжированных переменных — мощный аппарат Mathcad, похожий на применение циклов в программировании. В подавляющем большинстве случаев намного удобнее организовать циклы(в том числе вложенные) с помощью ранжированных переменных, чем заниматься для этого программированием. Полезнее освоить технику, связанную с ранжированными переменными, векторами и матрицами, посколькуна ней основаны главные принципы расчетов в Mathcad, в частности подготовка графиков. (Более подробную информацию о ранжированных переменных исвязанными с ними возможностями можно получить в гл. 4.)Add tineProgramming Toolbar]Ifotherwisefor whitebreak continuereturn on errorРис.
6 . 1 . Панельинструментов Programming6.2. Язык программирования MathcadДля вставки программного кода в документы в Mathcad имеется специальная панель инструментов Programming (Программирование), которую можно вызвать на экран нажатием кнопки Programming Toolbar на панели Math(Математика), как показано на рис. 6.1. Большинство кнопок этой панелиГлава 6. Программирование153выполнено в виде текстового представления операторов программирования,поэтому их смысл легко понятен.Изложим последовательно основные составные элементы языка программирования Mathcad и рассмотрим примеры его использования.6.2.1. Что такое программа?Основными инструментами работы в Mathcad являются математические выражения, переменные и функции. Нередко записать формулу, использующую ту или иную внутреннюю логику (например возвращение различныхзначений в зависимости от условий), в одну строку не удается.
Назначениепрограммных модулей как раз и заключается в определении выражений,переменных и функций в несколько строк, часто с применением специфических программных операторов.Сравните определение функции f (х) из листинга 6.1 с определением f (х) спомощью программного модуля (листинг 6.3).Листинг 6.3, Функция условия, определенная с помощью программыf (х) :="negative"if x < О"positive"if x > 0"zero" otherwisef(1) - "positive"f(-l) ="negative"f(0) = "zero"Несмотря на принципиальную эквивалентность определения функций ипеременных через встроенные функции Mathcad или программные модули,программирование имеет ряд существенных преимуществ, которые в рядеслучаев делают документ более простым и читаемым:•возможность применения циклов и условных операторов;•простота создания функций и переменных, требующих нескольких простых шагов (как в примере листинга 6.3);П возможность создания функций, содержащих закрытый для остальногодокумента код, включая преимущества использования локальных переменных и обработку исключительных ситуаций (ошибок).Как видно из листинга 6.3, программный модуль обозначается в Mathcadвертикальной чертой, справа от которой последовательно записываютсяоператоры языка программирования.Часть II.
Точные вычисления1546.2.2. Создание программы (Add Line)Чтобы создать программный модуль, например, представленный в предыдущем разделе (см. листинг 6.3):1. Введите часть выражения, которая будет находиться слева от знака присваивания и сам знак присваивания. В нашем примере это имя функции f (x).2. При необходимости вызовите на экранProgramming (Программирование) (см. рис. 6.1).панельинструментов3. Нажмите на этой панели кнопку Add Line (Добавить линию).4. Если приблизительно известно, сколько строк кода будет содержать программа, можно создать нужное количество линий повторным нажатиемкнопки Add Line (Добавить линию) соответствующее число раз (нарис. 6.2 показан результат трехкратного нажатия).5. В появившиеся местозаполнители введите желаемый программный код,используя программные операторы.
В рассматриваемом примере в каждыйместозаполнитель вводится строка, например, "positive" (рис. 6.3), затемнажимается кнопка If (Если) на панели Programming (Программирование)и в возникший местозаполнитель вводится выражение х>о (рис. 6.4).После того как программный модуль полностью определен и ни один местозаполнитель не остался пустым, функция может использоваться обычным образом, как в численных, так и в символьных расчетах.Внимание!Не вводите с клавиатуры имена программных операторов. Для их вставки можно применять лишь сочетания клавиш, которые приведены в тексте всплывающей подсказки (рис.
6.2 и 6.3).Programmingf (н) :=Add Unaifotherwise dd Program Line.. break ~T3fiimwon error••L I, X.) .—"negative""positive""zero"if к> ОРис. 6 . 2 . Начало созданияпрограммного модуляAdd Uneotheiwiselorbreak continueon airorРис. 6.З. Вставка программного оператора•whilerstum 1'f Statement }]Глава 6. Программирование£ US :=155"negative"it"positive"ifx> 0Рис. 6 . 4 .
Вставка условияв программуk"zero"6.2.3. Разработка программыВставить строку программного кода в уже созданную программу можно влюбой момент с помощью той же самой кнопки Add Line (Добавить линию). Для этого следует предварительно поместить на нужное местовнутри программного модуля линии ввода. Например, расположение линии ввода на строке, показанной на рис. 6.5, приведет к появлению новой линии с местозаполнителем перед этой строкой. Если передвинутьвертикальную линию ввода из начала строки (как на рис. 6.5) в ее коп-:,то новая линия появится после строки.
Если выделить строку не целиком, а лишь некоторую ее часть (рис. 6.6), то это повлияет на положениев программе новой строки кода (результат нажатия кнопки Add Line показан на рис. 6.7).Не забывайте, что для желаемого размещения линий ввода внутри формулыможно использовать не только мышь и клавиши со стрелками, но и пробел. Спомощью последовательных нажатий пробела линии ввода "захватывают" разные части формулы.f (х) :=negative" if x > Оf (к) :=positive" if x < О"negative"if x < 0"positive"]if к > DotherwiseРис.
6 . 5 . Вставка новой строкив существующую программуf (x) :=Рис. 6 . 6 . Положение линий вводавлияет на положение новой линии"negative"if x < 0if x > 0"positive""zero "L^- otherwiseРис. 6 . 7 . Результат вставки новой линии в программу(из положения рис. 6.6)156Часть II. Точные вычисленияЗачем может потребоваться вставка новой линии в положение, показанноена рис. 6.7? Новая вертикальная черта с двумя линиями выделяет фрагментпрограммы, который относится к условию х>0, находящемуся в его заголовке.
Пример возможного дальнейшего программирования показан в листинге 6.4.I Листинг 6.4. Пример усовершенствования программыf (х) :="negative"•if x < Оif х > О"positive""big positive""zero" otherwisef ( 1) = "positive"if x > 1000f\10 /= "big positive"В режиме выполнения программы, а это происходит при любой попыткевычислить f (x), выполняется последовательно каждая строка кода. Например, в предпоследней строке листинга 6.4 вычисляется f ( i ) . Рассмотримработу каждой строки кода этого листинга.1. Поскольку х=1, то условие х<о не выполнено, и в первой строке ничегоне происходит.2.
Условие второй строки х>о выполнено, поэтому выполняются обе следующие строки, объединенные короткой вертикальной чертой в общийфрагмент.3. Функции f (х) присваивается значение f (x) ="positive".4. Условие х>юоо не выполнено, поэтому значение "big positive" неприсваивается f (х), она так и остается равной строке "positive".5. Последняя строка не выполняется, т. к. одно из условий (х>о) оказалосьистинным, и оператор otherwise (т. е. "иначе") не понадобился.Таким образом, основной принцип создания программных модулей заключается в правильном расположении строк кода. Ориентироваться в их действии довольно легко, т.
к. фрагменты кода одного уровня сгруппированы впрограмме с помощью вертикальных черт.6.2.4. Локальное присваивание (<г-)Язык программирования Mathcad не был бы эффективным, если бы не позволял создавать внутри программных модулей локальные переменные, которые "не видны" извне, из других частей документа. Присваивание в пределах программ, в отличие от документов Mathcad, производится сГлава 6.
Программирование157_помощью оператора Local Definition (Локальное присваивание), которыйвставляется нажатием кнопки с изображением стрелки <— на панелиProgramming (Программирование).Внимание!Ни оператор присваивания :=, ни оператор вывода = в пределах программ неприменяются.Локальное присваивание иллюстрируется листингом 6.5. Переменная z существует только внутри программы, выделенной вертикальной чертой. Издругих мест документа получить ее значение невозможно.; Листинг 6.5. Локальное присваивание в программеf ( х):=;й|Гi;\zi-iZ+Xf (1) = 56.2.5. Условные операторы (if, otherwise)Действие условного оператора if состоит из двух частей. Сначала проверяется логическое выражение (условие) справа от него.
Если оно истинно,выполняется выражение слева от оператора if. Если ложно — ничего непроисходит, а выполнение программы продолжается переходом к ее следующей строке. Вставить условный оператор в программу можно следующим образом (см. рис. 6.8):1. Если необходимо, введите левую часть выражения и оператор присваивания.2. Создайте новую строку программного кода, нажав на панелиProgramming (Программирование) кнопку Add Line (Добавить строку).3. Нажмите кнопку условного оператора if.4. Справа от оператора if введите условие. Пользуйтесь логическими операторами, вводя их с панели Boolean (Булевы операторы).5.