Казимир приблизился к орудию.
— А теперь вернемся к нашему обеду. Можешь ли ты сразу дать спецификацию для Исполнителя?
— Значит, так. Три матроса любят сгущенку, а три — тушенку. Поэтому Кристина должна выстрелить три раза сгущенкой и три раза — тушенкой. Всего шесть раз.
— Как бы ты назвал переменную, которая будет фигурировать в программе?
— Я бы назвал ее «заряд».
— Можно и так, — сказал Казимир. — Пиши программу.
И Петя написал:
ПОДОЙТИ К ОРУДИЮ
ЗАРЯД:= СГУЩЕНКА
ПОВТОРЯТЬ 3 РАЗА
ЕСЛИ
ОРУДИЕ НЕ ЗАРЯЖЕНО
ЗАРЯДИТЬ ОРУДИЕ
ВЫСТРЕЛИТЬ
КОНЕЦ ЦИКЛА
КОНЕЦ УСЛОВИЯ
ЗАРЯД:= ТУШЕНКА
ПОВТОРЯТЬ 3 РАЗА
ЕСЛИ
ОРУДИЕ НЕ ЗАРЯЖЕНО
ЗАРЯДИТЬ ОРУДИЕ
ВЫСТРЕЛИТЬ
ИНАЧЕ
ВЫСТРЕЛИТЬ
КОНЕЦ ЦИКЛА
КОНЕЦ УСЛОВИЯ
КОНЕЦ
— Правильно? — спросил Петя.
— Правильно.[3]
— Можно вводить?
— Погоди. Не кажется ли тебе, что программа несколько длинновата?
— Ну и что? Зато правильно.
— После операторов присваивания идут совершенно одинаковые блоки, состоящие из конструкций разветвления и цикла…
— Я и сам вижу.
— Я знаю способ, который позволяет сделать программу в два раза короче. Нужно пометить специальной меткой весь блок команд, который следует после первого оператора присваивания, а после второго оператора присваивания — применить оператор перехода.
— Подождите, Казимир! Я ничего не понимаю. Как — пометить? Что это за «оператор перехода»?
— Меткой обычно служит какая-нибудь буква латинского алфавита, чаще всего «L». Ее ставят перед той командой, к которой нужно вернуться в ходе выполнения граммы. А приказом к возвращению к помеченной команде служит оператор перехода. Обозначается он так: «перейти к…». Или по-английски: «go to». Если в тексте граммы имеется выражение: «перейти к…» (или «go to…»), то Исполнитель прервет последовательный порядок выполнения команд, отыщет в своей памяти команду, помеченную «L», и выполнит именно эту команду.
— Я все понял, — сказал Петя. — Пишу новую программу с меткой и оператором перехода. Получается:
ПОДОЙТИ К ОРУДИЮ
ЗАРЯД: = СГУЩЕНКА
L ПОВТОРЯТЬ 3 РАЗА
ЕСЛИ
ОРУДИЕ НЕ ЗАРЯЖЕНО
ТО
ЗАРЯДИТЬ ОРУДИЕ
ВЫСТРЕЛИТЬ
ИНАЧЕ
ВЫСТРЕЛИТЬ
КОНЕЦ УСЛОВИЯ
КОНЕЦ ЦИКЛА
КОНЕЦ МЕТКИ
ЗАРЯД: = ТУШЕНКА
ПЕРЕЙТИ К L
КОНЕЦ МЕТКИ
КОНЕЦ
— Отлично![4] — сказал Казимир. — Перейдем к Кристине.
Через секунду Кристина открыла беглый огонь из кулинарно-артиллерийской установки, и шестеро наших тружеников весла и уключин обрели, наконец, то, о чем они так неистово мечтали.
— Не будем им мешать, — сказал Казимир, — пусть едят.
— Казимир, — спросил Петя, — покатайте меня на вашем клипере, а?
— Что значит покатайте? — строго спросил Казимир. — На боевых кораблях не катают. На них воюют. Кстати, я тебе не говорил, что завтра у нас морской бой с кракелюрами?
В это время стена дрогнула и начала медленно сдвигаться.
Последнее, что услышал Петя из своей комнаты, были слова Казимира:
— Ты назначен адмиралом!