Чтение онлайн

на главную - закладки

Жанры

Шрифт:

— Что хочу? Прекрасно! Наколдуй в телевизоре, чтобы получилась специально для нас с тобой интересная передача. Ведь в телевизоре электроны? Скажешь, нет?

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

По экрану побежали полосы, раздалось гудение, и вдруг вместо диктора появилось улыбающееся личико Чипа.

— Готово! — весело крикнул Чип с экрана. —

Теперь-то мы с тобой поиграем на славу! [5] Вот этот маленький человечек будет за тебя. — Чип показал на смешного, карикатурного мальчика рядом с собой. Тот помахал Сереже рукой и улыбнулся до ушей. — Управлять ты им будешь с помощью ручек настройки телевизора. Поверти их и увидишь, что человечек будет двигаться, куда ты захочешь. А уж говори за него сам.

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

5

Ребята, Чип действительно может сделать такое чудо. Многие из вас видели электронные игры-приставки к телевизору. Этими играми управляют такие же маленькие чипы, что и сидят в компьютерах.

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

Действительно, на экране был замечательный день. Светило солнце, пели птички, Чип и мальчик шли по яблоневому саду.

Недолго думая, Сережа направил мальчика к яблоне и заставил на ходу сорвать самое румяное яблоко. И тут, как это часто бывает, когда нечаянно сорвешь яблоко, появился сторож.

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

— Ах вот оно что, — пробасил сторож, — ты сорвал самое спелое яблоко, — значит, ты разбираешься в яблонях? Сейчас мы это проверим. — Он вынул из кармана черный шелковый платок и завязал мальчику глаза. — Вот тебе корзинка, полезай-ка на яблоню и собери все яблоки. Да смотри не подглядывай! А пропустишь хоть одно, полезай на следующее дерево и работай, пока не научишься.

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

Сережа подвел мальчика к дереву, и тот полез вверх, держа в одной руке корзинку. Изображение выросло во весь экран, так что было видно только место на яблоне, по которому полз мальчик. Вот он дополз до развилки.

«Так, — подумал Сережа, — полезем налево, там, помнится, было больше яблок. Только бы потом не забыть и про правую ветку».

Только на пятой развилке Сережа понял, что так дело не пойдет. Невозможно упомнить, на какую ветку мальчик уже забирался, а на какую — нет. Вконец замучившись, Сережа спустил мальчика с дерева. Сторож злорадно захохотал. Теперь, когда изображение уменьшилось, стало видно, что Сережа с мальчиком пропустили одну ветку, полную яблок.

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

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

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

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

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

— А при чем тут они? — удивился Сережа. — Я просто составил план: добраться до первой развилки и по такому же плану просмотреть каждую ветку.

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

Чип смущенно покашлял, принял торжественную позу и продекламировал:

Рекурсивный стих-подпрограмма

ОБИРАЕШЬ (ветку)

По стволу ты полезай, видишь яблоко — хватай.

На развилку вылез вдруг — ОБИРАЕШЬ (каждый сук).

Яблоки собрал — ВОЗВРАТ: лезешь по стволу назад.

Здесь все дело во второй строчке. Если ветка разветвляется, то и строчку тоже надо разветвить: заменить слова ОБИРАЕШЬ (каждый сук) на весь стишок для каждого сучка. Сколько сучков, столько и стишков. Если и те разветвятся, то и стишки размножатся. Вот смотри, как это нарисовал художник.

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

Поделиться:
Популярные книги

Двойник Короля 2

Скабер Артемий
2. Двойник Короля
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Двойник Короля 2

Старшеклассник без клана. Апелляция кибер аутсайдера 2

Афанасьев Семен
2. Старшеклассник без клана. Апелляция аутсайдера
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Старшеклассник без клана. Апелляция кибер аутсайдера 2

Барон Дубов 3

Карелин Сергей Витальевич
3. Его Дубейшество
Фантастика:
юмористическое фэнтези
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Барон Дубов 3

Кодекс Крови. Книга ХVI

Борзых М.
16. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга ХVI

Мастер 6

Чащин Валерий
6. Мастер
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Мастер 6

Пограничная река. (Тетралогия)

Каменистый Артем
Пограничная река
Фантастика:
фэнтези
боевая фантастика
9.13
рейтинг книги
Пограничная река. (Тетралогия)

Прометей: каменный век

Рави Ивар
1. Прометей
Фантастика:
альтернативная история
6.82
рейтинг книги
Прометей: каменный век

Стратегия обмана. Трилогия

Ванина Антонина
Фантастика:
боевая фантастика
5.00
рейтинг книги
Стратегия обмана. Трилогия

Корсар

Русич Антон
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
6.29
рейтинг книги
Корсар

Сердце Дракона. нейросеть в мире боевых искусств (главы 1-650)

Клеванский Кирилл Сергеевич
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
7.51
рейтинг книги
Сердце Дракона. нейросеть в мире боевых искусств (главы 1-650)

Ведьмак (большой сборник)

Сапковский Анджей
Ведьмак
Фантастика:
фэнтези
9.29
рейтинг книги
Ведьмак (большой сборник)

Сборник "Войти в бездну"

Мартьянов Андрей Леонидович
Фантастика:
боевая фантастика
7.07
рейтинг книги
Сборник Войти в бездну

Секреты серой Мыши

Страйк Кира
Любовные романы:
любовно-фантастические романы
6.60
рейтинг книги
Секреты серой Мыши

Имена мертвых

Белаш Людмила и Александр
Фантастика:
боевая фантастика
5.00
рейтинг книги
Имена мертвых