Для создания "хорошей" программы появляется необходимость придерживаться определенных принципов или определенной дисциплины программирования. Значительный прогресс в области программирования достигается с использованием так называемого структурного программирования. Появление новой технологии, или, как еще говорят, дисциплины программирования, основанной на структурном подходе, связано с именем известного голландского ученого Э.Дейкстры (1965 г.). В своих работах он высказал предположение, что оператор GOTO может быть исключен из языков программирования и что квалификация программиста обратно пропорциональна числу операторов GOTO в его программах. Такая дисциплина программирования упрощает и структуризирует программу. Однако представление о структурном программировании, как о программировании без использования оператора GOTO, является ошибочным. Например, Хоор определяет структурное программирование как "систематическое использование абстракции для управления массой деталей и способ документирования, который помогает проектировать программу". Структурное программирование можно толковать как "проектирование, написание и тестирование программы в соответствии с заранее определенной дисциплиной". Структурный подход к программированию как раз и имеет целью снижение трудоемкости всего процесса создания программного обеспечения от технического задания на разработку до завершения эксплуатации. Он означает необходимость единой дисциплины на всех стадиях разработки программы. В понятие структурного подхода к программированию обычно включают нисходящие методы разработки программ (принцип “сверху вниз”), собственно структурное программирование и так называемый сквозной структурный контроль.
1) нисходящая разработка
В проекте существует множество программ, подпрограмм, процедур и функций. Оттого, в какой последовательности эти процедуры и функции программируются, и зависит вид разработки.
При разработке «снизу - вверх» выделяются все функции, процедуры с нижнего уровня, пишутся программы, которые вызывают эти функции и процедуры. Затем составляются программы, ссылающиеся на предыдущие функции и процедуры, и так до общей организующей программы (интерфейс, мониторинговая программа и др.).
Главной особенностью такого вида разработки является то, что отладка верхнего уровня осуществляется только тогда, когда написаны все процедуры и программы нижнего уровня. Этот метод не столь эффективен, т.к. при обнаружении ошибки система целиком будет подлежать замене.
При разработке «сверху - вниз» в первую очередь пишется организующая программа и сразу же отлаживается. Затем постепенно пишутся подпрограммы и функции уровня ниже, а при отладке их замещает программа-«заглушка». Такая программа является пустой, она может совпадать с будущей только именем и иметь список формальных и фактических параметров. Примером такой программы может служить программа присваивания.
|
![]() |
|
|
|



|
|

|
|
|
Связи элементов схемы показывают не следование программ, а уровень вложенности, вызов программ.
2) Любая алгоритмически разрешимая задача обеспечивается решением алгоритмически полным набором действий (согласно теории математических систем). Выделяют три базовые процедуры:
· Следование. Программы выполняются последовательно.
![]() | ![]() | ![]() |
· Ветвление (условие). Процедура типа if then else
![]() |
· Итеративность (цикличность)
![]() |
Любой модуль всегда имеет «вход» и «выход», внутри модуля может быть любая комбинация из трех базовых процедур. Каждый модуль здесь – та подпрограмма, функция, проектирование которой осуществляет исполнитель, «спускаясь вниз», последовательно заменяя ее реальной программой.
Лекция № 12