Глава № 5. ПОЗВАЛ ЖИЛЕЦ N—1 ЖИЛЬЦА N (ПРЕДЫДУЩИЙ ЖИЛЕЦ СЛЕДУЮЩЕГО ЖИЛЬЦА).
Глава № 6. ТЯНУТ-ПОТЯНУТ.
Глава № 7. Если N = 6, то переходите к главе № 10, иначе читайте дальше.
Глава № 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]
СКАЗКА-ПРОГРАММА «ЦАРЕВИЧ И КУХАРКА»