Как задать цикл в маткаде
Перейти к содержимому

Как задать цикл в маткаде

  • автор:

Как задать цикл в маткаде

2. Чтобы определить пустой цикл for , на вкладке Математика (Math) в группе Операторы и символы (Operators and Symbols) щелкните Программирование (Programming) , а затем щелкните for .

Невозможно изменить оператор ∈ (принадлежит). Этот оператор является частью синтаксиса оператора for .

3. Укажите итератор i и диапазон значений (0..2), как показано ниже.

• Диапазон значений может также быть одним значением, вектором или матрицей, определяющей диапазон значений.

• Исходным значением по умолчанию для вектора или матрицы в PTC Mathcad является 0.
4. Назначьте значение переменной i первым трем элементам вектора, как показано ниже.

5. Вычислите функцию f , если vec содержит две строки.

Результат представляет собой трехстрочный вектор, определяемый переменной i . Две исходные строки будут перезаписаны в цикле for .

6. Вычислите функцию f , если vec содержит три строки.

Результат представляет собой трехстрочный вектор, определяемый переменной i . Три исходные строки будут перезаписаны в цикле for .

7. Вычислите функцию f , если vec содержит пять строк.

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

Как задать цикл в маткаде

В языке программирования Mathcad имеются два оператора цикла: for и while. Первый из них дает возможность организовать цикл по некоторой переменной, заставляя ее пробегать некоторый диапазон значений. Второй создает цикл с выходом из него по некоторому логическому условию. Чтобы вставить в программный модуль оператор цикла:

  • Создайте в программном модуле новую линию.
  • Вставьте один из операторов цикла for или while нажатием одноименной кнопки на панели Programming (Программирование).
  • Если выбран оператор for (рис. 6.9), то вставьте в соответствующие ме-стозаполнители имя переменной и диапазон ее значений (листинги 6.6 и 6.7), а если while — то логическое выражение, при нарушении которого должен осуществляться выход из цикла (листинг 6.8).

Рис. 6.9. Вставка оператора цикла

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

При необходимости дополните программу другими строками и введите в них нужный код.

Диапазон значений переменной в условии цикла for можно задать как с помощью диапазона ранжированной переменной (листинг 6.6), так и с помощью вектора (листинг 6.7).

Листинг 6.6. Оператор цикла for с ранжированной переменной

Листиг 6.7. Оператор цикла for с вектором

Листинг 6.8. Опратор цикла while

Иногда необходимо досрочно завершить цикл, т. е. не по условию в его заголовке, а в некоторой строке в теле цикла. Для этого предназначен оператор break. Модификации листингов 6.6 и 6.8 с прерыванием цикла оператором break приведены в листингах 6.9 и 6.10, соответственно. Например в листинге 6.9, как только значение переменной цикла i достигает 2, цикл, благодаря оператору break в последней строке программного модуля, прерывается. Соответственно, значение переменной х остается равным 0+1+2=3.

Листинг 6.9. Оператор break внутри цикла for

Листинг 6.10. Оператор break внутри цикла while

Чтобы четче обозначить границы завершения тела цикла, в его конце может использоваться дополнительная строка с оператором continue, который вводится одноименной кнопкой панели Programming. Примеры, модернизирующие листинги 6.7 и 6.8, иллюстрируются листингами 6.11 и 6.12, соответственно. Как видно, на результат программы наличие оператора continue не влияет.

Проверка условий в программах.

Программы в MathCAD могут быть не только линейными, но и разветвленными. Одним из вариантов ветвления в программах является проверка условия. Условия могут проверять значения как локальных, так и глобальных переменных, а также выражений, содержащих эти переменные.

Для проверки условий в программах MathCAD служит оператор if . В поле ввода справа нужно ввести условие. Для ввода условий служит панель Boolean. На этой панели есть кнопки, предназначенные для проверки условий , а также кнопки, предназначенные для вставки логических операций (логическое отрицание, операция «и», операция «или», операция «исключающее или»). Вторые позволяют создавать сложные условия. В поле ввода слева нужно ввести строку программы, которая должна выполняться, если введенное условие истинно.

Если для условия «истинно» необходимо выполнение нескольких строк программы, надо воспользоваться кнопкой

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

Следует помнить, что если в программе введено подряд несколько строк с оператором if

то выражение слева от оператора otherwise будет выполнено только в том случае, если не выполняются условия, заданные во всех операторах if.

Создание циклов.

Другим очень важным элементом при создании нелинейных программ являются циклы. Циклы позволяют повторять несколько раз выполнение одного и того же программного блока. Для создания циклов в MathCAD предусмотрено два оператора for и while.

Цикл for — цикл со счетчиком.

В таких циклах создается некоторая переменная-счетчик, значение которой изменяется после каждого выполнения тела цикла. Выход из цикла происходит при достижении этой переменной заданного значения. Этот оператор вводится с панели Programming клавишей for . В поле ввода после слова for следует указать имя переменной — счетчика. Это может быть любое имя, которое не использовалось ранее в программе. Внутри цикла можно использовать эту переменную в любых выражениях, нельзя только присваивать ей никакого значения. В поле ввода после знака следует указать диапазон значений переменной-счетчика. Вводить диапазон в данном случае следует так же, как и при создании ранжированной переменной. Вместо диапазона в данном поле ввода можно указать имя некоторого массива (вектора или матрицы). В этом случае переменная-счетчик будет последовательно принимать значения всех элементов этого массива. Возможность перебора элементов массива не может быть реализована с помощью цикла while, поэтому именно в таких случаях цикл for и является незаменимым. В поле ввода под словом for следует ввести тело цикла.

Пример: Заполнить вектор числами от xнач до xкон с шагом h. Затем определить сумму элементов этого вектора и найти их среднее арифметическое значение.

Цикл while — цикл, который выполняется до тех пор, пока выполняется определенное условие.

В поле ввода справа от слова while следует ввести условие. Это условие строится по тем же правилам, что и в операторе if. Оно будет проверяться после каждого выполнения тела цикла и в тот момент, когда условие перестанет выполняться, повторение тела цикла прекратится. В поле ввода ниже слова while следует ввести тело цикла (напомним, что для ввода нескольких строк в теле цикла надо воспользоваться кнопкой Add Line).

Пример1: Вычислить сумму с точностью е.

Пример2: Найти первый элемент, превышающий определенный порог.

Использование операторов break и continue.

Иногда возникает необходимость повлиять на выполнение цикла некоторым образом, например, прервать его выполнение по какому-либо условию или выполнять некоторые итерации не так, как другие. Для этого и служат операторы break и continue.

Оператор break, если он расположен внутри цикла, означает немедленное прекращение выполнения текущей итерации и выход из цикла. Если есть необходимость прекратить выполнение цикла по какому-либо условию, то следует использовать конструкцию следующего вида break if (условие).

Пример: Выделить из массива все элементы от начала и до первого вхождения в него заданного числа.

Оператор continue используется для того, чтобы немедленно перейти в начало цикла и начать следующую итерацию. Этот оператор также обычно используется в составе конструкции вида continue if (условие). Оператор continue используется в случаях, когда необходимо чтобы некоторые вычисления производились для одних итераций и не производились для других.

Пример: Требуется заполнить элементы квадратной матрицы в шахматном порядке.

Оператор return (возврат значения).

Как мы уже указывали, результат выполнения программного модуля помещается, как правило, в последней его строке. Но можно прервать выполнение программы в любой ее точке (например, с помощью условного оператора) и выдать некоторое значение, применив оператор return. В этом случае при выполнении указанного условия значение, введенное в поле ввода после return, возвращается в качестве результата, и никакой другой код больше не выполняется. Вставляется в программу оператор return с помощью одноименной кнопки панели Programming . Пример:

Программирование в MathCAD

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

В очень ранних версиях MathCAD встроенного языка программирования не было. Чтобы применять привычные операции проверки условий и организовывать циклы, приходилось изобретать причудливую смесь из встроенных функций if и until, а также комбинаций ранжированных переменных. Но надо отметить, что использование ранжированных переменных – мощный аппарат MathCAD, похожий на применение циклов в программировании. В подавляющем большинстве случаев намного удобнее организовать циклы с помощью ранжированных, чем заниматься для этого программированием.

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

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

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

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

Внутри программы можно использовать глобальные переменные документа, но изменить их значение внутри программы никак нельзя. Можно создать в программе другие переменные, доступ к которым может осуществляться только из самой программы. Эти переменные называются локальными переменными. Локальные переменные «не видны» извне. Локальная переменная создается с помощью знака локального присвоения с панели Programming. Для оператора локального присваивания, так же как и для операторов обычного и глобального присваивания, можно изменить внешний вид так, чтобы он выглядел как обычный знак равенства. Для этого достаточно вызвать контекстное меню этого оператора и в нем выбрать команду View Definition As/Equal.

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

Вставить строку программного кода в уже созданную программу можно в любой момент с помощью той же самой кнопки Add Line. Для этого следует поместить на нужное место внутри программы линии ввода.

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

Проверка условий в программах .

Программы в MathCAD могут быть не только линейными, но и разветвленными. Одним из вариантов ветвления в программах является проверка условия. Условия могут проверять значения как локальных, так и глобальных переменных, а также выражений, содержащих эти переменные.

Для проверки условий в программах MathCAD служит оператор if . В поле ввода справа нужно ввести условие. Для ввода условий служит панель Boolean. На этой панели есть кнопки, предназначенные для проверки условий , а также кнопки, предназначенные для вставки логических операций (логическое отрицание, операция «и», операция «или», операция «исключающее или»). Вторые позволяют создавать сложные условия. В поле ввода слева нужно ввести строку программы, которая должна выполняться, если введенное условие истинно.

Если для условия «истинно» необходимо выполнение нескольких строк программы, надо воспользоваться кнопкой .

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

Следует помнить, что если в программе введено подряд несколько строк с оператором if , то выражение слева от оператора otherwise будет выполнено только в том случае, если не выполняются условия, заданные во всех операторах if.

Другим очень важным элементом при создании нелинейных программ являются циклы. Циклы позволяют повторять несколько раз выполнение одного и того же программного блока. Для создания циклов в MathCAD предусмотрено два оператора for и while.

В таких циклах создается некоторая переменная-счетчик, значение которой изменяется после каждого выполнения тела цикла. Выход из цикла происходит при достижении этой переменной заданного значения. Этот оператор вводится с панели Programming клавишей for . В поле ввода после слова for следует указать имя переменной – счетчика. Это может быть любое имя, которое не использовалось ранее в программе. Внутри цикла можно использовать эту переменную в любых выражениях, нельзя только присваивать ей никакого значения. В поле ввода после знака следует указать диапазон значений переменной-счетчика. Вводить диапазон в данном случае следует так же, как и при создании ранжированной переменной. Вместо диапазона в данном поле ввода можно указать имя некоторого массива (вектора или матрицы). В этом случае переменная-счетчик будет последовательно принимать значения всех элементов этого массива. Возможность перебора элементов массива не может быть реализована с помощью цикла while, поэтому именно в таких случаях цикл for и является незаменимым. В поле ввода под словом for следует ввести тело цикла.

Пример: Заполнить вектор числами от xнач до xкон с шагом h. Затем определить сумму элементов этого вектора и найти их среднее арифметическое значение.

Цикл while – цикл, который выполняется до тех пор, пока выполняется определенное условие.

В поле ввода справа от слова while следует ввести условие. Это условие строится по тем же правилам, что и в операторе if. Оно будет проверяться после каждого выполнения тела цикла и в тот момент, когда условие перестанет выполняться, повторение тела цикла прекратится. В поле ввода ниже слова while следует ввести тело цикла (напомним, что для ввода нескольких строк в теле цикла надо воспользоваться кнопкой Add Line).

Пример 1: Вычислить сумму с точностью е.

Пример2: Найти первый элемент, превышающий определенный порог.

Использование операторов break и continue .

Иногда возникает необходимость повлиять на выполнение цикла некоторым образом, например, прервать его выполнение по какому-либо условию или выполнять некоторые итерации не так, как другие. Для этого и служат операторы break и continue.

Оператор break, если он расположен внутри цикла, означает немедленное прекращение выполнения текущей итерации и выход из цикла. Если есть необходимость прекратить выполнение цикла по какому-либо условию, то следует использовать конструкцию следующего вида break if (условие).

Пример: Выделить из массива все элементы от начала и до первого вхождения в него заданного числа.

Оператор continue используется для того, чтобы немедленно перейти в начало цикла и начать следующую итерацию. Этот оператор также обычно используется в составе конструкции вида continue if (условие). Оператор continue используется в случаях, когда необходимо чтобы некоторые вычисления производились для одних итераций и не производились для других.

Пример: Требуется заполнить элементы квадратной матрицы в шахматном порядке.

Оператор return (возврат значения) .

Как мы уже указывали, результат выполнения программного модуля помещается, как правило, в последней его строке. Но можно прервать выполнение программы в любой ее точке (например, с помощью условного оператора) и выдать некоторое значение, применив оператор return. В этом случае при выполнении указанного условия значение, введенное в поле ввода после return, возвращается в качестве результата, и никакой другой код больше не выполняется. Вставляется в программу оператор return с помощью одноименной кнопки панели Programming . Пример:

Система MathCAD предоставляет пользователю некоторый контроль над ошибками, которые могут возникнуть при вычислении выражений или при выполнении программ. Для этой цели служит оператор on error, который можно вставить с помощью одноименной кнопки панели Programming . В поле ввода справа следует ввести выражение или программу, которые необходимо вычислить (известно, что это выражение может содержать ошибку при определенных значениях входных параметров). В поле ввода слева следует ввести выражение, которое будет выполнено вместо правого выражения, если при выполнении последнего возникнет ошибка. Пример: Если аргументу функции присвоено нулевое значение, то в программе возникает ошибка – деление на нуль. Но за счет оператора on error сообщение не выводится, а функции в этой точке присваивается значение, указанное слева от оператора on error – значение машинной бесконечности.

В поле ввода слева может быть введено текстовое выражение, сообщающее об ошибке

Конечно, если программа содержит только простейшие математические операции, то никаких ошибок, кроме деления на нуль или превышения наибольшего допустимого числа в ней возникнуть не может. В таких программах оператор on error используется редко. Но для более сложных программ, которые содержат функции решения дифференциальных уравнений, аппроксимации или другие сложные функции MathCAD, использование on error может избавить от многих трудностей.

Иногда может возникнуть ситуация обратная той, которая была описана выше, т.е. необходимо, чтобы при определенных условиях результатом выражения было сообщение об ошибке, хотя в действительности при этом не возникает ни одной стандартной ошибки MathCAD. Для таких случаев в MathCAD предусмотрена встроенная функция error. В качестве аргумента этой функции нужно в кавычках указать текст сообщения об ошибке, который должен быть выведен. Таким образом, если необходимо, чтобы программа возвращала ошибку при определенном условии, то следует использовать конструкцию вида: error («текст ошибки») if (условие).

Для того, чтобы иметь возможность нормально вводить текст на русском языке в аргумент функции error (а также во все другие функции со строками), следует изменить шрифт, который используется во встроенном стиле Constant. Для того чтобы этот стиль правильно отображал русские буквы, установите курсор на любом числе или строковом выражении в формульном блоке. При этом в поле на панели инструментов Formatting, отображающем текущий стиль, должно быть написано – Constant. Теперь выберите из раскрывающегося списка шрифтов шрифт, поддерживающий кириллицу.

1. Вычислить функцию sin(x) с точностью е.

2. Даны массивы А(5) и В(5). Получить массив С, в который записаны сначала элементы

массива А в порядке возрастания, а затем элементы массива В порядке убывания

3. По введенным значениям коэффициентов А, В, С определить корни квадратного уравнения

4. Дан массив натуральных чисел В(10). Определить, есть ли в нем 4 последовательных числа (например, 1, 2, 3, 4, и т.п.). Напечатать такие группы чисел.

Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:

ПОДПРОГРАММА-ФУНКЦИЯ: ОПИСАНИЕ И ВЫЗОВ

Описание подпрограммы-функции ( П-Ф ) и локальный оператор присваивания

Описание П-Ф размещается в рабочем документе перед ее вызовом и включает в себя имя подпрограммы-функции, список формальных параметров (который может отсутствовать) и тело подпрограммы-функции. Для ввода конструкций в тело П-Ф используется палитра инструментов ПРОГРАММИРОВАНИЕ, приведенная на рис. 1.

Рис. 1. Палитра ПРОГРАММИРОВАНИЕ

Каждая П-Ф Math cad имеет оригинальное имя, посредством которого осуществляется обращение к ней. Через это же имя (и только через это имя) «возвращается» результат выполнения П-Ф.

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

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

Замечание 1. П-Ф может не иметь формальных параметров, и тогда данные передаются через имена переменных, определенных выше описания П-Ф.

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

Порядок описания подпрограммы-функции Math cad .

Для ввода в рабочий документ описания П-Ф необходимо выполнить следующие действия:

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

· ввести символ “:” – на экране отображается как “: =”;

· открыть палитру Программирования и щелкнуть кнопкой Add line (см. рис. 1). На экране появится вертикальная черта и вертикальный столбец с двумя полями для ввода операторов, образующих тело П-Ф (см. рис. 2);

Рис. 2. Структура подпрограммы-функции

· перейти в поле 1 (щелкнув на нем мышью или нажав клавишу [Tab]) и ввести первый оператор тела П-Ф.

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

· заполнить самое нижнее поле ввода, введя туда выражение, определяющее возвращаемое через имя П-Ф (см. рис. 3).

Рис. 3. Окончательная структура подпрограммы-функции

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

Локальный оператор присваивания

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

Обращение к подпрограмме-функции Math cad

Для выполнения П-Ф необходимо обратиться к ее имени с указанием списка фактических параметров (если в описании программы присутствует список формальных параметров), т.е.:

Фактические параметры отделяются друг от друга запятой.

· Очевидно, что между фактическими и формальными параметрами должно быть соответствие по количеству, порядку следования и типу.

Замечание 3. Обращение к П-Ф должно находиться после ее описания, и к моменту обращения фактические параметры должны быть определены.

Пример 4. Обращение к программе f ( x ), приведенной на рис. 4.1.4, может иметь следующий вид:

Заметим, что переменная z никак не связана с «локальной» переменной z , используемой внутри тела П-Ф. ¨

Замечание 4. Передать данные внутрь П-Ф можно, используя внутри подпрограммы переменные, определенные до описания П-Ф (см. пример на рис. 4.2.1).

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

Программирование АЛГОРИТМОВ в подпрограмме-функции M ath CAD

Программирование линейных алгоритмов в подпрограмме-функции

Операторы, реализующие этот алгоритм, в теле П-Ф также размещаются последовательно и выполняются все, начиная с первого и заканчивая последним .

Пример 6 . Оформим в виде П-Ф вычисление корней квадратного уравнения ax 2 + bx +c = 0 по формуле

Описание П-Ф root _ poly 2 и обращение к ней приведено на рис. 5.5.1. П-Ф имеет три входных формальных параметра – коэффициенты квадратного уравнения. Выходом является вектор с двумя компонентами. Заметим, что величины x 1, x 2 являются простыми переменными, а не элементами одномерного массива. Поэтому нижние индексы в их именах вводятся после нажатия клавиши [.] – «десятичная точка».

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

Пример программирования линейного алгоритма

Программирование разветвляющихся алгоритмов в подпрограмме-функции

Для программирования разветвляющихся алгоритмов в подпрограмме-функции Math cad можно использовать:

§ условную функции

§ условный оператор if .

Используя эти конструкции, можно «изменить» последовательное выполнение операторов.

Условный оператор. Этот оператор используется только в теле П-Ф и для его ввода необходимо щелкнуть на кнопке if палитры программирование . На экране появляется конструкция с двумя полями ввода, изображенная на рисунке .

Структура условного оператора if

В поле 2 вводится логическое выражение УСЛ (в простейшем случае это выражение отношений). В поле 1 вводится конструкция ВЫР1, которая выполняется, если проверяемое логическое выражение принимает значение 1. Если УСЛ = 0, то ВЫР1 не выполняется. Это соответствует условной структуре, называемой ЕСЛИ – ТО .

Для получения условной структуры ЕСЛИ ТО – ИНАЧЕ используется оператор otherwise , вводимый с палитры ПРОГРАММИРОВАНИЕ, в поле которого размещается конструкция ВЫР2, которая выполняется, если проверяемое логическое выражение принимает значение 0 (см. рисунок). Оператор otherwise непосредственно следует после условного оператора if .

Реализация структуры ЕСЛИ – ТО – ИНАЧЕ

Для ввода ВЫР2 в поле оператора otherwise необходимо:

· выделить поле, стоящее после оператора if ;

· щелкнуть на кнопке otherwise палитры программированиЕ ;

· в появившееся поле оператора otherwise ввести необходимую конструкцию ВЫР2.

Пример 6. Составим описание П-Ф, вычисляющей функцию y(x), заданную выражением

Описание и вызов П-Ф приведены на рисунке

Реализация разветвляющегося алгоритма

Пример 7. Составим описание П-Ф для вычисления переменной z ( t ) по формуле

Описание П-Ф и ее вызов приведены на рисунке

Реализация разветвляющегося алгоритма

Из описания видно, что функция z (t) получит значение ln(t) только тогда, когда не выполняются условия, записанные в двух вышестоящих строках тела П-Ф.

Внимание! Если в строке 3 ввести просто ln ( t ), то это выражение будет вычисляться всегда вне зависимости от выполнения заданных выше условных операторов.

Задание 2 . Составьте описания П-Ф, реализующих следующие разветвляющиеся алгоритмы:

Вариант 1. При выполнении заданного условия УСЛ необходимо выполнить несколько конструкций MathCAD .

Вариант 2. При невыполнении заданного условия УСЛ необходимо выполнить несколько конструкций MathCAD .

В этом случае необходимо выделить поле оператора otherwise , щелкнуть на кнопке Add line палитры ПРОГРАММИРОВАНИЕ нужное число раз и заполнить появившиеся поля.

Пример 8. Составьте описание П-Ф, вычисляющей значения двух полиномов x ( t ), y ( t ) нулевой или первой степени. Порядок полиномов задается переменной n . Если n < 0или n > 1, то значения полиномов равны 0. Описание П-Ф приведено на рисунке.

Реализация алгоритма примера

Пример 9. Даны два числа x , y . Составить описание П-Ф, которая переменной x присваивает максимальное значение из этих двух чисел, а y – минимальное. Описание приведено на рисунке.

Реализация разветвляющегося алгоритма

Вызов подпрограммы-функции arrangement

Задание 3. Даны три числа a , b , c . Составить П-Ф, реализующую следующий алгоритм. Если , то все числа заменить их квадратами, если , то каждое число заменить максимальным значением из этих трех чисел, в противном случае — сменить знаки у чисел.

Задание 4. Координаты точки на плоскости задаются двумя числами x , y . Составить П-Ф, вычисляющую номер четверти на плоскости, в которую попала точка.

Задание 5 . Длина сторон треугольника задается числами a , b , c . Составить П-Ф, вычисляющую значение целой переменной n по следующему правилу: n = 3, если три стороны равны; n = 2, если любые две стороны равны; n = 1, если все три стороны имеют разную длину.

Программирование циклических алгоритмов в подпрограмме-функции

Циклы можно условно разделить на две группы:

· циклы типа арифметической прогрессии;

· итерационные циклы.

Программирование цикла типа арифметической прогрессии

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

· щелкнуть на кнопке for палитры ПрограммированиЕ . На экране появятся поля ввода, изображенные на рисунке

Поля оператора цикла for

· в поле ввода 1 ввести имя переменной, являющейся параметром цикла;

· в поле 2 — закон изменения параметра цикла, используя для этого описание дискретной переменной или описание массива ;

· в поле 3 — операторы, составляющие тело цикла. Если одной строки недостаточно, то дополнительные поля ввода (дополнительные строки) создаются щелчком на кнопке Add line палитры программированиЕ, и тогда слева от тела цикла появляется вертикальная черта, охватывающая тело цикла.

Пример 9. Составить описание П-Ф, реализующей алгоритм формирование вектора.

Заметим, что значение системной переменной ORIGIN (начальное значение индексного выражения) задается равным 1.

Подпрограмма-функция формирования вектора

Пример 9. Для x меняющегося от -2 до 2 с шагом 0.5 вычислить значение f(x) = e -x. Cos (2 x ) и сформировать из этих значений вектор y, т.е. y1 = f(-2), y2 = f(-1.5) и т.д.

В этом примере количество повторений тела цикла определяется по формуле

где xk, x0 – конечное и начальное значения параметра цикла, d – шаг его изменения. Подставив значения, получаем (2 –(–2)) /0.5+1=9.

Следовательно, сформированный вектор y будет содержать 9 элементов.

Описание П-Ф и ее вызов приведены на рисунке. Видно, что в теле цикла выполняется два оператора. Первый оператор формирует элемент массива y , а второй изменяет на 1 значение индекса. ¨

Формирование вектора примера 9

Пример 10. Составить описание П-Ф, где значения параметра цикла задаются вектором.

На рисунке приведено описание такой П-Ф.

Задание 5. Составьте описание П-Ф формирования вектора y примера 9, приняв в качестве параметра цикла переменную i .

Программирование итерационных циклов

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

· щелкнуть на кнопке while палитры ПрограммированиЕ . На экране появляются элементы, показанные на рисунке

Структура оператора цикла while

· в поле 1 ввести условие выполнения цикла;

· в поле 2 ввести операторы тела цикла. В теле цикла должны присутствовать операторы, которые могут изменить значение условия цикла, иначе цикл будет продолжаться бесконечно.

Оператор цикла while выполняется следующим образом : обнаружив оператор while, Math cad проверяет указанное в операторе условие. Если оно равно 1 (т.е. выполняется), то выполняется тело цикла, и снова проверяется условие. Если условие принимает значение 0, то цикл заканчивается.

Пример 11 . Составим П-Ф, реализующую итерационную процедуру приближенного вычисления корня квадратного , используя итерационную процедуру:

В качестве приближенного значения принимается , удовлетворяющее условию:

где – заданная точность вычисления корня квадратного.

Нет необходимости хранить в памяти все приближенные решения x0, x1, x2,. .. Достаточно хранить предыдущее («старое») значение (обозначим его как xc ) и последующее («новое») значение xn.

К сожалению, организация итерационного цикла с помощью оператора while без дополнительных средств контроля может привести к зацикливанию, т.е. повторению тела цикла «бесконечное» число раз. Например, задав при обращении к П-Ф < 0 , получаем зацикливание.

Поэтому в Math cad имеется специальный оператор break , который позволяет выйти из цикла или приостановить исполнение программы при выполнении заданного в операторе break условия.

Оператор break используется в левом поле ввода условного оператор if , а в правом размещается условие, при выполнении которого происходит прекращение работы цикла или программы. Поэтому первоначально вводится оператор if , а затем заполняются поля этого оператора. Следующий пример показывает написание подпрограммы без «зацикливания» с использованием оператора break.

Пример 12.1 . Составим П-Ф, реализующую итерационную про ­ цедуру вычисления корня квадратного без «зацикливания» .

Рис. 5.3.7. Реализация итерационного цикла без «зацикливания»

Пример 12.2 Составить П-Ф, осуществляющую суммирование ряда с бесконечным числом слагаемых. Накопление суммы прекращается, как только очередное слагаемое по абсолютной величине становится меньше заданной погрешности .

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

Вызовы подпрограммы-функции

Программирование двойных циклов

Варианты вложений операторов цикла

Составить описание П-Ф формирующей матрицу по следующему правилу:

Описание и вызов П-Ф приведены на рисунке. В этой П-Ф параметром внешнего цикла является переменная i , а параметром внутреннего — переменная j .

Реализация двойного цикла

Дополнительные операторы, используемые при программировании циклов

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

Пример 12.3 Составить описание П-Ф, формирующей новый вектор из положительных проекций исходного вектора.

Описание приведено на рисунке

Оператор return . Прерывает выполнение П-Ф и возвращает значение операнда, стоящего в поле 1 (см. рисунок).

Структура оператора return

Пример 13. Составить описание П-Ф, находящей первую положительную проекцию исходного вектора. Возможны два варианта программной реализации алгоритма решения этой задачи. Вариант B представляется более простым и «элегантным».

Вариант B

Оператор on error . Этот оператор является обработчиком возникающих при выполнении тех или иных вычислений ошибок и записывается в виде:

Оператор выполняется следующим образом. Если при выполнении < конструкция 2 > возникает ошибка, то выполняется . Если ошибка не возникает, то выполняется .

Пример 14. Используем оператор on error для предотвращения появления ошибки «деление на ноль» при вычислении функции angl ( x , y ). Фрагмент представлен на рисунке

Функция error . Используется для вывода диагностических сообщений при возникновении в вычислениях ошибки и записывается в виде:

Имя функции вводится с клавиатуры . Функция используется в левом поле условного оператора if , как показано в следующем примере.

Пример 16. Запрограммируем вывод диагностического сообщения при попытке спроецировать вектор v на нулевой вектор w . Описание П-Ф и ее вызовы приведены на рисунке.

Похожие публикации:

  1. Autocad и autodesk в чем разница
  2. Mathcad эта переменная не определена что делать
  3. Адаптация пользовательского интерфейса autocad как зайти
  4. Значение должно быть скалярным mathcad как

Программирование в «Маткаде»: циклы, задачи и примеры

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

Общие сведения о программировании в Mathcad

Язык программирования Mathcad появился в первых версиях пакета еще в 1986 году. Цель состояла в том, чтобы предоставить пользователям возможность автоматизировать повторяющиеся действия при решении математических задач. Хотя изначально это был достаточно ограниченный набор команд, со временем язык развивался и пополнялся новыми конструкциями.

К достоинствам программирования в Mathcad можно отнести:

  • Простой и понятный синтаксис языка
  • Интеграция программного кода с математическими выражениями и визуальными элементами
  • Богатая библиотека встроенных функций
  • Возможность создавать пользовательские функции и подпрограммы

Основными недостатками являются:

  • Невысокая производительность по сравнению с компилируемыми языками
  • Слабые средства отладки
  • Отсутствие объектно-ориентированного программирования

Тем не менее, для инженерных расчетов язык Mathcad вполне подходит. Главные области его применения:

  • Автоматизация рутинных вычислений
  • Обработка и анализ данных
  • Моделирование физических процессов
  • Решение математических и инженерных задач

Все команды программирования в Mathcad сосредоточены на панели Programming. Их можно вставлять, щелкая мышью по соответствующим кнопкам, либо используя горячие клавиши. Ниже приведена простая программа для нахождения суммы двух чисел:

 a := 2 b := 3 sum := a + b sum = 5 

Здесь использованы оператор присваивания := и переменные a , b и sum . Как видно из примера, программирование в Mathcad достаточно наглядно и просто для понимания.

Переменные и типы данных

Переменные в Mathcad используются для хранения данных в процессе выполнения программы. Существуют глобальные переменные, доступные везде после объявления, и локальные, видимые только внутри блока кода.

Чтобы объявить переменную, достаточно присвоить ей значение:

 a := 5 

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

При использовании переменных можно задавать единицы измерения:

Однако единицы должны быть одинаковыми для всех данных в выражениях. Рассмотрим пример программы работы с переменными:

 a м b м S м2 P = 16 м 

Здесь рассчитывается площадь S и периметр P прямоугольника со сторонами a и b . Как видно, переменные и единицы измерения используются естественным образом.

Mathcad обеспечивает все необходимые средства для работы с переменными любых типов при написании программ.

Работа в маткаде

Операторы ветвления if/else

Операторы if и else позволяют организовывать разветвляющиеся алгоритмы в программах Mathcad.

Синтаксис if следующий:

 if условие оператор1 . 

Здесь если условие истинно, выполняется один или несколько операторов. Условие формируется с помощью логических операций, например:

 if x > 0 Λ y < 5 выражение 

Где Λ - логическое "И". Для построения более сложных условий используются скобки.

Конструкция if-else выглядит так:

 if условие операторы1 else операторы2 

В этом случае выполняются операторы1 , если условие истинно, и операторы2 в противном случае.

Рассмотрим пример программы, которая для данного x вычисляет значение функции:

 f(x) = 
x2, если x ≤ 0 2x + 1, если x > 0
 x := -3 if x 2 else y  

Здесь в зависимости от знака x выбирается нужная формула для расчета y .

Таким образом, конструкции if и else позволяют существенно расширить функциональность программ Mathcad.

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

Процесс программирования

Циклы в Mathcad

Циклы позволяют многократно выполнять фрагмент программного кода. Mathcad поддерживает два основных типа циклов: for и while .

Цикл for используется, когда известно точное количество повторений. Его синтаксис:

 for переменная = начало, конец операторы 

Здесь переменная последовательно принимает значения от начало до конец с заданным шагом, выполняя на каждой итерации операторы .

Например, чтобы вывести квадраты чисел от 1 до 5, можно написать:

 for i = 1, 5 print(i^2) 

Цикл for часто используется для обработки элементов массивов. Рассмотрим пример программы, которая находит сумму элементов вектора:

 A := [2, 5, 7, 9] sum := 0 for i = 0, length(A)-1 sum  

Здесь функция length(A) возвращает число элементов вектора A , а A[i] - доступ к элементу с индексом i .

Оператор while

Цикл while организует повторение по заданному условию:

 while условие операторы 

Блок операторы выполняется до тех пор, пока условие истинно. Например:

 i := 1 while i < 10 print(i) i := i + 1 

Это выведет числа от 1 до 9. Важно правильно изменять переменные в теле цикла while , чтобы не допустить зацикливания.

Функции и подпрограммы

Функции в Mathcad позволяют организовать многократное использование фрагментов кода. Синтаксис:

 fname(параметры) := выражение 

Здесь fname - имя функции, параметры - список входных данных, выражение - тело функции.

Например, функция для вычисления площади круга радиуса R :

 circleArea(R) := π*R^2 
 circleArea(5) = 78.54 

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

Обработка ошибок

Обработка ошибок важна для написания надежных программ. В Mathcad эту задачу решают операторы on error и try .

Конструкция try/on error выглядит так:

 try операторы on error обработка ошибки 

Если в блоке операторы возникнет ошибка, будет выполнен блок обработка ошибки .

 try y  

Также можно генерировать пользовательские сообщения об ошибках с помощью оператора error .

Решение задач

Рассмотрим примеры программ на маткад для решения некоторых типовых задач.

Программа для нахождения корней квадратного уравнения:

 a := 1 b := 5 c := 6 D = 0 x1  

Здесь вычисляется дискриминант и в зависимости от его знака находятся корни или выводится сообщение об ошибке.

Другой пример - программа для решения системы линейных уравнений методом Гаусса:

 A := [ . ] // матрица системы b := [ . ] // вектор правой части // Прямой ход for k = 1, length(A) for i = k+1, length(A) ratio  

Здесь используются вложенные циклы for и доступ к элементам матриц и векторов по индексам.

Таким образом, язык программирования Маткад позволяет эффективно решать многие прикладные задачи. К достоинствам программирования в Mathcad можно отнести:

  • Простой и понятный синтаксис языка
  • Интеграция программного кода с математическими выражениями и визуальными элементами
  • Богатая библиотека встроенных функций
  • Возможность создавать пользовательские функции и подпрограммы

Основными недостатками являются:

  • Невысокая производительность по сравнению с компилируемыми языками
  • Слабые средства отладки
  • Отсутствие объектно-ориентированного программирования

Урок 12. Программирование в Mathcad — циклы

Операции Mathcad, которые мы рассматривали ранее, достаточно безвредны – они не заставят Ваш компьютер «зависнуть». Но с циклами это не так. Поэтому для начала следует изучить команды в меню Вычисления –> Элементы управления:

mathcad_12_01

Здесь находятся четыре кнопки:

  1. Автоматический расчет.
  2. Остановить все расчеты.
  3. Рассчитать.
  4. Отключить область.

Кнопка «Автоматический расчет» обычно включена. Она отключается при нажатии на кнопку «Остановить все расчеты». Зеленый индикатор в левом нижнем углу становится серым. «Остановить все расчеты» служит для прекращения всех расчетов в документе на случай, если что-то пошло не так. При автоматическом расчете вычисления производятся лишь в том случае, когда происходят какие-либо изменения. С помощью кнопки «Рассчитать» можно сделать пересчет всего документа. Кнопка «Отключить область» прекращает вычисления в тех математических областях, которые Вы выбрали.

На рисунке ниже видно, что область серая – значит, она отключена:

mathcad_12_02

Нажмите на нее, затем на кнопку «Отключить область». Тем самым Вы запустите расчет в области. Вычисление займет некоторое время:

mathcad_12_03

Его можно прекратить, нажав на кнопку «Остановить все расчеты», затем отключив область и снова включив автоматический расчет.

Циклы

for

Циклы forприменяются, когда заранее известно число повторений вычислений. Программа ниже формирует вектор из n+1 элементов. Значения начинаются с нуля и имеют шаг 1.

mathcad_12_04

Цикл forначинается со второй строки. Он включает в себя счетчик (здесь – i), который является локальной переменной-диапазоном. Эту строку можно прочитать как: «Для диапазона целых чисел от 0 до nвключительно сделать: …». Затем следуют выполняемые действия – в нашем случае это простое присваивание. Когда цикл завершается, программа выполняет действия на следующей строке – здесь это оператор return.

Задайте имя программы-функции, вставьте программную структуру (вертикальная линия) и определение цикла forиз меню Математика –> Операторы и символы –> Программирование или с помощью сочетания клавиш [Ctrl+Shift+”]:

mathcad_12_05

Определите имя переменной-счетчика:

mathcad_12_06

Определите диапазон счетчика:

mathcad_12_07

Введите команды тела цикла и оператор return:

mathcad_12_08

mathcad_12_09

Как видно, использование дробных или отрицательных чисел – не лучшая идея. Вы можете изменить точку начала, но этого лучше избегать:

mathcad_12_10

Видите нули, которые появились в начале вектора? Причиной появления этих нулей является то, что если не определить некоторые элементы вектора, то им автоматически присвоится значение 0:

Циклы

while

На рисунке ниже – простейший цикл while, который делает то же самое, что и предыдущий цикл for:

mathcad_12_12

До цикла необходимо создать строку, содержащую определение начального значения счетчика. Следующую строку можно прочитать как «Выполнять цикл, пока соблюдается условие i?n». После определения элемента вектора нужно задать команду на увеличение переменной-счетчика, так как в цикле while это не происходит автоматически.

Другой, более «реалистичный», пример цикла while вычисляет экспоненту отрицательного числа, используя разложения в ряд:

mathcad_12_13

Суммирование будем производить с помощью цикла while. Будем проверять, насколько изменяется общая сумма S при каждом увеличении k. Если абсолютное значение этого изменения достаточно мало, цикл завершится. Чтобы начать цикл, необходимо определить первые два элемента вектора:

mathcad_12_14

Кроме того, мы определили начальное значение суммы S и счетчика k. Дальнейшие вычисления производятся в цикле:

mathcad_12_15

mathcad_12_16

С положительными числами программа работает хорошо, но для работы с отрицательными она не предназначена.

Отладка

Одна из простых технологий отладки программ – вывод промежуточных результатов вычислений и их сравнение с тем, какие значения должны быть. Пример на цикле while:

mathcad_12_17

Число элементов вектора верное, но второй элемент неправильный. Похоже, что последние элементы нашего вектора получили правильный индекс, а второй элемент (с индексом 1) – нет. Мы можем проверить, какой индекс получил второй элемент, вставив «returni» в первую строку цикла while. Программа остановит вычисление и вернет значение i:

mathcad_12_18

Вероятно, Вы уже поняли, что ошибка в первой строке. Замените 2 на 1, удалите дополнительную строку return, и Вы получите верный результат.

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

mathcad_12_19

После отладки всегда следует удалять дополнительные строки, которые Вы вводите, так как программа всегда прекращает работу после первого оператора return.

Подпрограммы

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

Ваша собственная программа

Когда Вы начинаете составлять свою собственную программу, может показаться, что Вы находитесь в замкнутом круге: чтобы начать, нужен опыт; чтобы получить опыт, нужно начать.

Начать необходимо, но не следует начинать с набора команд в Mathcad! Для начала следует подготовиться.

Прежде всего, нужно решить, что делает Ваша программа. Для больших, сложных программ это, как правило, нетривиальная задача. Какие выходные данные нужны, и какие входные для этого необходимы?

Возможно, самая сложная часть – это представление того, как будет получен желаемый результат. Будьте готовы потратить несколько листов бумаги. Нарисуйте различные структурные диаграммы и детализируйте их. Вы знаете следующие элементы:

  1. Ввод (input)
  2. Действие (или определение)
  3. Вывод (output)
  4. Одиночное ответвление (if..elseили if..if)
  5. Многократное ответвление (if..if..if)
  6. Цикл for
  7. Цикл while

mathcad_12_20

Решите, какие вспомогательные переменные (например, счетчики) необходимы, и какие имена Вы собираетесь им дать. Постарайтесь предусмотреть, где и что может пойти не так и как это можно проверить.

Только когда Вы поняли, что улучшить программу на бумаге больше нельзя, открывайте Mathcad. Остановите все вычисления, затем вводите код. Возможно, это самая простая часть написания программы.

После написания кода программы сохраните файл. Затем нажмите кнопку «Автоматический расчет», чтобы запустить вычисления. Будьте готовы увидеть неверный результат или ошибку – тогда программу придется отлаживать. Сохраняйте файл каждый раз, когда делаете большие изменения.

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

Резюме

  1. Отключайте вычисления при написании или редактировании программы (Вычисления –> Остановить все расчеты).
  2. Цикл for – повторяет вычисления определенное количество раз. Цикл forобязательно включает в себя счетчик и число повторений.
  3. Цикл while – выполняется, пока соблюдается определенное условие. Начальное значение счетчика следует задавать до цикла. В теле цикла изменение счетчика задается вручную.
  4. Программы почти всегда требуют отладки. Полезная команда для этого – return, с помощью которой можно вывести промежуточное значение.
  5. Важно подготовиться к написанию программы, например, составив структурную диаграмму до написания непосредственно кода.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *