Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИМЭП 12 тема Вербовик.docx
Скачиваний:
5
Добавлен:
01.03.2025
Размер:
49 Кб
Скачать
☆

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. СЧА

  2. отношений

  3. стандартных логических атрибутов (СЛА)

  4. знаков логических операций

  5. скобок

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.