Способы описания работы дискретных устройств
3.5 Логические схемы алгоритмов
Основное достоинство рассматриваемых ниже логических схем алгоритмов (ЛСА) состоит в том, что, являясь по существу разновидностью языка операторных схем, они допускают запись алгоритма в строчку, что часто является удобным, т.к. появляется возможность исключить процесс рисования, вычерчивания, как это имеет место в ГСА. Важным является также наличие развитой системы преобразований ЛСА и возможности формального перехода к автоматному отображению.
Основными элементами ЛСА являются так же, как и в ГСА, операторы и логические условия.
Основные отличия от ГСА состоят в том, что для указания взаимосвязей между операторами и логическими условиями используются верхние и нижние стрелки.
Логической схемой алгоритма называется строчка, составленная из символов операторов , или
и логических условий
, а также верхних и нижних стрелок. Иногда верхние и нижние стрелки заменяют на правые и левые полускобки.
Итак, ЛСА- строчка, составленная из символов операторов , логических условий
и верхних
и нижних
стрелок, причем:
- Сильная операторная вершина
и одна конечная
;
- Строка начинается с
и заканчивается
;
- Не должно быть двух нижних стрелок
с одинаковыми номерами;
- Для каждой нижней стрелки
должна быть по крайней мере одна верхняя;
Переход по логическому условию , стоящему в ЛСА
![\dots Y_p X_i \uparrow Y_m \dots \downarrow Y_n](/sites/default/files/tex_cache/ce93b4a9a561f74ab2dc3792af60bbd6.png)
осуществляется так:
- Если
, то после
выполнится
,
- Если
, то после
выполнится
.
Безусловный переход для ясности может быть обозначен дополнительным символом, например .
ЛСА для МП, представленной на рис. 3.7 выглядит так:
Правило чтения ЛСА состоит в следующем.
Вначале анализируется элемент ЛСА, следующий непосредственно за оператором . Если рассматриваемым элементом является оператор, то он отмечается (выписывается) и на следующем шаге анализируется стоящий справа элемент (оператор или логическое условие).
Если рассматриваемым элементом является логическое условие производится проверка этого условия;
Анализ ЛСА при соблюдении сформулированных правил приводит через некоторое количество шагов к получению строчки операторов, называемой значением ЛСА при заданной последовательности наборов логических условий.
![Y_0 \downarrow^2Y_1 x_1 \uparrow^1Y_2 \downarrow^4Y_3 x_3 \uparrow^2Y_4 \omega \uparrow^3\downarrow^1\rightharpoondown x_2 \uparrow^4 Y_5 \downarrow^3Y_k](/sites/default/files/tex_cache/bade0a89b3ab27060a8c86f0967fc455.png)
Построим соответствующую ей ГСА. За начальным оператором следует оператор
и далее логическое условие
. Если логическое условие выполняется, то есть
, то следующим оператором выполняется
. Если логическое условие не выполняется, то есть
, то следующим оператором выполняется
, то есть оператор, стоящий за нижней стрелкой с номером 1.
Далее в ЛСА за оператором стоит оператор
и
. В такой последовательности и изображаем их на ГСА. Далее строим аналогичным образом.
Одной важной особенностью ЛСА является возможность неоднозначной записи одного и того же алгоритма.
Так, ГСА на рис.3.8 может быть описана еще несколькими вариантами ЛСА:
![Y_0 \downarrow^4Y_1 \rightharpoondown x_1 \uparrow^1 x_2 \uparrow^2Y_5 \omega \uparrow^3 \downarrow^1Y_2 \downarrow^2Y_3 x_3\uparrow^ 4Y_4 \downarrow ^3Y_k;](/sites/default/files/tex_cache/b67429899d3d44b45f78cb0e70829287.png)
![Y_0 \downarrow^5Y_1 x_1\uparrow^1 x_2\downarrow^2 \downarrow^4 Y_3 x_3\uparrow^5Y_4 \omega \uparrow^3 \downarrow^1Y_2 \omega \uparrow^4 \downarrow^2 Y_5 \downarrow^3Y_k;](/sites/default/files/tex_cache/3497b48bcfca839803d7bd4aaf5dab83.png)