Fortran逻辑运算和选择结构

上传人:每**** 文档编号:28135110 上传时间:2021-08-23 格式:PPT 页数:26 大小:917.50KB
收藏 版权申诉 举报 下载
Fortran逻辑运算和选择结构_第1页
第1页 / 共26页
Fortran逻辑运算和选择结构_第2页
第2页 / 共26页
Fortran逻辑运算和选择结构_第3页
第3页 / 共26页
资源描述:

《Fortran逻辑运算和选择结构》由会员分享,可在线阅读,更多相关《Fortran逻辑运算和选择结构(26页珍藏版)》请在装配图网上搜索。

1、12021/6/7 22021/6/7 一、引言 在FORTRAN77中,用块IF结构来实现选择结构,其形式为: IF(条件)THEN then 块 ELSE else 块 END IF 32021/6/7 例:计算职工工资。正常工资rate (yuan/h),一周超过40 hours时,超过部分按1.5 rate (yuan/h) 。 42021/6/7 c Payroll with overtimeprogram payrollread(*,*) rate, hoursif(hours.gt.40.0) then regpay=rate*40.0 ovtpay=1.5*rate*(hour

2、s-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 52021/6/7 二、关系表达式关系表达式是最简单的一种逻辑表达式。其一般形式为: 算术量:数值常数、数值型变量、数值函数、算术表达式。关系运算符:关系比较符。FORTRAN中有六种关系运算符 62021/6/7 72021/6/

3、7 几点注意: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-

4、D).GT.1E-6 82021/6/7 三、逻辑表达式1. 逻辑常量FORTRAN只有两个逻辑常量.TRUE. 表示“真”,即满足逻辑条件.FALSE. 表示“假”,即不满足逻辑条件2. 逻辑型变量Fortran 用LOGICAL语句说明逻辑变量。logical a, ba=.true.b=(x+y).gt.z 92021/6/7 3. 逻辑运算符 102021/6/7 4. 逻辑表达式 FORTRAN77逻辑量包括:逻辑常量逻辑型变量关系表达式(a.lt.b).and.(a.gt.c) (x.lt.0.).or.(a.gt.100.) .not.(x.le.0.)(a.gt.b).eqv.

5、(c.gt.d) (l1.lt.0.).neqv.true.注意:.AND.和.EQV.的区别。 112021/6/7例如,A=3.5, B=5.0, C=2.5, D=1.0 122021/6/7 算术运算符的运算对象是数值量,运算结果为数值。关系运算符的运算对象是数值量,运算结果为逻辑量。逻辑运算符的运算对象是逻辑量,运算结果仍为逻辑量。逻辑运算符和算术运算符可以连续用运算符连接运算量,但关系运算符不可以。逻辑运算符可以写成:(设L1,L2,L3,L4为逻辑变量)L1 .AND. L2 .AND. L3 .AND. L4算术运算符可以写成:A+B+C+D但关系运算符不能写成:A .LT.

6、B .LT. C .LT. D 132021/6/7 四、用块IF实现选择结构 IF(逻辑表达式)THEN 块1 ELSE 块2 END IF几点说明:1. 一个块IF是有若干个语句组成的,其中三条语句均不能单独是使用。2. 一个块IF必须以块IF语句开始,以END IF语句结束。一个块IF语句必须和一个END IF语句对应。 142021/6/7 3. 一个块IF可以不包含ELSE语句和else块,也可以不包含then块。if(grade.lt.60.) then print *, No., num print *, grade, gradeend if4. 块IF的嵌套一个块IF可以嵌套另

7、一个块IF,但另一个块if必须完整地出现在then块或else块的位置。if(grade.ge.60.) thenelse print *, No., num print *, grade, gradeend if 152021/6/7 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 if end成绩分级A : 80B

8、 : 70且80C : 60且70D : 60 162021/6/7 给a, b, c三个数排序,要求从小到大输出 172021/6/7 read(*,*) 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 if write(*,*) a,b,cend 182021/6/7 五、ELSE IF 语句read(*,*) gradeif(grade.ge.60.) then if(grade.ge.70.) then

9、 if(grade.ge.80.) then write(*,*) A else write(*,*) B end if else write(*,*) C end ifelse write(*,*) Dend ifend 为了避免过多的块IF嵌套,FORTRAN 还提供了 ELSE IF语句来处理“否则,如果”的情况。 192021/6/7 read(*,*) gradeif(grade.ge.60.) then if(grade.ge.70.) then if(grade.ge.80.) then write(*,*) A else write(*,*) B end if else wri

10、te(*,*) C end ifelse write(*,*) Dend ifend read(*,*) gradeif(grade.ge.80.) then write(*,*) A else if(grade.ge.70.) then write(*,*) Belse if(grade.ge.60.) then write(*,*) Celse write(*,*) Dend ifend 202021/6/7 几点说明:2. ELSE IF语句不需END IF语句与之对应。3.一个块IF可以有多个ELSE IF语句,除非有块IF嵌套否则只能有一个ELSE语句。1. ELSE IF语句相当于

11、把ELSE语句和其下一行的块IF语句连结成一个语句。4.当处理多分支选择时,用ELSE IF语句往往比较方便。5. ELSE IF是在“条件为假”的分支中再继续进行分支处理的。故在处理多分支的选择时,要把出现几率高的条件写在前面,以提高效率。 212021/6/7 read(*,*) gradeif(grade.ge.80.) then write(*,*) A else if(grade.ge.70.) then write(*,*) Belse if(grade.ge.60.) then write(*,*) Celse write(*,*) Dend ifend read(*,*) gr

12、adeif(grade.le.60.) then write(*,*) D else if(grade.le.70.) then write(*,*) Celse if(grade.le.80.) then write(*,*) Belse write(*,*) Aend ifend 222021/6/7 read(*,*) 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

13、.lt.50.0) then y=50.0-xelse y=0.0end ifwrite(*,*) y=,y end求函数值 232021/6/7 六、逻辑IF语句 逻辑IF语句只有“条件为真”时才有操作,为“假”时不进行任何操作,且条件为“真”时只能执行一条执行语句,而后不论“真”或“假”,都接着执行逻辑IF语句的下一条语句。逻辑IF语句又称行IF语句。 如果在块IF结构中else块空块,而then块只有一条语句,则用逻辑IF语句比较方便。if(x.lt.60.0) then write(*,*) gradeend ifend if(x.lt.60.0) write(*,*) grade 因

14、为不论“真”或“假”,都接着执行逻辑IF语句的下一条语句,故逻辑IF语句的条件要写全。 242021/6/7 read(*,*) 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(*,*) Dend 252021/6/7 C单价850,100以上95折优惠,求货款。price=850read(*,*) nif(n.ge.100) price=price*0.95amount=n*pricewrite(*,*) n=,n, amount=,amountend 26 部 分 资 料 从 网 络 收 集 整理 而 来 , 供 大 家 参 考 ,感 谢 您 的 关 注 !

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