Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекций МТС (Д,ОБ) очное заочное.docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
788.24 Кб
Скачать
      1. Занесение емкости с запоминанием остатка и занесения остатка

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

Занесение с запоминанием остатка задается следующими строками:

ELEMENT + % VALUE

ELEMENT = 0 + % VALUE

Вторая строка, в дополнении к тому, что делает первая, требует проверки на 0.

На бункерный элемент, описываемый конструкцией ELEMENT, заносится вся величина, задаваемая конструкцией VALUE, если позволяет предельная емкость этого элемента. В противном случае элемент заполняется до предела, а остаток емкости запоминается. Этот остаток можно использовать при помощи записей вида:

ELEMENT + %

ELEMENT + %%

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

Пример:

:L3 БУ17-!

Ф101-1

БУ5-[L3]

:L4 БУ79+[L3]

ПР(С)50:0+0

БУ21+%БУ79(1) * АГР

БУ45(1)+%

БУ39(1)+%

БУ38(1)+%

БУ34(1)+%%

Данный пример производит следующие действия: на элемент 21 заносится величина первого частичного элемента 79-го бункерного. Остаток от заносимой емкости, в случае, если вся емкость не поместилась на 21-й элемент, запоминается и заносится на другие элементы в следующем порядке - на первый частичный 45-го элемента до предельной вместимости. В случае невозможности занесения всего остатка на 45-й элемент, оставшаяся емкость заносится на первый частичный 39-го элемента и т.д. Если же и на первый частичный 38-го элемента невозможно занести оставшуюся емкость, она заносится на первый частичный 34-го элемента с условием возможности занесения всей оставшейся емкости.

Кроме того, имеются записи вида

ELEMENT + & VALUE

ELEMENT = 0 + & VALUE

Они по действию аналогичны первым записям, но имеют следующие отличия: во-первых, требуется, чтобы все записи работы с остатком шли одним непрерывным блоком, без включения записей других видов. Во-вторых, перед выполнением описанных действий производится переупорядочивание этого блока так, чтобы сначала заполнялся элемент с минимальным количеством свободного места, затем с минимальным количеством свободного места из оставшихся элементов и т.д.

Примеры блоков:

БУ1+%40

ПР2:3+5

БУ2+%

БУ3(1)+%%

В качестве первой записи в этом блоке нельзя использовать запись БУ1+&40, т.к. внутри блока находится запись ПР2:3+5. Однако блок

БУ1 + &40

БУ2 + %

БУ3(1) +%%

вполне законен. Он, в свою очередь, в отличие от первого блока не гарантирует того, что сначала будет заполняться элемент БУ2.

      1. Изменение емкости элементов при помощи ссылки на другие элементы

Строки, описывающие это действие, имеют следующий вид:

ELEMENT + STATEMENT

ELEMENT - STATEMENT

ELEMENT =0+STATEMENT

Конструкция STATEMENT имеет вид:

ELEMENT1 {+ ELEMENT2 {+ ELEMENT3 {+...}}}

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

Пример:

БУ1 + БУ2 +БУ3(3)+БУ4+БУ5+БУ7

Программа вычисляет значение конструкции STATEMENT как сумму значений емкостей указанных в ней элементов, и увеличивает или уменьшает в зависимости от того, какой знак стоит в строке, емкость указанного элемента на эту величину. Строка третьего типа требует еще проверку на 0.

Кроме того, имеются записи для занесения с запоминанием остатка:

ELEMENT + % STATEMENT

ELEMENT + & STATEMENT

ELEMENT = 0 + % STATEMENT

ELEMENT = 0 + & STATEMENT

Их действие аналогично соответствующим записям, описанным выше.

      1. Изменение емкости элементов при помощи ссылки на другие строки

Строки, описывающие это действие, имеют следующий вид:

ELEMENT + STATEMENT

ELEMENT - STATEMENT

ELEMENT =0+STATEMENT

ELEMENT + % STATEMENT

ELEMENT + & STATEMENT

ELEMENT = 0 + % STATEMENT

ELEMENT = 0 + & STATEMENT

Конструкция STATEMENT имеет вид:

[@метка1 {SIGN @метка2 {SIGN @метка3 {SIGN...}}}]

Здесь SIGN один из арифметических знаков + или -, а метки указывают на расположенные выше строки, в которых производились изменения емкости.

Пример:

:М1 БУ1+3

:М2 БУ2+8

:М3 БУ 3 -10

БУ100+[М1+М2-М3]

Значение конструкции STATEMENT вычисляется как сумма и разность (в зависимости от знака) величин изменения емкости в указанных строках. Действия, задаваемые строками, аналогичны соответствующим вышеописанным строкам.

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