Пять уроков Великого Магистра, или повесть о том, как Петя Бочкин изучал программирование - [13]

Шрифт
Интервал

Казимир приблизился к орудию.

— А теперь вернемся к нашему обеду. Можешь ли ты сразу дать спецификацию для Исполнителя?

— Значит, так. Три матроса любят сгущенку, а три — тушенку. Поэтому Кристина должна выстрелить три раза сгущенкой и три раза — тушенкой. Всего шесть раз.

— Как бы ты назвал переменную, которая будет фигурировать в программе?

— Я бы назвал ее «заряд».

— Можно и так, — сказал Казимир. — Пиши программу.

И Петя написал:

ПОДОЙТИ К ОРУДИЮ
ЗАРЯД:= СГУЩЕНКА
ПОВТОРЯТЬ 3 РАЗА
 ЕСЛИ
 ОРУДИЕ НЕ ЗАРЯЖЕНО
  ЗАРЯДИТЬ ОРУДИЕ
  ВЫСТРЕЛИТЬ
 КОНЕЦ ЦИКЛА
КОНЕЦ УСЛОВИЯ
ЗАРЯД:= ТУШЕНКА
ПОВТОРЯТЬ 3 РАЗА
 ЕСЛИ
 ОРУДИЕ НЕ ЗАРЯЖЕНО
  ЗАРЯДИТЬ ОРУДИЕ
  ВЫСТРЕЛИТЬ
 ИНАЧЕ
  ВЫСТРЕЛИТЬ
КОНЕЦ ЦИКЛА
КОНЕЦ УСЛОВИЯ
КОНЕЦ

МЕТКА. ОПЕРАТОР ПЕРЕХОДА

— Правильно? — спросил Петя.

— Правильно.[3]

— Можно вводить?

— Погоди. Не кажется ли тебе, что программа несколько длинновата?

— Ну и что? Зато правильно.

— После операторов присваивания идут совершенно одинаковые блоки, состоящие из конструкций разветвления и цикла…

— Я и сам вижу.

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

— Подождите, Казимир! Я ничего не понимаю. Как — пометить? Что это за «оператор перехода»?

— Меткой обычно служит какая-нибудь буква латинского алфавита, чаще всего «L». Ее ставят перед той командой, к которой нужно вернуться в ходе выполнения граммы. А приказом к возвращению к помеченной команде служит оператор перехода. Обозначается он так: «перейти к…». Или по-английски: «go to». Если в тексте граммы имеется выражение: «перейти к…» (или «go to…»), то Исполнитель прервет последовательный порядок выполнения команд, отыщет в своей памяти команду, помеченную «L», и выполнит именно эту команду.

— Я все понял, — сказал Петя. — Пишу новую программу с меткой и оператором перехода. Получается:

ПОДОЙТИ К ОРУДИЮ
ЗАРЯД: = СГУЩЕНКА
L ПОВТОРЯТЬ 3 РАЗА
 ЕСЛИ
 ОРУДИЕ НЕ ЗАРЯЖЕНО
 ТО
   ЗАРЯДИТЬ ОРУДИЕ
   ВЫСТРЕЛИТЬ
 ИНАЧЕ
  ВЫСТРЕЛИТЬ
 КОНЕЦ УСЛОВИЯ
КОНЕЦ ЦИКЛА
КОНЕЦ МЕТКИ
ЗАРЯД: = ТУШЕНКА
ПЕРЕЙТИ К L
КОНЕЦ МЕТКИ
КОНЕЦ

— Отлично![4] — сказал Казимир. — Перейдем к Кристине.

Через секунду Кристина открыла беглый огонь из кулинарно-артиллерийской установки, и шестеро наших тружеников весла и уключин обрели, наконец, то, о чем они так неистово мечтали.

— Не будем им мешать, — сказал Казимир, — пусть едят.

— Казимир, — спросил Петя, — покатайте меня на вашем клипере, а?

— Что значит покатайте? — строго спросил Казимир. — На боевых кораблях не катают. На них воюют. Кстати, я тебе не говорил, что завтра у нас морской бой с кракелюрами?

В это время стена дрогнула и начала медленно сдвигаться.

Последнее, что услышал Петя из своей комнаты, были слова Казимира:

— Ты назначен адмиралом!

Второе авторское отступление

Итак, мы познакомились с основными конструкциями алгоритмических языков.

Их, если вы помните, пять: последовательное выполнение команд, конструкция разветвления, конструкция цикла, конструкция перехода и конструкция присвоения значения.

Но вот вопрос: а почему эти конструкции именно такие, а не какие-то иные?

Чтобы ответить на этот вопрос, нужно ответить еще на один: почему машинные языки называются алгоритмическими языками?

А для этого мы должны разобраться еще с одним вопросом:

ЧТО ТАКОЕ АЛГОРИТМ?

В математике существует несколько определений алгоритма. Я не стану их здесь приводить. Смысл этих определений, максимально упрощая дело, сводится к тому, что под словом «алгоритм» подразумевается порядок действий, которые необходимо выполнить, чтобы решить ту или иную задачу.

В нашей повседневной жизни мы то и дело используем самые различные алгоритмы.

Сегодня утром, перед тем, как выйти на улицу, я поглядел в окно. Шел дождь, и я надел плащ. Таким образом, почти не раздумывая, автоматически я решил задачу, которую можно сформулировать так: что делать, когда за окном идет дождь? А вот и алгоритм его решения: ЕСЛИ за окном идет дождь, ТО перед выходом на улицу нужно надеть плащ. Ба, да ведь это же старая наша знакомая — конструкция РАЗВЕТВЛЕНИЯ!

Для того, чтобы попасть на работу, мне нужно повернуть за угол моего дома, пройти квартал, сесть на автобус, проехать четыре остановки, выйти из автобуса, перейти улицу, повернуть направо и пройти еще один квартал. Чувствуете, как я описываю алгоритм для решения еще одной задачи? «Как от моего дома попасть к месту моей работы?» — так сформулировал бы я ее. Для ее решения нужно ПОСЛЕДОВАТЕЛЬНО выполнять все указанные действия — и задача решена.

Тоже знакомая конструкция, не правда ли?

А знаете, чем я занимался весь сегодняшний день? Копал картошку. Не один, конечно, а вместе со всем своим родным коллективом. Привезли нас на поле, раздали ведра и — вперед! Из земли — в ведро, из ведра — в мешок, мешок — в грузовик. Была у нас женщина-бригадир из местных, красивая, с перстнем на пальце. Она картошку не копала, а только командовала.

— А домой нас скоро отпустят? — спросил у нее кто-то.

— А вот, миленькие, десять машин в город отправите тогда и сами поедете, — словоохотливо ответила женщина.


Рекомендуем почитать
Животный алфавит

Весёлые квадратные зверюшки имеют свой собственный порядок: русский алфавит. Кто на букву Ю? – Юрок! А как выглядит квадратный юрок?


Как собрать кубик Рубика 3х3х3. Простой метод для начинающих

В этой книге вы найдете один из способов для начинающих, как можно быстро и очень легко собрать кубик Рубика. По моему опыту, множество людей способны собрать кубик с помощью метода, описанного в этой книге, за врем, менее 2 минут из любого его состояния запутанности. В рамках этой книги я постараюсь научить вас технике сборки кубика Рубика, которую я сам освоил еще в 1988 году, когда был ребенком. Этот метод довольно прост и позволяет научиться собирать кубик Рубика за 1,5 – 2 минуты без лишних тренировок, но с некоторым необходимым усердием.


Дудочка и барабан

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Логопедические скороговорки и считалки

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Баллада Мефистофеля

О власти золота над людьми и жажде наживы, которые толкали народы к войне, к завоеванию новых стран и отчасти к распространению и накоплению знаний, как в алхимии…О поисках золотых месторождений, эпидемиях «золотой лихорадки» и насилии, грабежах и рабстве…О скрытой власти «жёлтого дьявола» в капиталистических странах и об изменившемся отношении советских людей к золоту…Обо всём этом и написана книга, стремящаяся показать всё то зло, которое приносит людям жажда золота, жажда наживы — всё, о чём поёт Мефистофель в своей балладе.


Оздоровительный массаж в домашних условиях : пособие для родителей

В пособии раскрывается значение массажа для здоровья ребенка, предлагаются комплексы массажа на первом году жизни, а также описываются виды профилактического и оздоровительного массажа при различных заболеваниях, отмечаются противопоказания для проведения массажа.