Рис. 62. Стена находится справа от робота.
Наконец, я сформулировал задание для робота: дойти до стены и остановиться. Тут же наступила неразбериха: один схватил робота и стал им шагать по «комнате»; другой стал раскладывать карточки по клеткам комнаты; никто ничего не понимал; ещё кто-то приставал ко мне, зачем всё-таки нужна такая длинная стрелка.
С большим трудом мне удалось восстановить порядок, объяснить, что блок-схему надо выкладывать не на клетках комнаты, а отдельно на столе, что последовательность действий надо изображать стрелками и что начинать надо с «начала» и заканчивать «концом».
Тогда они мне выложили схему, показанную на рис. 63, имея в виду неформально следующие действия: «начать и идти до конца». Я показал им, что при такой программе робот иногда доходит до стены, иногда не доходит, а иногда вообще расшибает нос.
Рис. 63. Программа «дойти до стены и остановиться» — первая попытка (неправильная). При такой программе робот делает всего один шаг, причём даже не проверяет на всякий случай, нет ли перед ним стены.
Тогда Дима закричал:
— А, я знаю, нужно столько вот этих штучек (показал на карточку с шагом), сколько нужно шагов; сейчас скажу: раз, два, три… — пять штук!
Тут я допустил серьёзный педагогический промах, причём, к сожалению, ровно тот же, что меня преследует всё время. Надо было спокойно и без спешки развить эту идею: вырезать из обычной бумаги квадратики, нарисовать человечков и построить все предлагавшиеся схемы. Тогда появление цикла стало бы настоящим открытием. Но я, во-первых, по инерции, во-вторых, с перепугу, что у меня не заготовлено достаточное количество операторов «сделать шаг», попросту отмахнулся от этой идеи на том основании, что программа получается разной для разных клеток, а также очень большой для больших комнат.
После этого мы исследовали возможность обойтись всё же одним оператором шага, возвращаясь к нему с помощью стрелок. Оказалось, что тогда робот каждый раз наталкивается на стену и расшибает нос.
Тогда мы поступили следующим образом: я стал по очереди завязывать мальчикам глаза и просил выполнить в точности то, что требовалось роботу, т. е. дойти до стены и остановиться. Но только перед этим я каждого из них носил с завязанными глазами по комнате и вертел во все стороны, чтобы он не знал, далеко ли до стены. При этом я просил их обратить внимание на то, что каждый из них, прежде чем начать идти, протягивал руку вперёд, чтобы проверить, нет ли там стены.
После этого мы пришли к выводу, что первым действием должна быть проверка того, нет ли впереди стены, — и программа была составлена.
В заключение каждый из них прошагал роботом по комнате, строго следуя блок-схеме (если кто-либо начинал баловаться, я особо подчёркивал, что роботы, в отличие от людей, абсолютно послушны).
Занятие 40. Появляются блоки Дьенеша
12 декабря 1981 года (суббота). 1110-1155 (45 мин.). Дима, Петя, Женя.
Задание 1. Домокош Саас[18] привёз мне из Венгрии в подарок набор разноцветных пластмассовых плашечек, отличающихся друг от друга четырьмя признаками: цветом (красный, синий, жёлтый, зелёный), формой (круги, квадраты, треугольники), размером (большие и маленькие) и наличием или отсутствием дырки — итого 4∙3∙2∙2 = 48 штук. Вроде бы именно эти плашечки называются «логическими блоками Дьенеша»[19]. С ними связано первое задание.
Сначала мы обсудили все имеющиеся признаки. Потом я сформулировал задачу: выкладывать цепочку плашечек друг за другом так, чтобы каждая следующая отличалась от предыдущей только одним признаком, а три были общими.
Ребята очень легко справлялись с заданием, а если иногда ошибались, то либо ошибку обнаруживал сам ошибившийся, либо кто-нибудь из остальных. Вскоре выросла цепочка длиной почти во весь стол.
18
Венгерский математик, специалист по теории вероятностей. В аспирантуре учился в Москве. Век буду ему благодарен за его подарок.
19