как с филосовской точки зрения писать конечные автоматы. Предположим у нас есть конечный автомат, где начальное состояние является так же и конечным. И если уж так получилось, что мы в самом начале попали в петлю и остались в начальном/конечном состоянии, то как правильно это обыграть?
Я написал функцию stay, которая в отличие от других функций переходов не меняет состояние автомата, но просто делает проверку находится ли он в конечном состоянии, и если да, то вызывает функцию что завершает работу автомата. Но может лучше просто для данного случая вызывать отдельно функцию завершающую работу автомата, а stay оставить для других, не завершающих работу дуг?
void stay(void)
{
puts("FSM stay at current state");
if (fsm_instance.state == FIRST)
{
goto_first_state();
}
return;
}
разве код выхода не 0?
Тут очевидная ошибка, каким-то чудом мы указали несуществующее состояние автомата/несуществующий импут
Обсуждают сегодня