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

Рябченко Виктор

Урок третий

 

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

— Да. Такой способ называется «цикл».

 

ПРОГРАММА ДЛЯ ИСПОЛНИТЕЛЯ «ПАРИКМАХЕР»

— Представьте себе Исполнителя под названием, ну, скажем, «Парикмахер». Он выполняет только одну стандартную команду «подстричь клиента» и только одну стандартную проверку: «есть ли в парикмахерской очередь?» Тогда многократное выполнение команды будет достигнуто вот таким образом…

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

— Помнишь, что такое спецификация? — спросил Казимир.

— Да. Это текст программы, который написан «по-человечески».

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

Петя взглянул на текст и легко перевел его:

— До тех пор, пока в парикмахерской очередь, парикмахер должен подстригать клиентов.

— А теперь скажи, каким словом в программе обозначена команда на проверку?

— Я думаю, словом «пока».

— Правильно думаешь. Так вот, вся эта конструкция называется «циклом». Состоит она из слов «пока» и «повторять». Обозначение «пока… повторять…» называется «оператором цикла». А все команды, которые находятся между словами «пока» и «конец цикла», называются «телом цикла».

— Так мало слов и так много работы! — восхищенно сказал Петя.

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

— Значит, он тоже будет работать без конца?

— Совершенно верно. Будет бесконечно повторять один и тот же приказ. Программисты в таких случаях говорят: «Исполнитель зациклился».

— А если у Исполнителя кончился рабочий день? Если ему вообще нужно устроить перерыв в работе?

Для таких случаев у программистов есть еще один вариант конструкции цикла. Вот такой…

И тут в Петину руку влетел еще один листок бумаги. На нем было написано:

— Переведи, — велел Казимир.

— Пожалуйста. Парикмахер должен подстричь двадцать человек.

— Верно. И это — тоже «конструкция цикла». А оператор цикла здесь обозначен словами «повторять… раз».

— А где в этой программе проверка?

— Сам догадайся.

— В словах «столько-то раз», так?

— Так.

— Значит, в данной программе Исполнитель не проверяет, есть ли в парикмахерской очередь?

— Не проверяет.

— А почему вы мне об этом не сказали?

— А зачем я должен тебе все разжевывать? По тексту программы ты и сам догадался, что в данном случае Исполнитель осуществляет другую проверку, чем в первый раз. Кстати, какую? Скажи об этом понятнее.

— В данном случае… — сказал Петя, размышляя, — в данном случае… Исполнитель может СЧИТАТЬ клиентов. То есть он все время проверяет, сколько человек ему осталось подстричь перед тем, как прекратить работу.

— Как видишь, — сказал Казимир, — имеется два варианта конструкции цикла. В одном из них используется оператор «пока (не выполнено какое-то условие) — повторять (какое-то действие)». А в другом варианте можно использовать оператор «повторять… (сколько-то) раз». Выбор конструкции зависит от того, каким будет исходный алгоритм.

— А что такое — исходный алгоритм? — спросил Петя.

— Об этом мы поговорим когда-нибудь после. А сейчас ты должен запомнить еще одно. Операторы цикла, как и условные операторы, можно записывать в программах не только по-русски, но и по-английски. Оператор «пока… повторять…» можно записать английскими словами «While…» «do…». А русское слово «раз» программисты часто заменяют словом «step» (шаг).

 

НОВАЯ ПРОГРАММА ДЛЯ КУЛИНАРНО-АРТИЛЛЕРИЙСКОЙ УСТАНОВКИ

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

— Будем. Только ты для этого должен придумать один-единственный текст программы для Кристины.

_ И при этом использовать конструкцию цикла?

— Именно.

— Пожалуйста, — сказал Петя. И он напечатал:

— Можно и так, — сказал Казимир. — Будем считать, что Кристина-Исполнитель, кроме первой стандартной проверки, способна выполнять еще одну — считать выстрелы.

Кулинар-артиллерист Кристина, печатая шаг, подошла к Великому Магистру и отдала честь.

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

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

 

ГИМН МАГИСТРУ

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

— Вот заботишься о них, заботишься, а все впустую… Ни сказок обо мне не расскажут, ни песен не споют…

— Казимир, давайте я про вас что-нибудь сочиню, — предложил Петя.

— Сам?

— Пусть мне Кристина поможет. Только превратите ее из кулинара в поэта.

— А что, это — идея, — проговорил Казимир. — Ты ей даешь, как говорится, социальный заказ, а она пишет для меня гимн. Воздвигает памятник, так сказать, нерукотворный. Кристина, ко мне! — Казимир ожил на глазах.

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

— Слушай приказ, — сказал Петя. — Нужно сочинить гимн Казимиру. Даю спецификацию. В первом куплете нужно сказать, что матросы испытывают к Великому Магистру глубокую любовь…

— Ну, любовь — это слишком, — сказал Казимир. — Лучше — нежность.

— Нежность так нежность, — сказал Петя. — И эта нежность глубока, как океан.

— Нет-нет, — снова возразил Казимир. — Океан — это нескромно. Так и зазнаться недолго. Лучше — как река. Какие у нас есть великие реки?

— Волга.

— Волга — это штамп.

— Ну, Ока.

— Так Волга или Ока? — спросила Кристина.

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

— Да-да, — добавил Казимир. — Ты уж постарайся, Кристина. Усиль впечатление.

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

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

— Какие стихи! — произнес Казимир. — Какие стихи! Давай, Кристина, давай, не теряй времени. Сочиняй!

— А я и не теряю, — невозмутимо сказала Кристина. — Гимн уже готов. Осталось только разучить.

Она удалилась к матросам и раздала им листки с отпечатанным текстом.

 

БУНТ ЭКИПАЖА

Петя и Казимир присели на морском песке, матросы обступили их полукругом.

«Три-четыре», — сказала Кристина, и хор запел:

К вам нежность глубока, как Волга иль Ока, но пользуясь ока — ока-ока — зией, хоть любим вас давно, мы скажем все равно: «В меню — одно — одно-одно — образие!»

— Какая наглость, — промолвил Казимир.

А матросы продолжали:

А ну, пусть спросит Маг своих матросов: как живется в бы — бы-бы-бы-бы — быту им? Мы скажем «Поскорей долой твоих курей! Иначе забу — бу-бу-бу — бунтуем!»

— Да… — произнес Казимир.

— Да! — подхватили матросы. — Да, скифы мы! Да, азиаты мы! С раскосыми и жадными очами!

— Но скажите, — возмущенно воскликнул Казимир. — Что может быть лучше жареной курицы? Что?!

— Жареный петух? — невозмутимо предположила Кристина-поэтесса.

— Сгущенка! — сказал один матрос.

— Тушенка! — сказал другой.

— Нет, сгущенка! — сказал третий.

— Нет, тушенка, — сказал четвертый.

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

— Вот вы у меня какие… — задумчиво промолвил Казимир.

Тут Петя заметил, что стена начала медленно сдвигаться, и он быстро юркнул в свою комнату, не успев попрощаться с Великим Магистром.