поддержка
проекта:
разместите на своей странице нашу кнопку!И мы
разместим на нашей странице Вашу кнопку или ссылку. Заявку прислать на
e-mail
код нашей кнопки:
Блок-схема алгоритма
Такие схемы используются в программировании весьма широко. Они
позволяют представить алгоритмы в обозримом виде, что дает возможность
анализировать их работу, искать логические ошибки в процедуре их
реализации и т. п.
Блок-схема представляется в виде графа специального вида. Вершины графа
соответствуют определенным частям алгоритмов (в предельном случае
отдельным шагам алгоритма или командам вычислительной машины), а дуги
показывают возможные переходы между этими вершинами в процессе
выполнения алгоритма.
Безусловные шаги принято изображать прямоугольниками, условные шаги -
ромбами. Из ромба всегда выходят две стрелки: одна имеет пометку "да"
(условие выполнено), другая - пометку "нет" (условие не выполнено).
Граф, изображенный на рис. 1, соответствует процессу отыскания
максимального числа в последовательности, который описан в статье
"Алгоритм".
Процесс выполнения алгоритма представляется в графе как путь из
начальной вершины в конечную. Если все шаги алгоритма - безусловные, то
этот путь при любых данных одинаков, хотя результаты, разумеется, могут
быть различными. Если же в алгоритме есть условные шаги (а чаще всего
так и бывает), то путь зависит от выполнения содержащихся в них условий.
Как правило, алгоритм содержит циклы, т. е. замкнутые пути,
возвращающиеся в пройденную ранее вершину. Алгоритм на нашем рисунке
содержит цикл между шагами 6 и 10, который разветвляется в шаге 7.
Поэтому возможны два варианта прохождения цикла 6,7,8,9, 10, 6и 6, 7,
10, 6. Цикл обязательно содержит условную вершину, в которой можно выйти
из цикла. В данном примере такой вершиной является шаг 10. Выход из
цикла происходит, когда все числа последовательности просмотрены. Если
условия выхода из цикла сформулированы неправильно, то может оказаться,
что они никогда не выполняются, и процесс исполнения алгоритма
становится бесконечным (он, как говорят, зацикливается, что является
типичной программистской ошибкой).
Блок схема алгоритма
Для компактного описания циклов в языках программирования имеются
специальные операторы циклов. Основную часть нашего примера (шаги 2-10)
с помощью такого оператора можно записать гораздо короче. Правда,
оператор цикла нельзя считать элементарным шагом, в частности, потому,
что время его выполнения зависит от исходных данных и может быть сколь
угодно большим.
Элементарность шагов входит в число необходимых требований к алгоритмам.
Однако уже на нашем простом примере видно, что строгое соблюдение этого
требования весьма обременительно - описание алгоритма разрастается и
становится плохо обозримым. Выход заключается в том, что шаги надо
укрупнять, но при условии, что они в дальнейшем будут доведены до
элементарных.
Крупный шаг - это фактически алгоритм, являющийся частью (подалгоритмом)
более сложного алгоритма. Такие подалгоритмы называются блоками. Блок
обычно не элементарен (его размеры неограниченны и выбираются
произвольно). Однако правильно сформулированный блок обладает всеми
другими признаками алгоритмического шага. В частности, он имеет точно
выделенное начало (точку входа) и может быть условным или безусловным. У
безусловного блока - всегда одна точка выхода. Условный блок имеет
несколько точек выхода (их может быть больше двух, если блок содержит
несколько условий). Другие блоки алгоритма связаны с данным блоком
только через точки входа и выхода. Поэтому если блок правильно решает
свою задачу, т. е. всегда дает нужный результат, то его внутренняя
структура несущественна для остальной части алгоритма. Из этого следуют
два важных вывода. Во-первых, описание алгоритма можно представлять в
укрупненном блочном виде. Отсутствие детального описания внутренней
структуры блоков не мешает пониманию того, как работает алгоритм в
целом; важно лишь, чтобы было четко определено, какие блоки запускают
данный блок в работу, где лежит его исходная информация, где будет
записан результат и куда переходить после окончания его работы. Такое
блочное представление особенно удобно на первых этапах разработки
алгоритмов (детализация блоков происходит позднее). Во-вторых,
детализацией разных блоков (т. е. программированием - доведением их до
настоящих алгоритмов и программ) могут заниматься разные люди независимо
друг от друга. Это важно при организации работ по созданию сложных
программ.
Блок-схемы являются частным случаем наглядных форм представления
алгоритмов. Существуют и другие способы представления: операторные
алгоритмы, диаграммы смены состояний и т. п. Развивается и теория таких
представлений. С ней можно познакомиться в статье "Схема алгоритма".