- •Федеральное агентство связи
- •Московский технический университет связи и информатики
- •Введение
- •Стандартные числовые атрибуты. Описание.
- •2. Классификация стандартных числовых переменных
- •2.1. Арифметические переменные
- •2.2. Булевские переменные
- •2.3. Системные сча
- •2.4. Сча транзактов
- •2.5. Сча блоков
- •2.6. Сча устройств
- •2.7. Сча многоканальных устройств
- •2.8. Сча очередей
- •2.14. Сча числовых групп
- •2.15. Сча групп транзактов
- •2.16. Сча списков пользователя
- •2.17. Сча логических переключателей
- •Примеры сча
- •4. Примеры использования сча
- •Список используемых источников
2. Классификация стандартных числовых переменных
2.1. Арифметические переменные
Для большей универсальности языка GPSS\PC у некоторых СЧА стандартизировано лишь обозначение, а смысл этих СЧА и алгоритмы их вычисления определяются пользователем при описании модели. К таким СЧА относятся арифметические переменные. Обозначение арифметической переменной имеет вид:
V$name
Использовать любой конкретный СЧА вида V$name в качестве операнда можно лишь при условии, что этот СЧА описан пользователем в данной модели.
Описание атрибута V$name осуществляется в строке описания арифметической переменной. В одной строке описывается одна переменная. В поле метки обязательно записывается имя описываемой переменной, в поле операции записывается слово VARIABLE или FVARIABLE, а в поле операндов - арифметическое выражение, составляемое из СЧА, знаков арифметических операций и круглых скобок.
В арифметическом выражении можно использовать следующие знаки арифметических операций:
+ |
сложить |
- |
вычесть |
# |
умножить |
/ |
разделить |
@ |
взять остаток от деления |
^ |
возведение в степень |
Пусть, например, переменная V$SUM описана строкой
SUM VARIABLE S1+S2.
Тогда значение V$SUM будет определяться как суммарное содержимое первой и второй памяти. Если переменную V$CAP описать в виде
CAP VARIABLE R*8+5*8,
то её значением будет сумма числа свободных и числа занятых единиц той памяти, номер которой записан в восьмом параметре транзакта.
При описании арифметических переменных необходимо иметь в виду следующее:
1) Равноприоритетные операции в арифметическом выражении при отсутствии скобок выполняются слева направо. Операции #, /, @ имеют приоритет по отношению к операциям +, -.
2) Если в строке описания арифметической переменной в поле операции записано VARIABLE, переменная считается целой, в случае записи FVARIABLE - вещественной. При вычислении целой переменной от результатов всех промежуточных операций берется целая часть. При вычислении вещественной переменной этого не делается. Однако окончательный результат округляется в меньшую сторону, как в целой, так и в вещественной переменной.
Например, если в модель включены строки
ABC1 FVARIABLE 10#(11/3)
ABC2 VARIABLE 10#(11/3)
ABC3 FVARIABLE 1/5 ,
то описанные в этих строках переменные будут иметь следующие значения:
V$ABC1 = 36,
V$ABC2 = 30,
V$ABC3 = 0.
3) Синтаксис арифметических выражений соответствует синтаксису, принятому в языках программирования высокого уровня. Например, аргументы стандартных функций типа SIN, EXP,SQR, и т.п. должны заключаться в скобки.
4) Синтаксис арифметических выражений в переменных такой же, как в команде SHOW.
2.2. Булевские переменные
Обозначение булевской переменной имеет вид:
BV$name
Этот СЧА, как и арифметическая переменная, описывается в тексте модели пользователем. Булевская переменная описывается в строке описания булевской переменной. В одной строке описывается одна переменная. В поле метки обязательно записывается имя переменной, в поле операций - слово BVARIABLE, а в поле операндов - булевское выражение.
Булевское выражение составляется из элементов пяти типов:
СЧА
отношений
стандартных логических атрибутов (СЛА)
знаков логических операций
скобок
1) Значением булевской переменной является число 1, когда булевское выражение истинно и число 0 - в противном случае. Подчеркнем, что значением булевской переменной являются именно числа.
2) Отношение представляет собой запись двух СЧА, соединенных одним из знаков:
‘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 описаны так, как в предыдущем параграфе.
3) Если СЧА в логическом выражении не входит в отношение, то ему приписывается логическое значение (в этом случае СЧА должен быть заключен в скобки). Логическое значение "ложно" приписывается в случае, если численно СЧА равно нулю, во всех остальных случаях приписывается значение "истинно".
Стандартные логические атрибуты (СЛА) в GPSS\PC отражают состояние оборудования в модели. Это следующие атрибуты.
СЛА устройств:
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 в обозначении индикатора задается так же, как и в обозначении СЧА, т.е. может быть номером, косвенным номером или именем объекта.
4) Знаки логических операций в описании булевской переменной - это знак логического сложения (+) и знак логического умножения (#). Операция умножения имеет приоритет по отношению к операции сложения. Например, булевская переменная BV$RESURS, описанная строкой:
RESURS BVARIABLE FNU1#FNU2+SNF1#SNF2,
равна единице тогда и только тогда, когда оба устройства 1 и 2 свободны, или памяти 1 и 2 обе не заполнены.
Следует иметь в виду, что, хотя все промежуточные операции в булевской переменной имеют логические значения «истинно» или «ложно», сама булевская переменная имеет числовое значение 0 или 1.
