Cтраница 4
Для каждой ЭВМ имеются команды, при выполнении которых нарушается этот естественный порядок выполнения команд - это команды условной и безусловной передачи управления. При помощи команды условной передачи управления и осуществляется разветвление вычислительного процесса в зависимости от результата сравнения двух чисел. [46]
Приведенная блок-схема позволяет получить наглядное представление о выполнении алгоритма. После проведения ряда вычислений происходит проверка выполнения условия D О и разветвление вычислительного процесса. При выполнении указанного условия осуществляется переход по стрелке да, в противном случае - по стрелке нет. Выполнение программы заканчивается после выдачи результатов. [47]
Это во многом облегчает процесс составления программы. При выполнении операций вырабатываются признаки результата ( признаки переполнения, знака, нуля), используемые для разветвления вычислительных процессов. [48]
![]() |
Блок-схема начисления по больничному листку. [49] |
При ручном счете проверка выполнения логических условий, определяющая дальнейшее направление вычислительного процесса, производится человеком. В ЭВМ же заложена возможность производить проверку выполнения логических условий и осуществлять в зависимости от результатов этой проверки разветвление вычислительного процесса. [50]
Если таких направлений будет больше двух, то такой случай всегда можно свести к нескольким, следующим друг за другом, разветвлениям вычислительного процесса, в каждом из которых процесс разветвляется уже только в двух направлениях. [51]
Программная реализация этой схемы достаточно очевидна. Заметим, что в данном случае не вырабатывается в явном виде результат выполнения каждой логической операции - производится лишь анализ очередного слагаемого и разветвление вычислительного процесса. Кроме того, анализ слагаемых прекращается, как только встретится первое по порядку слагаемое со значением true, что, вообще говоря, сокращает количество требуемых тактов работы машины. [52]
У оператора перехода вида (9.1) имеется единственный возможный преемник, так что этот оператор осуществляет переход всегда в одно и то же место программы. Однако в ряде случаев после некоторого этапа вычислений возшшазт необходимость направить дальнейшие вычисления по одному из нескольких возможных путей, причем весьма характерным является такой случай, когда требуемое разветвление вычислительного процесса может производиться в зависимости от текущего значения некоторой целочисленной переменной. [53]
В зависимости от результата вычислений, которые были проведены на первом этапе, получаем направления счета: вычисления, отвечающие положительному значению дискриминанта, и вычисления, отвечающие отрицательному значению дискриминанта. Решение этой задачи на ЭВМ требует, чтобы в машине была заложена возможность с помощью программы проводить проверку выполнения логических условий и в зависимости от результатов этой проверки осуществлять разветвление вычислительного процесса. [54]
В разветвляющихся вычислительных процессах выбор одного из возможных направлений зависит от выполнения заданного условия. Это условие обычно записывают в форме некоторого булевского выражения, построенного очень часто из арифметических выражений, соединенных знаками сравнений или знаками булевских действий с использованием круглых скобок. Разветвление вычислительного процесса реализуется с помощью условного оператора. Односторонний условный оператор выглядит следующим образом: если В то Р О / В then Р), где В - булевское выражение; Р - безусловный оператор. Действие условного оператора таково, что если В имеет значение да ( true), то Р выполняется, а если значение нет ( false), то Р пропускается. [55]
Приняты определенные стандарты графических обозначений. Так, прямоугольник обозначает вычислительные действия, в результате которых изменяются значения данных. Ромбом обозначается этап разветвления вычислительного процесса. Выбор одного из двух возможных направлений дальнейшего счета производится в зависимости от выполнения условия, записанного в ромбе. [56]
ОП [ АЗИСП ]: ОП [ А ИСП ]; C: if then А2ИСП else C I При выполнении операций перехода значение со не изменяется. Что касается выработки значения со при программировании отношений, то для этих целей надо использовать подходящие машинные операции. Пусть, например, требуется реализовать разветвление вычислительного процесса в зависимости от условия ifjeythen, где х и у - вещественные переменные. [57]
Но поскольку в рассматриваемой постановке задачи при каждом использовании программы вычисляется только одна из предусмотренных в ней функций, то наличие в объектной программе тех ее частей, которые предназначены для вычисления остальных функций, является совершенно излишним. Так что в случае, когда - подлежащая вычислению функция известна заранее, к моменту трансляции, для получения более эффективной объектной программы и сокращения времени работы транслятора было бы удобно дать транслятору указание обработать и включить в объектную программу только один из блоков исходной программы, предназначенных для вычисления функций, а остальные из этих блоков исключить из рассмотрения. Очевидно, что в этом случае отпадает и необходимость разветвления вычислительного процесса в программе, что позволяет упростить ее структуру. [58]
Оператор 1 должен быть простым пли составным. Он может быть и условным оператором, по заключенным в скобки. Оператор 2 может быть любым, в том числе и условным оператором. Это позволяет делать разветвление вычислительного процесса практически на любое количество участков. [59]