Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Задачи для начинающих

14.02.21 03:22
Re: Задачи для начинающих
 
Murr патриот
Murr
в ответ anly 13.02.21 18:50

всё это соблюдено в диаграмме выше.

----

Увы-увы, но нету там этого.

Например, у тебя там НЕТ возможности переключить все светофоры перекрестка в "Мигающий Желтый".

А когда ты это попытаешься добавить - у тебя появится довольно неприятное усложнение логики.

Если допустить, что светофор дается произвольный - например один трех лампочный, другой - пяти, все снова усложнится.

А усложнения недолжно быть - функция автомата не поменялась - автомат должен управлять включением/выключением ламп светофора. И только.


Ибо именно код автомата определяет из какого состояния и в какое и при каких условиях автомат переключается.

-----

Это на самом деле - просто.

С - состояние

У - управляющее воздействие

Тогда автомат А определяется как

С = А(С,У).

Если У - пустое - нет кнопок или удаленного управления - будет С = А(С) или С = А(С,нулл)

А автомат переключается в любом случае - даже в том, когда С(до) тождественно равно С(после)



ввиду упрощенной задачи), ибо нет

-----

Ты просто частью отбросил, частью замаскировал места где должны быть поверки условий.

Но в сколь-нибудь реальном управлении так работать не будет. Нее - воткнуть - можно, но будут проблемы.

Грубо говоря - в реальной системе ты должен взять текущее С (например состояние ламп включено/выключено/перегорела плюс "режим работы") и текущее У (например, кнопки, таймер, ошибки) рассчитать новое С. На каждом шаге т.е. изменении состояния ламп - все пересчитываешь из лампы+ и все У... Дрючить "кодом автомата" какую-то одну лампу/кнопку/таймер - нельзя.

Тогда - будет работать.



Т.е. активация очередного состояния является следствием предыдущего и условия перехода.

-----

Тут ты упускаешь что после смены состояния (переключения ламп) автомат должен находится в позиции "готовность к очередному изменению состояния" и что это всегда одна и та же позиция.

 

Перейти на