Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл: Источник:
Скачиваний:
332
Добавлен:
04.03.2014
Размер:
136.19 Кб
Скачать

3.2.6. Восходящий и нисходящий методы проектирования алгоритмов.

Практика показывает, что программирование, понимаемое как проекти-

рование и формулирование алгоритмов, процесс сложный, требующий учета

многочисленных деталей и владения специальной техникой. Наиболее общая

тактика программирования состоит в разложении процесса на отдельные

действия, а соответствующих программ на отдельные инструкции. На каждом

таком шаге декомпозиции нужно удостовериться, что

(а) решения частных задач приводит к решению общей задачи,

(б) выбранная последовательность индивидуальных действий разумна и

(в) выбранная декомпозиция позволяет получить инструкции, в ка-

ком-либо смысле более близкие к языку, на котором в конечном счете будет

сформулирована программа.

Если видеть в поэтапной декомпозиции и одновременном развитии и де-

тализации программы постепенное продвижение вглубь, то такой метод при

решении задач можно характеризовать как нисходящий (сверху вниз). И нао-

борот, возможен такой подход к решению задачи, когда программист сначала

изучает имеющуюся в его распоряжении вычислительную машину и/или язык

программирования, а затем собирает некоторые последовательности инструк-

ций в элементарные процедуры или "кластеры действий", типичные для реша-

емой задачи. Элементарные процедуры затем используются на следующем

уровне иерархии процедур. Такой метод (из глубины примитивных машинных

команд к задаче, лежащей "на поверхности") называется восходящим (снизу

вверх). На практике разработку программы никогда не удается провести

строго в одном направлении (сверху вниз или снизу вверх). Однако при

конструировании новых алгоритмов нисходящий метод обычно доминирует!

3.2.7. Базовые управляющие структуры алгоритмов и структурное прог-

раммирование.

Истоки структурного программирования лежат в решении проблемы дока-

зательства правильности программ, т. е. в разработке математически стро-

гих методов доказательства правильности программ, которые бы устранили

их тестирование. Структурное программирование базируется на строго дока-

занной теореме о структурировании, которая утверждает, что любую пра-

вильную программу (с одним входом и одним выходом, без зацикливаний и

недостижимых команд) можно написать с использованием только следующих

управляющих структур:

- последовательности двух или более операторов;

- выбора одного из двух операторов (конструкция if-then-else);

- повторения оператора, пока выполняется некоторое условие

(конструкция while-do).

Комбинации правильных программ, полученные с использованием трех

основных (базовых) управляющих структур, также являются правильными

программами. При использовании только указанных трех структур отпадает

необходимость в безусловных переходах и метках!!!

Хотя теоретически возможно написать все правильные программы,

используя только три перечисленные базовые структуры, небольшое расшире-

ние этого базиса облегчает программирование. Введенные структуры должны

иметь один вход и один выход. Обычно включают конструкции case-of,

repeat-until и for-do.

Структурный подход к программированию включает в себя:

- нисходящее ("сверху вниз") проектирование алгоритма;

- непосредственное структурное программировани (кодирование) с

использованием базовых управляющих структур;

- сквозной структурный контроль.

Соседние файлы в папке 13_3xN