Техника - молодёжи 1987-11, страница 55

Техника - молодёжи 1987-11, страница 55

сделать так, чтобы коню некуда было пойти (он передвигается, как соответствующая шахматная фигура). Количество охотников произвольно и задается в начале игры. Чем меньше охотников, тем труднее поймать коня. Вот программа «Мустанг»:

Ш

00.1 01.0 02.ПД

05. ИЛА 04. ИП0 05.3

06.x

07.+ О&КППВ 09.КППС 10.2 11.0

12. ПД

13. ИПА

14.И00 15.2 16. *

17.+

18. КППЬ

19.КППС

20.} 21.5

22.ПД

23. ИПА

24. ИПО

25./-/

26. ПО 27.5 25.x

29.+

30. П9 31.1 32-

33.КППВ

34.КППС

35. Сх

36. ПД

37. ИП9

38.1

39.+

40.КППВ

41.КШ1С

42.Сх

43. ПД

44.Кх*°Д

45. i

46. ПЕ

47. ВП 4в.К*.оД

49.Кх»оД

50.-

51.Fbx 52.8

53.-

54.К*<оД

55.®

56. Fcos

57. КхмД

58.Кх>оД

59. ИПЕ 60.1 61.0 62.+

63.+

64. ПД

65. ВП 66.1

67. t

68. Н

69. F10*

70. 8 71 +

72.КИ1ВД

73. К©

74. Vo

75.КИПД

76,-

77.Fx<o 78.80

79. Vo

80. ИПЕ

81. ПА

82. с/п

83. П9

84. ПЕ

85.86. ПД 87.9 88-+

89. К{}

90. Fx" 91.99 92. ИПД 93.1 94.1

После ее ввода нужно установить переключатель Р—Г в положение Г и ввести исходные данные: 44 ПВ 75 ПС 4 ПО. В регистрах 1—8 хранится изображение игрового поля с охотниками: регистр 1 — это первая горизонталь, регистр 2 — вторая и так далее. Единички в дробной части изображают охотников, нолики — незанятые клетки, а восьмерка слева никакой роли не играет, это просто признак выполнения логической операции. Если, скажем, в начале игры охотников девять, причем они занимают все поля на первой горизонтали и крайние поля на второй, ситуация изображается так: 8,1111111 П1 8,1000001 П2 8 ПЗ П4 П5 П6 П7 П8. В регистр А вводится двузначная координата мустанга, допустим, 54 ПА. Первая цифра — номер клетки по вертикали, вторая — по горизонтали. В начале игры нужно отдать дополнительную команду БП 83. Ход задается так: (координата охотника, который ходит) ПП, (координата поля, куда он ходит) С/П. Допустим, 12 "ПП 34 С/П. В ответ ПМК выдает на индикатор двузначную координату мустанга. Проконтролировать положение охотников можно, просмотрев регистры 1—8. Если мустанг пойман, ПМК зацикливается. Охотники

могут ходить только по диагонали, в противном случае на экранчик выводится дробное число и надо повторить ввод. Привожу пример игры с заданным выше комплектом исходных данных (запись 11/55=66 означает, что охотник, стоявший на поле 11, сходил на 55, а ПМК ответил 66):

11 /55=66; 21 /43=74; 17/53=86;

95.+-

96. к{}

97. Fx-o 98.82 99. ИПЕ АО.КППВ А1.КПД А2.ИП9 АЗ.КППЬ А4.КПД

15/33=65 45/56=84 14/32=72 64/55=51 53/64=72 55/66=84 мустанг пойман ся.

33/44=57; 27/45=76; 13/31=63; 31/42=51; 55/64=84; 56/65=63; 12/45=72; 45/63=84; 44/53=84; 42/51=72; 66/75=72; 75/84= ПМК зациклил-

НОВОСТИ ЕГГОГОЛОГИИ

«Здравствуй, дорогая редакция,— пишет нам учащийся СПТУ-114 из Гомеля С. Володько.— Вот опять у меня собралось несколько открытий, и я спешу сообщить вам о них.

1. Вы составили уже несколько программ, где использован нестандартный оператор «точка». Он вызывает в регистр X число из особого регистра памяти — назовем его Хг. Чтобы записать туда число, можно воспользоваться командами FBx, «стрелка вверх» и так далее. Но во всех случаях при записи числа в регистр Хг содержимое стека меняется. А как быть, если это нежелательно? Вот здесь-то и пригодятся команды, коды которых начинаются на «пусто» и о которых вы неоднократно писали. Кстати, в шестнадцатиричной системе счисления после Е идет буква F, которая на наших ПМК обозначается как «пусто». И поэтому, раз все остальные символы имеют буквенные обозначения, то почему бы не называть символ «пусто» буквой F? Так вот, все команды, коды которых начинаются с «пусто», заносят число в регистр Хг, не меняя содержимого стека. Воспользуемся, к примеру, программой:

39.Fx2 40. FABT В/О КППА FnPT 41.Fx2 42.ПО 43.. 44.С/П. По адресу 40 дана последовательность команд для получения кода FA («пусто — минус»). Скомандуем теперь FABT 3 БП 39 С/П. На

ejwwijwmbioc mji

индикаторе 9 (три в квадрате), а в регистре 0—81 (три в четвертой степени). Если бы в верхних регистрах стека находились какие-нибудь числа, с ними бы ничего не случилось.

2. Теперь расскажу об удивительном свойстве команды В/О. Вот программа:

00.1 01.ВП 02.5 03.0 04.Fx2 05.В/О. Перейдем в режим ABT и скомандуем В/О С/П. На индикаторе ЕГГОГ. Команды С/П не было, а вычисления остановились, следовательно, команда В/О служит остановом, если в регистре X находится «сверхчисло». А куда передалось управление? РПРГ. Оказывается, на адрес 01, так как стек возврата из подпрограмм был очищен. Вернемся в режим АВТ и наберем 1 ВП 50 Fx2 Fx2 1234Х-Мы записали в стек возврата число 301234. В/О С/П FnPF. На сей раз управление передалось на адрес 31. Продолжим: FABT В/О С/П РПРГ. Теперь мы попали на адрес 13. Отсюда вывод: если в регистре X находится «сверхчисло», то команда В/О передает управление на адрес, записанный в стеке возврата, после чего программа останавливается.

3. В инструкции к ПМК написано, что аргумент тригонометрических функций не может быть больше Ю10. Установим переключатель Р—Г в положение Г, наберем 1 ВП 10 и возьмем от этого числа синус. На индикаторе ЕГГОГ, все правильно. Теперь наберем 1 ВП 50 Fx2 и возьмем синус от «сверхчисла». ПМК выдает ответ /-9,8480774- 10~'/. Правилен ли он? Возьмем синус от 1 ВП 5, 1 ВП 6, 1 ВП 9. Во всех случаях горит этот же результат. Следовательно, ответ правильный. Верный результат будет получаться для чисел вплоть до 9,9999999- Ю100. А дальше начнется то, что немного напоминает «числовой океан», о котором вы писали.

Одна голова — хорошо, а больше — лучше. Я предлагаю всем вместе разобраться в моем открытии, причем не только для синуса, но и для косинуса, и для тангенса».

Ну что ж, проблема поднята интересная. Действительно, каким образом вычисляет ПМК тригонометрические функции «сверхчисел»? В каких случаях машинка выдает правильный результат и от чего это зависит? Ждем ваших соображений.