Информатика и технология программирования

       

Нисходящее пошаговое структурное проектирование


В структурном программировании достаточно сложно отделить друг от друга принципы нисходящего, пошагового и структурного проектирования, поскольку каждый из них по отдельности является достаточно тривиальным, а весь эффект состоит в из совместном использовании в рамках процесса проектирования :



-нисходящее проектирование программы состоит в процессе формализации от самой внешней синтаксической конструкции алгоритма к самой внутренней, в движении от общей формулировки алгоритма к частной формулировке составляющего его действия ;



-структурное проектирование заключается в замене словесной формулировке алгоритма на одну из синтаксических конструкций - последовательность, условие или цикл. При этом синтаксическая вложенность конструкций соответствует последовательности их проектирования и выполнения. Использование оператора перехода goto запрещается из принципиальных соображений ;



-пошаговое проектирование состоит в том, что на каждом этапе проектирования в текст программы вносится только одна конструкция языка, а составляющие ее компоненты остаются в неформальном, словесном описании, что предполагает аналогичные шаги в их проектировании.

Нисходящее пошаговое структурное проектирование алгоритма состоит в движении " от общего к частному" в процессе формулировки действий, выполняемых программой. В записи алгоритма это соответствует движению от внешней (объемлющей) конструкции к внутренней (вложенной). Конкретно в структурном программировании это выражается в том, что любая словесная формулировка действий (алгоритма) может быть заменена на одну из трех формальных конструкций языка программирования:



-простая последовательности действий;



-конструкция выбора или оператор if;



-конструкция повторения или оператор цикла.

Выбранная формальная конструкция представляет собой часть процесса перевода словесного описания алгоритма на формальный язык. Естественно, что эта конструкция не определяет полностью всего содержания алгоритма. Поэтому составными ее частями остаются словесные формулировки более конкретных (вложенных) действий.
Попытаемся продемонстрировать это на исключительно абстрактных примерах.

.

Формулировка 1: Сделать "что-то" с переменной i
Формулировка 2: i=0;
Сделать "что-то немного другое"
Если i изменилось, сделать "что-то еще"

.

Формулировка 1: Сделать "что-то" с массивом А размерности n.
Формулировка 2: int i;
for (i=0; i&#60n; i++)
{
Проверить и если нужно, сделать
"что-то" с A[i]
}

.

Формулировка 1: Сделать "что-то" с целой переменной B
Формулировка 2: if (B "такое-то")
{ Сделать "одно" }
else
{ Сделать "другое" }



Примеры нарочно выбраны таким образом, чтобы их конкретное содержание не мешало восприятию самого принципа: конструкции языка программирования замещают словесную формулировку алгоритма "сверху-вниз", действие общего вида превращается в формальную конструкцию, содержащую частные действия, но тоже в неформальной словесной формулировке. В результате проектирования получается программа, в которой принципиально отсутствует оператор перехода goto, поэтому структурное программирование иначе называется как "
ПРОГРАММИРОВАНИЕ БЕЗ GOTO".

Процесс проектирования программы является пошаговым, ибо предполагает каждый раз замену одной словесной формулировки на единственную конструкцию языка. Но в процессе разработки программы могут быть и другие шаги, связанные с детализацией самой словесной формулировки в более подробную. Обратимся в вышеприведенному примеру.

.

Формулировка 1: Сделать "что-то" с массивом А размерности n.

.

Формулировка 1а: Для каждого элемента массива
выполнить проверку и, если нужно, сделать "что-то" с ним.

.

Формулировка 2: int i;
for (i=0; i&#60n; i++)
{ Проверить и если нужно, сделать "что-то" с A[i] }

Промежуточная формулировка 1a на самом деле является важным связующими звеном, потому что формулировка 2 есть не что иное, как ее перефразировка на формальном языке. На самом деле переход от 1 к 1a есть тот самый процесс нисходящего проектирования программы, который происходит в голове, а не на бумаге.При наличии определенного опыта и навыков этот шаг может там и оставаться.

То, что этот пошаговое проектирование выделено отдельно, говорит о необходимости предотвратить соблазн детализации программы сразу от начала до конца и развивать умение выделять и сосредотачивать внимание на главных, а не второстепенных деталях алгоритма.


Содержание раздела