Игры с Чипом - [7]
— Да вот, представляешь, барон Мюнхгаузен сам себя из лужи вытянул! За волосы!
— И что же тут смешного? По-моему, ничего особенного.
— Уж будто твои программы могут сами себя за волосы тащить!
— А что! — азартно крикнул Чип. — Вот спорим, что я напишу программу, которая сама себя из лужи вытаскивает? Спорим?
— Ну, спорим, — усмехнулся Сережа.
— Это будет программа
>«МЮНХГАУЗЕН».
>«ЕСЛИ МЮНХГАУЗЕН В ЛУЖЕ, ТО ОН ДОЛЖЕН ТЯНУТЬ СЕБЯ ЗА ВОЛОСЫ».
А «ТЯНУТЬ СЕБЯ ЗА ВОЛОСЫ» — это подпрограмма.
>Подпрограмма «ТЯНУТЬ СЕБЯ ЗА ВОЛОСЫ»:
>«НАГРЕТЬ СВОИМИ ДВИЖЕНИЯМИ ЛУЖУ НА ОДНУ ТЫСЯЧНУЮ ГРАДУСА. ЕСЛИ ЛУЖА НЕ ВЫСОХЛА, СНОВА ТЯНУТЬ СЕБЯ ЗА ВОЛОСЫ».
>Конец подпрограммы.
— Ну, а как же эта подпрограмма поможет Мюнхгаузену вылезти из лужи? — спросил Сережа с подозрением.
— А вот как: Мюнхгаузен первый раз потянет себя за волосы и нагреет своими движениями лужу на одну тысячную часть градуса. Потом, если лужа не высохла (а она, конечно, и не подумала высохнуть, хоть чуть-чуть и нагрелась), он снова потянет и нагреет лужу еще на одну тысячную часть градуса и так далее. Если у Мюнхгаузена скорость работы, как у рядового компьютера, то не пройдет и секунды, как вода в луже поднимается до 100°С и закипит. Ну, а из кипятка-то, я думаю, он и сам не заметит, как выпрыгнет!
— Здорово, — восхищенно протянул Сережа. — Слушай, а я как-то и не понимал, что компьютеры так быстро работают. В одну секунду: раз — буль-буль — и прыг! Готово дело!
— А ты заметил другое, что моя подпрограмма вызывает сама себя, как и Мюнхгаузен сам себя за волосы тащит? И не просто себя вызывает. Если бы она только себя вызывала и больше ничего не делала, то получился бы бесконечный цикл, как в стишке про попа и собаку. Но она при каждом вызове чуть нагревает лужу, так что рано или поздно лужа испарится и цикл закончится.
Такие подпрограммы называются рекурсивными, их всегда трудно понять. Кажется, что они не смогут работать, как Мюнхгаузен не сможет вытянуть себя из лужи. Для того, чтобы рекурсивная подпрограмма работала, надо, чтобы при каждом вызове что-то изменялось так, чтобы работа могла кончиться.
— А можешь еще рекурсивную программу написать? Мне очень понравилось.
— Ну что ж, например, ваш класс на физкультуре неправильно выстроился по росту: впереди самый маленький, в затылок ему смотрит мальчик повыше, а сзади самый большой. Вот такая рекурсивная программа перестраивает их в обратном порядке.
>Программа «ПЕРЕСТРОЙ» (колонну).
>Если в колонне один человек, то возврат.
>ПЕРВЫЙ ДЕЛАЕТ ШАГ ВБОК.
>«ПЕРЕСТРОЙ» (остаток колонны).
>ПЕРВЫЙ ИДЕТ НАЗАД.
>Возврат.
— Постой, постой, дай я соображу, как она будет работать. Если в колонне всего один человек, то его нечего перестраивать. Правильно, тут и написано «возврат». А куда возврат? Ладно, пока это неважно, а там посмотрим.
Теперь пусть в колонне два человека. Идем по программе. Первая строчка не для нас, поскольку в колонне два человека. Смотрим следующую строчку. Первый делает шаг вбок — это мы выполнили вторую строчку. Согласно третьей строчке, мы должны перестроить остаток колонны, то есть последнего, второго. Это мы уже умеем — он остается на месте, и происходит какой-то возврат. Чип, а что это за возврат?
— Ну, сам подумай, что ты должен сейчас делать? Вспомни, что ты делал до того, как прочел таинственное слово «возврат», и... возвращайся к этому делу.
— Как что делал? Я перестраивал колонну из двух человек. У меня первый сбоку стоит и ждет.
— Вот и возвращайся к тому, что ты дальше должен с ним делать. В программе на четвертой строчке сказано: «Первый идет назад». Это как раз к нему и относится.
— Так, значит, первый идет назад и оказывается позади второго. Опять возврат! Колонна из двух человек перестроена. Все-таки я с этим возвратом чего-то не понял. Интересно, как он будет работать с тремя людьми? Первая строчка нашей программы для колонны из трех человек не годится. На второй строчке первый человек делает шаг вбок, а на третьей... Ага, на третьей строчке мы перестраиваем колонну из двух, это мы уже умеем. Перестроили. На четвертой строчке ставим первого сзади них, то есть на самое последнее место, как и надо.
А зачем же нужен возврат? Ну, теперь ясно — от перестройки одного человека мы вернулись к перестройке двоих, от перестройки двоих к троим и так далее. Значит, возвращаемся на один шаг назад, к самому последнему из брошенных дел. Чип, а знаешь, что мне еще непонятно: как это программа будет работать, если взять много людей, ну, скажем, сто? На третьей строчке написано: «Перестрой остаток колонны», а там 99 человек. Мы же еще не знаем, как их перестраивать?
— А и не надо заранее знать! Начинай применять к ним ту же самую программу, и все получится. Они по очереди будут делать шаг вбок, пока не дойдет черед до последнего, а потом предпоследний встанет позади последнего, предпоследний за ним и так далее, пока первый не встанет сзади всех. Программа будет применяться сто раз, и сто раз будет происходить возврат к предыдущей перестройке.
— Как сложно, правда, Чип? Три строчки написано, а сколько беготни.
— А ты попробуй к следующему разу сам сочинить рекурсивную программу. Договорились?
Автор книги в доступной увлекательной форме отвечает на те многочисленные вопросы, которые могут возникнуть у юного любителя музыки, пришедшего в концертный зал на встречу с симфоническим оркестром: откуда взялись музыкальные инструменты, кто и когда придумал нотную запись, о чем и как рассказывает мелодия, как слушать музыку и т. п.
В данном методическом пособии, разработанном в соответствии с ФГТ, представлена непосредственно образовательная деятельность (НОД) по экологическому воспитанию детей 5-6 лет. Особое внимание уделено диагностике педагогического процесса по блокам «Растения», «Животные», «Человек», «Неживая природа». Широко представлена познавательно-исследовательская деятельность Пособие адресовано страшим воспитателям и педагогам ДОУ, родителям и гувернерам.
Используя различные крупы, а также семена овощей, фруктов, цветов, можно изготавливать чудесные оригинальные аппликации, панно, открытки к празднику.
В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.