第4章节 数据成分及其加工2.pptVIP

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

赋值是一基本操作,常见的格式: 被赋方为地址,赋值方为数值。简记为: A := E (或 A = E) E一般是表达式,其计算结果的特征在不同的语言中是不同的。如 在Pascal中,对应于值的类型为简单类型,也允许是指针类型,但不允许是复合类型。(有的语言允许是复合类型) E的复杂程度依赖于语言的规定。 对于复合类型是否允许有运算符,在大多数语言不允许,但有的也有引进的,如数组值加常量。 E的形式通常有: 具有结果类型为简单类型(如integer, real, char 等)的表达式; 具有结果类型为字符串类型的表达式; 具有结果类型为指针类型的变量,常量; 具有类型为数组的常量(用作赋初值); 具有类型为记录的常量(用作赋初值)。 A一般应是变量,其语义上看应从量的地址(位置)角度理解。 除一般常用的名形式外,还可以引入语义适当的拟变量形式。如: A :=…. A[i] :=… A[i]↑.field :=… if S then A else B :=… Address-A :=… 赋值语句从语义角度看,在ALGOL68中规定,被赋方和赋值方之间仅相差一层 “地址—值”关系。被赋方的多样性依赖于实现系统和实际适用度,是实现的程度问题。 形如 x := x+1 其语义为 value(x)+1=address(x) 为了表示名的多侧面、多属性、多特征可以引入相应的特征函数予以指明, 如value(x), size(x),type(x), environment(x),address(x)等。 多重赋值 左端1 := 左端2 := … :=表达式 是若干个欲赋相同值的赋值语句的缩写。 应该保证左端和右端(结果)的类型应当是赋值相容的。 如 VAR A: real; B: integer; C: 0..100; B :=5; 允许。 (2) C :=B; 不能赋值 (3) B:=C 可以赋值(语言中应规定0..100是integer的子类型)。 (4) A:=B; 一般系统会自动转换,允许赋值。 (5) B:=A; 如果系统自动进行转换,则允许进行赋值,否则需要使用转换函数integer(A) 对赋值语句两端出现记录类型或数组类型时,则语言中应有详细规定,如: VAR XYZ: RECORD F1: int :=10 F2: real :=0.0 END; ABC: array[1..6] of integer; (1)XYZ :=(3, 4.0); 有的语言允许,赋完全的值 (2) XYZ :=(7,); 有的语言允许,赋部分的值 (3) ABC :=1 ;有的语言允许,为所有元素赋以值1 (4)ABC :=[1,2,3,4,5,6]有的语言允许,对数组元素逐个进行赋值 隐性赋值 下标表达式 ::=表达式 需要处理的语义问题: (1)表达式的计算结果应当为整数,如果不能保证应进行隐式或显式的类型转换; (2)下标位置允许的整数值的上下限应在相应的数组说明中指明。 (3)在编译时刻难以判断是否越界,故需要在运行时刻方可判定。 在表达式中出现的函数调用 可能出现“副作用”,即可能存在同一个赋值语句中的同名量的值不相同,所以在串行流程中必须规定计算次序。 计算次序如下 : 求位置 求位置 求位置 (计算下标) (计算下标) (计算下标) 左端1 := 左端2 := …… := 右端; 赋值 赋值 赋值 例子 I, J : integer; A, B : array[1..100] of integer; Function f(x:integer):integer; begin I:=I+1; J:=J+2; f:=x+1 end 例: I:=3; J:=0; A[I]:=B[f(J)+I]:=I+f(J)+I*J (1)求A[I]的位置,I=3; (2)求B[f(J)+I]的位置, J=0, f(0)=0+1=1, 同时有,I=3+1=4, J=0+2=2(副作用), 即f(J)+I =5, B[f(J)+I] =B[5], (3)表达式的值为:4+f(

文档评论(0)

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

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

1亿VIP精品文档

相关文档