数据成分及其加工.ppt
《数据成分及其加工.ppt》由会员分享,可在线阅读,更多相关《数据成分及其加工.ppt(45页珍藏版)》请在三一办公上搜索。
1、赋值是一基本操作,常见的格式:被赋方为地址,赋值方为数值。简记为:A:=E(或 A=E)E一般是表达式,其计算结果的特征在不同的语言中是不同的。如 在Pascal中,对应于值的类型为简单类型,也允许是指针类型,但不允许是复合类型。(有的语言允许是复合类型)E的复杂程度依赖于语言的规定。对于复合类型是否允许有运算符,在大多数语言不允许,但有的也有引进的,如数组值加常量。,4.5 数据的获取赋值,E的形式通常有:具有结果类型为简单类型(如integer,real,char 等)的表达式;具有结果类型为字符串类型的表达式;具有结果类型为指针类型的变量,常量;具有类型为数组的常量(用作赋初值);具有类
2、型为记录的常量(用作赋初值)。,4.5 数据的获取赋值,A一般应是变量,其语义上看应从量的地址(位置)角度理解。除一般常用的名形式外,还可以引入语义适当的拟变量形式。如:A:=.Ai:=Ai.field:=if S then A else B:=Address-A:=,4.5 数据的获取赋值,赋值语句从语义角度看,在ALGOL68中规定,被赋方和赋值方之间仅相差一层“地址值”关系。被赋方的多样性依赖于实现系统和实际适用度,是实现的程度问题。形如 x:=x+1其语义为 value(x)+1=address(x)为了表示名的多侧面、多属性、多特征可以引入相应的特征函数予以指明,如value(x),
3、size(x),type(x),environment(x),address(x)等。,4.5 数据的获取赋值,多重赋值 左端1:=左端2:=:=表达式是若干个欲赋相同值的赋值语句的缩写。应该保证左端和右端(结果)的类型应当是赋值相容的。如 VAR A:real;B:integer;C:0.100;B:=5;允许。(2)C:=B;不能赋值,4.5 数据的获取赋值,(3)B:=C 可以赋值(语言中应规定0.100是integer的子类型)。(4)A:=B;一般系统会自动转换,允许赋值。(5)B:=A;如果系统自动进行转换,则允许进行赋值,否则需要使用转换函数integer(A),4.5 数据的获
4、取赋值,对赋值语句两端出现记录类型或数组类型时,则语言中应有详细规定,如:VAR XYZ:RECORD F1:int:=10 F2:real:=0.0 END;ABC:array1.6 of integer;(1)XYZ:=(3,4.0);有的语言允许,赋完全的值(2)XYZ:=(7,);有的语言允许,赋部分的值(3)ABC:=1;有的语言允许,为所有元素赋以值1(4)ABC:=1,2,3,4,5,6有的语言允许,对数组元素逐个进行赋值,4.5 数据的获取赋值,隐性赋值:=需要处理的语义问题:(1)表达式的计算结果应当为整数,如果不能保证应进行隐式或显式的类型转换;(2)下标位置允许的整数值的
5、上下限应在相应的数组说明中指明。(3)在编译时刻难以判断是否越界,故需要在运行时刻方可判定。,4.5 数据的获取赋值,在表达式中出现的函数调用可能出现“副作用”,即可能存在同一个赋值语句中的同名量的值不相同,所以在串行流程中必须规定计算次序。计算次序如下:求位置 求位置 求位置(计算下标)(计算下标)(计算下标)左端1:=左端2:=:=右端;赋值 赋值 赋值,4.5 数据的获取赋值,例子I,J:integer;A,B:array1.100 of integer;Function f(x:integer):integer;begin I:=I+1;J:=J+2;f:=x+1 end,4.5 数据
6、的获取赋值,例:I:=3;J:=0;AI:=Bf(J)+I:=I+f(J)+I*J(1)求AI的位置,I=3;(2)求Bf(J)+I的位置,J=0,f(0)=0+1=1,同时有,I=3+1=4,J=0+2=2(副作用),即f(J)+I=5,Bf(J)+I=B5,(3)表达式的值为:4+f(2)+(4+1)*(2+2)=27,在求f(2)时I=4+1=5,J=2+2=4(副作用)(4)将27赋给B5(5)将27赋给A3,4.5 数据的获取赋值,AI:=BI+f(J):=I+f(J)+I*J 结果=?,I:=3;J:=0;AI:=BI+f(J):=I+f(J)+I*J(1)求AI的位置,I=3;(
7、2)求BI+f(J)的位置,J=0,f(0)=0+1=1,即I+f(J)=3+1=4,BI+f(J)=B4,同时有,I=3+1=4,J=0+2=2(副作用),(3)表达式的值为:4+f(2)+(4+1)*(2+2)=27,在求f(2)时I=4+1=5,J=2+2=4(副作用)(4)将27赋给B4(5)将27赋给A3,在有些语言中不但引进了指针类型,还引进了在指针变量上允许进行“地址加减”等运算。甚至还引进了对应于“间接地址串”的逻辑表示“ref层次结构”。引进“求地址运算”和“赋值式的左方和右方的ref相差1”的规则.x y z w如W:=3;z:=,4.5 数据的获取赋值,3,有的语言中,赋
8、值语句也返回值(作为表达式处理),该返回值包含被赋值拷贝的数据对象,Pascal中,赋值的规格说明为:Assignment(:=):integer1integer2void 设置integer1的值为integer2的值的复本,并不返回显式结果。,C中,赋值的规格说明为:Assignment(=):integer1integer2integer3设置integer1的值为integer2的值的复本,同时创建并返回包含integer2的新值的复本的新数据对象integer3,4.5 数据的获取赋值,考虑赋值X:=X右边的X称右端值,用于引用包含在命名数据对象中的值,r-值左边的X用于指向包含新值
9、的数据对象的位置,称为左值,l-值,赋值操作定义为:1)计算第一个操作数表达式的左值2)计算第二个操作数表达式的右值3)将右值赋给左值对象4)返回右值作为操作的结果例如,有A=7.2,B=0.4.赋值操作:A:=B;见下图所示:,4.5 数据的获取赋值,赋值的两个不同视角,4.5 数据的获取赋值,相等和等价,考虑Zork语言中赋值:A2+3有两种解释:计值表达式2+3,将其等价值5赋给A;将操作2+3赋给A。如有静态类型检查,A的类型决定赋值的语义。但对动态类型语言,两种语义均是可能的,这种情形在Prolog中,is表示赋等价的值,=表示赋模式,相等性由被赋值变量的当前值决定。X is 2+3
10、,则X=5为真X=2+3,则X=5为假,因为操作“2+3”和整数5是不同的,,4.5 数据的获取赋值,表达式(包括函数调用)是加工处理数据的主要手段。表达式的实现过程如下:(1)从表达式中分析出运算分量和运算符以及决定运算符的执行序列;(2)从运算分量获取值,根据相应的运算符的要求进行匹配和计算;(3)当所有的执行序列完成后,求得的结果应留在某个位置(如累加器)内;(4)如果它为赋值语句的右端,则将此值赋给赋值语句左端的变量;,4.6 数据的加工表达式,(5)若其对应的语法位置为下标表达式之类的“隐式赋值”时,则此值如何处理将由实现系统决定。所有运算分量应是同一执行环境中的量。环境:程序中能存
11、取到的变元空间。表达式的最小元素应为常量、变量和函数调用。由于函数调用可能引起副作用和递归调用,因此会出现相当复杂的情况.表达式中出现的运算符:算术、逻辑、关系、字符串等。可分为单目、双目和三目运算。,4.6 数据的加工表达式,表达式中出现的运算符一般均定义其优先级,不同的程序设计语言的运算符的优先级未必相同。运算分量的运算符之间必须匹配,处理过程可能通过重载决定。如果不匹配,或以出错论处或进行相应的转换后再进行运算。串行执行的顺序为:括号最先;运算符优先级次之;从左到右再次之。,4.6 数据的加工表达式,在一定的需求和条件下,表达式也可能采用并行计算顺序,表达式的并行运算是粒度较小的。如 W
12、:=f(x)+g(y)+z如果f(x),g(y)之间是数据无关的,则可以完全并行;如果f(x),g(y)之间存在某些数据是相关,则在并行执行过程中需要建立同步机制,并需要指明同步处理之后的执行机制。,4.6 数据的加工表达式,例:f1(x1,x2,xn)=x1+x2+xn f2(x1,x2,xn)=x12+x22+xn2如果需要计算 y=f2(f1(a,b,c),f2(a,b,c,d)(P98图4.3)串行的执行序列:temp1:=f1(a,b,c);temp2:=f2(a,b,c,d);y:=f2(temp1,temp2);并行的执行序列:Cobegin temp1:=f1(a,b,c),t
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 成分 及其 加工
链接地址:https://www.31ppt.com/p-6296638.html