Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_Mstk.doc
Скачиваний:
6
Добавлен:
01.07.2025
Размер:
5.22 Mб
Скачать

49. Блок test.

Блок TEST описывает условие, которое проверяет при входе в него транзакт, и определяет номер следующего блока для вошедшего транзакта в зависимости от того, выполняется требуемое условие или нет. Блок TEST функционирует в двух режимах: 1) отказа во входе; 2) разрешении во входе и альтернативном выходе.

Формат записи:

TEST X A, B, (C)

Операнды А и В являются сравниваемыми величинами. Они могут быть именем, строкой, выражением в скобках, СЧА. Условный оператор Х может быть выражен одним из следующих 6 условных операторов: L-меньше, LE-меньше или равно, E-равно, NE-не равно, G-больше, GE-больше или равно.

Если операнд С указан, транзакт всегда может войти в блок TEST и в зависимости от соотношения операндов будет передан либо в следующий блок, либо в блок, указанный операндом С. Если операнд С не указан, транзакт при невыполнении условия не сможет войти в блок TEST (режим отказа). Он помещается в список повторных попыток всех объектов, участвующих в проверке условия. Когда состояние любого из этих объектов изменяется, транзакт из списка повторных попыток активизируется и проверка проводится вновь. Если условие выполняется, транзакту разрешается войти в блок TEST.

При функционировании блока TEST в режиме отказа, возможно увеличение машинного времени на многократные проверки блокирующего условия. Сократить это время можно с помощью блоков LINK и UNLINK.

В булевой переменной может использоваться СЧА F, равный 1, если ОКУ занято, в противном случае – 0.

А также следующие СЧА ОКУ: 1) FC-количество транзактов, занимавших ОКУ с помощью блоков SEIZE и PREEMPT; 2) FR-коэффициент использования ОКУ; 3) FT-среднее время обслуживания ОКУ одного транзакта.

Пример использования булевой переменной и блока TEST для проверки состояния ОКУ.

Prov BVARIABLE F$Server

. . . . . . . . . . .

TEST E BV$Prov, 0, PotZap

SEIZE Server

ADVANCE P$Obrab

RELEASE Server

В данном примере при входе транзакта в блок TEST вычисляется булева переменная Prov. В булевой переменной использован СЧА ОКУ F. Если ОКУ с именем Server занято, значение переменной Prov равно 1. Тогда, условие, заданное блоком TEST, не выполняется, так как 1 не равно 0, и транзакт не может занять ОКУ, а переходит к блоку с меткой PotZap, указанной операндом С. Если же ОКУ с именем Server свободно, то булева переменная Prov равна 0. Тогда проверяемое блоком TEST условие выполняется, транзакт переходит к следующему блоку, т. е. Занимает ОКУ с именем Server.

50. Функции в gpss. Оператор описания функций.

В GPSS 2 типа вычислительных объектов: арифметические переменные и функции.

Существует 5 типов функций:

1непрерывная числовая – С

2дискретная числовая – D

3табличная числовая – L

4дискретная атрибутивная – Е

5табличная атрибутивная – M

Функция задается с помощью оператора: funktion. Формат записи: Name FUNKTION A,B. Поле А-аргумент. Аргументом может быть любой из стандартных числовых атрибутов. Если в качестве аргумента функции используется псевдослучайное число RNj , то оно может измениться в пределах 0<RNj<1. Во всех остальных случаях 0<RNj<999. Запись в поле B определяет тип и число точек функции, точнее число пар x[i] и y[i]. Примеры: С5-непрерывно числовая и 5точек. За каждым оператором funсtion должны следовать операторы для задания координат (x[i] и y[i]) функции. Для задания координат можно использовать не целые числа: RLGEX function RN1, C5

0,0/.33,.45/.40,1.60/.70,2.75/1.00,3.90

Значение координат разделяется запятой; пара координат разделяется наклонной /; каждое последующее значение x[i] должно быть больше предыдущего; функция должна быть заданна 2мя очками.

1не прерывные числовые функции С

Когда значение аргумента непрерывной числовой функции попадает в интервал между двумя заданными значениями x[i] и x[i+1], программа производит линейную интерполяцию для определения значения функции.

2дискретные числовые функции D

Они задают одно и тоже значение функции y[i] для всех х, которые x[i-1]<x<=x [i]

3табличные числовые функции L

Значение аргумента x[i] является последовательность целых чисел:

1,2,3,…,n

Значение y[i] должны быть записаны в соответствующих полях операторов.

4дискретные и табличные атрибутивные функции.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]