另一种方法-状态机.pptVIP

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
另一种方法-状态机.ppt

练习--有兴趣、有力气的话 交通信号灯控制逻辑 ★ 通配符的自动机自动生成 ★ ★ IM文字通讯协议客户端状态控制 ★ ★ ★ 网络麻将程序客户端状态控制 ★ ★ ★ ★ 上下文无关文法处理程序的自动生成(状态?规约) ★ ★ ★ ★ ★ 状态机自动优化 ★ ★ ★ ★ ★ 该PPT是基于本人的经验编写的,没有很完整的书籍对PPT的内容进行说明, 因此,其中有非常大的可能存在着错误或者疏漏的地方。 对于文本的内容以及顺序有很多不能推敲之处请谅解。 仅仅是经验之谈。 本PPT是为对编程、设计感兴趣的人看的。 * 快速解释每一个状态的变化过程 强调状态变化的条件 * 以我公司的门禁处理系统为例子,说明。 * * * 有一个例子:98年的时候,我编写了一个网络交互程序,发现其中有错误,很难查找。 后来一位专家过来,指出网络协议没有进行仔细的设计,没有状态机。 于是花费40分钟,将状态机绘制出来。用了1分钟,找出了设计的问题。 一个状态迁移没有处理。 * 网络协议设计:状态机已经成为必须的设计要求,并有自动化工具完成 复杂系统:OS是一个现成的例子。进程、线程、内存、设备等无一不是具有各种状态的, 并且在不同的状态下进行转换。 日常生活中的水的三态之间可以发生状态的转换。 * * * * 使用状态机,可以将程序中的IF语句,用状态代替。 可以: 提高程序的清晰度 提高代码的质量(不易出错) 避免纠缠不清的情况 * 我们可以估计这个计算量: 5个状态,每个状态有两个输入,两个打印,两个跳转,因此每一个状态有6个参数,共64. 因此有5^64的状态计算。 501这个结果的获得是使用AppleII进行的。采用了外置的电路板,辅助处理程序在板上运行。共用了803小时 找出了这个答案。如果没有这个硬件,则会需要20个月的时间。 * 另一种方法 状态机介绍 设计方法 软件系统有多种设计方式 自顶向下,自底向上 从事务出发思考(传统的) 以事务处理为中心的顺序设计方法 从数据出发思考(现代的) 面向数据的类体系设计方法(OO) 目前我们对于类的设计过多,对事务性处理的设计较少。 状态机是对复杂事务进行设计的有效手段 最简单的例子 字符串识别 匹配串A+B*C+ AABBBCC√ AAABBBx 状态:5个 事件:7个 A/B/C/~A/~BC/~EOS/EOS 处理:2个 另一个简单例子(1) 门禁控制程序 刷卡、开门、关门 按钮、开门、关门 超时报警 身份不对提示 手动开门、自动关门 另一个简单例子(2) 7个状态 11次状态迁移 10种事件响应 5个处理方法 另一个简单例子(3) 设计转换程序的方法-1 状态 起始、结束、关闭、确认中、开门中、关门中、报警 事件 启动、停止、关门完毕、开门完毕、按钮按下、刷卡、确认成功、确认失败、开门超时、关门超时 处理 开门允许、开门禁止、成功提示、失败提示、超时报警 另一个简单例子(4) 设计转换程序的方法-2 状态 一个状态一个函数 StateClosed/StateOpening/StateAlerting… 事件 函数中响应该函数所需要处理的事件(以关闭状态为例) On EventPushbutton OnEventRFCardInput 处理 函数或状态转换过程进行处理(以开门中状态为例) 设置允许开门AllowOpen 另一个简单例子(5)--说明 前面的例子太过简单,但这种设计方式是多种事务处理程序的设计基础,有着广泛的应用。 实际上,包括正则表达式等文字匹配的工作都是使用状态机进行处理的,状态机可以依据匹配串进行自动化构建,它可以处理人力所无法承受的设计工作。 尝试一下这个:(([[\u4E00-\u9FA5][^与及]]+?[国省市区县])+公安[部厅局]([[\u4E00-\u9FA5][^与及]]+?(?:分局|派出所|[大中总支]队))*) 小结(1) 用状态机方法进行设计的特征 1. 全面,极大地减少遗漏 2. 直观,比文字或代码的表现力强一数量级 3. 转换,设计转换为程序的过程非常简单 4. 没有看到设计的人可能看不懂程序? 可能性很大,尤其是大型状态机设计 程序的正确性完全依赖于设计的正确性 延时灯状态逻辑 有声音亮 延时熄灭 在很嘈杂的地方灯会灭掉,然后再亮,为什么? 提取注释 /* */ {} // 状态机设计的应用范围 状态机应用环境 适合于具有复杂步骤的事务处理 网络协议 事件驱动 语言处理 自然语言/程序语言 复杂系统 多任务、多事务系统 实际上是全范围实用 计算机(包括程序)都是状态机 状态机设计的要素 状态机要素 状态定义(S)States 事件定义(E)Event 状态迁移(T)Transfer 事务处理(A)Action 初始状态(S0

文档评论(0)

docinpfd + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5212202040000002

1亿VIP精品文档

相关文档