Любая программа реализует определенный алгоритм, который отличает ее от множества других программ и является абстрактным представлением этой программы, не зависящим от формы и способа её реализации. Под алгоритмом понимается точное, сформулированное на некотором языке, конечное описание того или иного метода, основанного на выполнении конечного числа элементарных операций [1].
Простейшие программы, примеры которых приведены на рисунках 17 и18, реализуют линейные алгоритмы последовательной математической обработки строк составного выражения и не позволяют производить логическую обработку данных. Эти примеры имеют демонстрационный характер - для реализации любого из них вполне можно обойтись и без применения операторов программирования.
Реальные программы потому и являются таковыми, что реализуют более сложные алгоритмы обработки данных, предусматривающие, в частности, возможность проведения логического анализа данных и последующего выполнения тех или иных операций в зависимости от результатов проведенного анализа.
Средства, обеспечивающие "разветвление" алгоритмов по результатам логического анализа данных, базируются на двух элементарных алгоритмических структурах, показанных на рисунке 19 в виде блок-схем*.
На блок-схемах прямоугольниками обозначают процессы, а ромбами – решения. Процесс - это выполнение операции или группы операций, в результате которых изменяется значение или форма представления данных. Решение – это выбор направления выполнения алгоритма в зависимости от некоторых переменных условий. При этом анализируемое условие представляет собой логическое выражение, принимающее одно из значений "истина" или "ложь" в зависимости от значений входящих в него операндов.
Схема а) иллюстрирует ситуацию, когда выполнение Процесса 1 обусловлено истинностью значения проверяемого условия. Если условие истинно, Процесс 1 будет выполнен, после чего управление будет передано следующему процессу. В противном случае управление будет сразу передано следующему процессу без выполнения Процесса 1.
Алгоритм, показанный на схеме б), обрабатывает два альтернативных процесса, из которых будет выполнен только один - в зависимости от истинности или ложности проверяемого условия.
Программная реализация алгоритмической схемы а) в MathCAD-программах обеспечивается оператором If, а схема б) реализуется парой операторов If и Otherwise. Описание этих операторов приведено в таблице 5, а примеры их использования – на рисунке 20.
Рисунок 20 а) содержит два эквивалентных по результату варианта определения функции f(x) : первый вариант программы содержит два последовательно выполняемых оператора If, а второй решает ту же задачу парой операторов If … Otherwise. Очевидно, что второй вариант более предпочтителен – он более наглядно представляет алгоритм и более эффективен в реализации, так как не требует двукратной проверки одного и того же условия.
В примере б) приведена программа, вычисляющая вещественные корни квадратного уравнения, заданного своими коэффициентами. В зависимости от значения дискриминанта уравнения программа возвращает либо текстовый скаляр с сообщением об отсутствии корней, либо числовой скаляр - единственный корень уравнения, либо двухэлементный вектор, элементы которого – два корня уравнения. Отметим две особенности этой программы: во-первых, в качестве операндов обоих операторов Otherwise используются составные выражения** и, во-вторых, одно их этих выражений само содержит оператор Otherwise, что иллюстрирует возможность применения вложенных условных операторов.
Рисунок 20 – Примеры использование условных операторов