Приложение Решения задач о регистровых машинах

упражнение 1

программа 1:

а. Сколько шагов потребуется регистровой машине, чтобы сложить+и получить 7, выполняя программу(считая Кон отдельным шагом)?

Ответ: шесть шагов. Три декремента, два инкремента, одно окончание программы (последний декремент – переход на ноль).

б. Сколько шагов потребуется машине, чтобы сложить+ 2?

Ответ: двенадцать шагов. Шесть декрементов, пять инкрементов и одно окончание программы.

1(Какой из этого можно сделать вывод?)

Ответ: порядок содержимого может иметь большое значение, так что вам может показаться необходимым ввести правило всегда помещать меньшее число в регистр 1, но, если для этого вам сначала придется сравнивать два числа, чтобы выяснить, какое из них меньше, в итоге вам потребуется больше шагов, чем для сложения!

упражнение 2

а. Напишите РПА-программу для этого графа потока. (Обратите внимание: поскольку программа разветвляется, вы можете пронумеровать шаги несколькими способами. Неважно, какой из них вы выберете: главное, чтобы на верные следующие шаги указывали команды безусловного перехода.)

б. Что происходит, когда программа пытается вычестьиз 3 илииз 4?

Программа останавливается с нулем в регистре 4.

в. Какая возможная ошибка предотвращается обнулением регистраперед попыткой вычитания на шагевместо шага 4?

Если на старте и в регистре 1, и в регистре 2 были нули, в конце программа могла выдать абсурдный ответ (либо – 0, либо число, отличное от 0 и 1, в регистре знака).

упражнение 3

а. Нарисуйте граф потока (и напишите РПА-программу) для умножения содержимого регистрана содержимое регистра 3, поместив ответ в регистр 5.

б. (По желанию) Используя копирование и перемещение, улучшите программу умножения, созданную в задаче а: когда она закончит работу, изначальное содержимое регистраи регистравосстановится, так что вы сможете легко проверить исходные данные и ответы на правильность по завершении программы.

в. (По желанию) Нарисуйте граф потока и напишите РПА-программу, которая изучает содержимое регистраи регистра(не разрушая их!) и записывает адрес (или 3) регистра с большим содержимым в регистр 2 или помещаетв регистр 2, если содержимое регистрови 3 равно. (После выполнения этой программы содержимое регистраи регистрадолжно остаться неизменным, а регистрдолжен показывать, равно ли их содержимое, а если нет, то в каком из регистров содержимое больше.)

упражнение 4 (по желанию)

Нарисуйте граф потока и напишите РПА-программу, которая превращает регистровую машину в простой карманный калькулятор, следующим образом:

а. Используйте регистрдля операции:

= ADD

= SUBTRACT

= MULTIPLY

= DIVIDE

б. Поместите числа, с которыми будут производиться манипуляции, в регистрыи 3.

(Таким образом, 3 0 6 будет означать+ 6; 5 1 3 будет означать 5–3; 4 2 5 будет означать* 5; а 9 3 3 будет означать? 3.) Затем поместите результаты операции в регистры 4–7, используя регистрдля знака (гдеозначает +, а 1 означает –), регистрдля численного ответа, регистрдля возможного остатка в случае деления, а регистрдля сообщения об ошибке ввода (либо требовании делить на ноль, либо неопределенной операции в регистре 2).

Лето — время эзотерики и психологии! ☀️

Получи книгу в подарок из специальной подборки по эзотерике и психологии. И скидку 20% на все книги Литрес

ПОЛУЧИТЬ СКИДКУ