Задачи для начинающих
всё это соблюдено в диаграмме выше.
----
Увы-увы, но нету там этого.
Например, у тебя там НЕТ возможности переключить все светофоры перекрестка в "Мигающий Желтый".
А когда ты это попытаешься добавить - у тебя появится довольно неприятное усложнение логики.
Если допустить, что светофор дается произвольный - например один трех лампочный, другой - пяти, все снова усложнится.
А усложнения недолжно быть - функция автомата не поменялась - автомат должен управлять включением/выключением ламп светофора. И только.
Ибо именно код автомата определяет из какого состояния и в какое и при каких условиях автомат переключается.
-----
Это на самом деле - просто.
С - состояние
У - управляющее воздействие
Тогда автомат А определяется как
С = А(С,У).
Если У - пустое - нет кнопок или удаленного управления - будет С = А(С) или С = А(С,нулл)
А автомат переключается в любом случае - даже в том, когда С(до) тождественно равно С(после)
ввиду упрощенной задачи), ибо нет
-----
Ты просто частью отбросил, частью замаскировал места где должны быть поверки условий.
Но в сколь-нибудь реальном управлении так работать не будет. Нее - воткнуть - можно, но будут проблемы.
Грубо говоря - в реальной системе ты должен взять текущее С (например состояние ламп включено/выключено/перегорела плюс "режим работы") и текущее У (например, кнопки, таймер, ошибки) рассчитать новое С. На каждом шаге т.е. изменении состояния ламп - все пересчитываешь из лампы+ и все У... Дрючить "кодом автомата" какую-то одну лампу/кнопку/таймер - нельзя.
Тогда - будет работать.
Т.е. активация очередного состояния является следствием предыдущего и условия перехода.
-----
Тут ты упускаешь что после смены состояния (переключения ламп) автомат должен находится в позиции "готовность к очередному изменению состояния" и что это всегда одна и та же позиция.