Программирование разветвляющихся алгоритмов в подпрограмме-функции
Напомним, что в разветвляющихся алгоритмах присутствует несколько ветвей вычислительного процесса. Выбор конкретной ветви зависит от выполнения (или не выполнения) заданных условий на значения переменных алгоритма.
Для программирования разветвляющихся алгоритмов в подпрограмме-функции Mathcad можно использовать условную функцию и условный оператор if. Используя эти конструкции, можно «изменить» последовательное выполнение операторов. Условная функция if была рассмотрена в п. 3.2, поэтому перейдем к изучению условного оператора if.
Условный оператор. Этот оператор используется только в теле П-Ф и для его ввода необходимо щелкнуть на кнопке if палитры программирование. На экране появляется конструкция с двумя полями ввода, изображенная на рис. 5.2.1.
Рис. 5.2.1. Структура условного оператора if
В поле 2 вводится логическое выражение УСЛ (в простейшем случае это выражение отношений). В поле 1 вводится конструкция ВЫР1 (как правило, арифметическое выражение), которая выполняется, если проверяемое логическое выражение принимает значение 1. Если УСЛ = 0, то ВЫР1 не выполняется. Это соответствует условной структуре, называемой ЕСЛИ – ТО.
Для получения условной структуры ЕСЛИ – ТО – ИНАЧЕ используется оператор otherwise, вводимый с палитры ПРОГРАММИРОВАНИЕ, в поле которого размещается конструкция ВЫР2, которая выполняется, если проверяемое логическое выражение принимает значение 0 (см. рис. 5.2.2). Оператор otherwise непосредственно следует после условного оператора if.
Рис. 5.2.2. Реализация структуры ЕСЛИ – ТО – ИНАЧЕ
Для ввода ВЫР2 в поле оператора otherwise необходимо:
· выделить поле, стоящее после оператора if;
· щелкнуть на кнопке otherwise палитры программированиЕ;
· в появившееся поле оператора otherwise ввести необходимую конструкцию ВЫР2.
Пример 5.2.1. Составим описание П-Ф, вычисляющей функцию y(x), заданную в примере 3.2.1. Описание и вызов П-Ф приведены на рис. 5.2.3. ¨
Рис. 5.2.3. Реализация разветвляющегося алгоритма примера 3.2.1
Таким образом, конструкция, стоящая перед словом otherwise выполняется только в том случае, если не выполнено заданное перед этим условие. В программе можно использовать несколько следующих друг за другом условных операторов с одним оператором otherwise.
Пример 5.2.2. Составим описание П-Ф для вычисления переменной z(t) по формуле
z(t) =
Описание П-Ф и ее вызов приведены на рис. 5.2.4.
Рис. 5.2.4. Реализация разветвляющегося алгоритма примера 5.2.2
Из описания видно, что функция z(t) получит значение ln(t) только тогда, когда не выполняются условия, записанные в двух вышестоящих строках тела П-Ф.
Внимание! Если в строке 3 ввести просто ln(t), то это выражение будет вычисляться всегда вне зависимости от выполнения заданных выше условных операторов.
Задание 5.2.1. Составьте описания П-Ф, реализующих следующие разветвляющиеся алгоритмы:
А. y = Б.
где .
Рассмотрим использование условного оператора if при программировании более сложных разветвляющихся алгоритмов. Выделим следующие варианты.
Вариант 1. При выполнении заданного условия УСЛ необходимо выполнить несколько конструкций MathCAD.
В этом случае необходимо выделить поле 1 условного оператора (см. рис. 5.2.2), щелкнуть на кнопке Add line палитры ПРОГРАММИРОВАНИЕ нужное число раз и заполнить появившиеся поля (рис. 5.2.5).
Рис. 5.2.5. Вариант 1 реализации условного оператора
Вариант 2. При невыполнении заданного условия УСЛ необходимо выполнить несколько конструкций MathCAD.
В этом случае необходимо выделить поле оператора otherwise, щелкнуть на кнопке Add line палитры ПРОГРАММИРОВАНИЕ нужное число раз и заполнить появившиеся поля (рис. 5.2.6).
Рис. 5.2.6. Вариант 2 реализации условного оператора
Пример 5.2.3. Составьте описание П-Ф, вычисляющей значения двух полиномов x(t), y(t) нулевой или первой степени. Порядок полиномов задается переменной n. Если n < 0
или n > 1, то значения полиномов равны 0. Описание П-Ф приведено на рис. 5.2.7. Обратите внимание, что коэффициенты полиномов передаются через массивы a, b, а в полях условных операторов находятся не арифметические выражения, а локальные операторы присваивания. ¨
Рис. 5.2.7. Реализация алгоритма примера 5.2.3
Пример 5.2.4. Даны два числа x, y. Составить описание П-Ф, которая переменной x присваивает максимальное значение из этих двух чисел, а y – минимальное. Описание приведено на рис. 5.2.8. Выходным параметром является массив v, нулевой элемент которого содержит новое значение x, а первый элемент – новое значение y. Вызов этой П-Ф показан на рис. 5.2.9. ¨
Рис. 5.2.8. Реализация алгоритма примера 5.2.4
Рис. 5.2.9. Вызов подпрограммы-функции arrangement
Задание 5.2.2. Даны три числа a, b, c. Составить П-Ф, реализующую следующий алгоритм. Если , то все числа заменить их квадратами, если , то каждое число заменить максимальным значением из этих трех чисел, в противном случае — сменить знаки у чисел.
Задание 5.2.3. Координаты точки на плоскости задаются двумя числами x, y. Составить П-Ф, вычисляющую номер четверти на плоскости, в которую попала точка.
Задание 5.2.4. Длина сторон треугольника задается числами a, b, c. Составить П-Ф, вычисляющую значение целой переменной n по следующему правилу: n = 3, если три стороны равны; n = 2, если любые две стороны равны; n = 1, если все три стороны имеют разную длину.