Техника - молодёжи 1986-02, страница 59

Техника - молодёжи 1986-02, страница 59

исходные данные: (расстояние от центра планеты, м) ПА (вертикальная, точнее, радиальная скорость, м/с), ПВ (угловое расстояние от линии планета-луна, градусы; знак «минус» соответствует отставанию от луны), ПС (горизонтальная,точнее, трансверсаль-ная скорость, м/с) ПО. В регистр 7 записывается гравитационная постоянная планеты: (радиус планеты, м) Fx2 (ускорение силы тяжести на поверхности планеты, м/с2)ХП7. В регистр Д — угловая скорость перемещения луны по орбите (в отличие от «Лунолета-4», здесь она задается в градусах за секунду). ИП7, затем набрать радиус орбиты луны в м (для нашей Луны 3844 ВП 5) Ч-FBx Fx2 -f- FV 180 X Fjt -г- ПД- Если обнулить этот регистр, в результате расчетов получится обычная Кеплерова траектория — эллипс, парабола либо гипербола. Наконец, в регистр 8 вводится характерный масштаб — интервал расстояний в м, через который следует менять видеосообщения, чтобы представить себе ситуацию. Для системы Земля — Луна очень удобны 100 тыс. км: 1 ВП 8 П8. Первое сообщение будет выводиться при дальностях свыше 300, второе — в интервале 200—300, третье — 100—200 и четвертое — при дальностях менее 100 тыс км. Переключатель Р — Г при работе с программой «Кеплер» нужно установить в положение Г.

Начинается она, как обычно, командой В/О С/П. При остановке на индикаторе загорается видеосообщение о расстоянии до планеты, переменные находятся в прежних регистрах. Проанализировав ситуацию, нужно задать время движения до следующего останова и нажать С/П. По мере приближения к планете следует уменьшать шаг: на дальностях свыше 300 тыс. км рекомендуются суточные интервалы (примерно 1 ВП 5), при появлении следующего видеосообщения нужно переходить на 8-часовые интервалы (3 ВП 4), затем на 3-часовые (1 ВП 4), наконец, при дальностях менее 100 тыс. км —часовые (3 ВП 3). При приближении к перигею интервал следует сократить по крайней мере до 1000 с. (При совершении других космических операций шаг нужно выбирать так, чтобы по рассчитанным точкам можно было построить плавную кривую. Есть и еще один способ проверки: перейдя в новую точку, задайте то же самое время, но с отрицательным знаком. Если ваш корабль вернется на прежнее место — значит, шаг выбран правильно.)

Многие читатели просят нас помещать блок-схемы программ и комментарии к ним, разъяснять «хитрые» приемы, не отраженные в инструкции к ПМК, но употребленные при их написании. Другими программами цикла займемся по окончании рейса — многие блоки в них частично или полностью совпадают. Программа же «Кеплер» — чисто счетная, блок-схемы она не требует. Вы

ходной блок (00—15; в скобках будем указывать адреса команд) сравнивает текущее расстояние до центра планеты с хранящимся в регистре 8 масштабом и в зависимости от результатов сравнения выдает одно из находящихся в регистрах 2—5 видеосообщений. По сути, это совершенно автономная программа: она обслуживается «собственными» регистрами I—6 и 8, не участвующими в работе счетного блока. Выходной блок можно полностью отключить, поставив в конце программы команду БП 15; на вычислениях это не отразится. Можно его организовать экономичнее, а количество выводимых сообщений «довести до пяти, шести и даже семи (можно взять «напрокат» рабочий регистр 9 из счетного блока, а также «обменять» один из «выходных» регистров на регистр 7 или Д). Нетрудно заставить ПМК выводить в регистр У текущее расстояние до центра планеты или даже высоту полета (для последней операции придется в один из регистров, освободившихся при реорганизации блока, ввести радиус планеты). Словом, предоставляем читателям преобразовать данный блок по своему вкусу; можете считать это частью нашего очередного задания.

Начало счетного блока (16—41), исходя из заданного времени, приближенно определяет новую угловую координату космического корабля относительно Луны. Основная же его часть (42—93) вычисляет по известным соотношениям (законам сохранения энергии и момента количества движения, а также уравнению траектории) новые значения радиальной координаты и обеих компонент скорости. Соответствующие формулы есть в любой книжке по небесной механике или астродинамике.

Любопытных, по нашему мнению, моментов в данной программе два. Во-первых, обратите внимание на фрагмент (45—47): здесь происходит «подъем» вычисленного командами (42—44) момента количества движения до регистра Т, число «цепляется» за конец стека, остается в нем до самых последних команд и неоднократно используется в вычислениях (в том числе при делении по адресам 89 и 92). При этом экономится один адресуемый регистр и довольно много ячеек программной памяти (число находится в стеке, и отпадает необходимость в командах вызова ИП).

Вторая особенность — отсутствие команды перехода в конце программы: возврат на начало происходит автоматически. Такое «кольцевание» возможно далеко не во всякой программе. Работа «Электроники Б3-34» («МК-54») характеризуется 160-шаговым циклом (к сожалению, инструкция к ПМК о нем не упоминает): если в программе нет переходов, выполняются сначала команды, записанные по адресам 00—97 (главная ветвь), затем по адресам 00—13 (короткая побочная ветвь), потом по адресам 00—47 (длинная побочная ветвь), после чего управление

вновь передается на начало главной ветви программы. Побочные ветви имеют собственную систему адресации: в короткой ветви адресам 00, 01 и т. д. соответствует 98, 99, АО... А9, ВО, В1; в длинной — В2... В9, СО... С9, ДО... Д9, ЕО... Е9, О... 9. Букве Е на клавиатуре соответствует стрелка вверх (ввод в стек); «пустышке», стоящей на первом месте в последней десятке адресов, соответствия нет — команды переходов по ним можно записать в программу лишь с помощью довольно «хитрых» приемов; как-нибудь мы о них расскажем Начиная с адреса С1, в длинной побочной ветви начинается «темная зона»: коды команд, записанных по соответствующим адресам главной ветви, при переходе в режим ПРГ на индикатор не выводятся, однако в режиме счета эти команды исправно выполняются. Побочные ветви 160-шагового цикла можно использовать на практике для весьма замысловатых операций. Например, при безусловном переходе на адрес Е9 выполняются сначала действия, записанные по адресам 37—47, затем, без всякой дополнительной команды, произойдет возврат на адрес 00 главной ветви.

Применительно к программе «Кеплер» это означает следующее: после отработки главной ветви управление передается на начало короткой побочной ветви, однако затем команды переходов, записанные по адресам 08—09 и 12—13 (именно на 13-й команде заканчивается побочная ветвь!), возвращают управление на главную ветвь программы. Если бы этих команд не было, пришлось бы замкнуть программу командой В/О или БП 00 (01). Имейте это в виду при ваших модификациях выходного блока.

Из 7-й части отчета А. Перепелкина следует, что «абсолютная» метеоритная защита невозможна. Математической моделью очень надежной, но все-таки уязвимой противометеоритной системы служит довольно простая, однако не столь уж бесхитростная программа «Защита от нападения»:

оо.по of вп огл озгн о^.вп ost

06.ВП 07. • 08. Fx* 09.F.yx10.nnO 11.c/n

(по адресу 07 записана десятичная точка). Ваша задача — подобрать такой «метеорит» (комбинацию букв и цифр), чтобы он прошел всю программу насквозь. Каждую «атаку» начинать командой В/О С/П. Если комбинация подобрана правильно, при останове на индикаторе будет гореть она же, во всех остальных случаях — сообщение ЕГГОГ. Подходящих чисел (вернее, мантисс — порядок может быть произвольным) не так много: их можно получить из рассмотренных в последних двух номерах (№ 12 и № 1) шифров с помощью данных здесь же приемов (кстати, одно из них является промежуточным результатом последователь

56