Программирование в GPSS - Арифметические переменныеДля большей универсальности языка GPSS у некоторых СЧА стандартизировано лишь обозначение, а смысл этих СЧА и алгоритмы их вычисления определяются пользователем при описании модели. К таким СЧА относятся арифметические переменные. Обозначение арифметической переменной имеет вид 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, и т.п. должны заключаться в скобки.
|
