Пусть i ∈ ℕ, i > 0. Далее:
Ri обозначение регистра и регистровой машины;
[Ri] обозначение содержимого регистра i, это может быть любое натуральное число.
Синтаксис
I. Элементарные команды
Ia. Ai это приложения RM.
Ib. Si это приложение RM.
II. Процессы построения
IIa. Если P и Q являются программами RM, то PQ также являются программой RM.
IIb. Если P является программой RM, то (i P) также является программой RM.
III. Реализация
Выполнение программы РМ на один балл.
Семантика
I. Элементарные команды
Ia. Подсчет: Ai увеличивает содержание Ri на единицу.
Ib. Подсчет в обратном направлении: если [Ri] > 0, Si уменьшает содержание Ri на единицу, иначе его содержимое остается нулевым.
II. Процессы построения
IIa. Последовательное исполнение: PQ сначала выполняет P, затем Q.
IIb. Контролируемое повторение: (i P) выполняет P пока значение регистра i не будет равно нулю.
III. Реализация
Достигнута командная конечная точка: завершение обработки программы RM.
Pi<α> = Q является правильным определением программы, если
P ∈ {A, ... Z}.
i ∈ {a, ... z}.
α список индексов, где:
i списком, где i ∈ {a, ... z}.
если β является списком, β, i также является списком, где i ∈ {a, ... z}.
Q является действительной программой (как определено выше) только с i ∈ {a, ... z}.
i или <α> можно опустить, но по крайней мере, один из них должен быть указан.
Приложения Ai и Si нельзя перезаписать.
Семантика
Семантика подпрограмм в значительной степени соответствует семантике программы.
Строчные буквы - переменные. При исполнении они заменяются номерами, соответствующими регистрам. Переменные, не являющиеся аргументами, то есть не отображающиеся слева от знака равенства, считаются вспомогательными регистрами. Вспомогательные регистры создаются и очищаются при необходимости при выполнении программы и не указываются в области Регистра.
Пример (предустановленной) подпрограммы: Ti<j>=(j SjAi).
При вызове Ti<j> в программе переменные i и j заменяются реестрами, например T2<1>. Вызов выполняет (1 S1A2).
Если функция f вычисляется программой RM Pf функция номера шага вычисления RS Pfможет быть использована для определения усилий, необходимых для вычисления. В расчет усилий включаются все исполненные элементарные команды, то есть все необходимые для расчета случаи выполнения Ai i Si.
Пример:
С помощью Pa: (1S1A2) можно вычислить функцию a(x1,x2)=x1+x2.
В этом случае вычислительные усилия зависят только от x1, но не от x2 ab.
Результаты арифметической шаговой функции для Pa: RSPa(x1)=2x1
Быстрый старт
Есть два разных режима:
Программный ввод/редактирование
Последовательность программ
Чтобы переключиться между этими двумя режимами, необходимо ввести (синтаксически) правильную программу РМ в прямоугольное белое поле, свободное, за исключением одной черной точки.
Изменение вносится с помощью переключателя «Инициализировать программу» / «Редактировать программу», который находится слева вверху, непосредственно под заголовком «Программа RM».
RM-программа
Регистр
Основная программа требует больше регистров, чем было создано.
R1:
R2:
R3:
R4:
Установите значения регистра на:
Программа
.
✓
Подпрограмма
Загружать программы по умолчанию при инициализации
История программы
(со стеком рекурсии)
Шаги расчета: 0
Программа может попасть в бессконечный цикл, так как в стек рекурсии вносится много конфигураций без вызова Ai либо Si. Пожалуйста, проверьте приложение и, если вы хотите, чтобы оно продолжилось, снова нажмите одну из кнопок Шаг.
Программа пытается вызвать неопределенную подпрограмму. Выделите режим редактирования программы и определите подпрограмму.
Рулевое управление
Единственный шаг
Автоматические шаги с перерывом от
Рассчитать результат останавливается после шагов
Параметры
Проверяйте программы по мере ввода
Показать количество шагов расчета
Показать историю программы
Сохранение и загрузка программ
Вывод предопределенных подпрограмм, если они загружены во время инициализации
сохранить на компьютер:
нагрузка:
Предопределенные подпрограммы RM
Обратите внимание, что эти предопределенные подпрограммы RM могут быть перезаписаны вашими собственными определениями.
вызов
RM-программа
Значение
Li<i>
(iSi).
погасить
Ti<j>
(jSjAi).
транспортировать
Ki<j>
(jSjAiAh)(hShAj).
копировать
Ae<i,j>
Ke<i>Ke<j>.
нормированное сложение
Me<i,j>
Kh<i>(hShKe<j>).
нормированное умножение
Инструкции
Программное обеспечение RM состоит из двух основных частей. В первой части, состоящей из регистра и программы, определяется текущая программа со всеми ее компонентами. Во второй части, озаглавленной «Управление», выполняется программа. Одновременно активна только одна из двух частей. Активная часть имеет белый фон, а неактивная — серый. Вы можете вносить изменения и выполнять действия только в активной части.
Для переключения между основными частями щелкните кнопку инициализации программы (или редактирования программы) над основными частями.
Вы можете переключиться в область выполнения только в том случае, если все определения синтаксически правильны и вы создали достаточное количество регистров (без вспомогательных регистров). Синтаксически некорректные программы обрамляются красным и выдается предупреждение, если отсутствуют регистры.
Если вы переключитесь на домен определения, текущий расчет будет прерван.
Начальные значения для регистров вводятся в области регистров.
Новая вкладка добавляется с помощью кнопки «+».
Последний регистр удаляется кнопкой «-».
С помощью кнопки "Null" все регистры обнуляются.
С помощью кнопки «Начальные значения последней инициализации» все регистры устанавливаются на свои значения при последней инициализации.
Программа регистрации машины вводится в поле Program (см. определение).
Обратите внимание: в некоторых браузерах использование клавиши "возврат" даже при наборе программ приводит к переходу браузера на предыдущую веб-страницу. Если это относится к вашему браузеру, вы можете использовать стрелку вверх вместо клавиши «возврат».
Подпрограммы определяются в области подпрограмм (см. определение).
Поля ввода для подпрограмм создаются с помощью кнопки «+».
Соответствующие поля ввода удаляются с помощью кнопки «Удалить поле ввода».
В контроллере вы выбираете, как вы хотите запустить регистрационную машину.
Если программа обнаруживает то, что кажется бесконечным циклом, вызывая подпрограммы, программа приостанавливается и выдается предупреждение. Вы можете оставить программу работающей с элементами управления, если хотите.
o Один шаг вперед, т. е. одно применение Ai или Si.
С автоматическими шагами вы автоматически продвигаетесь вперед. Длину паузы между шагами можно выбрать.
С помощью Вычислить результат вы можете запустить программу до конца, автоматически останавливаясь после определенного количества шагов, чтобы прервать любые бесконечные циклы. В случае прерывания вы можете позволить программе продолжать работу с элементами управления. Можно выбрать количество шагов, после которых следует остановиться.
Шаги расчета показывают, сколько вызовов Ai и Si уже было выполнено.
История программы показывает текущее состояние расчета регистра машины. Текущий шаг имеет светло-зеленый фон. Обратите внимание, что подвал рекурсии — это просто подвал; т. е. программа находится внизу, а вызовы подпрограмм размещены над ней.
Настройки вывода можно выполнить в области «Параметры».
В области Сохранение и загрузка программ можно вывести и прочитать программы с предопределенными подпрограммами и без них.