— А что, он, это… умеет делать?

— Задай вопрос правильно.

— Какой у Исполнителя набор стандартных команд?

— «Стоять» и «Перейти улицу».

— А проверки?

— «Пешеход» различает зеленый цвет светофора.

— И все?

— И все.

Петя подумал и одним пальцем отстучал:

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

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

— А когда матросов кормить будем? — поинтересовался Петя.

— Программа готова. Вводи.

СКОЛЬКО РАЗ НУЖНО ПЕРЕПИСАТЬ ПРОГРАММУ, ЧТОБЫ НАКОРМИТЬ ВСЕХ ГРЕБЦОВ?

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

— Погоди. Сколько жареных куриц вылетит из пушки после выполнения этой программы?

— Столько же, сколько будет выстрелов.

— А сколько будет выстрелов?

— А пушка у вас автоматическая… или какая?

— Или какая.

— То есть выстрелы у нее одиночные?

— Одиночные.

— Значит, Кристина выстрелит один раз.

— Следовательно?

— Следовательно, из пушки вылетит только одна курица.

— А сколько у нас матросов?

Петя пересчитал.

— Шестеро.

— И каждому нужно курицу на первое, курицу на второе, курицу на третье и курицу на сладкое, — сказал Казимир грустным голосом. — Итого…

— Двадцать четыре курицы, — подсчитал Петя. — Поэтому Кристина должна сделать двадцать четыре выстрела.

— И что ты хочешь? После каждого выстрела писать новую программу?

— Да.

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

— А что делать?

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

— Да ну!

— Точно. Этот способ называется… Впрочем, об этом завтра.

— А как же матросы?

— Перекусят на корабле.

Казимир повернулся к матросам.

— Гребцам — за весла! В шлюпку, Кристина! До завтра, Петя.

— До завтра, Казимир!

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

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

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

МОЙ ДРУГ ГАФУР

Когда-то давно был у меня знакомый. Звали его Гафур. Он приехал из одной восточной страны на учебу в Московский университет. Старательный был парень Гафур. Быстро запомнил множество русских слов. Но вот беда — не давались ему глагольные формы. Трудно было Гафуру употребить глагол в нужном времени. Спросишь его бывало: «Хочешь прочитать эту книгу?» «Нет, — отвечал он. — Я ее уже прочитать». Но больше всего он мучился, когда приходилось называть глагол в единственном числе прошедшего времени. Знаете, почему? Потому что глаголы прошедшего времени единственного числа требуют еще и родового окончания: корабль сел на мель. Птица села на ветку. Платье село от стирки. (Вообще говоря, здесь есть какая-то увлекательная тайна. В глаголах «сел», «села», «село» мы ясно слышим род того предмета, который совершает действие. Но вот — тот же глагол в настоящем времени: «садится». Скажите, кто садится — мужчина или женщина? Никаких сведений об этом в слове не содержится. А вот будущее время «сядет»? И здесь то же самое… Чувствуете загадку? Почему русские глаголы «устроены» так, что в прошедшем времени они чутко регистрируют род предмета, а их форма в настоящем и будущем времени абсолютно равнодушна к этому же самому роду? Впрочем, это — тема для особого разговора…).

Так вот, в родном языке Гафура категория рода отсутствует. И для моего товарища было безразлично, как сказать: «Корабль сел на мель» или «Корабль села на мель». Но Гафур упорно тренировался, осваивая родовые окончания русских глаголов. Каждый день я давал ему листок с десятком глаголов в неопределенной форме, а вечером Гафур протягивал мне другой листок, на котором те же самые слова стояли в единственном числе прошедшего времени и были изменены по родам. И вот как-то раз он протягивает мне один такой листок. Я читаю: «пел-пела-пело». Правильно. «Ел-ела-ело». Правильно. «Ехал-ехала-ехало», «бегал-бегала-бегало» — тоже правильно. И вдруг глаза наталкиваются на что-то странное: «Идел-идела-идело». Интересно, что это за глагол такой? Может быть, образование от — «одеть»? Но нет, «одеть» мы уже проходили. «Гафур, — спрашиваю, — это что за абракадабра у тебя?» «Почему — абракадабра? — отвечает он. — Ты давал мне слово «идти». Вот я и написал: «идел-идела-идело».

Мне становится смешно. «Нет, — говорю, — надо: «шел-шла-шло». А он удивляется: «А почему?» А вслед за ним удивляюсь и я: в самом деле, почему от глагола «идти» образуется глагол «шел», а не «идел»?

Правда, почему?

Сейчас объясню, для чего я вспомнил эту историки Любой язык можно сравнить с детским конструктором — игрой, в которой из ограниченного набора деталей можно сконструировать множество игрушек. Важно знать правила, по которым происходит «сборка». Мой друг Гафур интуитивно уловил правило, по которому из глаголов несовершенного вида можно «собрать» глаголы прошедшего времени мужского, женского и среднего рода. Слово «идти», правда, трансформируется иначе, но сам-то принцип конструирования Гафур ухватил верно!

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

Другими словами, человеческий язык, в отличие от языка, на котором общаются между собой животные, организован по правилам грамматики.

Что же касается машинных языков, то они строятся так же — по грамматическим правилам.

Две грамматические конструкции — последовательное выполнение команд и разветвление — нам уже известны.

Итак…

Урок третий

ЕЩЕ ОДНА КОНСТРУКЦИЯ ПРОГРАММИРОВАНИЯ — «ЦИКЛ»

На другой день ровно в десять часов стена раздвинулась, шлюпка с клипера ткнулась носом в песок, и на берег сошел Казимир вместе со всей своей компанией.

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

— Приготовиться к принятию вкусной и здоровой пищи! — скомандовал Великий Магистр.

— Всегда готовы! — дружно ответили гребцы.

— Вы что, опять собираетесь есть? — спросил Петя.

— Опять, — сказал Великий Магистр. И матросам: — Орудие на берег, ребята.

— Казимир, а вам не кажется, что вы слишком часто думаете о еде?

— Кажется. Только почему «слишком часто»? Я думаю об этом всегда.

— А вам не надоедает?

— Милый ты мой! Да как же могут надоесть размышления о предмете, который доставляет столько радости?

— А есть что-нибудь такое, о чем вы не любите думать?

— Есть, — сказал Казимир. — Но вернемся к программированию. На чем мы вчера остановились?

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


Перейти на страницу:
Изменить размер шрифта: