разработка таких программ предполагает некоторый опыт программи
-
рования и определенным образом сформированное
“
программистское
”
мышление
,
которым инженеры
-
математики
—
разработчики новых ал
-
горитмов решения различных задач
—
могут и не обладать
.
В связи
с этим большинство универсальных языков допускает использование
неструктурных вариантов передачи управления
.
Неструктурный вид программ
,
получаемых при использовании опе
-
раторов неструктурной передачи управления
,
порождает целый ряд
проблем
.
Во
-
первых
,
в этом случае сложно разобраться в получаемой
программе
,
что уменьшает возможности
“
ручной
”
оптимизации на дан
-
ном уровне
.
Во
-
вторых
,
существенно усложняется
,
если не становит
-
ся невозможным
,
автоматический анализ вычислительной сложности
полученных программ
.
Естественным решением проблемы является
создание средств автоматического преобразования программ к струк
-
турному виду
.
Задача структуризации не нова
.
Она ставилась как самостоятельно
,
таки в качестве подзадачи при решении других задач
,
например задачи
декомпиляции
,
задачи распараллеливания алгоритмов и задачи анализа
вычислительной сложности
.
Принципиальная возможность структуризации программ была до
-
казана
,
еще в начале
60-
х годов прошлого века академиком В
.
М
.
Глуш
-
ковым
[2].
В последующем им и его последователями была разрабо
-
тана система алгоритмических алгебр
,
содержащая строгую методи
-
ку структуризации алгоритмов
[3],
но для очень ограниченного класса
схем программ
—
схем Янова
.
Для структуризации реальных программ и алгоритмов в настоящее
время предложено много способов
[4–9],
но при этом не существует
общей методики выявления неструктурностей
,
предлагаемые способы
не базируются на анализе моделей алгоритмов или программ
,
а потому
не могут быть автоматизированы
.
Единственная известная автоматизи
-
рованная методика выполняет лишь частичную структуризацию про
-
грамм в процессе декомпиляции
[10].
Она основана на выявлении не
-
структурностей в программах по присутствию оператора
GOTO.
Одна
-
ко использование этого оператора может и не нарушать структурности
конструкций
.
Применительно крассматриваемому случаю частичной структури
-
зации недостаточно
.
Следовательно
,
требуется разработать подход к
преобразованию программ кструктурному виду
,
пригодный для авто
-
матизации
.
Модель программы для задачи структуризации
.
При решении
частных задач структуризации программ
,
написанных на языках высо
-
кого уровня
,
на правила преобразования оказывает существенное вли
-
ISSN 0236-3933.
ВестникМГТУ им
.
Н
.
Э
.
Баумана
.
Сер
. “
Приборостроение
”. 2005.
№
3 65