Cтраница 3
Заметим, что если вычислительный процесс разветвляется на три или более ветвей, то соответствующее условие в свою очередь может быть расчленено на ряд условий, каждое из которых отделяет одну ветвь от остальных. Поэтому вопрос программирования разветвляющихся процессов может быть сведен к построению разветвляющихся программ для случая двух ветвей. [31]
При решении многих задач на определенном этапе приходится выбирать дальнейший путь выполнения операций в зависимости от конкретных условий. Вычислительные процессы такого типа называются разветвляющимися, соответствующие им программы - разветвляющимися программами, а возможные пути продолжения вычислений - ветвями вычислений. Если ветвей две, разветвление называется простым, если ветвей три или больше, разветвление называется сложным. Всякое логическое условие можно представить как последовательность нескольких простых, поэтому его проверка осуществляется путем анализа ряда простых условий. [32]
Комментарии элементарных программ языка PDL бывают двух типов: комментарии действия ( называемые иначе функциональными комментариями), которые поясняют программные функции, и комментарии состояния, описывающие предикаты от состояния данных. Комментарии действия могут предшествовать любой элементарной программе, а также then - и else - частям разветвляющихся программ и do - частям циклических программ. Комментарии состояния имеют отношение к участкам программы, которые формируют состояния данных, и представляют собой предикаты от состояния данных, полученных в результате выполнения операторов языка PDL. Комментарии состояния следуют за последовательными, разветвляющимися или циклическими элементарными программами. [33]
Различаются программы также и по структуре. С этих позиций выделяются циклические и разветвляющиеся программы. В циклических программах некоторые участки могут повторяться многократно. В разветвляющихся программах после выполнения некоторых команд дальнейшее использование программы может идти разными путями в зависимости от полученных промежуточных данных. Цифровая ЭВМ как бы сама выбирает верный путь решения задачи. [34]
Таким образом выбирается та или иная ветвь программы, формирующая конкретное значение максимума. Части программы, соответствующие различным ветвям, следуют непосредственно одна за другой. Поэтому, чтобы исключить выход на вторую ветвь после исполнения первой, соответствующая ей часть программы завершается командой JMP OUT, передающей управление в точку объединения ветвей. Аналогичную структуру имеет любая разветвляющаяся программа. [35]
Вычислитель извлекает содержание ячейки, подлежащей обработке в первую очередь. Команда представляется в цифровой форме и по внешнему виду ничем не отличается от операнда. Однако заранее известно, что означает та или иная группа цифр в числе - команде. То, что извлеченная из ячейки информация является командой, а не обрабатываемым числом, определяется только адресом ячейки. Расшифровав, какую операцию нужно выполнить, и выполнив ее, вычислитель заносит результат этой операции в одну из ячеек стеллажа. После выполнения первой команды вычислитель переходит к рассмотрению следующей, хранящей в ячейке памяти с адресом на единицу больше, чем адрес исходной команды. При этом вычислителю может встретиться команда о выполнении логической операции, например сравнения двух чисел, или команда условного перехода, предусматривающая переход к выполнению той или иной команды программы в зависимости от знака результата предыдущей операции. Команды условного перехода позволяют составлять разветвляющиеся программы, если заранее предусмотреть ход вычислений невозможно. [36]