有限状态状态机FSM(finite state machine)是为研究有限内存的计算过程和某些语言类而抽象出的一种计算模型。有限状态自动机拥有有限数量的状态,每个状态可以迁移到零个或多个状态,输入字串决定执行哪个状态的迁移。有限状态自动机可以表示为一个有向图。

状态机实现在特定条件下的状态迁移功能,所以最容易想到的是使用条件分支语句来实现状态机框架,例如if/else语句或switch/case语句。此时可以通过相关条件来改变状态并在语句块中实现该状态下的一些功能比如输出等。使用条件语句虽然容易理解,但是对于状态过多的状态机,这种方法可能会在条件判断身上浪费时间,为了提高效率,可以使用函数指针来实现有限状态机。这种方法把状态和处理进行了直接绑定,相当于用空间换时间。

例:春夏秋冬四个状态,在对应的状态时输出此时的状态并且进行跳转;运行四个周期后(四年后)跳出。

首先,当函数指针不带参数输入时:

#include 

输出结果:

之后,再测试以下函数指针传入参数时,每个状态输出此时状态机运行的总步数i:

#include 

得到结果:

c语言状态机_【C语言】有限状态机FSM相关推荐

  1. go语言视频教程_ go语言入门视频教程_go语言实战视频教程

    许多人可能知道go语言的优点在哪里,但他们不知道go语言适合在哪里使用.通过学习go语言视频教程,可以清楚的知道go语言主要用于服务器端开发,其定位是用来开发"大型软件".学习go ...

  2. php易语言互交_易语言php调用源码

    易语言php调用源码系统结构:PHP,SetHandleInformation,CreatePipe,ReadFile,CloseHandle,PeekNamedPipe,GetExitCodePro ...

  3. r语言线性回归_(R语言)线性回归:机器学习基础技术

    线性回归: 使用最小二乘法预测定量的结果的一种回归模型. Anscombe数据集 它由统计学家弗朗西斯·安斯库姆(Francis Anscombe)建立,用来强调数据可视化和异常值在数据分析中的重要性 ...

  4. 状态机的C语言编程(转)

    感谢网友的分享,我才这么快掌握状态机编程,怕丢失了,把网友的帖子全部总结在这里以便查看 一 有限状态机的实现方式 有限状态机(Finite State Machine或者Finite State Au ...

  5. 整理:状态机的C语言编程

    一 有限状态机的实现方式 有限状态机(Finite State Machine或者Finite State Automata)是软件领域中一种重要的工具,很多东西的模型实际上就是有限状态机. FSM的 ...

  6. DSP嵌入式C语言状态机,三段式状态机描述及模版

    三段式状态机描述及模版 [复制链接] 本帖最后由 Aguilera 于 2018-11-10 20:23 编辑 时序电路的状态是一个状态变量集合,这些状态变量在任意时刻的值都包含了为确定电路的未来行为 ...

  7. 用C语言编写有限自动机,C语言实现有限状态机

    1. 什么是有限状态机 有限状态机在百度百科上的解释为: 有限状态自动机(FSM "finite state machine" 或者FSA "finite state a ...

  8. c语言按键状态机,C语言状态机编程思想

    原标题:C语言状态机编程思想 有限状态机概念 有限状态机是一种概念思想,把复杂的控制逻辑分解成有限个稳定状态,组成闭环系统,通过事件触发,让状态机按设定的顺序处理事务.单片机C语言的状态机编程,是利用 ...

  9. c语言判断s1是否大于s2,C语言程序设计_复习资料一.doc

    C语言程序设计_复习资料一 -- <程序设计基础> 院(系) 班级 学号 姓名 试卷卷面成绩占课程考核成绩 %平时 成绩占 %课程考核成绩题号一二三四五六七八九十小计得分 得 分一.单项选 ...

最新文章

  1. python 数据类笔试题_一道 Python 类的笔试题详解
  2. docker下的mysql my.ini_Docker + MySQL 主从环境搭建
  3. linux内核 header.s,Linux启动代码header.S研究
  4. extjs学习(关于grid)
  5. yum升级rhel5
  6. 【caffe-Windows】识别率批量输出——matlab实现
  7. 简单java在线测评程序
  8. SAP License:HANA在线日志被误删后如何恢复?
  9. CSU 1803 2016(数论)
  10. 【Vue2.0】— 全局事件总线GlobalEventBus(十九)
  11. hnu小学期实训之数圈
  12. 写了个散列算法... 用来获取字符串的哈希. 超高效.10亿以下几乎无碰撞.
  13. javascript 布尔类型
  14. 2018.4.3 做lab0
  15. 随处可用的坐姿小帮手,还能按摩热敷,荣泰P30按摩坐垫体验
  16. 常见随机变量的数学期望和方差
  17. 山东理工ACM 1189 C语言实验——逆置正整数(升级版解法)
  18. 数据集fer2013
  19. SQL SERVER 为现有表中增加列
  20. 妇女节手抄报Word电子小报

热门文章

  1. 【AC自动机】HDU 2222 Keywords Search 裸题
  2. 再读《精通css》00
  3. DNN-两种矩阵相乘的理解
  4. 一个html文档的开始标记,如何在Python中只向HTML文档添加一个开始标记
  5. mysql导出逗号_Mysql导出逗号分隔的csv文件
  6. 抢鲜体验:openGauss从源码到主备
  7. 文档丨Oracle 三种迁移方案
  8. DB-Engines 2019 年度数据库出炉:MySQL 成为年度数据库赢家
  9. 史上最全分布式数据库概述
  10. JS的深浅复制,原来如此!