#什么是状态机?
定义:
状态机是 “”有限状态自动机的简称“” 。

先来解释什么是“状态”( State ):
现实事物是有不同状态的,例如一个LED等,就有 亮 和 灭两种状态。我们通常所说的状态机是有限状态机,也就是被描述的事物的状态的数量是有限个,例如LED灯的状态就是两个 亮和 灭。

状态机,也就是 State Machine ,不是指一台实际机器,而是指一个数学模型。说白了,一般就是指一张状态转换图。

举例
以物理课学的灯泡图为例,就是一个最基本的小型状态机

什么是状态机?用C语言实现进程5状态模型

可以画出以下的状态机图

什么是状态机?用C语言实现进程5状态模型
这里就是两个状态:①灯泡亮,②灯泡灭 如果打开开关,那么状态就会切换为 灯泡亮 。灯泡亮 状态下如果关闭开关,状态就会切换为 灯泡灭。

状态机的全称是有限状态自动机,自动两个字也是包含重要含义的。给定一个状态机,同时给定它的当前状态以及输入,那么输出状态时可以明确的运算出来的。例如对于灯泡,给定初始状态灯泡灭 ,给定输入“打开开关”,那么下一个状态时可以运算出来的。

四大概念
下面来给出状态机的四大概念。

**State ,状态。**一个状态机至少要包含两个状态。例如上面灯泡的例子,有 灯泡亮和 灯泡灭两个状态。

**Event ,事件。**事件就是执行某个操作的触发条件或者口令。对于灯泡,“打开开关”就是一个事件。

**Action ,动作。**事件发生以后要执行动作。例如事件是“打开开关”,动作是“开灯”。编程的时候,一个 Action 一般就对应一个函数。

**Transition ,变换。**也就是从一个状态变化为另一个状态。例如“开灯过程”就是一个变换。

状态机----C语言实现相关推荐

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

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

  2. 编程入门笔记:状态机模式在工控机中的体现

    2021.11.06 -- 参考文献 [1] 李霞,王永章,梁宏斌,等.有限状态机在开放式数控系统中的应用[J].计算机集成制造系统,2005(3):428-432. [2] 余孟尝. 数字电子技术基 ...

  3. 分布式系统概念和设计 第十五章 (1)

    COORDINATION AND AGREEMENT http://www.cdk5.net/wp/ 背景知识点:Reliable failure detector 实际系统中没有reliable f ...

  4. Golang-常用第三方库

    Golang_学习笔记 goleak--Goroutine 泄漏防治神器 Golang 命令行工具--urfave/cli 用法 Flag 参考文档 Golang处理Excel 微服务 请求路由-mu ...

  5. c语言自动机的建立,C语言最优状态机规范

    C语言最优状态机规范 前言 近来思绪有点停不下来,构思了一个GUI的框架(用在Cotex-M平台上,很小),期待以后有时间去实现,里面有一个对触摸屏的检测,自然想到使用状态机进行消息的生成和分发,于是 ...

  6. C语言状态机编程思想

    关注.星标公众号,直达精彩内容 文章来源:头条-嵌入式在左C语言在右 链接:https://www.toutiao.com/i6843028812112855564/ 有限状态机概念 有限状态机是一种 ...

  7. 设计模式的C语言应用-状态机模式-第二章

    模式介绍 状态(state)模式是C语言实现相当常用的模式,也是能够在C语言***现出来的最显性的模式之一.在面向对象里,状态模式允许一个对象在内部状态改变的时候改变其行为. 状态用法很多,最常见的是 ...

  8. c语言状态机_【C语言】有限状态机FSM

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

  9. c语言状态机实现坐标切换,C语言状态机最优模式(转)

    近来思绪有点停不下来,构思了一个GUI的框架(用在Cotex-M平台上,很小),期待以后有时间去实现,里面有一个对触摸屏的检测,自然想到使用状态机进行消息的生成和分发,于是想着实现一个状态机实现的模型 ...

最新文章

  1. python 比较运算符和逻辑运算符
  2. FTP 服务搭建及常用的命令脚本及传输协议基础普及
  3. UI仿写 - 收藏集 - 掘金
  4. 来自codeblock 贴吧
  5. 可扩展Web架构与分布式系统
  6. Spring Cloud Alibaba基础教程:支持的几种服务消费方式(RestTemplate、WebClient、Feign)
  7. 坑 之 Tensorflow安装在导入模块时会出现ImportError: DLL load failed: 找不到指定的模块的问题
  8. 2012年最后一天,终于盼到公司发报卡了
  9. [AtCoder Educational DP Contest] V - Subtree(树形dp + 前缀积/后缀积)
  10. getdate函数_PHP getdate()函数与示例
  11. H.264中POC类型之探讨
  12. 第10月第25天 java annotation
  13. 平面设计师,请问你的灵感在哪里充电
  14. 字符串压缩——C语言
  15. HDU1248 寒冰王座【0/1背包+DP】
  16. 4-0 Software Development OKR
  17. Python入门50个小程序
  18. 从程序员角度看“上帝“玩游戏
  19. 算法:一个小人通过有鳄鱼的河
  20. 正则表达式习题解答-Python核心编程3 第一章

热门文章

  1. 计算机组成原理实验四 微程序控制器实验报告
  2. 27U、42U、47U常见机柜设备布局图详解【转载自微信公众号弱电课堂】
  3. 纯视觉3D目标检测新SOTA!STS:基于Camera的深度估计新方法
  4. 使用驱动器H:中的光盘之前需要将其格式化
  5. 索尼Xperia S_4.0一键ROOT工具┇_┇免解锁┇_┇一分钟ROOT┇_┇
  6. 电脑断电后,突然无线有线网卡无法使用
  7. webrtc入门之客户端连麦demo-apprtc
  8. 洛谷P5594 [XR-4] 模拟赛C++ 思路加代码
  9. 武器装备测试系统ETest
  10. 009 向量:定义、内积、相关性与线性表示及性质