Понятие «структурное программирование» появилось в 1968 г., когда была опубликована статья одного из видных программистов того времени Дж. Дейкстры. Он в своей статье констатировал вредность применения оператора безусловного перехода (оператора, позволяющего сделать переход от одного оператора к другому, находящемуся в любом месте программы) и нашел хорошее объяснение причине, по которой он вреден.
Программист В. Норт четко обосновал, что использование основных базовых конструкций способствует обеспечению ясности и читаемости при написании и дальнейшей доработке программ. Таким образом, структурным языком назовем тот, у которого любая программа состоит только из базовых структур.
Имеется четыре типа управляющих структур: следование, выбор, повторение (цикл) и группирование.
Для реализации следования есть правило: все команды выполняются в порядке их следования.
Для выбора и повторения есть свои специальные инструкции (операторы, команды). Выбор предусматривает проверку условия с последующим выполнением одной или нескольких команд в зависимости от истинности или ложности условия. Выбор (или развилка) бывает полный или неполный в зависимости от выполняемых команд (см. рис. 1, 2).
Рис. 1. Полная развилка
Рис. 2. Неполная развилка
Итак, конструкция работает следующим образом: при истинности условия выполняется Оператор 1, в противном случае либо Оператор 2, либо управление передается следующей за развилкой конструкции.
Повторение, или цикл, представляет собой конструкцию, которая состоит, как и выбор, из проверки условия и серии команд. Однако, в отличие от выбора, данная серия команд может выполняться неоднократно, в зависимости от проверки условия. Повторения подразделяются на циклы с предусловием (циклы-пока) и циклы с постусловием (циклы-до) (см. рис. 3, 4).
Рис. 3. Цикл с предусловием
Рис. 4. Цикл с постусловием
Тело цикла выполняется циклически до тех пор, пока условие истинно в первом случае и ложно – во втором.
Группирование означает объединение одной или нескольких инструкций внутри специальной инструкции. Во всех языках имеются средства для формирования единого блока из группы инструкций (подпрограммы в Бейсике, составные инструкции и процедуры в Паскале). Примером группирования может являться также выполнение в конструкциях циклов следования или выбора и т.д.
Контрольные вопросы
1. Что такое язык программирования?
2. Какие выделяют уровни языков программирования? Дайте краткую характеристику каждого уровня.
3. Как называется программа, осуществляющая перевод с языка высокого уровня на язык машинных кодов?
4. Назовите достоинства и недостатки компилятора и интерпретатора.
5. В чем важность структурного подхода при написании программ на языках высокого уровня?
6. Перечислите управляющие структуры языков программирования.
7. Какие бывают типы развилок и в чем их отличие?
8. Какие две части включает в себя структура «цикл»?
9. В чем состоит основное отличие структур «цикл-пока» и «цикл-до»?
10. Можно ли вкладывать одну управляющую структуру в другую или нужно располагать их только последовательно?