fortran逻辑运算和选择结构4

上传人:仙*** 文档编号:182723784 上传时间:2023-01-27 格式:PPT 页数:25 大小:845.53KB
返回 下载 相关 举报
fortran逻辑运算和选择结构4_第1页
第1页 / 共25页
fortran逻辑运算和选择结构4_第2页
第2页 / 共25页
fortran逻辑运算和选择结构4_第3页
第3页 / 共25页
点击查看更多>>
资源描述
12一、引言一、引言 在在FORTRAN77中,用块中,用块IF结构来实现选择结构,结构来实现选择结构,其形式为:其形式为:IF(条件)条件)THEN then 块块 ELSE else 块块 END IF3 例:计算职工工资。正常工资例:计算职工工资。正常工资rate(yuan/h),一周超过一周超过40 hours时,超过部分按时,超过部分按1.5 rate(yuan/h)。4cPayroll with overtimeprogram payrollread(*,*)rate,hoursif(hours.gt.40.0)then regpay=rate*40.0 ovtpay=1.5*rate*(hours-40.0)else regpay=rate*hours ovtpay=0.0end ifpay=regpay+ovtpaywrite(*,*)rate=,rate,hours=,hourswrite(*,*)regular pay=,regpay,overtime pay=,ovtpaywrite(*,*)total pay=,payend 5二、关系表达式二、关系表达式关系表达式是最简单的一种逻辑表达式。关系表达式是最简单的一种逻辑表达式。其一般形式为:其一般形式为:算术量:算术量:数值常数、数值型变量、数值函数、算术表达式。数值常数、数值型变量、数值函数、算术表达式。关系运算符:关系运算符:关系比较符。关系比较符。FORTRAN中有六种关系运算符中有六种关系运算符67 几点注意:几点注意:1.关系运算符字母两侧各有一个句点,不要漏写。关系运算符字母两侧各有一个句点,不要漏写。2.在一个关系表达式中可能包括算术运算符和关系运算符,在一个关系表达式中可能包括算术运算符和关系运算符,先进行算术运算,然后进行关系运算。(建议加括号)先进行算术运算,然后进行关系运算。(建议加括号)i+j.ne.m+n 相当于相当于 (i+j).ne.(m+n)3.不同类型常变量比较时,遵循低级向高级转化规律。不同类型常变量比较时,遵循低级向高级转化规律。X.GT.34.关系表达式的值不是一个数值,而是逻辑量关系表达式的值不是一个数值,而是逻辑量“真真”或或“假假”。5.判断实数相等和不等,用判断实数相等和不等,用.EQ.和和.NE.时要特别注意。时要特别注意。(1.0/3.0+1.0/3.0+1.0/3.0).EQ.1.0(10.0*0.1).NE.1.0 A.EQ.B 可改为可改为 ABS(A-B).LT.1E-6 C.NE.D 可改为可改为 ABS(C-D).GT.1E-6 8三、逻辑表达式三、逻辑表达式1.逻辑常量逻辑常量FORTRAN只有两个逻辑常量只有两个逻辑常量.TRUE.表示表示“真真”,即满足逻辑条件,即满足逻辑条件.FALSE.表示表示“假假”,即不满足逻辑条件,即不满足逻辑条件2.逻辑型变量逻辑型变量Fortran 用用LOGICAL语句说明逻辑变量。语句说明逻辑变量。logical a,ba=.true.b=(x+y).gt.z93.逻辑运算符逻辑运算符104.逻辑表达式逻辑表达式 FORTRAN7777逻辑量包括:逻辑量包括:逻辑常量逻辑常量逻辑型变量逻辑型变量关系表达式关系表达式(a.lt.b).and.(a.gt.c)(x.lt.0.).or.(a.gt.100.).not.(x.le.0.)(a.gt.b).eqv.(c.gt.d)(l1.lt.0.).neqv.true.注意:注意:.AND.和和.EQV.的区别。的区别。11例如,例如,A=3.5,B=5.0,C=2.5,D=1.012算术运算符算术运算符的运算对象是数值量,运算结果为数值。的运算对象是数值量,运算结果为数值。关系运算符关系运算符的运算对象是数值量,运算结果为逻辑量。的运算对象是数值量,运算结果为逻辑量。逻辑运算符逻辑运算符的运算对象是逻辑量,运算结果仍为逻辑量。的运算对象是逻辑量,运算结果仍为逻辑量。逻辑运算符逻辑运算符和和算术运算符算术运算符可以可以连续连续用运算符连接运算量,用运算符连接运算量,但但关系运算符关系运算符不可以。不可以。逻辑运算符逻辑运算符可以写成:(设可以写成:(设L1,L2,L3,L4为逻辑变量)为逻辑变量)L1.AND.L2.AND.L3.AND.L4算术运算符算术运算符可以写成:可以写成:A+B+C+D但但关系运算符关系运算符不能写成:不能写成:A.LT.B.LT.C.LT.D13四、用块四、用块IFIF实现选择结构实现选择结构 IF(逻辑表达式)逻辑表达式)THEN 块块1 ELSE 块块2 END IF几点说明:几点说明:1.一个块一个块IF是有若干个语句组成的,其中三条语句均是有若干个语句组成的,其中三条语句均不能单独是使用。不能单独是使用。2.一个块一个块IF必须以块必须以块IF语句开始,以语句开始,以END IF语句结束。语句结束。一个块一个块IF语句必须和一个语句必须和一个END IF语句对应。语句对应。143.一个块一个块IF可以不包含可以不包含ELSE语句和语句和else块,也可以不块,也可以不包含包含then块。块。if(grade.lt.60.)then print *,No.,num print *,grade,gradeend if4.块块IF的嵌套的嵌套一个块一个块IF可以嵌套另一个块可以嵌套另一个块IF,但但另一个块另一个块if必须必须完整地出现在完整地出现在then块或块或else块的位置块的位置。if(grade.ge.60.)thenelse print *,No.,num print *,grade,gradeend if15read(*,*)gradeif(grade.ge.60.)then if(grade.ge.70.)then if(grade.ge.80.)then write(*,*)A else write(*,*)B end if else write(*,*)C end ifelse write(*,*)Dend ifend成绩分级成绩分级A:80B:70且且80C:60且且70D:6016给给a,b,c三个数排序,要求从小到大输出三个数排序,要求从小到大输出17read(*,*)a,b,cif(a.le.b)thenelse t=a a=b b=tend ifif(b.le.c)thenelse t=b b=c c=t if(a.le.b)then else t=a a=b b=t end ifend ifwrite(*,*)a,b,cend18五、五、ELSE IF ELSE IF 语句语句read(*,*)gradeif(grade.ge.60.)then if(grade.ge.70.)then if(grade.ge.80.)then write(*,*)A else write(*,*)B end if else write(*,*)C end ifelse write(*,*)Dend ifend 为了避免过多的块为了避免过多的块IF嵌套,嵌套,FORTRAN 还提供了还提供了ELSE IF语句来处理语句来处理“否则,如果否则,如果”的情况。的情况。19read(*,*)gradeif(grade.ge.60.)then if(grade.ge.70.)then if(grade.ge.80.)then write(*,*)A else write(*,*)B end if else write(*,*)C end ifelse write(*,*)Dend ifendread(*,*)gradeif(grade.ge.80.)then write(*,*)A else if(grade.ge.70.)then write(*,*)Belse if(grade.ge.60.)then write(*,*)Celse write(*,*)Dend ifend20几点说明:几点说明:2.ELSE IF语句不需语句不需END IF语句与之对应。语句与之对应。3.一个块一个块IF可以有多个可以有多个ELSE IF语句,除非有块语句,除非有块IF嵌套嵌套否则只能有一个否则只能有一个ELSE语句。语句。1.ELSE IF语句相当于把语句相当于把ELSE语句和其下一行的块语句和其下一行的块IF语句连结成一个语句。语句连结成一个语句。4.当处理多分支选择时,用当处理多分支选择时,用ELSE IF语句往往比较方便。语句往往比较方便。5.ELSE IF是在是在“条件为假条件为假”的分支中再继续进行分支的分支中再继续进行分支处理的。故在处理多分支的选择时,要把出现几率高的处理的。故在处理多分支的选择时,要把出现几率高的条件写在前面,以提高效率。条件写在前面,以提高效率。21read(*,*)gradeif(grade.ge.80.)then write(*,*)A else if(grade.ge.70.)then write(*,*)Belse if(grade.ge.60.)then write(*,*)Celse write(*,*)Dend ifendread(*,*)gradeif(grade.le.60.)then write(*,*)D else if(grade.le.70.)then write(*,*)Celse if(grade.le.80.)then write(*,*)Belse write(*,*)Aend ifend22read(*,*)xif(x.lt.-10.0)then y=0.0else if(x.lt.0.0)then y=2.0*x+20.0else if(x.lt.20.0)then y=20.0else if(x.lt.40.0)then y=30.0-0.5*xelse if(x.lt.50.0)then y=50.0-xelse y=0.0end ifwrite(*,*)y=,yend求函数值求函数值23六、逻辑六、逻辑IFIF语句语句 逻辑逻辑IF语句只有语句只有“条件为真条件为真”时才有操作,为时才有操作,为“假假”时不进行任何操作,且时不进行任何操作,且条件为条件为“真真”时只能执行一条执行时只能执行一条执行语句,而后不论语句,而后不论“真真”或或“假假”,都接着执行逻辑,都接着执行逻辑IF语句语句的下一条语句。的下一条语句。逻辑逻辑IF语句又称行语句又称行IF语句。语句。如果在块如果在块IF结构中结构中else块空块,而块空块,而then块只有一条语句,块只有一条语句,则用逻辑则用逻辑IF语句比较方便。语句比较方便。if(x.lt.60.0)then write(*,*)gradeend ifendif(x.lt.60.0)write(*,*)grade 因为不论因为不论“真真”或或“假假”,都接着执行逻辑,都接着执行逻辑IF语句语句的下一条语句的下一条语句,故故逻辑逻辑IF语句的条件要写全。语句的条件要写全。24read(*,*)gradeif(grade.ge.80.)write(*,*)Aif(grade.ge.70.and.grade.lt.80.)write(*,*)Bif(grade.ge.60.and.grade.lt.70.)write(*,*)Cif(grade.lt.60.)write(*,*)Dendread(*,*)gradeif(grade.ge.80.)write(*,*)Aif(grade.ge.70.)write(*,*)Bif(grade.ge.60.)write(*,*)Cwrite(*,*)Dend25C单价单价850,100以上以上95折优惠,求货款。折优惠,求货款。price=850read(*,*)nif(n.ge.100)price=price*0.95amount=n*pricewrite(*,*)n=,n,amount=,amountend
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


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

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


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