Глава 2 91
Таблица 2.3. Стили императивного программирования
Стиль Описание Примечания
Неструк-
турное
програм-
мирова-
ние
Весь код программы представлен еди-
ным непрерывным блоком. Переходы
к нужным секциям программы выпол-
няются с помощью условных операто-
ров и операторов перехода (обычно,
goto или jump) без ограничений.
Примеры языков: языки скриптов
(bat-файлы), Fortran, Basic, Ас-
семблеры
Проблемы обеспечения качества:
образование «спагетти-кода»,
сложность верификации кода.
Проце-
дурное
програм-
мирова-
ние
Иногда используется как синоним им-
перативного программирования (со-
стояние процедуры определяется зна-
чением множества ее переменных в
определенный момент времени). Бази-
руется на концепции вызова процедур
(подпрограмм, функций, методов).
Любая процедура может быть вызвана
в любой точке в ходе выполнения про-
граммы.
Примеры языков: Algol, Ada, Basic,
C, Cobol, Fortran, Pascal, PL/1, Mat-
lab, многопарадигменные языки.
Проблемы обеспечения качества:
облегчается повторное использо-
вание кода (без дублирования),
улучшается прослеживаемость
кода и сопровождаемость про-
грамм. Есть методы оценки слож-
ности программ (глава 5).
Модуль-
ное и
сбороч-
ное про-
грамми-
рование
[24, 25]
Модульная организация кода при про-
цедурном программировании. Строго
определенные механизмы ввода-
вывода данных – через аргументы (на
входе) и возвращаемые значения (на
выходе) процедуры. Определение сфе-
ры действия переменных. Возмож-
ность автономной реализации и хране-
ния кода (в библиотеках модулей), а
также сборки программ из модулей.
Примеры языков: языки импера-
тивного и объектно-ориенти-
рованного программирования.
Проблемы обеспечения качества:
облегчается тестирование и по-
вторное использование кода; до-
пускается распределенная разра-
ботка программ (разработка авто-
номных модулей отдельными про-
граммистами).
Струк-
турное
програм-
мирова-
ние
Направление процедурного програм-
мирования, особенности которого –
структурирование программы путем ее
разделения на секции (блоки) одного
из видов: последовательность, ветвле-
ние, цикл. Базовые конструкции могут
быть вложены друг в друга произволь-
ным образом, но никаких других
средств управления последовательно-
стью выполнения операций нет.
Ограничение - сокращение (запрет)
использования goto; одна точка входа
в секцию (блок), но несколько воз-
можных точек выхода.
Часто ассоциируется с разработкой
«сверху-вниз».
Структурирование данных. Использо-
вание абстрактных типов данных.
Примеры языков: во все современ-
ные языки императивного про-
граммирования введены элементы
и ограничения структурирования,
например, Pascal, Ada, Fortran, Co-
bol, Basic, С.
Проблемы обеспечения качества:
структурирование снижает слож-
ность программы, облегчает ее
верификацию и внесение измене-
ний, локализация обработки ис-
ключительных ситуаций в отдель-
ных блоках облегчает отладку и
тестирование.
Разработка с использованием «за-
глушек» облегчает тестирование и
локализацию дефектов.
2.5.3. Парадигма событийно-управляемого программирования
Стили программирования, обычно связываемые с итеративной парадигмой,
основываются на концепции организации «внутреннего» потока управления вы-