设为首页 加入收藏

TOP

C语言实现有限自动机FSM(二)
2013-10-17 09:05:35 来源: 作者: 【 】 浏览:360
Tags:语言 实现 有限 动机 FSM

 

  即可表达上文中的跳转关系。

  最后定义状态机,如果不考虑多任务请求,那么状态机仅需要存储当前状态便行了。例如:

  typedef struct

  {

  State

  current;

  }

  StateMachine, * pStateMachine;

  State

  step(pStateMachine machine, Condition condition)

  {

  pTrasition

  t = transition_table[machine->current][condition];

  (*(t->action))(machine->current,

  condition);

  machine->current

  = t->next;

  return machine->current;

  }

  总结:我们现在设计实现好了一个状态机,然后要给这个状态机特定的输入,看看状态机的运转情况,以上面图中的那个状态机为例,我们输入的序列是0和1分别代表c1和C2,然后状态s1,s2分别对应0,1.用程序实现这个内容如下

  三、程序实现

  程序清单:小型状态机的实现

  [cpp

  #include<stdio.h>

  #include<unistd.h>

  #include<stdlib.h>

  typedef int state;

  typedef int condition;

  #define STATENUM 4

  #define STATE1 0

  #define STATE2 1

  #define STATE3 2

  #define STATETRAP 3

  #define CONDITIONS 2

  #define CONDITION1 0

  #define CONDITION2 1

  typedef void (* actiontype)(state mystate,condition mycondition);

  typedef struct{

  state next;

  actiontype action;

  }trasition, *ptrasition;

        

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇string类的正确简明写法 下一篇C语言中常数的数据类型

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: