第四章 逻辑运算和选择结构ppt课件_第1页
第四章 逻辑运算和选择结构ppt课件_第2页
第四章 逻辑运算和选择结构ppt课件_第3页
第四章 逻辑运算和选择结构ppt课件_第4页
第四章 逻辑运算和选择结构ppt课件_第5页
已阅读5页,还剩29页未读, 继续免费阅读

下载本文档

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

文档简介

1、第四章 逻辑运算与选择结构n本章重点关系表达式与逻辑表达式的正确书写和优先级,使用块IF或逻辑IF语句实现选择结构。逻辑运算与选择结构n关系表达式n逻辑表达式n用块IF实现选择结构n逻辑IF语句4.1关系表达式n关系表达式是最简单的一种逻辑表达式,其形式为:n 算数量 关系运算符算数量 n阐明:算数量可以是一个数值常量、数值型变量、数n 值函数,也可以是一个算术表达式;n 关系运算符就是关系比较符,关系符有以下六种。FORTRAN语言关系运算符关系运算符关系运算符英语含义英语含义所代表的数学符号所代表的数学符号.GT.Greater Than(大于).GE.Greater than or Eq

2、ual to(大于或等于).LT.Less Than(小于).LE.Less than or Equal to(小于或等于).EQ.Equal to(等于).NE.Not Equal to(不等于)关系运算符运用的说明v 关系运算符的两个字母的两侧个又一个点号,不要漏写;v 在一个关系表达式中可能包括算术运算和关系运算符,运算的次序是:先进行算术运算,后进行关系运算;v 关系表达式是将两个数值量相比较,这两个数值量可以是不同类型的量,它在比较时先转化类型,再比较;v 关系表达式的值不是一个数值,而是一个逻辑量;v 由于实数的存储与运算存在误差,所以运用.EQ.和.NE.运算符时要注意;v 除算

3、术量比较的形式外,还有字符量的比较。4.2 逻辑表达式n 逻辑表达式(布尔表达式)是对逻辑量进行逻辑运算的表达式,其形式为:n 逻辑量 逻辑运算符逻辑量 n FORTRAN的逻辑量有三种:n 逻辑常量n 逻辑型变量n 关系表达式n 逻辑表达式的值是一个逻辑值:逻辑“真”,逻辑“假”逻辑常量与变量q逻辑常量q 逻辑真,即满足逻辑条件,用.TURE.表示;q 逻辑假,即不满足逻辑条件,用.FALSE.表示;q阐明:逻辑常量可以出现在程序中,可以将它赋给逻辑变量。q逻辑变量q 逻辑赋值语句一般形式为:逻辑变量=逻辑表达式q阐明:程序中使用逻辑变量时,必须对其加以定义,用LOGICAL语句说明,如:

4、LOGICAL A,B逻辑运算符逻辑运算符逻辑运算符含义含义逻辑运算举例逻辑运算举例例子含义例子含义.AND.逻辑与A .AND. BA,B都为真则都为真则A .AND. B真真.OR.逻辑或A .OR. BA或或B之一为真则之一为真则A .OR. B真真.NOT.逻辑非.NOT. AA为真为真 ,则,则 .NOT. A 为假为假.EQV.逻辑等A .EQV. BA,B为同一逻辑量时,为同一逻辑量时, A .EQV. B为真为真.NEQV.逻辑不等A .NEQV. BA,B为不同逻辑量时,为不同逻辑量时, A .NEQV. B为真为真逻辑表达式运算次序n多个逻辑量经过逻辑运算后可以得到一个逻辑

5、值。当逻辑表达式比较复杂时,则需要按下列规定(Fortran77)进行运算:n 先计算算术表达式的值n 再计算关系表达式的值n 最后进行逻辑运算,逻辑运算的先后顺序为:n 先.NOT., .AND.,次之 .OR. ,最后.EQV.和.NEQV.。n其形式可参见下表各种运算符的优先级别运算类别运算类别运算符运算符优先级优先级括 号( )1算术运算*,/+,-234关系运算.GT. .GE. .LT.LE. .EQ. .NE.5逻辑运算.NOT.AND.OR.EQV.,.NEQV.6789用逻辑表达式的说明n1. 算术运算符的运算对象为数值量,运算结果为数值。关系运算符的运算对象为数值量,运算结

6、果为逻辑量。逻辑运算符的对象是逻辑量,运算结果是逻辑量;n2. IF语句判断逻辑表式的值是否为“真”,若有关系运算符,则它的两侧只能是数值量,不能是逻辑量。n 例:.TURE . .EQ. .TURE. 是错误的!n3. 在连续用运算连接运算量需按下式书写:如ABCDn 应写为:( A .LT. B) .AND. (B .LT. C) .AND. (C .LT. D)逻辑运算举例n若A=2.5,B=7.5,C=5.0,D=6.0求逻辑表达式的值:n C/2.0+D .LT. A . .AND. .NOT. .TURE. .OR. C .EQ. D 8.5 .F. .F. .F. .F. .F.

7、4.3 块块IF实现选择结构实现选择结构n块块IF的组成的组成n块块IF的执行过程的执行过程n块块IF使用注意事项使用注意事项n块块IF结构应用举例结构应用举例n块块IF的嵌套的嵌套n块块IF嵌套的应用嵌套的应用nELSE IF 语句语句nELSE IF 语句的应用语句的应用1、块、块IF的组成的组成n块IF的一般形式为:nIF (逻辑表达式) THENn then 块nELSEn else 块nENDIF n阐明:n块IF语句;nthen块,它由若干个执行语句组成,每一个执行语句占一行;nELSE语句,它单独占一行;nelse块。由若干个执行语句组成,每一个执行语句占一行;nENDIF语句。

8、块IF的结束符号。2、块IF的执行过程IF (逻辑表达式THEN then 块ELSE else 块ENDIF (1)执行块IF语句,求出逻辑表达式的值;(2)若为“真”,则流程转到then块,执行then块,然后跳过ELSE语句和else块,流程转到END IF语句处;(3)若逻辑表达式值为“假”,则流程跳过then块,转到ELSE语句,执行else块;然后流程转到END IF语句处;(4)执行END IF语句的下一语句。3、 块IF使用注意事项n一个块IF是由若干个语句组成的。块IF语句、ELSE语句和ENDIF语句只能用在块IF中而不能在程序中的块IF以外单独使用;n块IF可以根据需要舍

9、去then块或ELSE语句及else块;n一个块IF必须以块IF语句开始,以ENDIF语句结束。4、 块IF结构应用举例例1:要求利用函数:n用键盘输入一个x求出y的值?n READ(*,*) Xn IF (X .GE. 0) THENn Y=3*X+6n ELSEn Y=-X*2+2*X-8n ENDIFn WRITE(*,*)Y=,Yn END3x+6 (x 0)-x2 +2x-8 (x0)输入xX0Y=6x+7 执行下一步 输出Y的值是否思索 ?n从以上几个例题我们可以看出:在块IF 中,可以用then块和else块分别处理当逻辑表达式的值为“真和“ 假时应进行的操作。但实际问题往往没有

10、这么简单,如我们刚提到的个人所得税的计算问题:如何用Fortran 语言实现?5、块IF的嵌套n概念:一个块IF中又完整地包含另一个或多个块IF。n嵌套形式: n IF (逻辑表达式) THEN n IF (逻辑表达式) THENn then 块 n ELSEn else 块 n ENDIF n ELSEn else 块n ENDIF 6、 块IF嵌套的应用nN-S 流程图例:解一元二次方程 ax2+bx+c=0F打印两相等实根打印两相等实根打印两不等实根打印两不等实根输入a,b,c的值bac打印两个复根打印两个复根TTFaDb2ab2iaDab226、 块IF嵌套的应用Read(*,*) a

11、, b, cD=b*2- 4*a*cIf (D.lt.0) then write(*,*)无实根 Else If (D.gt.0) then x1=-b/(2*a) +SQRT(D)/(2*a) x2=-b/(2*a) -SQRT(D)/(2*a) Else x1=-b/(2*a) x2=-b/(2*a) End if write(*,*) x1,x2End ifEnd思索 ?块IF嵌套可以解决多层选择的问题,但是如果嵌套层次比较多,程序就会冗长。A ( X-10 )B (-10X 20 )C (20X30)D (30X50)E (X 50)Y=7、 ELSE IF 语句n为了解决多层嵌套程序

12、冗长的问题,FORTRAN语言提供ELSE IF 语句处理 “否则, 假设那么的情况。其形式为:nIF (逻辑表达式) THENn then块n ELSE IF (逻辑表达式) thenn .n ELSEn else 块nENDIF nRemark:nELSE IF语句相当于把ELSE语句和其下一行的块IF语句连接成一个语句;nELSE IF语句不需要ENDIF语句与之对应;nELSE IF语句可以有与之配对的ELSE语句8、ELSE IF 语句的应用例:从键盘输入一个数,求下列分段函数的值?READ(*,*) X IF (X.LT.-10.0) THEN Y=0.0 ELSE IF (X.L

13、T.0.0) THEN Y=2.0*X+20.0 ELSE IF (X.LT. 50.0) THEN Y=30.0-0.5 ELSE Y=50.0-X END IF WRITE(*,*) Y=, Y END0 ( X-10 )2X+20 (-10X 20 )30-0.5X (20X50)50-X (X 50)Y=以上我们讨论了如何用块IF实现选择结构,另外 FORTRAN 语言还提供了实现选择结构的另一种方法逻辑IF4.4逻辑IF语句n逻辑IF语句形式为:n IF (逻辑表达式) 要求执行的内容n特点:n 只需“逻辑表达式” 的值为“真” 时,才有操作;n “逻辑表达式” 的值为“真” 时,只

14、执行一条执行语句而不执行若干个语句。 例:用逻辑IF语句求下列表达式值nREAD(*,*)XnIFX.GE.0.0) Y=3.0*X+6.0nIFX.LT.0.0) Y=-x*x+2*x-8nWrite(*,*)Y .nEND3x+6 (0)-x2 +2x-8 (x0)y=本节内容小结n1. 块IF的执行过程n2. ELSE IF的条件选择n3. 块IF与逻辑IF的区别n1、刚才已提到块IF是本节课的重点内容,而掌握块IF的执行过程是学好块IF的前提,因此有必要再回顾一下:n2、ELSE IF 语句是本讲课的难点,在书写逻辑表达式时很容易出错,特别是一个程序需要多条ELSE IF语句时。再强调两点: ELSE IF语句的断条件是在块IF语句或其上一条ELSE IF语句的判断条件不成立的前提下所做的进一步的判断。再处理多分支的选择时,要尽可能把出现几率高的条件写在前面,以提高程序的执行效率,但同时要注意各条件间的相互关系。n3、块IF不管条件为真还是为假都有相应的操作,而逻辑IF只有条件为真时才有操作。

温馨提示

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

评论

0/150

提交评论