编译原理及实现课后习题答案

上传人:xt****7 文档编号:136427768 上传时间:2022-08-16 格式:DOC 页数:34 大小:492.51KB
收藏 版权申诉 举报 下载
编译原理及实现课后习题答案_第1页
第1页 / 共34页
编译原理及实现课后习题答案_第2页
第2页 / 共34页
编译原理及实现课后习题答案_第3页
第3页 / 共34页
资源描述:

《编译原理及实现课后习题答案》由会员分享,可在线阅读,更多相关《编译原理及实现课后习题答案(34页珍藏版)》请在装配图网上搜索。

1、编译原理及实现课后习题解答2.1 设字母表A=a,符号串x=aaa,写出下列符号串及其长度:x0,xx,x5以及A+和A*.x0=(aaa)0= | x0|=0 xx=aaaaaa |xx|=6x5=aaaaaaaaaaaaaaa | x5|=15A+ =A1A2 . A n=a,aa,aaa,aaaa,aaaaa A* = A0 A1 A2 . A n =,a,aa,aaa,aaaa,aaaaa 2.2 令=a,b,c,又令x=abc,y=b,z=aab,写出如下符号串及它们的长度:xy,xyz,(xy)3xy=abcb |xy|=4xyz=abcbaab |xyz|=7(xy)3=(abc

2、b)3 =abcbabcbabcb | (xy)3 |=122.3 设有文法GS:S=SS*|SS+|a,写出符号串aa+a*规范推导,并构造语法树。S = SS* = Sa* = SS+a* = Sa+a* = aa+a*SSS*SS+aaa2.4 已知文法GZ:Z=U0V1 、 U=Z11 、 V=Z00 ,请写出全部由此文法描述的只含有四个符号的句子。Z=U0=Z10=U010=1010Z=U0=Z10=V110=0110Z=V1=Z01=U001=1001Z=V1=Z01=V101=01012.5 已知文法GS: S=AB A=aA B=bBcbc , 写出该文法描述的语言。A=aA描

3、述的语言: an|n=0B=bBcbc描述的语言:bncn|n=1L(GS)=anbmcm|n=0,m=12.6 已知文法E=TE+TE-T 、 T=FT*FT/F 、 F=(E)i,写出该文法的开始符号、终结符号集合VT、非终结符号集合VN。开始符号:EVt=+, - , * , / ,( , ), iVn=E , F , TETE+FTE+iFT*T2.7 对2.6题的文法,写出句型T+T*F+i的短语、简单短语以及句柄。短语:T+T*F+i T+T*F i i T T*F简单短语:i T*F T句柄:T 2.8 设有文法GS:S=S*S|S+S|(S)|a,该文法是二义性文法吗?SSS*

4、S+SaaaSSS+S*Saaa根据所给文法推导出句子a+a*a,画出了两棵不同的语法树,所以该文法是二义性文法。2.9 写一文法,使其语言是奇正整数集合。 A:=1|3|5|7|9|NAN:=0|1|2|3|4|5|6|7|8|92.10给出语言anbm|n,m1的文法。 GS: S:=AB A:=aA|a B:=bB|b3.1 有正则文法GZ:Z:=Ua|Vb,U:=Zb|b,V:=Za|a ,画出该文法的状态图,并检查句子abba是否合法。解:该文法的状态图如下:SUVZaaabbb句子abba合法。3.2 状态图如图3.35所示,S为开始状态,Z为终止状态。写出相应的正则文法以及V,V

5、n和Vt。SAZabab图3-35状态图 解: 左线性文法GZ: 右线性文法GS:Z:=Ab|bS:=aA|b A:=Aa|aA:=aA|bV=Z,A,a,bV=S,A,a,bVn=Z,AVn=S,AVt=a,bVt=a,b3.3 构造下列正则表达式相应的NFA: 1(1|0)*|0 1(1010*|1(010)*1)*0解:正则表达式:1(1|0)*|01、SZ1(1|0)*|02、SZ1(1|0)*03、SAZ01014、q0q1010,1q2正则表达式:1(1010*|1(010)*1)*00135462101010780101101a,baa3.4 将图3.36的NFA M确定化图3.

6、36 状态图 解:abq0=00,11q1=0,10,11q2=10DFA:q0q1q2ababa3.5 将图3.37的DFA化简。014253aaaaaabbbbbb图3.37 DFA状态图 解:划分ab0,112,42,3,4,51,3,0,53,5,2,4划分ab0,112,42,40,13,53,53,52,4q0=0,1q1=2,4q2=3,5化简后的DFA:q0q1q2baaabb4.1 对下面文法,设计递归下降分析程序。 SaAS|(A) , AAb|c解:首先将左递归去掉,将规则AAb|c 改成 Acb非终结符号S的分析程序如下:过程S INPUTSYM=aINPUTSYM=下

7、一个符号YNINPUTSYM=(INPUTSYM=下一个符号YINPUTSYM=)INPUTSYM=下一个符号YNN出口错误错误过程A过程S过程A非终结符号A的分析程序如下:过程A INPUTSYM=cINPUTSYM=下一个符号YINPUTSYM=bN错误INPUTSYM=下一个符号Y出口N4.2 设有文法GZ: Z=(A) , A=a|Bb , B=Aab若采用递归下降分析方法,对此文法来说,在分析过程中,能否避免回溯?为什么?解:若采用递归下降分析方法,对此文法来说,在分析过程中不能避免回朔。因为规则A=a|Bb和规则B=Aab构成了间接左递归,不满足实现没有回溯的递归下降分析方法的条件

8、(1)(书P67),且规则 A: := a|Bb,FIRST(a)=a,FIRST(Bb)=a,即此规则候选式的首符号集有相交,不满足实现没有回溯的递归下降分析方法的条件(2)(书P67),在分析过程中,将造成回溯。改写文法可避免回溯:将规则B=Aab代入规则A=a|Bb得:A=a|Aabb,再转换成:A=aabb,可避免回溯。4.3 若有文法如下,设计递归下降分析程序。 | ID= | |*|/ ID|NUM|()解:首先,去掉左递归|改为: | + | - 改为:(+ | -) | * | / 改为:(* | /)则文法变为: ID= (+ | -) (* | /) ID|NUM|()非终

9、结符号 的分析程序如下:FIRST()=ID语句INPUTSYM=IDNY赋值语句出口ID=非终结符号 的分析程序如下:赋值语句INPUTSYM=ID错误NINPUTSYM=下一个符号INPUTSYM=错误NINPUTSYM=下一个符号Y表达式出口(+ | -)非终结符号 的分析程序如下:表达式INPUTSYM=+NINPUTSYM=-INPUTSYM=下一个符号Y出口项NY(* | /)非终结符号 的分析程序如下:复值语句的分析程序项INPUTSYM=*NINPUTSYM=/INPUTSYM=下一个符号Y出口因子NY项ID|NUM|()非终结符号 的分析程序如下:因子INPUTSYM=IDY

10、出口INPUTSYM=NUMINPUTSYM=下一个符号NYNINPUTSYM=(INPUTSYM=下一个符号Y表达式INPUTSYM=)错误NY错误N4.4 有文法GA:A:=aABe|,B:=Bb|b(1)求每个非终结符号的FOLLOW集。(2)该文法是LL(1)文法吗?(3)构造LL(1)分析表。解:(1) FOLLOW(A)=First(B)#=b,# FOLLOW(B)=e,b(2) 该文法中的规则B:=Bb|b为左递归,因此该文法不是LL(1)文法(3) 先消除文法的左递归(转成右递归),文法变为:A:=aABe|,B:=bB,B:=bB|,该文法的LL(1)分析表为:aeb#AP

11、OP ,PUSH(eBAa)POPPOPBPOP ,PUSH(Bb)BPOPPOP ,PUSH(Bb)aPOP,NEXTSYMePOP,NEXTSYMbPOP,NEXTSYM#ACCEPT更常用且简单的LL(1)分析表:aeb#AAaABeAABBbBBBBbB4.5 若有文法A(A)A|(1)为非终结符A构造FIRST集合和FOLLOW集合。(2)说明该文法是LL(1)的文法。解:(1)FIRST(A)(, FOLLOW(A),#(2)该文法不含左递归;FIRST((A)A)=(,FIRST()=,FIRST((A)A)FIRST()=,且FOLLOW(A),#,FIRST((A)A) FO

12、LLOW(A) =,因此,该文法满足LL(1)文法的条件,是LL(1)文法。4.6 利用分析表4-1,识别以下算术表达式,请写出分析过程。(1)i+i*i+i(2)i*(i+i+i)解:(1)i+i*i+i步骤分析栈余留输入串分析表元素所用产生式1#Ei+i*i+i#POP,PUSH(ET)ETE2#ETi+i*i+i#POP,PUSH(TF)TFT3#ET Fi+i*i+i#POP,PUSH(i)Fi4#ETii+i*i+i#POP,NEXTSYM5#ET+i*i+i#POPT6#E+i*i+i#POP,PUSH(ET+)E+TE7#ET+i*i+i#POP,NEXTSYM8#ETi*i+i

13、#POP,PUSH(TF)TFT9#ETFi*i+i#POP,PUSH(i)Fi10#ETii*i+i#POP,NEXTSYM11#ET*i+i#POP,PUSH(TF*)T*FT12#ETF*i+i#POP,NEXTSYM13#ETFi+i#POP,PUSH(i)Fi14#ETii+i#POP,NEXTSYM15#ET+i#POPT16#E+i#POP,PUSH(ET+)E+TE17#ET+i#POP,NEXTSYM18#ETi#POP,PUSH(TF)TFT19#ETFi#POP,PUSH(i)Fi20#ETii#POP,NEXTSYM21#ET#POPT22#E#POPE23#ACCEP

14、T(2)i*(i+i+i)步骤分析栈余留输入串分析表元素所用产生式1#Ei*(i+i+i)#POP,PUSH(ET)ETE2#ETi*(i+i+i)#POP,PUSH(TF)TFT3#ETFi*(i+i+i)#POP,PUSH(i)Fi4#ETii*(i+i+i)#POP,NEXTSYM5#ET*(i+i+i)#POP,PUSH(TF*)T*FT6#ETF*(i+i+i)#POP,NEXTSYM7#ETF(i+i+i)#POP, PUSH()E()F(E)8#ET )E(i+i+i)#POP,NEXTSYM9#ET )Ei+i+i)#POP,PUSH(ET)ETE10#ET ) ETi+i+i

15、)#POP,PUSH(TF)TFT11#ET ) E TFi+i+i)#POP,PUSH(i)Fi12#ET ) E Tii+i+i)#POP,NEXTSYM13#ET ) E T+i+i)#POPT14#ET ) E +i+i)#POP,PUSH(ET+)E+TE15#ET ) ET+i+i)#POP,NEXTSYM16#ET ) ETi+i)#POP,PUSH(TF)TFT17#ET ) ETFi+i)#POP,PUSH(i)Fi18#ET ) ETii+i)#POP,NEXTSYM19#ET ) ET+i)#POPT20#ET ) E+i)#POP,PUSH(ET+)E+TE21#ET

16、) E T+i)#POP,NEXTSYM22#ET ) E Ti)#POP,PUSH(TF)TFT23#ET ) E TFi)#POP,PUSH(i)Fi24#ET ) E Tii)#POP,NEXTSYM25#ET ) E T)#POPT26#ET ) E)#POPE27#ET )#POP,NEXTSYM28#ET #POPT29#E#POPE30#ACCEPT4.7 考虑下面简化了的C声明文法:;int|float|charID,|ID(1) 在该文法中提取左因子。(2) 为所得的文法的非终结符构造FIRST集合和FOLLOW集合。(3) 说明所得的文法是LL(1)文法。(4) 为所得的文

17、法构造LL(1)分析表。(5) 假设有输入串为“char x,y,z;”,写出相对应的LL(1)分析过程。解:(1) 规则ID,|ID提取公因子如下:ID(,|)增加新的非终结符,规则变为:ID,| C声明文法改变为: ;int|float|charID,|(2) FIRST()FIRST()int,float,charFIRST()IDFIRST(),FOLLOW()#FOLLOW()FIRST()IDFOLLOW()FOLLOW();(3) 所得文法无左递归,且FIRST(int)FIRST(float)FIRST(char)FIRST(,)FIRST()FIRST(,)FOLLOW()因

18、此,所得文法为LL(1)文法。(4) 所得的文法构造LL(1)分析表如下所示:;intfloatcharID,#POP ,PUSH(;)POP ,PUSH(;)POP ,PUSH(;)POP ,PUSH(int)POP ,PUSH(float)POP ,PUSH(char)POP ,PUSH(ID)POPPOP ,PUSH(,);POP,NEXTSYMintPOP,NEXTSYMfloatPOP,NEXTSYMcharPOP,NEXTSYMIDPOP,NEXTSYM,POP,NEXTSYM#ACCEPT更常用且简单的LL(1)分析表:;intfloatcharID,#;intfloatchar

19、ID,(5) 输入串“char x,y,z;”相对应的LL(1)分析过程如下:步骤分析栈余留输入串分析表元素所用产生式1#char x,y,z;#POP ,PUSH(;);2#;char x,y,z;#POP ,PUSH(char)char3#; charchar x,y,z;#POP,NEXTSYM4#;x,y,z;#POP ,PUSH(ID)ID5#;xx,y,z;#POP,NEXTSYM6#;,y,z;#POP ,PUSH(,),7#;,y,z;#POP,NEXTSYM8#;y,z;#POP ,PUSH(ID)ID9#;yy,z;#POP,NEXTSYM10#;,z;#POP ,PUSH

20、(,),11#;,z;#POP,NEXTSYM12#;z;#POP ,PUSH(ID)ID13#;zz;#POP,NEXTSYM14#;#POP15#;#POP,NEXTSYM16#ACCEPT5.1 考虑以下的文法:SS;T|TTa(1) 为这个文法构造LR(0)的项目集规范族。(2) 这个文法是不是LR(0)文法?如果是,则构造LR(0)分析表。(3) 对输入串“a;a”进行分析。解:(1)拓广文法GS: 0:SS 1:SS;T 2:ST 3:Ta构造LR(0)项目集规范族状态项目集转换函数0SSSS;TSTTaGO0,S1GO0,S1GO0,T2GO0,a31SSSS;TACCEPTGO

21、1,;42STR23TaR34SS;TTaGO4,T5GO4,a35SS;TR1(2)该文法不存在“归约归约”和“归约移进”冲突,因此是LR(0)文法。LR(0)分析表如下:状态ACTIONGOTO;a#ST0S3121S4ACCEPT2R2R2R23R3R3R34S355R1R1R1(3)对输入串“a;a”进行分析如下:步骤状态栈符号栈输入符号栈ACTIONGOTO00#a;a#S3103#a;a#R32302#T;a#R21401#S;a#S45014#S;a#S360143#S;a#R3570145#S;T#R11801#S#ACCEPT5.2 证明下面文法是SLR(1)文法,但不是LR

22、(0)文法。SAAAb|bBaBaAc|a|aAb解:文法GS:0:SA1:AAb2:AbBa3:BaAc4:Ba5:BaAb构造LR(0)项目集规范族:状态项目集转换函数0SAAAbAbBaGO0,A1GO0,A1GO0,b21SAAAbACCEPTGO1,b32AbBaBaAcBaBaAbGO2,B4GO2,a5GO2,a5GO2,a53AAbR14AbBaGO4,a65BaAcBaBaAbAAbAbBaGO5,A7R4GO5,A7GO5,A7GO5,b26AbBaR27BaAcBaAbAAbGO7,c8GO7,b9GO7,b98BaAcR39BaAbAAbR5R1状态5存在“归约移进”冲

23、突,状态9存在“归约归约”冲突,因此该文法不是LR(0)文法。状态5:FOLLOW(B)a,因此,FOLLOW(B)b状态9:FOLLOW(B)a,FOLLOW(A)#,b,c,因此FOLLOW(B)FOLLOW(A)状态5和状态9的冲突均可用SLR(1)方法解决,构造SLR(1)分析表如下:状态ACTIONGOTOabc#AB0S211S3ACCEPT2S543R1R1R14S65R4S276R2R2R27S9S88R39R5R1R1R1该SLR(1)分析表无重定义,因此该文法是SLR(1)文法,不是LR(0)文法。5.3 证明下面文法是LR(1)文法,但不是SLR(1)文法。SAaAb|B

24、bBaAB解:拓广文法GS:0:SS1:SAaAb2:SBbBa3:A4:B构造LR(0)项目集规范族:状态项目集转换函数0SSSAaAbSBbBaABGO0,S1GO0,A2GO0,B3R3R41SSACCEPT2SAaAbGO2,a43SBbBaGO3,b54SAaAbAGO4,A6R35SBbBaBGO5,B7R46SAaAbGO6,b87SBbBaGO7,a98SAaAbR19SBbBaR2状态0存在“归约归约”冲突,且FOLLOW(A) a,b,FOLLOW(B)a,b,即FOLLOW(A)FOLLOW(B)a,b,所以该文法不是SLR(1)文法。构造LR(1)项目集规范族:状态项目

25、集转换函数0SS,#SAaAb,#SBbBa,#A,aB,bGO0,S1GO0,A2GO0,B3R3R41SS,#ACCEPT2SAaAb,#GO2,a43SBbBa,#GO3,b54SAaAb,#A,bGO4,A6R35SBbBa,#B,aGO5,B7R46SAaAb,#GO6,b87SBbBa,#GO7,a98SAaAb,#R19SBbBa,#R2LR(1)分析表:状态ACTIONGOTOab#SAB0R3R41231ACCEPT2S43S54R365R476S87S98R19R2分析表无重定义,说明该文法是LR(1)文法,不是SLR(1)文法。5.4 考虑以下的文法:EEEEEE*Ea(

26、1)为这个文法构造LR(1)项目集规范族。(2)构造LR(1)分析表。(3)为这个文法构造LALR(1)项目集规范族。(4)构造LALR(1)分析表。(5)对输入符号串“aa*a+”进行LR(1)和LALR(1)分析。解:(1)拓广文法GS:0:SE1:EEE2:EEE*3:Ea构造LR(1)项目集规范族:状态项目集转换函数0SE ,#EEE ,a:#EEE* ,a:#Ea ,a:#GO0,E1GO0,E1GO0,E1GO0,a21SE ,#EEE ,a:#EEE* ,a:#EEE ,*:+EEE* ,*:+Ea ,*:+ACCEPTGO1,E3GO1,E3GO1,E3GO1,E3GO1,a4

27、2Ea ,a:#R33EEE ,a:#EEE* ,a:#EEE ,*:+EEE* ,*:+EEE ,*:+EEE* ,*:+Ea ,*:+GO3,5GO3,*6GO3,E7GO3,E7GO3,E7GO3,E7GO3,a44Ea ,*:+R35EEE ,a:#R16EEE* ,a:#R27EEE ,*:+EEE* ,*:+EEE ,*:+EEE* ,*:+EEE ,*:+EEE* ,*:+Ea ,*:+GO7,+8GO7,*9GO7,E7GO7,E7GO7,E7GO7,E7GO7,a48EEE ,*:+R19EEE* ,*:+R2(2)构造LR(1)分析表状态ACTIONGOTO*a#E0S21

28、1S4ACCEPT32R3R33S5S6S474R3R35R1R16R2R27S8S9S478R1R19R2R2(3)构造LALR(1)项目集规范族:状态项目集转换函数0SE ,#EEE ,a:#EEE* ,a:#Ea ,a:#GO0,E1GO0,E1GO0,E1GO0,a21SE ,#EEE ,a:#EEE* ,a:#EEE ,*:+EEE* ,*:+Ea ,*:+ACCEPTGO1,E3GO1,E3GO1,E3GO1,E3GO1,a22Ea ,a:#:*:+R33EEE ,a:#:*:+EEE* ,a:#:*:+EEE ,*:+EEE* ,*:+EEE ,*:+EEE* ,*:+Ea ,*

29、:+GO3,4GO3,*5GO3,E3GO3,E3GO3,E3GO3,E3GO3,a24EEE ,a:#:*:+R15EEE* ,a:#:*:+R2(4)构造LALR(1)分析表。状态ACTIONGOTO*a#E0S211S2ACCEPT32R3R3R3R33S4S5S234R1R1R1R15R2R2R2R2(5)对输入符号串“aa*a+”进行LR(1)分析:步骤状态栈符号栈输入串ACTIONGOTO10#aa*a+#S2202#aa*a+#R3 1301#Ea*a+#S44014#Ea*a+#R335013#EE*a+#S660136#EE*a+#R21701#Ea+#S48014#Ea+#

30、R339013#EE+#S5100135#EE+#R111101#E#ACCEPT对输入符号串“aa*a+”进行LALR(1)分析:步骤状态栈符号栈输入串ACTIONGOTO10#aa*a+#S2202#aa*a+#R31301#Ea*a+#S24012#Ea*a+#R335013#EE*a+#S560135#EE*a+#R21701#Ea+#S28012#Ea+#R339013#EE+#S4100134#EE+#R111101#E#ACCEPT5.5 说明以下的文法是LR(1)文法,但不是LALR(1)文法。SaAd|bBd|aBe|bAeAcBc解:拓广文法:0:SS1:SaAd2:SbB

31、d3:SaBe4:SbAe5:Ac6:Bc构造LR(1)项目集规范族状态项目集转换函数0SS,#SaAd,#SbBd,#SaBe,#SbAe,#GO0,S1GO0,a2GO0,b3GO0,a2GO0,b31SS ,#ACCEPT2SaAd,#SaBe,#Ac,dBc,eGO2,A4GO2,B5GO2,c6GO2,c63SbBd,#SbAe,#Ac,eBc,dGO3,B7GO3,A8GO3,c9GO3,c94SaAd,#GO4,d105SaBe,#GO5,e116Ac ,dBc ,eR5R67SbBd,#GO7,d128SbAe,#GO8,e139Ac ,eBc ,dR5R610SaAd ,#R

32、111SaBe ,#R312SbBd ,#R213SbAe ,#R4构造LR(1)分析表:状态ACTIONGOTOabcde#SAB0S2S311ACCEPT2S6453S9874S105S116R5R67S128S139R6R510R111R312R213R4同核项目集合并,构造LALR(1)项目集规范族:状态项目集转换函数0SS,#SaAd,#SbBd,#SaBe,#SbAe,#GO0,S1GO0,a2GO0,b3GO0,a2GO0,b31SS ,#ACCEPT2SaAd,#SaBe,#Ac,dBc,eGO2,A4GO2,B5GO2,c6GO2,c63SbBd,#SbAe,#Ac,eBc,

33、dGO3,B7GO3,A8GO3,c6GO3,c64SaAd,#GO4,d95SaBe,#GO5,e106Ac ,d:eBc ,d:eR5R67SbBd,#GO7,d118SbAe,#GO8,e129SaAd ,#R110SaBe ,#R311SbBd ,#R212SbAe ,#R4构造LALR(1)分析表:状态ACTIONGOTOabcde#SAB0S2S311ACCEPT2S6453S9874S105S116R5/R6R5/R67S128S139R110R311R212R4从LR(1)分析表可以看出,分析表无重定义,因此该文法是LR(1)文法。从LALR(1)分析表可以看出,分析表ACTI

34、ON6,d和ACTION6,e存在重定义,因此该文法不是LALR(1)文法。7.1 给出编译下面程序的有序符号表。main() int m,n5; real x; char name;解:名字类型维数mint0mainkeyword0nint1namechar0xreal07.2 按“质数除余法”,给出编译上题程序的散列符号表。解:正整数HASC函数(字符串),质数5,散列符号表如下所示:名字正整数H%5m1094main4211n1100name4172x1200位置名字域属性域0n1main2name34mx 7.3 给出编译到下面程序a、b、c处的栈式符号表。 real x,y; cha

35、r str;a int fun1(int ind) int x; b x=m2(ind+1); main() char y; c x=2;y=5; printf(%dn,fun1(x/y); 解:05xystrfun1Topmainy04xystrfun1Topindx0xystrTopa:b:c:10.1 对下列基本块应用DAG进行优化:(=,3, ,B)(+,A,C,D)(*,A,C,E)(+,D,E,F)(*,B,F,G)(+,A,C,H)(*,A,C,I)(+,H,I,J)(*,B,5,K)(+,K,J,L)(=,L, ,M)解:构造DAG如下:+D,Hn4An2Cn33Bn1*E,I

36、n5+F,Jn6*Gn715Kn8+L,Mn9按照上图的DAG结点顺序,优化后生成的程序如下:(=,3, ,B)(+,A,C,D)(=,D, ,H)(*,A,C,E)(=,E, ,I)(+,D,E,F)(=,F, ,J)(*,3,F,G)(=,15, ,K)(+,15,J,L)(=,L, ,M)10.2 对下面程序段画出程序流图,并进行循环优化。 I=1; J=10; K=5;L1:X=K*I; Y=J*I; Z=X*Y; I=I+1IF I100 GOTO L1; 解:程序流图如下:B1:I=1; J=10; K=5;B2:X=K*I; Y=J*I; Z=X*Y;I=I+1;IF I100

37、GOTO B2;从程序流图可知,要优化的循环是基本块B2。对循环B2中代码分别实行代码外提、强度删弱和删除归纳变量优化如下:(1) 代码外提:循环中无不变运算、(2) 强度删弱:由于循环中有X=K*I;Y=J*I;其中,K,J在循环中值不发生改变,I每次增加1。因此,对X,Y可进行强度删弱,将乘法运算(*)改为加法运算()。强度删弱后程序流图如下图所示:B1:I=1; J=10; K=5;B2:Z=X*Y;X=XK;Y=YJ;I=I+1;IF I100 GOTO B2;B2:X=K*I;Y=J*I;(3) 删除基本归纳变量:循环中I是基本归纳变量,X、Y是与I同族的归纳变量,且有如下线性关系:X=K*I;Y=J*I;于是,条件I100可用XK*100或者YJ*100替代。删除语句I=I+1,并外提不变运算,最后程序流图变为下图所示:B2:Z=X*Y;X=XK;Y=YJ;IF XT1 GOTO B2;B1:I=1; J=10;K=5;X=K*I;Y=J*I;T1=100*K Y

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!