Игры с Чипом - Мигдал А. А. 2 стр.


— Что же это за сказка? — воскликнул Сережа в недоумении. — Чепуха какая-то! Ой, извини, Чип, я хотел сказать, что сказка очень интересная, но только непонятная.

— Что же тут непонятного? — проворчал Чип. — Все понятно. Делай, что написано маленькими буквами, и читай, что написано большими, и получится сказка. Вот написано N=1, значит, запомни, что сейчас N равно 1. Написано — прибавь 1 к N, значит, посмотри, чему сейчас N равно, и прибавь 1. Было 1 — станет 2, потом, когда второй раз вернешься к главе № 4, будет 2, а станет 3. А вместо слов «жилец № такой-то» читай его имя по списку жильцов. Значит, на этот раз уже не дед бабку, а бабка внучку позовет. Теперь понял?

— Ну-ка, ну-ка, — до Сережи наконец все дошло. — Ох, как здорово! Значит, пока до жильца № 6, то есть до мышки, очередь не дойдет, я все буду возвращаться и возвращаться, и все новые жильцы будут репку тянуть. А на мышке все кончится, так заранее и рассчитано. Послушай, Чип, а ведь так можно хоть сто жильцов взять, и сказка длиннее не станет, только вместо 6 надо будет всюду сто писать.

— Вот сейчас, — провозгласил Чип торжественно, — ты понял самое главное в программировании: цикл. Все идет по кругу, только жильцы прибавляются. Так зачем много раз одно и то же писать? Для этого и придуман цикл. Здесь цикл на мышке кончается, а бывает и бесконечный цикл, только его все компьютеры как огня боятся. Вот, например, сказка про попа и его собаку. Кстати, попробуй-ка напиши ее в виде программы.

— Сейчас попробую, — ответил Сережа. Он сел за стол и через пару минут написал:

— Ого, — улыбнулся Чип, — да ты, я вижу, прирожденный программист. Пожалел компьютер и вставил условие «если не надоело» в пятой главе. Сделал лазейку из бесконечного цикла. Значит, если надоело, то можно отдохнуть.

— Знаешь, Чип, только мне эта сказка совсем не нравится. Разве можно собаку мучить? Ну, наказал бы, а то сразу убивать. Давай ее спасем!

— Давай, — охотно согласился Чип. — Пусть тот, кто читает, сам выбирает для собаки наказание. Вот заменим главу № 3 на такую:

Теперь, перед тем, как читать сказку, надо выбрать наказание. Ну, скажем:

,

или

.

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

А когда будешь ее читать, можешь вставить, что хочешь, ну хоть

Видишь, здесь вставлено то, что надо читать вместо слова «наказал».

Ладно, спокойной ночи, мне пора. Завтра еще поиграем, хорошо? 

«А за три дня-то успею?» — спрашивает Иванушка, а сам на Ксюшу смотрит не насмотрится.

«Успеешь, а как же, — отвечает Ксюша, а сама, как маков цвет, разрумянилась, косой закрывается от царевича, глаз на него поднять не может. — Успеешь, — говорит, — сердешный, я все рассчитала. За первый день 64 невесты останется, за второй — 8, а к третьему вечеру найдешь ты свою суженую: самую умную из красавиц, самую работящую из умниц и самую красивую из работящих».

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

На том и порешили. Правда, царства им не досталось — крепко осерчали царь с царицей, — зато уж угощение на свадьбу Ксюша сготовила — гостей за уши не оттащишь!

Конец сказки».

— Ну, как? — гордо спросил Чип. — Не хуже, чем Мери Поппинс? Во всяком случае, программа у меня правильная — хоть невесту, хоть карандаш можно выбрать по трем признакам. Я сначала хотел ее так написать, чтобы признаков было не три, а сколько угодно, как жильцов в сказке о репке. Но потом подумал, что овчинка выделки не стоит: это во всем царстве невест не хватит, чтобы по десяти признакам выбирать. Так что пусть уж будет три признака, чтобы не просчитаться.

— Спасибо, Чип, замечательная сказка, — поблагодарил Сережа, — завтра моя очередь, а теперь спокойной ночи, а то уже поздно.

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

Сережа мучился, мучился, а потом не выдержал и позвал на помощь Чипа.

— Ну что ж, я вижу, ты делаешь успехи, — похвалил его Чип, — надо только кое-что исправить. Вот как нужно сделать, чтобы он спел не про всех едоков вместе, а про каждого по отдельности:

— Чем сказка кончается, — спросил Чип, — лиса его съест, так что ли?

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

— Ну что ж, тогда напишем так:

— Вот и все, — Чип снял шапочку и раскланялся. — А вообще-то ты сложную сказку выбрал, с двойным циклом. Каждому новому едоку колобок поет про каждого предыдущего. Вот обрати внимание на главу № 9. Она повторяется 2 раза для зайца, 3 раза для волка, 4 раза для медведя и 5 раз для лисы — итого 14 раз. Помнишь, я тебе говорил, что цикл придумали, чтобы много раз одно и то же не писать. А двойной цикл еще больше места экономит. Представь себе, что было бы, если бы колобок сто разных зверей встретил, пока ему лиса не попалась. Наша программа почти не увеличится — надо только список едоков расширить, а обычная сказка про колобка, знаешь, как увеличится! Мало того, что нужно будет описать встречу с каждым из сотни зверей, нужно будет, чтобы колобок каждому зверю пропел про каждого предыдущего. На сказку, небось, и целого журнала не хватит. А мы с тобой на одну страничку уместились.

— Так что же, цикл только для экономии бумаги придуман? — спросил Сережа, которому немножко надоело хвастовство Чипа.

— Да что там бумага, — Чип махнул рукой, — не на бумаге же компьютерам программы пишут. У нас и магнитные ленты, и диски вроде грампластинок, и специальные кристаллики для памяти, и все равно памяти не хватает. Сейчас мы можем делать миллионы и даже миллиарды операций в секунду, и работаем по нескольку дней без остановок. Вот и представь, что было бы, если бы каждую операцию надо было отдельно описывать. А так написал цикл: «Сто миллиардов раз сложи 2 и 2», и пожалуйста! Компьютер работает, а ты отдыхаешь. Не пишешь ему сто миллиардов раз, чтобы он 2 и 2 сложил.

Ну, ладно, хватит на сегодня. В воскресенье и погулять надо.

ОТ РЕДАКЦИИ:

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

Случай в квартире 130 

— Во что мы сегодня будем играть? — нетерпеливо спросил Сережа, как только Чип выпрыгнул из коробки.

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

— Ну, пожалуйста, Чип, миленький, я же знаю, что

ты все можешь придумать!

— Ну уж все... Ты в «Джеков дом» умеешь играть?

— Какой такой «Джеков дом»? Я такой игры не знаю.

— Неужели не слышал стишок: «Вот дом, который построил Джек. Вот пшеница, которая в темном амбаре хранится, в доме, который построил Джек...» И так далее. Все новые строчки прибавляются, а старые повторяются.

— А... слышал, но какая же тут игра?

— А вот какая: давай сочинять похожий стишок. Я говорю первый куплет, ты в ответ второй, я третий, ты четвертый и так далее, пока кто-то не сдастся. Ну, например, у вас дома кто строит?

Назад Дальше