Техника - молодёжи 1986-05, страница 56алгоритмическая гимнастика дем к блокам вычисления текущих значений вспомогательных и основных переменных Прежде всего несколько слов о физической стороне задачи. На ракету, находящуюся в постоянном гравитационном поле при отсутствии атмосферы (а именно такая простейшая модель использована в программах «Луно-лет-1» и«Лунолет-2»), действуют сила тяжести и тяга двигателя. Величина реактивного ускорения зависит от секундного расхода топлива, а направление определяется углом тяги. Этот угол вводится непосредственно (см. темный блок в середине рисунка). Кроме того, здесь же вводятся расход топлива на данном шаге й время, за которое он производится. После этого блок вычисления вспомогательных переменных определяет секундный расход и реактивное ускорение. Эти результаты передаются в блок вычисления текущих значений основных переменных. Его задача — найти значения координат и скоростей после отработки двигателя. Так как ускорения постоянны, то используются хорошо знакомые из школьной физики формулы равноускоренного движения. Одновременно под-считывается и количество оставшегося топлива. Теперь, казалось бы, самое время выводить полученные величины на индикатор, но на рисунке путь к блоку вывода почему-то извилист'и лежит через несколько проверок. В чем дело? Действительно, игровые программы принципиально отличаются от обычных расчетных. Когда мы просто решаем уравнения, то действуем по принципу «куда прилетели, туда и прилетели». Вычислительная техника, неважно, компьютер или микрокалькулятор, подсчитывает координаты и скорости в конечной точке и выводит их на дисплей или индикатор. Нам остается только ознакомиться с результатами. В игровой же программе мы периодически вводим управляющее воздействие, в нашем случае — изменяем величину и направление реактивного ускорёния. Но ведь это можно сделать не всегда. Если, скажем, ваш лунолет превратился в «землерой», то есть высота получилась отрицательной, дальнейшая игра бессмысленна. Чтобы выявить такого рода ситуации, в алгоритм и введены блоки проверок. Посмотрим же, как они работают. Прежде всего выясним, сколько топлива осталось после маневра? Если запас окажется меньше нуля, значит, такой маневр невозможен, ведь летать на «отрицательном топливе» нельзя. Нужно вернуть лунолет в ту точку траектории, где кончилось горючее. Микрокалькулятор определяет, сколько секунд назад опустели баки, и передает это значение (отрицательное!) в блок вычисления основных переменных. Там оно подставляется в уравнения движения, и «бортовой компьютер» отводит наш летательный аппарат назад, по той же самой траектории, в точку, где иссякло топливо. Именно с ее координатами и соответствующими скоростями продолжает работать программа. Следующей «становится на проверку» высота. Если она неотрицательна (выход из блока сравнения по стрелке «нет»), то все в порядке. Если же лунолет уже «забурился» в недра планеты, надо извлечь его оттуда. Как это сделать? «Бортовой компьютер» исправляет ошибку пилота тем же методом, что и в случае перерасхода топлива. Подсчи-тывается время «полета» под поверхностью планеты, и его значение (опять-таки отрицательное) передается в блок вычисления основных переменных. Лунолет возвращается по траектории назад, в точку финиша. Блок вывода сообщает о том, где мы оказались (значение горизонтальной координаты) и насколько мягкой была посадка (величины скоростей). Если же высота еще положительна, то наступает черед следующей проверки — «биологической». Из-за слишком большой перегрузки экипаж лунолета мог потерять сознание (выход по стрелке «нет»). В этом случае управление берет на себя автоматика — выводится аварийный сигнал, останавливается двигатель, и некоторое время полет происходит по инерции. Оно определяется разностью реактивного и предельно допустимого для пилотов ускорений, что достаточно разумно для игровых программ. Блоки вычисления переменных определяют, где окажется аппарат, когда экипаж вновь сможет «взять в руки штурвал». Если же перегрузки не превысили нормы, то мы выходим из блока сравнения по стрелке «да» на последнюю проверку: наличия топлива. При пустых баках управление вновь передается бортовому компьютеру — он задает нулевой расход (ведь летать-то уже не на чем), большое (порядка тысяч секунд) время и передает эти данные в блок вычислений. Пилотам остается лишь созерцать аварийный сигнал и ждать, когда они «куда-ни-будь свалятся» (по меткому выражению Лунного Коршуна). Если же топливо еще есть, то можно продолжать полет. ПМК «докладывает обстановку» и ждет очередной команды с пульта. Приведенная блок-схема удобна для постановки игры на персональном компьютере, так как его возможности несравненно больше, чем у микрокалькулятора. Первые шаги в этом направлении уже сделаны. «В соответствии с Основными направлениями реформы общеобразовательной школы исполнительный комитет Октябрьского районного Совета народных депутатов Тюменской области определил меры по обеспечению компьютерной грамотности учащихся средних школ района,— пишет в редакцию председатель исполкома А. М. Ва-хонин.— Постановлением Октябрьского районного комитета КПСС и Октябрьского райисполкома от 24 апреля 1985 года принято решение создать вы числительный центр в опорной Сергин-ской средней школе и серьезно оснастить его новейшими современными персональными компьютерами, выделив на это материальные средства от базовых предприятий, и считать этот центр учебно-методической базой в масштабу школ района по изучению методики преподавания основ информатики и вычислительной техники... В настоящее время создана лаборатория, где установлены две микро-ЭВМ ДЗ-28, дисплеи ИЭ-00-13. термопечатающее устройство... Машины работают по 9 часов в сутки, машинного времени, чтобы удовлетворить всех желающих, явно не хватает — мало машин. Интерес к вычислительной технике и программированию чрезвычайно высок. Особенно заинтересовались дети статьями о фантастических электронных играх на космические темы, напечатанными в журнале «Техника — молодежи». Девятиклассники Латыпов Урал и Заволока Владимир, слушатели факультатива «Программирование на БЕЙСИКе», решили перенести все эти игры на машину ДЗ-28. Сейчас программа «Лунолет-1» переведена на язык БЕЙСИК. Программисты полностью разобрались в алгоритме, нарисовали блок-схемы. Программа получилась очень красивой, с интересными комментариями, объяснениями непонятных ситуаций, возникающих при взлете и посадке. Игра идет в виде урока, который ведет ЭВМ. Сейчас началась работа над «Лунолетом-2». В перспективе — все ваши интереснейшие программы перенести на микро-ЭВМ». Мы ознакомились с программой тюменских школьников, любезно предоставленной руководителем юных программистов С. П. Митрофановым. Сделана она достаточно профессионально, кроме того, ребятам не откажешь в чувстве юмора. Так, при посадке со скоростью, превышающей 10 м/с, на дисплее появляется сообщение: «Я вас могу успокоить лишь тем, что по вас плачут родственники и друзья». Ебли же посадка была удачной, то компьютер «присваивает вам очередное звание» (вплоть до генерала) и предлагает совершить следующий полет в более сложных условиях. Кроме того, игра снабжена и комплексом предстартовых проверок, когда надо ответить на ряд несложных теоретических вопросов, касающихся будущего полета. Но здесь надо быть осторожным и внимательным. По крайней мере, представитель администрации КЭИ, заявивший, что выдерживает пятнадцатикратные перегрузки, немедленно был «снят с полета за хвастовство». Персональный компьютер позволяет также вести игру в реальном масштабе времени. Это, конечно, приближает ее к действительности. Пока администрация КЭИ такими программами не располагает и надеется здесь на помощь читателей. Сергей АЛЕКСЕЕВ, инженер 54 |