结构化程序设计.ppt
上传人:天马****23 上传时间:2024-09-10 格式:PPT 页数:23 大小:324KB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

结构化程序设计.ppt

结构化程序设计.ppt

预览

免费试读已结束,剩余 13 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

1.关系及逻辑运算符选择结构中的条件判别式由逻辑表达式组成。逻辑表达式中的运算符,包括算术运算符、关系运算符和逻辑运算符。*算术运算符:在第2章介绍过;*关系运算符:==(.EQ.);/=(.NE.);>(.GT.);>=(.GE.);<(.LT.);<=(.LE.)*逻辑运算符:.NOT.;.AND.;.OR.;.EQV.;.NEQV.;.XOR.优先级由高到低依次为:算术运算符,关系运算符和逻辑运算符。2.IF语句IF语句是最早的选择结构,构造形式为:IF(condition)statement流程说明:假如条件为真,就执行条件后的那条语句;否则,程序流程跳过IF语句,接着往下执行。IF语句只能写在一行上。IF语句和IF块的对比,详见例4-1。PROGRAMMain!IF语句与IF块IMPLICITNONELOGICALL1,L2CHARACTERCH1,CH2WRITE(*,‘(A)’,ADVANCE=‘NO’)’L1=(Y/N):’READ*,CH1WRITE(*,‘(A)’,ADVANCE=‘NO’)’L2=(Y/N):’READ*,CH2L1=(CH1==‘Y’.OR.CH1==‘y’)L2=(CH2==‘Y’.OR.CH2==‘y’)CALLProc_Old(L1,L2)CALLProc_New(L1,L2)CONTAINSSUBROUTINEProc_Old(L1,L2)LOGICAL,INTENT(IN)::L1,L2INTEGERI,JIF(.NOT.L1)GOTO10I=1J=2GOTO3010IF(.NOT.L2)GOTO20I=2J=3GOTO3020I=3J=430CONTINUEPRINT*,’Old:I=’,I,’,J=’,JENDSUBROUTINESUBROUTINEProc_New(L1,L2)LOGICAL,INTENT(IN)::L1,L2INTEGERI,JIF(L1)THENI=1J=2ELSEIF(L2)THENI=2J=3ELSEI=3J=4ENDIFPRINT*,‘New:I=’,I,’,J=’,JENDSUBROUTINEENDPROGRAM从例4-1可以看出,IF语句的功能极为有限,为了执行复杂的流程控制,GOTO无条件转移语句的采用,使程序代码的可读性大为降低。Fortran77中算术IF语句的构造形式为:IF(算术表达式)语句标号1,语句标号2,语句标号3说明:如果算术表达式的值小于0,执行语句标号1(标号1所标示的语句);如果值等于0,执行语句标号2;如果大于0,执行语句标号3。下面例子是算术IF语句SUBROUTINEProc(A,B,C)!求方程A*X^2+B*X+C=0的根,用算术IF语句REAL,INTENT(IN)::A,B,CREALX1,X2,DiscIF(A==0)GOTO40Disc=B*B-4*A*CIF(Disc)10,20,3010PRINT*,’Complexroots’GOTO4020X1=-B/(2*A)PRINT*,’Twoequalrealroots:’,X1GOTO4030X1=(-B+SQRT(Disc))/(2*A)X2=(-B-SQRT(Disc))/(2*A)PRINT*,‘X1=’,X1,’,X2=’,X240RETURNENDSUBROUTINE3.IF块IF块的构造形式为:IFconditionTHENblock1[ELSEblockE]ENDIF其中,condition是一个逻辑表达式,其结果不外乎真或假。block1和blockE是语句块,当条件为真,block1被执行;否则,blockE被执行。ELSE块是可选的。用IF语句编写学生得分等级统计:IF(Final>=90)A=A+1IF(Final>=80.AND.Final<90)B=B+1IF(Final>=70.AND.Final<80)C=C+1IF(Final>=60.AND.Final<70)D=D+1IF(Final<60)F=F+1上述有5个IF语句,一个学生的得分要做5次判断,算法效率低。用ELSEIF块重写为:IF(Final>=90)THENA=A+1ELSEIF(Final>=80)THENB=B+1ELSEIF(Final>=70)THENC=C+1ELSEIF(Final>=60)THEND=D+1ELSEF=F+1ENDIF程序执行一旦发现某个逻辑条件为真,就不会再去判断其他的逻辑条件,最不利的是对于小于60的情况,系统才要