(е) Мальчики просили ещё задач, но я уже истощился. Я стал объяснять, что у меня их нет, так как для такой мелюзги никто задач не придумывает. Дима удивился:
— Как? А в школе?
Я ему сказал:
— Ну, хорошо: что больше, 5 или 3?
Он как-то весь сразу посерел, съёжился, как будто ему сказали гадость, и промямлил:
— Ой, нет, не надо…
Но Петя продолжал фантазировать:
— Стояло 5 автомобилей; 2 из них уехало; сколько осталось?
Тут и я подхватил:
— Горело 5 свечей; 2 из них погасли; сколько осталось?
Ответ очень ребят насмешил (остались как раз те две свечи, что погасли, а остальные три сгорели).
Задание 2.
Однако когда он стал складывать блок-схему, то сделал это неправильно: он поставил ромб проверки стены впереди, затем блок «шаг», а после этого не вернулся к исходному ромбу проверки, а поставил новый (рис. 115).
Рис. 115.
Потом, забыв о ветви «нет», он перешёл к ветви «да» и вскоре блок-схему закончил. Женя указал ему на синтаксические ошибки: некоторые стрелки обрывались в никуда. Однако Дима эти замечания проигнорировал и стал свой алгоритм проверять. Через секунду все забыли об ошибках, так как возник более важный вопрос: кто будет первым исполнять роль робота, кто вторым и т. д. Кое-как удалось спор решить.
Димин алгоритм, конечно же, не работал: или приводил не в угол, или вообще прерывался посреди работы (те самые никуда не ведущие стрелки).
Мальчики стали его исправлять, на этот раз все втроём. Однако все исправления носили локальный характер: каждый раз, обнаруживая неправильную работу, ребята меняли только соответствующее место в блок-схеме, никак не задумываясь о том, как это отразится на алгоритме в целом.
В результате примерно получаса работы — многочисленных проб, проверок и переделок — получилась до жути неструктурная блок-схема, изображённая на рис. 116.
Самое удивительное, что она-таки работала! Проверки из самых разных положений непеременно заводили робота в угол.
Время кончалось, и я с трудом сумел остановить мальчиков, увлёкшихся проверками алгоритма. Прочитать им Депмана я опять не успел, и кубики из Scientific American снова не показал. Зато передо мной встала теперь нелёгкая задача: убедиться самому, правильно ли работает построенный детьми алгоритм. Я сидел над ним почти час и в результате почти во всём разобрался. Этот алгоритм в самом деле всегда приводит робота в угол
В следующий раз я покажу это ребятам.
Занятие 70. Снова о программах
Задание 1.
Рис. 116.
Таким образом, все мои воззвания в защиту структурности («можно проще и лучше») потеряли почву под ногами, потому что — что значит лучше, если и так работает?