Программирование разветвляющихся алгоритмов
Алгоритм называется разветвляющимся, если в зависимости от выполнения некоторого условия он реализуется по одному из нескольких, заранее предусмотренных направлений. Каждое направление называется ветвью алгоритма. За одно выполнение программы, в зависимости от условия, вычисления производятся по одной из ветвей алгоритма. В блок-схемах разветвляющиеся алгоритмы изображаются так, как показано на рис. 4.1.
Рис. 4.1. Фрагмент разветвляющегося алгоритма
Если условие истинно, то выполняется оператор 1, если ложно – оператор 2.
Для проверки условий в MathCAD используются операции отношения. Для ввода знаков отношения можно использовать панель инструментов Логический,либо сочетания клавиш, которые появляются в форме всплывающих подсказок при наведении указателя мыши на кнопки панели Логический (рис. 4.2).
Рис. 4.2. Панель инструментов Логический
Операция отношения принимает одно из двух значений: 1 (истина) - если заданное отношение выполняется или 0 (ложь) – в противном случае.
В MathCAD’e можно в одном выражении проверять несколько условий. Результат вычисления операций отношения:
Для задания сложных условий используются логические выражения. Логические выражения строятся из операндов логического типа, соединенных знаками логических операций.
В MathCAD используются четыре логические операции: логическое отрицание (Ø), логическое И (Ù), логическое ИЛИ (Ú) и логическое исключающее ИЛИ (Å).
Логическое выражение принимает только одно из значений: 1 (ИСТИНА) или 0 (ЛОЖЬ) и вычисляется с учетом приоритета операций, входящих в выражение. Самый высокий приоритет из логических операций имеет операция логическое отрицание, затем по убыванию: И, ИЛИ и исключающее ИЛИ (имеют одинаковый приоритет).
Операция логическое отрицание дает результат, противоположный значению операнда: отрицание ИСТИНЫ дает ЛОЖЬ и наоборот.
Результатом операции И будет значение ИСТИНА только в том случае, когда значение ИСТИНА имеют оба её операнда.
Операция ИЛИ имеет значение ИСТИНА, когда значение ИСТИНА имеет хотя бы один из операндов.
Операция исключающее ИЛИ имеет значение ИСТИНА, когда значение ИСТИНА имеет только один из операндов.
Для обозначения логических операций И и ИЛИ можно использовать знаки “*” (в тексте это точка) и “+” соответственно:
Определение значений логических выражений:
Для программирования разветвляющихся алгоритмов в Mathcad используется условная функция и условный оператор.
Условная функция if
Эта функция записывается в виде (символы if вводятся с клавиатуры):
if (<логич. выраж.>, <выражение1>, <выражение2>)
Функция принимает значение выражения 1, если логическое выражение равно 1 и значение выражения 2, если логическое выражение равно 0.
Например: X← if (A > B, Y, Z) или if (A > B, X ← Y, X ← Z)
Пример 4.1.Вычислить значение переменной y..
Описание программы-функции и обращение к ней:
Можно использовать и такой вариант решения примера:
Условный оператор if
Структура условного оператора: <выражение> if <условие>
Действие оператора if начинается с проверки условия. Если оно истинно (равно 1), то возвращается значение выражения слева от оператора if. Это соответствует условной структуре, называемой ЕСЛИ – ТО.
Для вставки условного оператора в программу необходимо (рис. 4.3):
- ввести имя программы-функции со списком формальных параметров и символ “:”;
- щелкнуть кнопку Add line панели Программирование ина ней кнопку условного оператора if;
- справа от оператора if ввести условие, слева от if выражение, которое будет выполняться, если условие истинно; если в программе предусматриваются дополнительные условия, следует повторно нажать кнопку Add Line и ввести их аналогично, используя оператор ifили otherwise.
Рис. 4.3. Вставка условного оператора
Для получения условной структуры ЕСЛИ–ТО–ИНАЧЕ используется оператор otherwise, который выполняется в том случае, если условие оператора if ложное.Для вставки оператора otherwise необходимо выделить поле, стоящее после оператора if, щелкнуть на кнопке otherwise панели Программирование и в поле оператора otherwise ввести соответствующее выражение.
Решим пример 4.1, используя в программе условный оператор if.
Блок-схема алгоритма:
Описание программы-функции и обращение к ней:
Пример 4.2. Вычислить значения полинома M(x) в зависимости от значения переменной y при x = 0,7.
Блок-схема алгоритма решения примера:
Описание программы-функции и обращение к ней имеет вид:
При программировании сложных разветвляющихся алгоритмов возникает необходимость выполнить несколько операторов и при выполнении и при невыполнении условия в операторе if. В этом случае для добавления дополнительных строк необходимо выделить поле 1 условного оператора и/или поле слева от оператора otherwise и щелкнуть повторно на кнопке Add line панели Программирование.
Пример 4.3.Даны числа a, b, c.Удвоить эти числа, если a≥b≥c и заменить их абсолютными значениями, если это не так.
Блок-схема алгоритма решения примера:
Описание и вызов программы-функции приведены на рис. 4.4. Входными параметрами являются переменные a, b, и с. Выходным параметром является вектор v, элементы которого содержат новые значения переменных a, b, c.
Рис. 4.4. Реализация алгоритма примера 4.5
Пример 4.4. Даны произвольные числа a, b, c. Если нельзя построить треугольник с такими длинами сторон, то вывести об этом сообщение, иначе вывести сообщение о виде треугольника.
Описание программы-функции и обращение к ней: