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

Основные типы алгоритмов в среде MathCAD

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

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

 

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

 

Пример 1.Составить программу для вычисления корней квадратного уравнения: ax2 + bx + c = 0 по известной формуле:

(1)

Алгоритм (1) является линейным и фрагмент документа MathCAD содержит конструкции, приведенные на рис 1.

Программирование разветвляющихся алгоритмов

 

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

 

Пример 2.Значение переменной y зависит от значений переменной x и определяется выражением:

 

 

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

· конструкции, проверяющие выполнение заданных условий;

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

 

Для проверки заданных условий в MathCAD используется: выражение отношений, логические операции и логические выражения.

 

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

<выр.1> <операция отношения> <выр.2>,

где <выр.1>, <выр.2> - произвольные арифметические выражения, <операция отношения> - любая из следующих операций: (здесь вертикальные чёрточки являются разделительным символом при перечислении).

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

 

Палитра инструментов БУЛЕВО

 

Внимание! Не следует путать знак операции сравнения = с похожим знаком вывода значений переменных. Знак операции = имеет больший размер и более жирное начертание.

Таблица 1

Знаки операции Клавиши
< [<]
[Ctrl] + [9]
> [>]
[Ctrl] + [0]
= [Ctrl] + [=]
[Ctrl] + [3]

 

Выражение отношений принимает одно из двух значений: 1 - если заданное отношение выполняется или 0 – в противном случае. Значение 1 можно интегрировать как значение истина, а 0 – как ложь.

 

Задание 1. Пусть значения целой переменной x =3. Определить значение следующих выражений отношений:

 

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

 

Таблица 2

Название операции Знак
Логическое отрицание (NOT)
Логическое ИЛИ (OR)
Логическое И (AND)
Исключающее ИЛИ (XOR)

 

Знаки этих операций вводится с палитры Булево. Результат выполнения этих операций, приведен в табл. 3.

 

Таблица 3

NOT AND OR XOR

 

Логическим выражением называется конструкция, состоящая из выражений отношений, логических операций и круглых скобок. Логическое выражение принимает только одно из двух значений: 1 или 0; вычисляется слева направо с учетом приоритета входящих в выражение операции. Наивысший приоритет круглые скобки, а затем по убыванию: AND, OR и XOR – одинаковый приоритет и самый низкий приоритет выражения отношений.

 

Задание 2.Определите порядок вычисления значений логических выражений в документе MathCAD, приведенных на рисунке 3

Рис. 3 Примеры логических выражений

 

Пример 2. Записать логическое выражение, принимающее значение 1 при попадании точки с координатами (x, y) в первую четверть.

 

Логическое выражение имеет вид

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

 

if (<логическое выражение>, <выр. 1>, <выр. 2>),

 

где имя функции if вводится с клавиатуры.

Если логическое выражение равно 1, то значение функции определяется выр.1, в противном случае – выр. 2. Блок-схема этой функции приведена на рис. 4.

Рис. 4. Блок-схема функции if

 

При программировании разветвляющихся алгоритмов с тремя и более вычислительных ветвей на месте выр. 1 и выр. 2 вновь может использоваться функция if .

 

Пример 3.Используя условную функцию if запрограммировать два разветвляющихся алгоритма:

а)

б)

 

 

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

 

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

 

· ceil (x) – наименьшее целое, большее или равное x;

· trunc (x) – целая часть вещественного числа x;

· floor (x) – наибольшее целое, меньшее или равное x;

· round (x, n) – округленное значение вещественного x с точностью до n знаков после десятичной точки;

· Ф(x)– функция Хевисайда – равна 0 при x < 0 и 1 в противном случае;

· sign (x) – функция знака (равна 0 если x = 0; -1, если x <0 и 1, если x >0);

· signum (x) – возвращает 1, если x = 0 и в остальных случаях.