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