Логика светофора: как объяснить конечные автоматы десятилетним

Светофор — идеальный первый конечный автомат: каждый цвет это состояние, каждая смена — переход, а время решает, когда двигаться дальше. Соберите жёсткий цикл, потом добавьте кнопку.
Светофор — лучший первый конечный автомат, который может собрать ребёнок, потому что десятилетний уже знает все его правила наизусть. Каждый цвет — это состояние, каждая смена — переход, а время — просто то, сколько автомат ждёт, прежде чем двинуться дальше. Назовите эти три части вслух, и большая часть кода напишется сама.
Три слова, которые всё открывают
Конечный автомат — это способ описать нечто, что в каждый момент может находиться только в одном положении. Светофор либо красный, либо зелёный, либо жёлтый. Он никогда не бывает двумя сразу и всегда идёт одним и тем же путём. Именно это единственное правило делает его таким чистым учебным примером.
Нарисуйте его на доске как три кружка со стрелками между ними. Кружки — состояния. Стрелки — переходы. Спросите класс, когда должна срабатывать каждая стрелка, — и вы уже описали всю программу, не написав ни строчки.
Сначала соберите жёсткий цикл
Начните с простейшего варианта: красный пять секунд, зелёный пять секунд, жёлтый две, потом снова красный — и так бесконечно. В каждый момент горит только один свет. Это ограничение и есть урок. Если два огня загораются вместе, автомат оказался в невозможном состоянии, и дети замечают такую ошибку быстро.
Собрать это можно на трёх светодиодах на макетной плате, на встроенных огнях платы sheenbot∞ или целиком в браузере в блочном редакторе, если железа в классе нет. Схема соединений меняется — диаграмма состояний нет.
Добавьте кнопку для пешехода
Теперь сделаем интереснее. Кнопка для пешехода — это событие, а события и есть причина, по которой конечные автоматы лучше простого цикла по таймеру. Когда кто-то нажимает кнопку на зелёном, свет не должен мгновенно переключаться на красный. Он должен доработать свою фазу, перейти на жёлтый, затем на красный и подержаться чуть дольше, чтобы человек успел перейти.
Это учит сразу двум вещам. Во-первых, переход может запускаться событием, а не только таймером. Во-вторых, некоторые переходы защищены условием: нажатие имеет значение только тогда, когда горит зелёный. Конечный автомат для детей, построенный вокруг светофора, — это на самом деле урок о том, когда правило применяется, а не только о том, в чём оно состоит.
Почему этот шаблон встречается повсюду
Как только ребёнок научится видеть состояния и переходы в светофоре, он начинает находить их везде. Микроволновка простаивает, готовит или стоит на паузе. Персонаж игры стоит, бежит или прыгает — и не может делать два дела сразу. Торговые автоматы, двери лифта и сообщения, которыми обмениваются устройства, устроены по той же схеме. Это одна из немногих идей в информатике, которую десятилетний и работающий инженер рисуют совершенно одинаково.
План урока на 40 минут
- Вместе нарисуйте диаграмму из трёх состояний, ещё не притрагиваясь к коду, — примерно пять минут.
- Запрограммируйте жёсткий цикл «красный — зелёный — жёлтый» и гоняйте его, пока тайминг не станет ощущаться правильным.
- Намеренно зажгите два огня одновременно, чтобы класс увидел невозможное состояние.
- Добавьте кнопку для пешехода и решите всей группой, когда именно нажатие должно иметь значение.
- Закончите тем, что назовёте три домашних устройства, работающих так же.
Весь проект укладывается в одно занятие и почти не требует новых терминов. Если нужен готовый вариант с рабочими листами, он входит в нашу программу по робототехнике, а попробовать занятие сначала можно на бесплатном пробном уроке.



