北京航空大学研究生程序语言设计原理教程第07章.pptVIP

  • 1
  • 0
  • 约7.14千字
  • 约 21页
  • 2018-08-11 发布于江苏
  • 举报

北京航空大学研究生程序语言设计原理教程第07章.ppt

第7章 程序控制 冯·诺依曼机器模型变量的时空特性对程序中求值的次序是十分敏感的 表达式的求值次序是最低层的程序控制,在它的上层是四类控制:顺序控制、选择控制、重复(迭代)、函数或过程调用 再上一层是对程序模块的控制。包括一个程序的各模块组织以及它们与环境的相互关系 并发控制也是一类控制,它可以在语句级,特征块和模块级实施并发控制 7.1 一般概述 语句级控制由于GOTO危害导致结构化程序。 1966年Boehm和Jacopini回答了这个问题:任何流程图的计算逻辑都可以用顺序组、 条件选择组、迭代组三种程序结构实现。 保留GOTO的积极作用限制GOTO的副效应, 把它们改头换面变为比较安全的顺序控制器(sequencer)。 7.2 顺序控制 7.3 条件选择控制 7.4 迭代控制 例: 用for循环计算表中元素之和 隐式迭代控制 对聚集对象的迭代 回溯 Prolog查询的回溯实现 7.5 异常处理 程序无法执行下去,也就是出现了异常(exception)情况。在早期语言的程序中,出现了这种情况就中断程序的执行,交由操作系统的运行程序处理。现在向用户开放,Ada,C++,Java * * , 命令式语言只要有赋值语句V∶=EXP,简单的逻辑条件IF(e)和GOTO语句就可以编出一切计算程序(输入/出除外)。 S1; S2 进一步扩展可为: S1; S2; …;Sn Ada语句较全: 简单_语句::=空_语句 |赋值_语句 | 过程调用_语句 |goto_语句 | 入口调用_语句 |出口_语句 | 返回_语句 |引发_语句 | 夭折_语句 |延迟_语句 | 代码_语句 其中空_语句,赋值_语句 ,延迟语句,代码_语句不影响控制和转移,exit(出口)语句,raise(引发)语句,abort(夭折)语句,return(返回)语句都是顺序控制器。 if(e)无结构。Algol60改为if…then…else结构, 退化是if…then 悬挂else if E1 then if E2 then S1 else S2 E1为‘真’‘假’均可执行S2 解决if E1 then begin if E2 then S1 else S2 end Pascal,Algol,C if E1 then begin if E2 then S1 end else S2 if E1 then if E2 then S1 endif else S2 endif Fortran-77,Ada if E1 then if E2 then S1 else S2 endif endif └───就近匹配───┘ 嵌套if和case e是同一表达式仅值不同 可改换ease Ada 的case语句 IF exp1 THEN ST1 ELSEIF exp2 THEN ST2 ELSEIF exp... ... ELSE SF3 ENDIF case Exp is switch (exp) when v1= S1; case v1: S1; when v2= S2; break; ... case v2: S2; when vm|vn=Sn;

文档评论(0)

1亿VIP精品文档

相关文档