Программирование в GPSS - Логические (булевы) переменныеОбозначение булевской переменной имеет вид BV$name. Этот СЧА, как и арифметическая переменная, описывается в тексте модели пользователем. Булевская переменная описывается в строке описания булевской переменной. В одной строке описывается одна переменная. В поле метки обязательно записывается имя переменной, в поле операций - слово BVARIABLE, а в поле операндов - булевское выражение. Булевское выражение составляется из элементов пяти типов: СЧА, отношений, стандартных логических атрибутов (СЧА), знаков логических операций и скобок. Значением булевской переменной является число 1, когда булевское выражение истинно и число 0 - в противном случае. Подчеркнем, что значением булевской переменной являются именно числа. Отношение представляет собой запись двух СЧА, соединенных одним из знаков: ‘G’ - больше чем, ‘L’ - меньше чем, ‘E’ - равно, ‘NE’ - не равно, ‘LE’ - меньше или равно, ‘GE’ - больше или равно. Отношение имеет значение «истинно» в том и только в том случае, если значения входящих в него СЧА отвечают смыслу соединяющего знака. Например, переменные BV$LOG1 и BV$LOG2 , описанные строками:
LOG1 BVARIABLE V$ABC1’G’5 LOG2 BVARIABLE V$ABC1’NE’V$ABC2,
всегда равны единице, если V$ABC1 и V$ABC2 описаны так, как в предыдущем параграфе. Если СЧА в логическом выражении не входит в отношение, то ему приписывается логическое значение (в этом случае СЧА должен быть заключен в скобки). Логическое значение «ложно» приписывается в случае, если численно СЧА равен нулю, во всех остальных случаях приписывается значение «истинно». Стандартные логические атрибуты (СЛА) в GPSS отражают состояние оборудования в модели. Это следующие атрибуты.
СЛА устройств: FIj - устройство j захвачено, FNIj - устройство j не захвачено, FUj - устройство j занято, FNUj - устройство j свободно, Fj - устройство j не свободно, FVj – устройство j доступно, FNVj – устройство j недоступно.
СЛА памятей: SFj - память j заполнена, SNFj - память j не заполнена, SEj - память j пуста, SNEj - память j не пуста, SVj – память j доступна, SNVj – памятьj недоступна.
СЛА ключей: LSj - логический ключ j включен, LRj - логический ключ j выключен.
СЛА блоков MATCH: M – в j-ом блоке синхронизации есть транзакт того же семейства, NM – в j-ом блоке синхронизации нет транзакта того же семейства.
Последние два СЛА могут быть использованы только в блоке GATE. СЛА имеет значение «истинно» тогда и только тогда, когда выполняются соответствующие ему условие - в приведенном перечне оно записано напротив вида индикатора. Указатель j в обозначении индикатора задается так же, как и в обозначении СЧА, т.е. может быть номером, косвенным номером или именем объекта. Знаки логических операций в описании булевской переменной - это знак логического сложения (+) и знак логического умножения (#). Операция умножения имеет приоритет по отношению к операции сложения. Например, булевская переменная BV$RESURS, описанная строкой:
RESURS BVARIABLE FNU1#FNU2+SNF1#SNF2,
равна единице тогда и только тогда, когда устройства 1 и 2 оба свободны, или памяти 1 и 2 обе не заполнены. Следует иметь в виду, что, хотя все промежуточные операции в булевской переменной имеют логические значения «истинно» или «ложно», сама булевская переменная имеет числовое значение 0 или 1.
|
