double arrow

Переменные

Общая характеристика переменных. При построении модели системы, иногда возникает необходимость задать сложные математи­ческие или логические соотношения между атрибутами системы. Для этой цели в программе используются переменные.

В GPSS имеется три типа переменных:

1) арифметические переменные;

2) арифметические переменные с «плавающей точкой»;

3) булевы переменные.

Значение арифметических переменных может использоваться как:

1) операнд блока; в этом случае значение арифметической пере­менной может представлять собой:

- номер объекта (устройства, МКУ, очереди и т. п.);

- номер параметра транзакта;

- значение стандартного числового атрибута;

3) операнд А функции;

4) операнд А таблицы;

5) операнд выражения другой переменной.

В выражениях арифметические переменные используют такие арифметические операции:

+ алгебраическое сложение;

- алгебраическое вычитание;

# алгебраическое умножение;

/ алгебраическое деление (результатом операции является целая часть частного);

@ деление по модулю;

^ возведение в степень;

\ деление без остатка (перед делением у обоих операндов отбрасываются дробные части, результатом операции есть целая часть частного).

Привычно используемый для умножения во многих языках знак «*», зарезервирован в GPSS для обозначения косвенной адресации, однако в GPSS World есть возможность в меню настройки парамет­ров переопределить для умножения знак «*», а для косвенной адреса­ции - «#». Косвенная адресация является мощным средством для по­строения компактных и гибких моделей. Ее идея заключается в том, что можно обратиться к любому объекту или СЧА через параметры транзактов. Доступ же к параметрам транзактов осуществляется через СЧА Р j, где j - номер параметра транзакта (например, 10) или Р$имя, где имя - имя (идентификатор) параметра транзакта. Так как обраще­ние к объекту возможно только через параметр транзакта, то символ Р может опускаться. Например, выражение Q*7 или Q*P7 определяет текущее значение длины очереди, номер которой задан в параметре 7 транзакта. Если в седьмом параметре хранится значение 3, то это бу­дет текущее значение длины очереди с номером 3.

В выражениях может быть задано любое число приведенных операций в различных комбинациях. Знак результата вычисляется по обычным алгебраическим правилам. Допускаются отрицательные значения переменных. Выражения анализируются слева направо. Возведение в степень, умножение, деление и деление по модулю вы­полняются раньше, чем сложение и вычитание.

Вычисленное значение переменной является ее стандартным чи­словым атрибутом.

Арифметические переменные. Арифметические переменные аналогичны арифметическим выражениям в алгоритмических языках. Переменная задается оператором VARIABLE, называемым операто­ром описания переменной, который содержит арифметическое выра­жение. Формат оператора описания переменной:

Таблица 4.19

Поле Информация, задаваемая в поле
Метка Имя (числовое или символьное) переменной
Операция VARIABLE
Операнд А Выражение, которое используется для вычисления значения переменной

При обращении к переменной используется обозначение V<номер переменной> или V$<имя переменной>, т.е. V - это СЧА переменной.

Пример 4.16

Оператор описания VARIABLE определяет арифметическую переменную RSL:

RSL VARIABLE QT$WAITL+3-FN$DSTRB#P7

При любом обращении к переменной RSL (употребляется обо­значение V$RSL) ее значение вычисляется как текущая длина очере­ди WAITL (QT$WAITL - СЧА регистратора очереди) плюс кон­станта 3 и минус произведение значения функции DSTRB на значе­ние параметра 7 транзакта, обрабатываемого в данный момент. В приведенном выражении FN - СЧА для обращения к функции, а Р -СЧА транзакта.

Перед выполнением любой арифметической операции опреде­ляется значение каждого элемента и выделяется его целая часть. По­стоянные без знака считаются положительными числами.

В выражении арифметической переменной могут быть исполь­зованы любые СЧА, функции и другие арифметические переменные. Запрещается использование самой вычисляемой переменной, а также переменных со знаком, так как знаки в данном случае рассматрива­ются как арифметические операции.

Система моделирования GPSS допускает использование скобок в выражениях арифметических переменных (для группировки членов или для обозначения операции умножения).

В GPSS World выражения, записанные в круглых скобках, обра­батываются вычислительной процедурой встроенного алгоритмиче­ского языка PLUS. Поэтому их можно использовать в качестве опе­рандов блоков и операторов языка GPSS. Например, выражение, опи­санное в примере 4.16, может быть использовано таким образом:

ADVANCE (QT$WAITL+3-FN$DSTRB#P7)

l. B GPSS/PC выражение может содержать не больше пяти пар скобок (не считая скобок, используемых при описа­нии элементов матриц).

2. Пробелы между символами в выражениях не допус­каются. Левый пробел записи считается концом выражения. Для за­писи выражения, превышающего длину строки, можно ввести другой оператор VARIABLE с именем, отличным от имени первой перемен­ной, и включить значение новой переменной в качестве одного из операндов в выражение первой арифметической переменной.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: