Игры с Чипом
Шрифт:
Вот тут Сережа и споткнулся. Получалось что-то не так. Ведь в сказке колобок поет очередному едоку не про всех предыдущих вместе, а про каждого из них в отдельности: зайцу поет про деда и бабку, волку — про деда, бабку и зайца, и так далее. Чем дальше катится, тем длиннее песенка, пока лиса не попадается.
Сережа мучился, мучился, а потом не выдержал и позвал на помощь Чипа.
— Ну что ж, я вижу, ты делаешь успехи, — похвалил его Чип, — надо только кое-что исправить. Вот как нужно сделать, чтобы он спел не про всех едоков вместе, а про каждого по отдельности:
— Чем сказка кончается, — спросил Чип, — лиса его съест, так что ли?
— А это необязательно — ответил Сережа, — мы сочиним новую сказку, где никто колобка не съедает, а все вместе поют его песенку.
— Ну что ж, тогда напишем так:
— Вот и все, — Чип снял шапочку и раскланялся. — А вообще-то ты сложную сказку выбрал, с двойным циклом. Каждому новому едоку колобок поет про каждого предыдущего. Вот обрати внимание на главу № 9. Она повторяется 2 раза для зайца, 3 раза для волка, 4 раза для медведя и 5 раз для лисы — итого 14 раз. Помнишь, я тебе говорил, что цикл придумали, чтобы много раз одно и то же не писать. А двойной цикл еще больше места экономит. Представь себе, что было бы, если бы колобок сто разных зверей встретил, пока ему лиса не попалась. Наша программа почти не увеличится — надо только список едоков расширить, а обычная сказка про колобка, знаешь, как увеличится! Мало того, что нужно будет описать встречу с каждым из сотни зверей, нужно будет, чтобы колобок каждому зверю пропел про каждого предыдущего. На сказку, небось, и целого журнала не хватит. А мы с тобой на одну страничку уместились.
— Так что же, цикл только для экономии бумаги придуман? — спросил Сережа, которому немножко надоело хвастовство Чипа.
— Да что там бумага, — Чип махнул рукой, — не на бумаге же компьютерам программы пишут. У нас и магнитные ленты, и диски вроде грампластинок, и специальные кристаллики для памяти, и все равно памяти не хватает. Сейчас мы можем делать миллионы и даже миллиарды операций в секунду, и работаем по нескольку дней без остановок. Вот и представь, что было бы, если бы каждую операцию надо было отдельно описывать. А так написал цикл: «Сто миллиардов раз сложи 2 и 2», и пожалуйста! Компьютер работает, а ты отдыхаешь. Не пишешь ему сто миллиардов раз, чтобы он 2 и 2 сложил.
Ну, ладно, хватит на сегодня. В воскресенье и погулять надо.
ОТ РЕДАКЦИИ:
А сегодня вам Чип дает задание, ребята, написать программу для любимой считалочки. Лучшую программу мы напечатаем.
Случай
— Во что мы сегодня будем играть? — нетерпеливо спросил Сережа, как только Чип выпрыгнул из коробки.
— Во что, во что... Будто я массовик-затейник — проворчал Чип, но по его хитрым глазкам Сережа понял, что Чип приготовил ему сюрприз и ломается только для вида.
— Ну, пожалуйста, Чип, миленький, я же знаю, что
ты все можешь придумать!
— Ну уж все... Ты в «Джеков дом» умеешь играть?
— Какой такой «Джеков дом»? Я такой игры не знаю.
— Неужели не слышал стишок: «Вот дом, который построил Джек. Вот пшеница, которая в темном амбаре хранится, в доме, который построил Джек...» И так далее. Все новые строчки прибавляются, а старые повторяются.
— А... слышал, но какая же тут игра?
— А вот какая: давай сочинять похожий стишок. Я говорю первый куплет, ты в ответ второй, я третий, ты четвертый и так далее, пока кто-то не сдастся. Ну, например, у вас дома кто строит?
— Не знаю, кажется, какой-то ЖЭК. [3]
— Ну, тогда начнем так: «Вот дом, который построил ЖЭК». Твоя очередь, Сережа.
— «Вот квартира сто тридцать,
В которой неладное что-то творится,
3
Тут Сережа ошибся. ЖЭК — жилищно-эксплуатационная контора — не строит, а эксплуатирует дома.
В доме, который построил ЖЭК», — сказал Сережа, немного подумав. — Твой ход, Чип.
— Э... э, назови-ка мне какое-нибудь имя девочки.
— Аня, — назвал Сережа имя своей лучшей подруги.
— Ну тогда: «Вот девочка Аня, которая спит у себя на диване,
В квартире и т.д.». Твоя очередь, Сережа. Так что же там неладное творится? Придумывай.
Сережа задумался.
— «Вот комната ванная, в которой море шумит разливанное,
Из крана, забытого девочкой Аней, и т.д.».
— Теперь назови мужское имя, — попросил Чип.
— Мужское? Пожалуйста: Никита.
— «Вот слесарь Никита по лестнице мокрой шагает сердито:
Спешит он в ту комнату ванную и т.д.», — не задумываясь, выпалил Чип.
— Ладно, сдаюсь! — со смехом сказал Сережа.
— А теперь, — сказал Чип вкрадчиво, — как ты, наверно, догадался, мы сделаем из этого стишка программу.
— Подумаешь, легкота! Мы такое уже делали.
— Вот как? Ну, попробуй напиши программу хотя бы для первых трех куплетов.
Сережа взялся за дело и довольно скоро понял, что тут что-то не то. В старых сказках-программах повторялись едоки или жильцы, то есть отдельные слова. А тут повторялись целые куплеты, да еще при этом менялись падежи слов внутри куплетов.
— Что, не тянется репка? — посочувствовал Чип. — А помнишь, мы с тобой про попа и собаку подпрограмму сочиняли? [4] Там ведь можно было выбрать любое слово: «поцеловал», «наказал» — и вставить его внутрь подпрограммы. Вот так и здесь надо. Например:
4
Подпрограмма — это кусочек программы, который можно вставлять в любое место. При этом можно что-то менять в этом кусочке, надо только точно указать, что и как. В этом отношении подпрограмма напоминает платье-полуфабрикат, которое подгоняют по фигуре. Подпрограмму можно вставлять и в другую подпрограмму, а ту — еще в одну, как матрешки. Если вам все равно непонятно, не смущайтесь, прочтите дальше, поиграйте с этим стишком, и вам постепенно все станет ясно.