fortran逻辑运算和选择结构PPT_第1页
fortran逻辑运算和选择结构PPT_第2页
fortran逻辑运算和选择结构PPT_第3页
fortran逻辑运算和选择结构PPT_第4页
fortran逻辑运算和选择结构PPT_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第八章 常用算法的程序设计举例,第一章 算法,第二章 计算机和计算机程序,第四章 逻辑运算和选择结构,第五章 循环结构的实现,第六章 Fortran的数据结构,第七章 数据的输入、输出,第三章 Fortran语言程序设计初步,一、引言,在FORTRAN77中,用块IF结构来实现选择结构, 其形式为,IF(条件)THEN then 块 ELSE else 块 END IF,例:计算职工工资。正常工资rate (yuan/h),一周超过40 hours时,超过部分按1.5 rate (yuan/h),cPayroll with overtime program payroll read(*,*)

2、rate, hours if(hours.gt.40.0) then regpay=rate*40.0 ovtpay=1.5*rate*(hours-40.0) else regpay=rate*hours ovtpay=0.0 end if pay=regpay+ovtpay write(*,*) rate=, rate, hours=, hours write(*,*) regular pay=, regpay, overtime pay=, ovtpay write(*,*) total pay=, pay end,二、关系表达式,关系表达式是最简单的一种逻辑表达式,其一般形式为,算术量

3、:数值常数、数值型变量、数值函数、算术表达式。 关系运算符:关系比较符,FORTRAN中有六种关系运算符,几点注意,1. 关系运算符字母两侧各有一个句点,不要漏写,2. 在一个关系表达式中可能包括算术运算符和关系运算符,先进行算术运算,然后进行关系运算。(建议加括号,i+j.ne.m+n 相当于 (i+j).ne.(m+n,3. 不同类型常变量比较时,遵循低级向高级转化规律,X.GT.3,4.关系表达式的值不是一个数值,而是逻辑量“真”或“假,5.判断实数相等和不等,用.EQ.和.NE.时要特别注意,1.0/3.0+1.0/3.0+1.0/3.0).EQ. 1.0,10.0*0.1).NE.

4、1.0,A.EQ.B 可改为 ABS(A-B).LT.1E-6,C.NE.D 可改为 ABS(C-D).GT.1E-6,三、逻辑表达式,1. 逻辑常量,FORTRAN只有两个逻辑常量,TRUE. 表示“真”,即满足逻辑条件 .FALSE. 表示“假”,即不满足逻辑条件,2. 逻辑型变量,Fortran 用LOGICAL语句说明逻辑变量,logical a, b a=.true. b=(x+y).gt.z,3. 逻辑运算符,4. 逻辑表达式,FORTRAN77逻辑量包括,逻辑常量 逻辑型变量 关系表达式,a.lt.b).and.(a.gt.c,x.lt.0.).or.(a.gt.100.,not

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

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

7、整地出现在then块或else块的位置,if(grade.ge.60.) then else print *, No., num print *, grade, grade end if,read(*,*) grade if(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 if else write(*,*) D end if end,成绩分级 A : 80 B : 70且80 C : 60且70

8、D : 60,给a, b, c三个数排序,要求从小到大输出,read(*,*) a,b,c if(a.le.b) then else t=a a=b b=t end if if(b.le.c) then else t=b b=c c=t if(a.le.b) then else t=a a=b b=t end if end if write(*,*) a,b,c end,五、ELSE IF 语句,read(*,*) grade if(grade.ge.60.) then if(grade.ge.70.) then if(grade.ge.80.) then write(*,*) A else

9、write(*,*) B end if else write(*,*) C end if else write(*,*) D end if end,为了避免过多的块IF嵌套,FORTRAN 还提供了ELSE IF语句来处理“否则,如果”的情况,read(*,*) grade if(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 if else write(*,*) D end if end,read

10、(*,*) grade if(grade.ge.80.) then write(*,*) A else if(grade.ge.70.) then write(*,*) B else if(grade.ge.60.) then write(*,*) C else write(*,*) D end if end,几点说明,2. ELSE IF语句不需END IF语句与之对应,3.一个块IF可以有多个ELSE IF语句,除非有块IF嵌套否则只能有一个ELSE语句,1. ELSE IF语句相当于把ELSE语句和其下一行的块IF语句连结成一个语句,4.当处理多分支选择时,用ELSE IF语句往往比较方

11、便,5. ELSE IF是在“条件为假”的分支中再继续进行分支处理的。故在处理多分支的选择时,要把出现几率高的条件写在前面,以提高效率,read(*,*) grade if(grade.ge.80.) then write(*,*) A else if(grade.ge.70.) then write(*,*) B else if(grade.ge.60.) then write(*,*) C else write(*,*) D end if end,read(*,*) grade if(grade.le.60.) then write(*,*) D else if(grade.le.70.)

12、 then write(*,*) C else if(grade.le.80.) then write(*,*) B else write(*,*) A end if end,read(*,*) x if(x.lt.-10.0) then y=0.0 else if(x.lt.0.0) then y=2.0*x+20.0 else if(x.lt.20.0) then y=20.0 else if(x.lt.40.0) then y=30.0-0.5*x else if(x.lt.50.0) then y=50.0-x else y=0.0 end if write(*,*) y=,y end

13、,求函数值,六、逻辑IF语句,逻辑IF语句只有“条件为真”时才有操作,为“假”时不进行任何操作,且条件为“真”时只能执行一条执行语句,而后不论“真”或“假”,都接着执行逻辑IF语句的下一条语句。逻辑IF语句又称行IF语句,如果在块IF结构中else块空块,而then块只有一条语句,则用逻辑IF语句比较方便,if(x.lt.60.0) then write(*,*) grade end if end,if(x.lt.60.0) write(*,*) grade,因为不论“真”或“假”,都接着执行逻辑IF语句的下一条语句,故逻辑IF语句的条件要写全,read(*,*) grade if(grade.ge.80.) write(*,*) A if(grade.ge.70.and.grade.lt.80.) write(*,*) B if(grade.ge.60.and.grade.lt.70.) write(*,*) C if(grade.lt.60.) write(*,*) D end,read(*,*) grade if(grade.ge.80.) w

温馨提示

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

评论

0/150

提交评论