Изучение основ моделирования в среде GPSS World. Создание пользовательских переменных. Блоки и команды для манипуляции с сохранёнными данными, страница 5

Оператор

Описание

PROCEDURE

Определение PLUS процедуры

TEMPORARY

Определение и ограничение по области видимости локальной пользовательской переменной или локальной матрицы

BEGIN/END

Составной оператор для создания блока выражений PLUS

присваивания

Установка значения именованному элементу или элементу матрицы

вызова процедуры

Запуск библиотечной процедуры

маркирования выражение

Суперкласс выражений, которые начинаются с метки

IF/THEN

Проверка выражения и выполнение действия, когда результат равен "TRUE"

IF/THEN/ELSE

Проверка выражения и выполнение действия при любом результате

WHILE/DO

Выполнение повторяющихся действий

GOTO

Переход на новую строку в теле процедуры

RETURN

Завершение процедуры и возврат результата

Давайте рассмотрим выражения более подробно.

Оператор присваивания обозначается через символ равно ("=") и используется по следующим правилам:

Л-значение = выражение;

Л-значение – поименованное значение, имя локальной переменной или элемент матрицы.

Выражение – любое разрешённое PLUS выражение.

Оператор BEGIN/END обычно используется для определения процедур и управляющих потоков в теле процедуры. Прежде чем привести пример использования этого составного оператора давайте рассмотрим другой оператор – PROCEDURE.

Данный оператор используется только для определения процедур, совместно с оператором BEGIN/END. Синтаксис его таков:

PROCEDURE         <имя>([список аргументов])    BEGIN

[выражения]

END;

Имя – это собственное имя процедуры, по которому будет происходить обращение к ней. Имя процедуры подчиняется принятым в системе GPSS World правилам по созданию имён и меток.

Список аргументов – последовательность определённых пользователем имён, разделённая запятыми. Используется для задания списка формальных аргументов. Данный список является необязательным атрибутом при создании процедуры.

Выражения – тело процедуры, куда можно включать различные PLUS операторы.

Для определения локальных переменных PLUS процедуры служит оператор TEMPORARY, который имеет следующий синтаксис:

TEMPORARY         <список_имён>;

Список имён – список определённых пользователем имён локальных переменных, разделённых запятыми.

Можно также в процедуре определить пользовательский массив, который также называют локальной матрицей. При этом синтаксис оператора TEMPORARY будет несколько иным:

TEMPORARY MATRIX  <имя>[<список целых чисел>];

Имя – имя объявленной пользователем локальной матрицы.

Список целых чисел – последовательность от 1 до 6 положительных целых чисел, разделённых запятыми. Каждое число определяет размерность матрицы.

Рассмотрев основные операторы, можно перейти к созданию собственной процедуры. Назовём её MyProc. Пусть наша процедура имеет один формальный параметр FormalPar и одну собственную (локальную) переменную LocalVar. Тогда синтаксис должен быть примерно следующим:

PROCEDURE         MyProc (FormalPar)            BEGIN

TEMPORARY    LocalVar;

END;

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

Теперь стоит поговорить об особенности PLUS процедур.

Сравнивая такие понятия как "функция" и "процедура" в различных языках программирования нельзя ничего однозначно сказать об их различиях. Хотя приняты следующие определения: