Простой пример — программа
<b>ВОСКРЕСЕНЬЕ</b>.
1. Покатайся на коньках.
2. <b>Сходи в кино на</b> («Чучело»»).
3. Сделай уроки.
4. Ложись спать.
5. КОНЕЦ.
Подпрограмма <b>Сходи в кино на</b> (фильм)
1. Узнай, где идет фильм.
2. Подойди к кинотеатру.
3. Купи билет на фильм.
4. Посмотри фильм.
5. Выйди из кинотеатра.
6. Вернись домой.
7. ВОЗВРАТ.
Видите, программа ВОСКРЕСЕНЬЕ вызывает подпрограмму Сходи в кино на (фильм), причем в этот раз на фильм «Чучело», а в другой раз это может быть «Ну, погоди!». В конце подпрограммы написано «ВОЗВРАТ», но это не возврат к ее началу — ведь тогда придется снова смотреть тот же фильм, потом снова, и так без конца — нет, это возврат к программе ВОСКРЕСЕНЬЕ. Ты вернулся домой из кино и делаешь уроки.
Задание третье — программа «СКАЗКИ, СТИШКИ, СЧИТАЛКИ».
Это задание у большинства ребят получилось лучше всего. Тут и сказки про кота в сапогах, и про золотую рыбку, и стишки про падишаха, и подпрограмма «Кто пасется на лугу (кони, нет, не кони)». ...Но много и ошибок: некоторые просто нумеруют персонажи или главы и думают, что получилась программа, другие делают бесконечный цикл, третьи забывают увеличивать номер в цикле, и так далее.
Общий совет: программу надо обязательно отладить, то есть посмотреть, как она работает. Ведь программа — это приказы для компьютера, а прежде, чем отдавать приказы, надо проверить, можно ли их выполнить и что при этом получится. Надо сыграть в компьютер — попробовать точно выполнить все эти приказы.
— Ну, хватит, Чип, мне уже надоело разбирать ошибки, — вмешался Сережа, — давай, наконец, выберем лучшую работу.
И тут разгорелись споры! Чип и Сережа чуть не поссорились, пока выбрали 15 лучших работ. Вот имена их авторов: Кирилл МИШАЧЕВ из Липецка (12 лет), Наташа САПУНЦОВА из Таганрога (11 лет), Кирилл ТРУБИЦЫН из Зеленограда (11 лет), Игорь ТЫРНОВ из Харькова (13 лет), Ирина КУЗЬМИНА из Саратова (возраст не указан), Алла КУЗЬМЕНКО из Киева (4-й класс), Алексей АДИГЕЕВ из Ростова-на-Дону (возраст не указан), Галя УХОВА из Троицка (13 лет), Сергей БАРСУКОВ из Краснодара (13 лет), Елена ЛУЗИНА из Москвы (9 лет), Сергей ВАРЖАНСКИЙ из Москвы (6-й класс). (Сергей у нас уже был победителем конкурса «Теремок», но мы неправильно напечатали в журнале его фамилию. Впрочем, Сергей сам виноват, у него такой плохой почерк, что его не может разобрать даже компьютер.) Дима ЛАПЧИК из Омска (10 лет), Олег КИБИРЕВ из Новосибирска (12 лет), Оксана ШАБЕРНЕВА из Казани (возраст не указан), Женя АНДРЮШИН из Курска (12 лет).
Пять первых работ были лучше всех. Кирилл Трубицын пишет, что занимается в кружке юного программиста. Действительно, по его программам видно: он опытный программист, знает язык БЕЙСИК и многие тонкости работы компьютеров. Но Сережа сказал, что изобретательности и фантазии больше в работе Наташи Сапунцовой, которая использовала только то, что было напечатано в «Пионере». Тут Чип обратил внимание на маленькую ошибку в Наташиной программе про жирафа. Она нумерует пункты своей программы и вводит номер N, который увеличивает на 2 при каждом цикле, чтобы ее программа приводила маме все новые доводы. Но Наташа, к сожалению, забыла написать, когда нужно переходить к пункту N, поэтому ее программа будет, как попугай, повторять маме все тот же первый довод: что Наташа берется ухаживать за жирафом сама. Все остальные доводы, и очень остроумные, так и не будут использованы. Чип сказал, что в программировании нет мелочей, — однажды ракета пролетела мимо нужной планеты из-за пропущенной запятой в программе.{2}
Очень интересная работа у Ирины Кузьминой. Она составила блоксхемы для чистки картошки и для уговоров купить жирафа и заметила, что они совпадают. Потом она составила настоящую программу на БЕЙСИКЕ для сочинения стихов и прислала эти стихи, написанные компьютером:
Судя по ее работе, Ирина — программист со стажем, но неизвестно, сколько ей лет, она этого не написала. Поэтому Чип и Сережа решили не присуждать ей первого приза.
Остались две работы — Кирилла Мишачева и Игоря Тырнова. Обе — замечательные, без единой ошибки, ясные и, что тоже важно, краткие. Ведь чем короче программа, тем легче в ней разобраться и тем проще ее изменить, если понадобится.
Вот, например, программа Кирилла для чистки картошки.
Возьми картошку и ПОЧИСТЬ (картошку),
а теперь ВЫРЕЖЬ ГЛАЗКИ'.
КОНЕЦ.
Подпрограмма ВЫРЕЖЬ ГЛАЗКИ'.
Если глазки вырезаны, то возврат,
иначе вырежь один глазок и ВЫРЕЖЬ ГЛАЗКИ'.
Подпрограмма ПОЧИСТЬ (картошку).
Если картошка почищена, то возврат,
иначе срежь кусочек кожуры и ПОЧИСТЬ (остаток картошки).
Прекрасный пример рекурсивной программы! Эта программа особенно понравилась Чипу, который вообще неравнодушен к рекурсивным программам и считает, что за ними будущее.
А Сереже больше понравилась программа Игоря про жирафа. Он прислал даже два варианта программы. Первый такой:
1. Если вам уже купили жирафа, то конец,
иначе продолжайте дальше.
2. Сейчас N = 1.
3. Принеси домой N кошек.
4. Если мама тебя отругала или выбросила кошек на улицу, увеличь N в два раза.
5. Попроси маму купить жирафа.
6. Если мама купила жирафа, то конец,
иначе переходи к строке 3.
— Смотри, Чип, как он здорово придумал: даже если жираф в тысячу раз больше кошки, то за десять дней кошек станет столько, что маме придется выбрать из двух зол меньшее и согласиться на жирафа.
— А смотри, что пишет про жирафа Кирилл:
Рекурсивная программа ЖИРАФ.
Чуть-чуть подумай.
Если не понял, почему не надо покупать жирафа, то ЖИРАФ,
а если понял, то КОНЕЦ.