状态机的概念_第1页
状态机的概念_第2页
状态机的概念_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、状态机的概念状态机是软件编程中的一个重要概念。比这个概念更重要的是对它的灵活应用。在一个 思路清晰而且高效的程序中,必然有状态机的身影浮现。比如说一个按键命令解析程序,就可以被看做状态机:本来在A状态下,触发一个按键 后切换到了 B状态;再触发另一个键后切换到C状态,或者返回到A状态。这就是最简单的 按键状态机例子。实际的按键解析程序会比这更复杂些,但这不影响我们对状态机的认识。进一步看,击键动作本身也可以看做一个状态机。一个细小的击键动作包含了:释放、 抖动、闭合、抖动和重新释放等状态。同样,一个串行通信的时序(不管它是遵循何种协议,标准串口也好、I2C也好;也不 管它是有线的、还是红外的、

2、无线的)也都可以看做由一系列有限的状态构成。显示扫描程序也是状态机;通信命令解析程序也是状态机;甚至连继电器的吸合/释放 控制、发光管(LED)的亮/灭控制又何尝不是个状态机。当我们打开思路,把状态机作为一种思想导入到程序中去时,就会找到解决问题的一条 有效的捷径。有时候用状态机的思维去思考程序该干什么,比用控制流程的思维去思考,可 能会更有效。这样一来状态机便有了更实际的功用。程序其实就是状态机。也许你还不理解上面这句话。请想想看,计算机的大厦不就是建立在0”和“1”两个 基本状态的地基之上么?状态机的要素状态机可归纳为4个要素,即现态、条件、动作、次态。这样的归纳,主要是出于对状 态机的内

3、在因果关系的考虑。“现态”和“条件”是因,“动作”和“次态”是果。详解如 下:现态:是指当前所处的状态。条件:又称为“事件”。当一个条件被满足,将会触发一个动作,或者执行一次状态 的迁移。动作:条件满足后执行的动作。动作执行完毕后,可以迁移到新的状态,也可以仍旧 保持原状态。动作不是必需的,当条件满足后,也可以不执行任何动作,直接迁移到新状态。次态:条件满足后要迁往的新状态。“次态”是相对于“现态”而言的,“次态”一 旦被激活,就转变成新的“现态”了。如果我们进一步归纳,把“现态”和“次态”统一起来,而把“动作”忽略(降格处理), 则只剩下两个最关键的要素,即:状态、迁移条件。状态机的表示方法

4、有许多种,我们可以用文字、图形或表格的形式来表示一个状态机。纯粹用文字描述是很低效的,所以就不介绍了。接下来先介绍图形的方式。状态迁移图(STD)状态迁移图(STD),是一种描述系统的状态、以及相互转化关系的图形方式。状态迁 移图的画法有许多种,不过一般都大同小异。我们结合一个例子来说明一下它的画法,如图 1所示。图1状态迁移图状态框:用方框表示状态,包括所谓的“现态”和“次态”。条件及迁移箭头:用箭头表示状态迁移的方向,并在该箭头上标注触发条件。节点圆圈:当多个箭头指向一个状态时,可以用节点符号(小圆圈)连接汇总。动作框:用椭圆框表示。附加条件判断框:用六角菱形框表示。状态迁移图和我们常见的

5、流程图相比有着本质的区别,具体体现为:在流程图中,箭头 代表了程序PC指针的跳转;而在状态迁移图中,箭头代表的是状态的改变。我们会发现,这种状态迁移图比普通程序流程图更简练、直观、易懂。这正是我们需要 达到的目的。状态迁移表除了状态迁移图,我们还可以用表格的形式来表示状态之间的关系。这种表一般称为状 态迁移表。表1就是前面介绍的那张状态迁移图的另一种描述形式。表1状态迁移表1A占的杵|匚.|电,IL-L,J MM事怀eiK心1国升韩不葛虽瞬!如以l mm 1也5 1一斗林,:采用表格方式来描述状态机,优点是可容纳更多的文字信息。例如,我们不但可以在 状态迁移表中描述状态的迁移关系,还可以把每个状态的特征描述也包含在内。如果表格内容较多,过于臃肿不利于阅读,我们也可以将状态迁移表进行拆分。经过 拆分后的表格根据其具体内容,表格名称也有所变化。比如,我们可以把状态特征和迁移关系分开列表。被单独拆分出来的描述状态特征的 表格,也可以称为“状态真值表”。这其中比较常见的就是把每个状态的显示内容单独列表。 这种描述每个状态显示内容的表称之为“显示真值表”。同样,我们把单独表述基于按键的 状态迁移表称为“按键功能真值表”。另外,如果每一个状态包含的信息量过多,我们也可 以把每个状态单独列表。由此可见,状态迁移表作为状态迁移图的有益补充,它的表现形

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论