С Новым годом, ребята!
Введение
Дорогие ребята! Те из вас, кто выписывал «Пионер" в прошлом году, уже знакомы с Чипом и Сережей. Для наших новых читателей скажем, что Сережа — это обыкновенный мальчик, а его друг Чип — маленький волшебный человечек, который выпрыгнул как-то раз из Сережиного калькулятора. Чип научил Сережу многим интересным вещам: как считать на пальцах до 1000, как помочь царевичу выбрать невесту, как вытащить из лужи барона Мюнхгаузена, как провести конкурс поющих поросят... Да всего и не упомнишь! Эти игры помогают понять основы информатики — новой науки, которая нужна тем, что хочет управлять компьютерами. А так как это придется делать всем в следующем веке, то лучше начать сейчас. Поэтому Чип и Сережа приглашают вас играть с ними вместе.
Сказки восточного базара
— Расскажи мне, пожалуйста, сказку, — попросил Сережа Чипа, — только пострашней и потаинственней, вроде арабских сказок.
— Арабские сказки, говоришь? — Чип задумался. — Что же, могу и арабскую сказку, только сказка эта будет не простая, а рекурсивная, и рассказывать ее будет бродячий дервиш на восточном базаре, чтобы заработать себе горсть фиников и глоток воды.
— А что такое рекурсивная сказка, это вроде рекурсивной программы? — спросил Сережа.
— Это сказка, которая внутри себя содержит такую же сказку.
— Как это может быть?
— Вот сейчас увидишь. Итак...
РЕКУРСИВНАЯ АРАБСКАЯ СКАЗКА
В сказке три персонажа: <b>СТРАННИК</b>, <b>ВОЛШЕБНИК</b> и <b>ЗВЕРЬ</b>.
<b>Если</b> эту сказку рассказывает дервиш,
<b>То</b> СТРАННИК — это мулла, ВОЛШЕБНИК — это джинн<a name="read_n_6_back" href="#read_n_6" class="note">[6]</a>, а ЗВЕРЬ — это лев.
<b>Если</b> же рассказывает мулла.
<b>То</b> СТРАННИК — это дервиш. ВОЛШЕБНИК — это ифрит. а ЗВЕРЬ — это носорог.
Однажды СТРАННИК ехал на осле по пустыне. Солнце уже высоко поднялось над барханами, и от жары у СТРАННИКА разыгралась великая жажда. «О Аллах! — воскликнул он. — Я отдал бы жизнь за кувшин воды». Эти слова услышал пролетавший мимо ВОЛШЕБНИК. Тут же перед СТРАННИКОМ появился кувшин воды и свирепый ЗВЕРЬ. Великий страх овладел СТРАННИКОМ, колени его ослабели, и, упав ниц на горячий песок, он взмолился: «О могучий зверь! Подожди, не терзай меня, выслушай сначала мою сказку». «Так и быть, — согласился ВОЛШЕБНИК в образе <b>ЗВЕРЯ</b>, — можешь рассказать мне одну сказку». «Одну, о мудрый ЗВЕРЬ, только одну!» И СТРАННИК рассказал РЕКУРСИВНУЮ АРАБСКУЮ СКАЗКУ.
ВОЗВРАТ
— Возврат? — переспросил Сережа. — Это куда возврат, в начало, что ли?
— Да нет, — Чип недовольно поморщился. — Ты что, забыл, что такое возврат из подпрограммы? Возврат — это значит конец этой подпрограммы и продолжение той, которая работала раньше, пока не началась эта. А в нашем случае это значит, что очередной сказочник замолчит, а тот, кто про него рассказывал, продолжит дальше.
— Погоди, погоди, тут какой-то подвох, — задумчиво сказал Сережа. — Про кого же в сказке речь? Ты сказал, что эту сказку рассказывает дервиш, значит, речь идет про муллу, джинна и льва. Но дальше в этой сказке странник, то есть мулла, рассказывает ту же самую сказку. Про кого же он рассказывает?
— Но в начале сказки ведь было ясно сказано, что если мулла рассказывает эту сказку, то речь идет про дервиша, ифрита и носорога.
— Ах да! Значит, если дервиш, то про муллу, а если мулла, то про дервиша. Ловко! Мулла расскажет льву про дервиша, ифрита и носорога, и в этой сказке дервиш уже будет морочить голову носорогу про муллу, джинна и льва. Ну и чем же кончится дело?
— А как ты сам думаешь?
— Я думаю, что у кого-то из волшебников лопнет терпение, и он сожрет странника, не дожидаясь конца сказки. А может быть, у волшебника пройдет гнев и он помилует хитрого сказочника?
— Мне больше нравится второй вариант, но в этой сказке так не произойдет. Мулла и дервиш будут вечно рассказывать друг про друга. Правда, есть одна лазейка из этого бесконечного цикла. Я ведь еще до сказки тебе сказал, что самый первый дервиш, тот, что на базаре, рассказывает сказку, чтобы заработать себе пропитание. Значит, рассказывать он будет до конца дня, не дольше? Потом либо его накормят, либо слушатели пойдут спать. Поэтому мы должны вставить первой строчкой рекурсивной сказки условие:
<b>ЕСЛИ</b> кончился базарный день или первого дервиша накормили,
<b>ТО</b> ВОЗВРАТ.
— И чем же это поможет?
— А вот смотри. Первый дервиш рассказал рекурсивную сказку до того места, как начал мулла. Дальше снова идет рекурсивная сказка, в начале которой мы вставили условие. Если это условие будет выполнено, то есть если первого дервиша накормили, то мулла кончит сказку, едва начав. А дальше в рекурсивной сказке написано ВОЗВРАТ. Это значит, что и первый дервиш замолчит, схватит свои финики и воду и уйдет.
— А если первого дервиша не накормят к тому моменту, как мулла начнет свою сказку?
— Ну что ж, тогда он ее расскажет до того момента, как второй дервиш начнет свою сказку, а тогда второй дервиш снова проверит, не накормили ли первого. Если да, то он замолчит, а тогда замолчит и мулла, а тогда замолчит и первый дервиш, схватит свои финики и воду и побежит есть.
— Кажется, я начинаю понимать, — протянул Сережа, — каждый очередной рассказчик будет проверять, как там дела на базаре у первого дервиша, и как только того накормят, они все по очереди замолчат. Вот теперь у сказки есть конец, только он так хитро запрятан, что и не найдешь сразу. Я понял, что мне это напоминает. Есть такая пословица: «Иван кивает на Петра, а Петр на Ивана».
— Правильно, — сказал Чип. — Это как раз рекурсивная пословица. Давай дадим задание ребятам, чтобы они записали ее в виде рекурсивной программы. А на конверте пусть напишут: ИВАН И ПЕТР. Лучшую программу мы напечатаем.
А вот имена ребят, которые составили самые интересные программы к считалочкам: Марат КАЛТОВ, г. Гусь-Хрустальный; Лена СУПРОНЕНКО, Приморский край; Вера ГУРЕВИЧ, г. Днепропетровск.
Секрет «Числовых прыгалок» разгадали Катя БАЙМЕТОВА, п. Майский, Бурят. АССР и Оля МАЛАШИНА, г. Новосибирск.
«Красная шапочка» оказалась сложной сказкой для наших читателей. Но ближе всего к истине были программы Дины КОНОВАЛОВОЙ, г. Владивосток: Маши КВАНТАЛИАНИ, г. Тбилиси; Нади ЧУБЛОВОЙ, г. Тюмень; Маши ШКОЛЬНИК, г. Москва.
МОЛОДЦЫ!
Роза для королевы
— Знаешь, Чип, — как-то раз признался Сережа, — вот мы с тобой уже целый год играем, а мне иногда кажется, что я ничему не научился. То есть я многое узнал, но не знаю, как все это применить.
— Ну и что же тут страшного? Мы же не в школе, и отметки я тебе ставить не собираюсь. Мы с тобой только играем, а в игре можно и ошибаться, и не знать чего-то. И все-таки ты многому научился, сам того не замечая. Давай проверим: я расскажу тебе маленькую историю, а ты подумай, что из того, что ты узнал за прошлый год, можно применить в этой истории.