1、确定一共有多少种状态,这里的状态有开和关,细分还有say thankyou 和警告
2、确定状态之间的迁移条件
如果按照四种状态:开、关、说谢谢、警告,那么这四种状态之前的迁移条件很明显了
分两个函数:
1、检查是否需要迁移状态;
2、迁移状态.
遍历各种状态检查是否有状态需要发生迁移.一般用一个switch将各种状态列出,然后在各种状态里面用if检查是否需要迁移状态,如果需要迁移,做好标记.
再次遍历各种状态,检查哪些状态做了标记,迁移到新状态,并做相应的操作,比如进入关的时候,做关门动作。
典型的状态机结构:
enum { state_A, state_B, state_C } state = state_A
while(1)
{
switch ( state )
{
case state_A:
if ( event_A )// 这里也可以用switch
{
action_1() // 在某状态下发生某事件执行某个动作,并转入下个状态
state = state_B
}
else if ( event_B )
{
}
else
{
}
break
case state_B:
... ...
}
}
问题要求:将C语言的注释转换为c++的注释方式常见的C语言注释问题,由此可见C语言的注释比较复杂,情况也比较多,如果按照以下的情况一种一种的去处理的话逻辑太过混乱,无法真正的整理清楚,所以需要转换思路。
将复杂的控制逻辑分解成有限个稳定状态,在每个状态上进处理,这就是有限状态机。
有限状态机是闭环系统,可以有限的状态,处理无穷的事务。