3.3. СТРУКТУРНОЕ ПРОГРАММИРОВАНИЕ
125
ни в 1966 г. Они доказали, что любую блок-схему можно преобразовать к
структурированному виду, использовав несколько дополнительных булевых
переменных. Э. Дейкстра подчеркнул, что программы в таком виде, как пра-
вило, являются легче понимаемыми и модифицируемыми, так как каждый
блок имеет один вход и один выход.Эти наблюдения послужили основой сти-
ля программирования, который, начиная с 70-х гг. XX века, занимает прак-
тически монопольное положение в преподавании и исключительно широко
используется в практике программирования. Этот стиль называется струк-
турным программированием.
В качестве методики структурного программирования Э. Дейкстра пред-
ложил пользоваться лишь конструкциями цикла и условного оператора, из-
гоняя
go to
, как концептуально противоречащее этому стилю.
Поскольку на практике и в основной части данного пособия речь идет
именно о структурном программировании, здесь мы остановимся на данном
стиле лишь бегло, поставив его на то равноправное место, которое он в прин-
ципе занимает среди альтернативных ему друзей-соперников
9
.
Структурное программирование основано главным образом на теорети-
ческом аппарате теории рекурсивных функций. Программа рассматривается
как частично-рекурсивный оператор над библиотечными подпрограммами и
исходными операциями. Структурное программирование базируется также
на теории доказательств, прежде всего на естественном выводе. Структу-
ра программы соответствует структуре простейшего математического рас-
суждения, не использующего сложных лемм и абстрактных понятий.
10
Средства структурного программирования в первую очередь включаются
во все языки программирования традиционного типа и во многие нетради-
ционные языки. Они занимают основное место в учебных курсах програм-
мирования ([3, 27, 37, 51]).
При структурном программировании присваивания и локальные действия
становятся органичной частью программы. Достаточно лишь внимательно
следить, чтобы каждая переменная повсюду в модуле использовалась лишь
для одной конкретной цели, и не допускать «экономии», при которой ненуж-
9
Если нечто в данный момент используется практически монопольно, то из этого не сле-
дует, что оно будет занимать столь же исключительное положение и в будущем и что оно
окажется лучшим средством для решения Ваших конкретных задач.
10
На самом деле традиционным вычислительным программам соответствует не классиче-
ская, а интуиционистская логика, но структура доказательств и большинство правил вывода
в них совпадают.