Глава № 8. А ВЫТЯНУТЬ НЕ МОГУТ.
Глава № 9. Возвращайтесь к главе №4 и читайте
следующие за ней главы.
Глава № 10. ВЫТЯНУЛИ РЕПКУ!
Глава № 11. Конец сказки.
— Что же это за сказка? — воскликнул Сережа в недоумении. — Чепуха какая-то! Ой, извини, Чип, я хотел сказать, что сказка очень интересная, но только непонятная.
— Что же тут непонятного? — проворчал Чип. — Все понятно. Делай, что написано маленькими буквами, и читай, что написано большими, и получится сказка. Вот написано N=1, значит, запомни, что сейчас N равно 1. Написано — прибавь 1 к N, значит, посмотри, чему сейчас N равно, и прибавь 1. Было 1 — станет 2, потом, когда второй раз вернешься к главе № 4, будет 2, а станет 3. А вместо слов «жилец № такой-то» читай его имя по списку жильцов. Значит, на этот раз уже не дед бабку, а бабка внучку позовет. Теперь понял?
— Ну-ка, ну-ка, — до Сережи наконец все дошло. — Ох, как здорово! Значит, пока до жильца № 6, то есть до мышки, очередь не дойдет, я все буду возвращаться и возвращаться, и все новые жильцы будут репку тянуть. А на мышке все кончится, так заранее и рассчитано. Послушай, Чип, а ведь так можно хоть сто жильцов взять, и сказка длиннее не станет, только вместо 6 надо будет всюду сто писать.
— Вот сейчас, — провозгласил Чип торжественно, — ты понял самое главное в программировании: цикл. Все идет по кругу, только жильцы прибавляются. Так зачем много раз одно и то же писать? Для этого и придуман цикл. Здесь цикл на мышке кончается, а бывает и бесконечный цикл, только его все компьютеры как огня боятся. Вот, например, сказка про попа и его собаку. Кстати, попробуй-ка напиши ее в виде программы.
— Сейчас попробую, — ответил Сережа. Он сел за стол и через пару минут написал:
ПОП И СОБАКА
Глава № 1. У ПОПА БЫЛА СОБАКА, ОН ЕЕ ЛЮБИЛ.
Глава № 2. ОНА СЪЕЛА КУСОК МЯСА.
Глава № 3. ОН ЕЕ УБИЛ. И В ЗЕМЛЮ ЗАКОПАЛ.
Глава № 4. И НАДПИСЬ НАПИСАЛ:
Глава № 5. Если не надоело, возвращайтесь к главе № 1, иначе отдыхайте.
Глава № 6. Конец.
— Ого, — улыбнулся Чип, — да ты, я вижу, прирожденный программист. Пожалел компьютер и вставил условие «если не надоело» в пятой главе. Сделал лазейку из бесконечного цикла. Значит, если надоело, то можно отдохнуть.
— Знаешь, Чип, только мне эта сказка совсем не нравится. Разве можно собаку мучить? Ну, наказал бы, а то сразу убивать. Давай ее спасем!
— Давай, — охотно согласился Чип. — Пусть тот, кто читает, сам выбирает для собаки наказание. Вот заменим главу № 3 на такую:
«Глава № 3. ОН ЕЕ НАКАЗАЛ».
Теперь, перед тем, как читать сказку, надо выбрать наказание. Ну, скажем:
наказал = отругал и не дал мороженого
,
или
наказал = отшлепал и запер на час в чулане
.
Кстати, такая программа, в которой можно что-то определять по желанию перед тем, как пользоваться, называется подпрограммой. А то, что надо определять, пишется в скобках после названия. Значит, мы сейчас написали сказку-подпрограмму
ПОП И СОБАКА (наказал)
А когда будешь ее читать, можешь вставить, что хочешь, ну хоть
ПОП И СОБАКА (поцеловал)
Видишь, здесь вставлено то, что надо читать вместо слова «наказал».
Ладно, спокойной ночи, мне пора. Завтра еще поиграем, хорошо?
ОТ РЕДАКЦИИ:
Дорогие ребята! Чип и вам дает задание: составить программу для сказки «Теремок». Самая лучшая и правильная программа будет напечатана в журнале. Ждем ваших писем.
Царевич выбирает невесту
На следующий день, когда Чип выпрыгнул из своей коробки, Сережа сразу его попросил:
— Давай сегодня еще в сказки-программы поиграем, а? Мне очень понравилось.
— Понравилось читать или понравилось писать?
— И то, и другое. Давай по очереди: сначала один, потом другой. Чур, ты первый пишешь!
— Ну ладно, только я ваших сказок совсем не знаю, я свою сочиню.
Чип думал минут двадцать, писал, зачеркивал, писал снова и даже что-то бормотал, забыв про все правила приличия для компьютеров. Наконец сказка-программа была готова. Вот что получилось.[2]
СКАЗКА-ПРОГРАММА «ЦАРЕВИЧ И КУХАРКА»
Жили-были царь с царицей, и был у них сын — красивый да разумный, одна беда — робкий слишком: никак невесту не мог себе найти. И вот позвали его царь с царицей в тронную залу и говорят: «Хватит тебе, Иванушка, холостым гулять, пора и жениться. Найди себе жену красивую, умную да работящую».
Пошел царевич прочь, закручинился: как самую лучшую отыскать? Найдешь самую умную, а вдруг урод? Выберешь самую красивую — лентяйка окажется. А самую работящую отыщешь — чего доброго, и дурочка, и уродина.
Идет-бредет он по дворцу и заходит в кухню. А там Ксюша-кухарка царскую посуду моет, песенку напевает. «Что, — говорит, — Иванушка, невесел, аль беда какая?» Говорит, как поет, а сама тарелки так и трет, зубки белые так и сверкают, глазки синие так и светятся.
«Эх, Ксюша, беда-то беда, да не бабьего ума это дело. А впрочем, послушай, может, что и посоветуешь».
Выслушала Ксюша царевича, подумала немного и говорит (а сама уже тарелки перемыла, за чашки принялась, руки белые так и мелькают): «Можно беде твоей помочь, Иванушка. Вот тебе программа выбора царской невесты.
Шаг №1. Отобрать по всему царству 512 самых красивых девушек;
шаг №2. из них отобрать половину самых умных;
шаг №3. из них отобрать половину самых работящих;
шаг №4. из них отобрать половину самых красивых;
шаг №5. если невест две или больше, вернуться к шагу № 2;
шаг №6. если осталась одна невеста, сыграть свадьбу;
шаг №7. если осталось полневесты, значит, их было не 512, а, может, в суматохе кого-то потеряли. В этом случае вернуться к шагу №1;
шаг №8. конец программы».
«А за три дня-то успею?» — спрашивает Иванушка, а сам на Ксюшу смотрит не насмотрится.
«Успеешь, а как же, — отвечает Ксюша, а сама, как маков цвет, разрумянилась, косой закрывается от царевича, глаз на него поднять не может. — Успеешь, — говорит, — сердешный, я все рассчитала. За первый день 64 невесты останется, за второй — 8, а к третьему вечеру найдешь ты свою суженую: самую умную из красавиц, самую работящую из умниц и самую красивую из работящих».
Берет Иван-царевич за белу руку Ксюшу-кухарку, в сахарны уста целует и говорит ласково: «Спасибо, Ксюшенька, хорошо придумала, только не стану я три дня по всему царству искать, когда я уже здесь свое счастье нашел. Никого мне, кроме тебя, не надо, на тебе и женюсь!»