Существенное движение вперед произошло с внедрением "структурированного программирования", методологии, основанной на том, что, как показал опыт, большие задачи проще решаются, если рассматривать их как совокупность меньших задач [1]. Каждый такой кусочек называется `модулем`. Программы состоят из модулей внутри других модулей.
Структурированное программирование подавляет кашеобразность кода, поскольку процессы переходов прослеживаются только в пределах модуля. Нельзя перепрыгнуть из середины одного модуля в середину другого.
Например, на рис.1-2 показана блок-схема модуля под названием "приготовление завтрака", который состоит из четырех подмодулей. Внутри каждого подмодуля можно найти новый уровень сложности, которую вовсе не нужно показывать на нашем уровне.
Рис.1-2. Проект структурированной программы.
Приготовление завтрака | +------------------------|------------------------+ | +-----------+----------+ | | | Решение: Вы спешите? | | | +----------------------+ | | / \ | | да нет | | +-----------/--------------+ +--\-----------+ | | | Остановиться на холодной | | Сварить яйца | | | | овсянке | | | | | +-------------------\------+ +--/-----------+ | | \ / | | +-\---------/---+ | | | Вымыть посуду | | | +-------|-------+ | +-----------------------------|-------------------+ |
Решение о переходе внутри нашего модуля принимается при выборе между модулем "холодная овсянка" и модулем "яйца", но линии переходов входят только в наружный модуль.
Структурированное программирование имеет три преимущества: