Базовые структуры алгоритма
Большинство алгоритмов содержит действия по присваиванию некоторой переменной значения другой переменной или значения некоторого выражения. Обычно для операции присваивания используется специальное обозначение «:=» или «←». Операция присваивания выполняется справа налево, т.е. сначала вычисляется значение выражения в правой части операции присваивания, а затем полученное значение присваивается переменной, стоящей в левой части операции присваивания. Слева от знака присваивания всегда должна стоять переменная, которой присваивается значение выражения, стоящего справа: «переменная» := «выражение». В частном случае слева и справа от знака присваивания может стоять одна и та же переменная. Например, если оператор присваивания имеет вид х := х+h (см.пример 2), и до его выполнения х, h имеют значения соответственно 6 и 0.5, то после его выполнения h остаётся неизменным, а х будет иметь значение 6.5. Операции присваивания в схемах алгоритмов записываются как правило внутри блоков «процесс» (см.далее).
Основные блоки, используемые в блок-схемах алгоритмов, приведены в Таблице 1.
Таблица 1.
Основные структурные блоки
Символ | Название | Назначение |
Терминатор или пуск-останов (начало-конец) | Обозначает начало или конец алгоритма | |
Ввод-вывод | Преобразует данные в форму, пригодную для ввода или вывода информации | |
Решение или проверка условия | Выбор направления алгоритма в зависимости от некоторых условий | |
Процесс (обработка) | Выполнение определенной операции или группы операций | |
Комментарий | Сопровождает блок для более детального его описания, если оно не поместилось внутри символа | |
Символ-соединитель | Используется для обрыва линии и продолжения ее в другом месте. |
Блоки ввода-вывода информации и обработки (выполнения действий) имеют один вход и один выход, блок начала имеет один только выход, а блок конца работы – только вход. Блок решения (условия) имеет один вход и два выхода, один из которых помечен словом “да“ (или 1, или «+» – соответствует переходу при выполнении условия), а второй - словом “нет“ (или 0, или «–»). Последовательность прохождения блоков (передачи управления) определяется стрелками и начинается с блока начала работы. Если направление передачи управления совпадает с естественным (слева-направо, сверху-вниз), то стрелка на дуге, соединяющей смежные блоки, может не ставиться.
Если в пределах страницы на схеме неудобно проводить линию передачи управления, то её можно прервать на выходе передающего блока, поставить в точке разрыва кружок с уникальной для этой страницы буквой (именем) внутри, а перед входом принимающего блока поставить кружок с той же буквой и тем самым соединить их. Таким образом, символ-соединитель имеет один вход в месте разрыва и один выход в месте соединения. Он отображает выход в часть схемы и вход из другой части схемы. Для каждой «оборванной» линии внутри символа-соединителя должно содержаться одно и то же уникальное обозначение.
Для решения прикладной задачи всегда можно составить несколько разных алгоритмов. Из этих возможных алгоритмов нужно выбрать самый хороший для дальнейшей программной реализации. Чтобы оценить насколько «хорош» алгоритм, анализируются следующие характеристики: простота и легкость понимания алгоритма, скорость выполнения и требуемый объём памяти. Наиболее важными в настоящее время являются простота и легкость понимания. Причина этого – большое количество создаваемых алгоритмов и программ, необходимость обмена алгоритмами и программами между людьми, предприятиями, организациями и государствами. Для того чтобы алгоритм был простым и легко понимаемым, его рекомендуется строить, используя 3 основных структуры: