程序设计语言与编译-Read.PPT

  1. 1、本文档共56页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
程序设计语言与编译-Read

第三章 控制结构 第一节 语句级控制结构 控制结构:程序员用来规定程序各个成分(程序单元以及语句)的执行流程的控制部分。 语句级控制结构:语言用来构造各种语句执行顺序的机制。 传统语言的三种语句级控制结构:顺序、选择、重复。 一. 顺序 顺序运算符; 语句括号begin . . . end 复合语句 二. 选择 1. if语句 ①ALGOL 60的选择结构引起二义性 if x0 then if x10 then x:=0 else x:=1000 ②PL/1和Pascal的“最近匹配原则” ③ ALGOL 68中if语句的结束符号fi ④ ALGOL 68和Ada对else if 进行缩写 2. 多重选择 ①PL/1的select结构 SELECT: WHEN(A)S1; WHEN(B)S2; WHEN(C)S3; OTHERWISE S4; END ②多种语言的case语句 var operator:char; operand1,operand2,result:boolean; …… case operator of ‘.’:result:=operand1 and operand2; ‘+’:result:=operand1 or operand2; ‘=’:result:=operand1 = operand2; end ③Dijkstra选择结构的非确定性 if B1→S1 ? B2 →S2 ? B3 →S3 …... ? BN →SN 其中,Bi是布尔表达式,称为卫哨。若有多个卫哨为真时执行任一Si。 三. 重复 1. 计数器制导 当预先知道重复次数时,在循环计数器值的有限集合上重复。 ①FORTRAN的DO循环中,用标号控制循环体 DO 7 I=1,10 A(I)=0 B(I)=0 7 CONTINUE ②Pascal的for 语句 计数重复的值可在任何有序集上 for . . . to for . . . downto 在循环外循环控制变量的值无定义 2. 条件制导 ①while 循环:描述0或任意多次的重复 ②repeat until循环:至少一次以上的重复 ③ALGOL 68循环的一般形式: for i from j by k to m while b do...od ④Ada 的循环结构 loop /*可以在loop前加重复说明*/ 循环体(语句序列) end loop; 重复说明可以是: while 条件 或 for 计数变量 in 离散范围 或 for 计数变量 in reverse 离散范围 可由exit或exit when条件终止循环 ⑤Dijkstra的卫哨命令表示法 do B1→S1 ? B2→S2 . . . . . . ? BN→SN od 四. 语句级控制结构讨论 顺序、选择、重复是一定意义的抽象 关于goto语句的讨论 控制结构的选择 五. 用户定义控制结构 如:Pascal的计数控制变量可以是枚举类型 第二节 单元级控制结构 单元级控制结构:规定程序单元之间控制流程的机制 四种单元级控制结构:显式调用,异常处理,协同程序,并发单元 一. 显式调用从属单元 1.调用方式 由调用语句使用被调用单元的名字来进行调用 2. 参数的两种绑定方式 位置绑定 关键字绑定 subprogram S(F1,F2,…,FN); …… end 位置绑定: call S(A1,A2,…,AN) call S(A1,,A3,,,,,A8,,A10) 关键字绑定: call S(A1=F1,A3=F3,A8=F8,A10=F10) 3. 副作用 ?对非局部环境的修改 ①副作用降低了程序的可读性 ②副作用限制了数学运算律的使用 如:w:=x+f(x,y)+z ③副作用影响目标代码的优化 如:u:=x+z+f(x,y)+f(x,y)+x+z 4.别名 ?在单元激活期间,两个变量表示(共享)同一数据对象 ①FORTRAN的EQUIVALENCE语句 ②Pascal的变参使得形参和实参共享同一数据对象 procedure swap(var x,y:integer); begin x:

文档评论(0)

2105194781 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档