Процесс преобразования программы в структурированную состоит из
нижеприведенной последовательности шагов.
1. Каждому блоку неструктурированной схемы приписывается номер.
Обычно первому блоку присваивается 1, последнему – 0 (см. рис. 3.12).
2. В программу вводится дополнительная переменная целого типа
(например I), называемая переменной состояния.
3. Функциональные блоки исходной схемы заменяются блоками,
выполняющими помимо основных функций преобразование переменной I:
переменной I
присваивается значение, равное номеру блока-приёмника в
исходной схеме.
4. Аналогично преобразуются логические блоки. При этом если в
логическом блоке условие истинно, то это соответствует одному значению I,
если ложно – другому.
5. Исходная схема пребразуется к виду, предложенному Ашкрофтом–
Манной (рис. 3.13).
На данной схеме блоки 1а – nа
являются аналогами соответствующих
блоков исходной схемы и, помимо этого, присваивают значение переменной I.
В результате преобразований Ашкрофта–Манны исходная
неструктурированная схема (см. рис. 3.12) принимает вид, представленный на
рис. 3.14.
При выполнении алгоритма, реализованного по методу Ашкрофта–
Манны, переменная состояния I устанавливается в начальное значение, равное
номеру первого блока непреобразованной схемы (как правило, это единица
).
Затем осуществляется последовательный опрос переменной I, начиная с нуля и
заканчивая максимальным номером блока исходной схемы (в нашем примере
он равен пяти). Выполняется тот блок исходной схемы, номер которого
соответствует текущему значению I. Помимо этого в I заносится значение,
равное номеру того блока исходной схемы, который должен выполняться за
текущим блоком. Когда значение I
станет равно нулю, выполняется последний
блок непреобразованной схемы (блок с номером ноль) и осуществляется выход
из алгоритма.
Полученная по методу Ашкрофта–Манны схема алгоритма является
структурированной. Для доказательства этого достаточно последовательно
преобразовать данную схему к одному функциональному блоку.
Шаг 1 преобразования
Конструкции 1а, 3а
и
4а представляют собой конструкции If-Then-Else с
одним входом и одним выходом, конструкции 2а, 5а являются конструкциями
следования. Следовательно, они могут быть преобразованы к соответствующим
функциональным блокам. Данный шаг преобразований и все последующие
шаги поясняет рис. 3.15.
Следующие шаги преобразований необходимо проводить снизу вверх
схемы.