Читайте также:
|
|
Идея его состоит в следующем. Составлению программы предшествует поиск способа решения задачи, который обычно ведется (мысленно и без его фиксации) сверху вниз.
На следующем этапе (когда найден способ решения) найденный способ решения задачи используется при разработке программ. В отличие от поиска решения составление программ ведется снизу вверх. Это означает, что в первую очередь разрабатывают (или подбирают, если они уже существуют) набор базовых средств нижнего уровня (подзадач, подпрограмм или в самом простейшем случае - выражений или операций на выбранном языке программирования), необходимых с точки зрения разработчика для выполнения базовых функций. Также выбирается необходимый набор исходных и промежуточных данных. После этого разработчик, держа в уме найденный способ решения, разрабатывает (подбирает) алгоритм использования этих базовых средств для достижения решения. При этом базовые средства объединяются в конструкции более высокого уровня, которые в свою очередь тоже объединяются в конструкции выше стоящего уровня и т.д. пока не будет получена программа, реализующая поставленную задачу путем вызова необходимых базовых конструкций и разработанных средств в нужном порядке (в уме держится). При этом в процессе разработки алгоритма мы движемся снизу вверх - отсюда название подхода.
Поскольку рассуждения, выполненные в ходе поиска способа решения задачи, не фиксируются, то они теряются и не могут быть использованы при дальнейшем составлении алгоритма. В связи с этим от разработчика требуется выполнить восстановление структуры решения (которое у него сложилось на момент подбора базовых конструкций). Когда число базовых конструкций, уровней иерархии и связей между ними достаточно велико или когда опыт разработчика еще не велик, то способности разработчика часто не хватает на то, чтобы: 1) Просто не допустить логических ошибок в алгоритме; 2) Итоговая структура алгоритма соответствовала той, которую разработчик мысленно получил при подборе базовых средств.
… … … …
базовые средства
6.2 Нисходящий подход.
|
| ||||
| |||||
|
| ||||
|
|
………
|
………
………
Стадия 1 Стадия 2 ….. Стадия N
Разработка программы проходит несколько этапов уточнения. На самом верхнем уровне (этапе) решение задачи описывается в терминах небольшого числа (в простейшем случае - одного) действий самого высокого уровня, выполняемые над данными, которые также рассматриваются на самом высоком уровне абстракции. Каждое действие высокого уровня затем уточняется посредствам описания его в терминах действий более низкого уровня. Одновременно уточняются и данные, над которыми выполняются эти действия. Процесс уточнения продолжается до тех пор, пока действия и данные не станут выражаться непосредственно на используемом языке программирования. Каждому этапу уточнения соответствует некоторый отличный от других экземпляр программы. При этом для каждой программы предполагается некоторый исполнитель, способный ее (программу) выполнить (ЭВМ).
Можно рассматривать процесс разработки алгоритма таким методом как процесс постепенной передачи решения задачи от исполнителя верхнего уровня (умного) исполнителям более низкого уровня (более глупым в том смысле, что требуют для работы больше пояснений, чем умные): вначале мы описываем действия по решению задачи на языке исполнителя самого верхнего уровня, затем уточняем каждое из этих действий на языке исполнителя более низкого уровня и т.д. до тех пор, пока конечным исполнителем не станет ЭВМ.
Достоинства данного подхода:
1) не надо выдумывать базовые конструкции программы - они сами появтся на определенной стадии уточнения исходной задачи.
Недостатки этого подхода:
1) приходится при переходе от одной стадии уточнения к другой заново переписывать текст алгоритма и всю. документацию на него
2) ошибки, допущенные на начальных этапах, будут дублироваться на всех последующих этапах
Замечание по двум подходам: и восходящий и нисходящий подходы к разработки алгоритмов - оба являются разными сторонами одного и того же задачного (процедурного) подхода. При использовании данного подхода основное внимание фокусируется на разработке процедур (подпрограмм), в том смысле, что программист пытается разделить поставленную задачу на составляющие подпрограммы, т.е. проводит декомпозицию задачи на подпрограммы, при этом разработчик в алгоритме сам устанавливает порядок выполнения подпрограмм, т.е. какая подпрограмма какую будет вызывать и при каких условиях. Исходные данные и подпрограммы объявлялись отдельно. В подпрограммы данные передаются как параметры. При использовании данного подхода предполагается, что исходные объекты либо не взаимодействуют, либо взаимодействуют, но очень слабо.
Дата добавления: 2015-04-20; просмотров: 18 | Поможем написать вашу работу | Нарушение авторских прав |