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


Кажется, это правильно?

— Правильно, да не совсем. Зачем же она пишет: «мышка-норушка», если только что назвала ее «жилец № 1»? С номерами все короче можно записать. Ну, ты дочитай до конца, а я потом все сразу скажу.

— Ладно, — согласился Сережа, — дальше она пишет, как мы с тобой.

— А вот тут что-то странное, она забыла, для чего нужно N. Смотри, что она дальше пишет:

Так, а теперь она снова вспоминает про N и пишет:

— Ну, теперь давай играть в компьютер, — сказал Чип, — вот дошел я до главы № 7, N у меня сейчас 2, потому что в третьей главе я запомнил, что N = 1, а в четвертой прибавил еще 1. В главе № 7 я читаю дальше, так как N у меня 2, а не 6. А в главе № 9 я возвращаюсь к главе 4, прибавлю к N единицу, иду к главе 5. А вот тут внимание! Написано, что пришел жилец № 2, а ведь надо уже № 3.

— Да, — вступился Сережа. — но она написала в скобках «затем следующий жилец».

— Что значит следующий? Следующий за № 2 — это № 3, но потом ведь нужен будет № 4 и так далее. Непонятно написано, и компьютер ошибется, а виновата будет Аня. Ей надо было просто написать:

Кстати, можно было и про мышку не писать вначале, а вместо этого в главе № 3 написать, что сейчас N = 0, вместо 1. Видишь, тогда счет начнется с единицы, и в главе № 5 придет мышка. А в главе 2 можно написать: «СТОИТ ТЕРЕМ-ТЕРЕМОК, ОН НИ НИЗОК, НИ ВЫСОК», или как там в этой сказке? Но это уже необязательно. Чтобы Анина программа правильно работала, достаточно исправить только главу № 5, как я сказал.

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

— Наверно, мы слишком трудную сказку предложили, — ответил Чип. — Сказка «Теремок» похожа на «Колобок» и на «Репку», а «Красная Шапочка» совсем другая. Но, чтобы ребята не думали, что сочинить сказку-программу «Красная Шапочка» так трудно, я попробую сейчас это сделать. Так... Готово. Но сначала нужны две подпрограммы:

— Молодец, Чип, здорово придумал, но это действительно сложная сказка. Давай теперь на прощание подарим что-нибудь всем ребятам, ведь наступает Новый год!

— У меня как раз есть красивая картинка, ее нарисовал компьютер. Это советская космическая станция «ВЕГА», которая пролетела мимо Венеры и встретилась с кометой Галлея. Компьютер изобразил эту встречу.

С Новым годом, ребята!

Сказки восточного базара

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

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

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

— Это сказка, которая внутри себя содержит такую же сказку.

— Как это может быть?

— Вот сейчас увидишь. Итак...

— Возврат? — переспросил Сережа. — Это куда возврат, в начало, что ли?

— Да нет, — Чип недовольно поморщился. — Ты что, забыл, что такое возврат из подпрограммы? Возврат — это значит конец

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

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

— И чем же это поможет?

— А вот смотри. Первый дервиш рассказал рекурсивную сказку до того места, как начал мулла. Дальше снова идет рекурсивная сказка, в начале которой мы вставили условие. Если это условие будет выполнено, то есть если первого дервиша накормили, то мулла кончит сказку, едва начав. А дальше в рекурсивной сказке написано ВОЗВРАТ. Это значит, что и первый дервиш замолчит, схватит свои финики и воду и уйдет.

— А если первого дервиша не накормят к тому моменту, как мулла   начнет свою сказку?

— Ну что ж, тогда он ее расскажет до того момента, как второй дервиш начнет свою сказку, а тогда второй дервиш снова проверит, не накормили ли первого. Если да, то он замолчит, а тогда замолчит и мулла, а тогда замолчит и первый дервиш, схватит свои финики и воду и побежит есть.

— Кажется, я начинаю понимать, — протянул Сережа, — каждый очередной рассказчик будет проверять, как там дела на базаре у первого дервиша, и как только того накормят, они все по очереди замолчат. Вот теперь у сказки есть конец, только он так хитро запрятан, что и не найдешь сразу. Я понял, что мне это напоминает. Есть такая пословица: «Иван кивает на Петра, а Петр на Ивана».

— Правильно, — сказал Чип. — Это как раз рекурсивная пословица. Давай дадим задание ребятам, чтобы они записали ее в виде рекурсивной программы. А на конверте пусть напишут: ИВАН И ПЕТР. Лучшую программу мы напечатаем.

А вот имена ребят, которые составили самые интересные программы к считалочкам: Марат КАЛТОВ, г. Гусь-Хрустальный; Лена СУПРОНЕНКО, Приморский край; Вера ГУРЕВИЧ, г. Днепропетровск.

Секрет «Числовых прыгалок» разгадали Катя БАЙМЕТОВА, п. Майский, Бурят. АССР и Оля МАЛАШИНА, г. Новосибирск.

«Красная шапочка» оказалась сложной сказкой для наших читателей. Но ближе всего к истине были программы Дины КОНОВАЛОВОЙ, г. Владивосток: Маши КВАНТАЛИАНИ, г. Тбилиси; Нади ЧУБЛОВОЙ, г. Тюмень; Маши ШКОЛЬНИК, г. Москва.

МОЛОДЦЫ!

Роза для королевы 

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

— Ну и что же тут страшного? Мы же не в школе, и отметки я тебе ставить не собираюсь. Мы с тобой только играем, а в игре можно и ошибаться, и не знать чего-то. И все-таки ты многому научился, сам того не замечая. Давай проверим: я расскажу тебе маленькую историю, а ты подумай, что из того, что ты узнал за прошлый год, можно применить в этой истории.

Назад Дальше