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