Алгоритм может быть задан в следующем виде:
1) в вербальной (словесной) форме;
2) в виде ЛГСА (логически графическая схема алгоритма) – в графической форме в виде блок-схемы;
3) в виде структурограммы Насси-Шнейдермана;
4) в виде программы для ЭВМ.
Блок-схема это графическое изображение алгоритма. При её построении содержимое каждого шага алгоритма записывается в произвольной форме внутри блока, представленного геометрической фигурой. Порядок выполнения шагов указывается с помощью стрелок, соединяющих блоки. Использование различных геометрических фигур отражает различный характер выполняемых действий. Размеры фигур и их вид регламентированы ГОСТ 19.003-80 или ISO 1028-73.
В прямоугольнике (блок вычислений) записываются действия, в результате которых данные изменяют свои значения.
В ромб (блок сравнения) записывают условия подлежащие проверке с целью выбора варианта продолжения вычисления.
Параллелограмм (блок ввода-вывода) содержит информацию о входных и выходных данных.
Овал означает начало или окончание вычислительного процесса.
Наиболее часто употребляемые символы ЛГСА
Начало, конец обработки данных |
|
Вычислительный процесс |
|
Ввод-вывод информации |
|
Проверка условия (принятие решения) |
|
Подпрограмма (стандартная процедура) |
|
Блок модификации (цикл) |
В блок-схеме алгоритма вершинам соответствуют шаги алгоритма, а ребрам – переходы между шагами. Вершины в блок-схеме может быть двух видов: вершины, из которых выходит одно ребро, (их называют операторами) и вершины, из которых выходит два ребра, (их называют логическими условиями и предикатами). Кроме того, имеется единственный оператор конца, из которого не выходит ни одного ребра и единственный оператор начала.
Важной особенностью блок-схемы является то, что связи, которые она описывает, не зависят от того, являются ли шаги элементарными или представляют собой самостоятельные алгоритмы, — как говорят программисты, блоки. С помощью блок-схем можно несколько алгоритмов, рассматриваемых как блоки, связать в один укрупненный алгоритм. Такое соединение алгоритмов называется композицией алгоритмов. И наоборот, большой алгоритм можно разбить на блоки, которые будут параллельно разрабатывать различные программисты, что широко используется в программировании.
На блок-схеме хорошо видна разница между описанием алгоритма и процессом его реализации. Описание – это граф, процесс реализации – это путь в графе. Различные пути в одном и том же графе возникают при различных данных, которые создают разные логические условия в точках принятия решения (в точках ветвления). Отсутствие сходимости означает, что в процессе вычисления не появляется условий ведущих к концу алгоритма и процесс зацикливается.
При всей наглядности языка блок-схем следует учитывать, что она отражает связи между отдельными блоками по управлению, а не по информации. Блок-схема лишь указывает, что делать в следующий момент, какому блоку передается управление. Блок-схемы не содержат сведений ни о данных, ни о памяти, ни об используемых наборах элементарных шагов. По существу блок-схемы это не язык, а средство для описания детерминизма алгоритма. Как и все графические модели, это достаточно удобное и наглядное средство. Необходимо помнить, что точки ветвления могут быть не только двоичными (выбор из двух возможных вариантов в зависимости от истинности или ложности логического условия), но и многозначными (выбор одного ветвления из нескольких возможных). Важным является возможность выбора единственного пути при наличии нескольких возможных.