Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Структурный подход при разработке алгоритмов
Процесс разработки алгоритмов и программ достаточно сложен и содержит некоторые элементы творчества. Для одной и той же задачи возможно множество алгоритмов ее решения, различающихся сложностью и эффективностью, и как правило, программы, реализующие различные алгоритмы отличаются сложностью, эффективностью и количеством допущенных логических ошибок. На выявление логических ошибок, а также на модификацию разрабатываемых участков программы уходит значительная часть времени программистов. Поэтому разрабатываемые алгоритмы должны быть простыми и понятными, легко проверяемы и допускать возможность ее модификации без существенной перестройки всей конструкции. Для достижения указанных свойств при разработке алгоритмов придерживаются особой методики, называемой структурным подходом. Суть этого подхода - применение некоторых базовых структур алгоритмов. Применение их снижает вероятность появления ошибок при разработке алгоритмов, повышает надежность, упрощает понимание и модификацию алгоритмов. При структурном подходе к конструированию алгоритмов алгоритмы как бы составляются из следующих базовых структур: следование, развилка, выбор, цикл, каждая из которых имеет один вход и один выход. Алгоритм решения любой логической задачи можно составить только из них. При описании структур употребляются специальные обозначения для действий обработки информации, проверки условия, выбора действия и слияния соединительных линий (Рис.3.14). Функциональный узел включает действие, которое необходимо выполнить. Решение по условию определяет порядок выхода (выбирается один из выходов, но не оба сразу) в соответствии с тем, какое значение принимает результат проверки условия: " истина" или " ложь". Решение по коду определяет порядок выхода (выбирается один из выходов) в соответствии с тем, какое значение принимает код.
Рис.3.14 Обозначения, принятые при описании структур алгоритмов
Узел слияния изменений данных не предусматривает. Это просто соединение с двумя входами и одним выходом. Если требуется соединение произвольного без преобразования сигналов количества входов, то такую конструкцию можно представить в виде последовательности узлов слияния (рис.3.15). Ниже приведены изображения базовых структур. Следование. Эта базовая структура состоит из двух функциональных блоков, размещенных и выполняемых последовательно друг за другом (Рис. 3.16). Любое обозначение обработки можно заменить следованием, но, повторяя эту замену, можно изобразить последовательное исполнение любого количества функций. Следование - это такая структура, в которой ряд операции выполняется в линейном порядке. Развилка - состоит из логического элемента и одного или двух функциональных узлов. Эта структура обеспечивает выбор между двумя ветвями. Развилка может быть двух видов: полная условная конструкция, когда в каждой ветви присутствует функциональный узел и неполная условная конструкция, когда функциональный узел присутствует только в одной из ветвей. Каждая из ветвей ведет к общей точке слияния. Выбираемые пути могут обозначаться метками: истина/ложь (T/F), да/нет, +/- и т.п. Полная условная конструкция схематически может быть представлена рисунком 3.17. Неполная условная конструкция имеет место тогда, когда одному из результатов проверки не требуется выполнение функционального блока (рис.3.18).
Выбор - состоит из логического узла проверки состояния кода и множества функциональных узлов. Эта структура обеспечивает выбор из множества n ветвей, каждая из которых может содержать функциональный узел, либо быть пустой. Все ветви сливаются в одной точке. Схематически базовая структура выбор изображено на рис.3.19. В зависимости от состояния кода выбирается та или иная ветвь. Базовая структура цикл может быть двух видов: цикл - пока и цикл - до. Базовая структура цикл - пока имеет вид рис.3.20. Вначале проверяется условие Р. Если Р истинно, то многократно выполняется действие S. Если условие становится ложным, то цикл завершается. Действие S циклически выполняется при последовательных значениях по крайней мере одного параметра. Так как условие проверяется до действия S, то оно может ни разу не выполниться. При выполнении действия S параметры условия Р должны изменяться, иначе программа зациклится. Базовая структура цикл - до имеет вид на рис.3.21. цикл - до обеспечивает многократное выполнение действия S также, как и цикл - пока, за исключением двух моментов. 1. Проверка условия производится после выполнения действия S, поэтому действие S выполняется хотя бы один раз. 2. цикл - до завершается, когда Р истинно, а цикл - пока тогда, когда Р ложно. Любой алгоритм может быть разработан с использованием только базовых структур. Функциональные узлы S1, S2 и S, в свою очередь, могут представлять собой любую базовую структуру. Конструируемые таким образом алгоритмы имеют четкую и ясную структуру, легко поддаются проверке.
Рассмотренные структуры: Следование, Развилка, Цикл, Выбор - могут сочетаться в любой последовательности, составлять несколько уровней вложенности одна в другую. Например, в схеме рис.3.23 функциональные узлы S1 и S2 представляют собой структуры Следование рис.3.24, а, б. В свою очередь узлы S12 и S22 представляют собой соответственно структуры Цикл-пока (структура типа whiledo) и Цикл-до (структура типа dountil) рис.3.25. В результате развернутая схема будет иметь вид рис.3.26. Следовательно, любой функциональный узел может быть заменен любой базовой структурой.
|