logo
Харви Дейтел, Пол Дейтел Как программировать на С++ / 02-Deitel-Стр-115-214

Глава 2

Правило 2

Правило 2

Т

Правило 2

Рис. 2.35. Повторное применение правила 2 к простейшей блок-схеме

/ Правило 3

...J

Рис. 2.36. Повторное применение правила 3 к простейшей блок-схеме

Управляющие структуры

145

Правило 4 позволяет генерировать большие, сложные структуры с про­извольным уровнем вложенности. Блок-схемы, возникающие в результате применения правил рис. 2.33, составляют множество всех возможных струк­турированных блок-схем и, следовательно, множество всех возможных струк­турированных программ.

Прелесть структурного подхода в том, что мы используем всего семь простых фрагментов с одним входом и одним выходом и соединяем их всего двумя простыми способами. Рис. 2.37 показывает пакеты стандартных бло­ков, которые создаются при применении правила 2, и вложение стандартных блоков, которые создаются при применении правила 3. Этот рисунок пока­зывает также частично перекрывающиеся стандартные блоки, которые не могут появиться в структурированных блок-схемах, поскольку игнорируется оператор goto.

Если следовать правилам рис. 2.33, неструктурированные блок-схемы (по­добные приведенным на рис. 2.38) не могут быть созданы. Если вы сомневае­тесь, является ли некоторая конкретная блок-схема структурированной, при­мените правила рис. 2.33 в обратной последовательности и попытайтесь свернуть блок-схему к простейшей. Если блок-схема свернется к простейшей, значит исходная блок-схема структурирована, в противном случае — нет.

Структурное программирование стимулирует простоту. Бом и Джакопини доказали, что достаточно всего трех форм управления:

Пакетированные стандартные блоки

Вложенные стандартные блоки

Частично перекрывающиеся стандартные блоки (недопустимые в структурированных программах)

Рис. 2.37. Пакетированные, вложенные и частично перекрывающиеся стандартные блоки

146