КРОШКА.РУ


05. Метод последовательного уточнения

Снизу вверх

В простых случаях, когда нетрудно предсказать, какие процедуры понадобятся в главном алгоритме, можно начать с вспомогательных алгоритмов нижнего уровня. Т.е. с процедур, которые содержат только команды из СКИ, без вызовов других процедур. От нижнего уровня можно перейти к процедурам для описания более сложных действий, а в самом конце составить главный алгоритм. Такой способ программирования называют программированием снизу вверх: от нижнего уровня - к верхнему, от простых предписаний - к более сложным, от частного - к общему.

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


Сверху вниз

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

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

На следующем шаге можно переходить к уточнению отдельных пунктов общего плана, т.е. к написанию вспомогательных алгоритмов. Здесь можно применить тот же прием: сразу описывать процедуру, заменяя все предписания, которых нет в СКИ, вызовами новых процедур.

Понятно, что на каждом этапе придется последовательно уточнять пункты плана возникшего на предыдущем уровне. И так до тех пор, пока на самом нижнем уровне не получатся процедуры, состоящие только из команд, входящих в СКИ. Это и есть метод последовательного уточнения.

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


Пример:

Последний метод Вы можете опробовать, решая, например, следующую задачу:

Составить программу для исполнителя Ру, которая рисует картинку:

Если Вы помните, что

метод последовательного уточнения состоит в следующем:

можете попробовать решить эту задачу.

(Следуйте инструкциям в верхней части экрана.
Интересно: почему анимации, изображающие выполнение отдельных процедур, столь разного "качества"?)