Пять уроков Великого Магистра, или повесть о том, как Петя Бочкин изучал программирование | страница 31



— А что же делать? — спросил Петя.

— Как что? — удивился Казимир. — Нужно делать то, что говорит нам карта. А она говорит: в западной части бухты мин гораздо меньше, чем в восточной. Значит, идти по западной части безопаснее. А тебя почему-то несет в восточную.

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

— Почему?

— А разве вы не понимаете? У меня не хватает для этого команд.

— Хватает, — сказал Казимир. — Нужно, Петя, нужно, чтобы «Котангенс» выходил в море по западной части бухты.

— Казимир, вы меня прямо удивляете. Не может «Котангенс» идти по западной части. Для этого Исполнитель должен понимать команду «Лево руля». Но она же не входит в набор стандартных команд. Корабль может идти или на север, или на восток. Неужели это не понятно?

— Корабль может идти на запад, — упрямо сказал Казимир. — При этом Рулевой не обязан понимать команду «лево руля». Достаточно двух команд «право руля» и «полный вперед».

— Как это? — спросил Петя.

— Сдаешься? — спросил Казимир.

— Нет, — сказал Петя, — подумаю.

ОПИСАНИЕ НЕСТАНДАРТНЫХ КОМАНД

— Казимир, — сказал Петя. — А что если после команды «право руля» и «полный вперед» перед кораблем опять появится мина?

— Прекрасный вопрос! — воскликнул Великий Магистр. — В самом деле, что — тогда?

— Тогда стандартная проверка обнаружит эту мину, и, значит, рулевой снова выполнит команду «право руля»…

— И…

— …и корабль пойдет в обратную сторону!

— Следовательно, рулевой выполнит команду «развернуться», верно?

— Верно.

— А ведь эта команда не входит в набор стандартных команд, так?

— Так. Просто рулевой два раза выполнит стандартную команду «право руля».

— Выходит, для того, чтобы повернуть корабль влево, рулевой должен…

— …Три раза выполнить команду «право руля»! — радостно ответил Петя.

— Вот мы с тобой и подошли к одному из самых интересных разделов программирования — описанию нестандартных команд через стандартные, — объявил Казимир.

Он щелкнул пальцами, и машинка сама напечатала текст:

  ПРАВО РУЛЯ
  ПРАВО РУЛЯ
  ПРАВО РУЛЯ
КОНЕЦ

— Что здесь написано? — спросил Казимир.

— Команда «лево руля», — ответил Петя.

— Хорошо. Тогда составь программу выхода в открытое море вдоль западного побережья бухты.

Петя напечатал текст:

ПОЛНЫЙ ВПЕРЕД
ЕСЛИ
ПО КУРСУ МИНА
ТО
  ПРАВО РУЛЯ
  ПРАВО РУЛЯ
  ПРАВО РУЛЯ
ИНАЧЕ
  КУРС — НОРД
КОНЕЦ УСЛОВИЯ
КОНЕЦ

Казимир прочитал программу и сказал:

— Мы с тобой знаем, что программы могут состоять из трех программных конструкций. Скажи — каких?