- 1、本文档共32页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
形成较为简化的递归结构程序 - Read
第二课 程序设计方法学基本理论 ——结构化定理 关于GOTO语句的争论 1966 Jacopini和Bohm证明了结构化定理 1968.3 Dijkstra在ACM通信关于“GOTO是有害的”信件 1968.7 Dijkstra在ACM操作系统会议上关于“自顶向下”、”逐步求精”的设计思想 1969 Dijkstra在一份技术报告中首次提出“Structured Programming” 1972 25次ACM会议的“GOTO论战” 1974 Eknuth发表文章“带有Goto语句的结构 化程序设计” 替换GOTO的常用方法 辅助变量(布尔变量)替换法 改变程序执行顺序(While;do-while;loop-until) 在程序语言中增加新的控制结构 7种基本程序结构 正规程序 一个流程图程序如果满足: (1)只有一个入口和一个出口 (2)对于每一个结点,都有一个从入口到出口 的通路(即每个结点都可达) 则这个流程图程序称为正规程序。 正规程序图例 基本程序 一个正规程序,如果不包含多于一个结点的 正规子程序,则称为基本程序。 基本程序是正规程序 基本程序可以包含正规子程序 基本程序包含的正规子程序只有一个结点 结构化程序定义 一个基本程序的函数结点用另外一个基本程序替换,就产生一个新的正规程序,称为复合程序 用以构造程序的基本程序集合称为基集合,例如 {序列,if-then-else,while-do}或{序列,if-then-else,do-until}等 由基本程序的一个固定的基集合,构造出来的复合程序称为结构化程序 结构化定理小结 采用序列、条件和循环表示任意复杂控制结构,表示方法不唯一,采用{序列,if-then-else,do-until}同样可以表示所有的正规程序。 采用上述方法得到的结构化程序比较庞大,效率不高,可以通过消除多余的对计数器L的测试和赋值,形成较为简化的递归结构程序。 JAVA和GOTO 在Java中goto语句被完全抛弃了,与此同时,Java扩大了break语句和 continue语句的功能,通过使用break、continue和label,程序流程被允许在 多层循环中跳转。 Char a; //outer: 若在此处定义标签,由于不是其后紧跟循环语句,所以会被勿略掉。 //被忽略掉的标签,如果在 break 或者 continue 语句中用到,编译时不能通过。 System.out.println(--- Begin Matching ---); outer: for (int i = 0; i 10; i++) { for (int j = 0; j 10; j++) { a = (char)System.in.read(); if (a == ‘b’) { break outer; //跳到哪个循环? } if (a == ‘c’) { continue outer; //跳到哪个循环? } } } 辅助变量法改造GOTO语句的例子(1/2) * * 结构化程序设计程序设计方法学 程序设计方法学是在结构化程序设计基础上逐步发展和完善起来的。 1968年Dijkstra在ACM通信上提出“GOTO语句是有害的”信件,向传统的程序设计方法提出了挑战,引起人们对程序设计方法学的普遍重视。 开型结构 If-then -else While-do Do-until If-then Do-while-do 函数 序列 闭型结构 程序节点结构分类 函数结点(Process Box) 谓词结点(Decision Box) 汇点 (Junction Box) f p 例子 B1 S1 B2 S2 S3 T T F F L1: if B1 then goto L2; S1; if B2 then goto L2; S2; go
文档评论(0)