FORTRAN90第二章_选择结构程序设计_第1页
FORTRAN90第二章_选择结构程序设计_第2页
FORTRAN90第二章_选择结构程序设计_第3页
FORTRAN90第二章_选择结构程序设计_第4页
FORTRAN90第二章_选择结构程序设计_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、程序设计语言授课教师: 范兴朗E-mail: 2.1 关系表达式与关系表达式与逻辑表达式逻辑表达式2 选择结构程序设计选择结构程序设计 2.2 块块IFIF结构与结构与IFIF语句语句 2.3 CASE结构结构 2.4 选择结构程序设计举例选择结构程序设计举例 2.5 小结小结2.1关系表达式与关系表达式与逻辑表达式逻辑表达式 算法中经常要根据某种逻辑判断的结果算法中经常要根据某种逻辑判断的结果来决定下一个步骤应该做什么。这就是带分来决定下一个步骤应该做什么。这就是带分支选择的算法。支选择的算法。选择结构选择结构是结构化算法中一是结构化算法中一种基本结构。种基本结构。 实现选择结构的前提是进行

2、实现选择结构的前提是进行关系运算关系运算和和逻辑判断逻辑判断。 2.1.1 关系表达式关系表达式 算术量算术量a a与与b b之间存在六种关系之间存在六种关系: : ab ab ab a=b ab ab ab ab a=b ab a (.gt.)(.gt.)表示表示 =(.ge.)(.ge.)表示表示 /=/=(.ne.)(.ne.)表示表示 =(.eq.)(.eq.)表示表示= = =(.le.)(.le.)表示表示 (.lt.)(.lt.)表示表示 () ()中是早期版本的写法中是早期版本的写法, ,不提倡使用。不提倡使用。 格式格式: : E1E1关系运算符关系运算符 E2E2 E1 E

3、1与与E2E2为算术量或字符型的量为算术量或字符型的量 关系表达式的值是逻辑量关系表达式的值是逻辑量: :真真或或假假 算术运算符的优先级别高于关系运算符算术运算符的优先级别高于关系运算符: : 3+5.gt.sqrt(49.0)-3 =8.gt.4, 3+5.gt.sqrt(49.0)-3 =8.gt.4,真真 实数的运算与存储都有误差实数的运算与存储都有误差, ,对实数进行对实数进行=或或/=/=运算时要特别当心。一般用两者之差的绝对值作运算时要特别当心。一般用两者之差的绝对值作为判断的依据。为判断的依据。用用abs(a-b)1e-6abs(a-b)1e-6abs(a-b)1e-6来代替来

4、代替a/=ba/=b对于整型数对于整型数, ,可直接用可直接用=,/=,/=来判断来判断. .2.1.2 逻辑表达式逻辑表达式 逻辑型变量逻辑型变量: :可以将关系表达式的结果赋值给一可以将关系表达式的结果赋值给一个变量个变量, ,该变量的值只能是真或假该变量的值只能是真或假, ,类型是逻辑型类型是逻辑型 logical a,b,l1logical a,b,l1 a=3+5.gt.sqrt(49.0)-3 a=3+5.gt.sqrt(49.0)-3 逻辑赋值语句逻辑赋值语句 fortranfortran用五种用五种逻辑运算符逻辑运算符表示布尔运算表示布尔运算: : .not. .not.逻辑非

5、逻辑非 .and.and.逻辑与逻辑与 .or.or.逻辑或逻辑或 .eqv.eqv.逻辑等逻辑等 .neqv.neqv.逻辑不等逻辑不等.neqv.neqv.也可用也可用 .xor.xor.表示。表示。布尔运算按照数学上的规定进行。要在理解的基布尔运算按照数学上的规定进行。要在理解的基础上掌握逻辑运算的础上掌握逻辑运算的“真值表真值表” 判断几个条件是否同时满足判断几个条件是否同时满足, ,数学上可以用布尔数学上可以用布尔运算运算,fortran,fortran用逻辑表达式表示。用逻辑表达式表示。 逻辑表达式的格式逻辑表达式的格式: : E1E1逻辑运算符逻辑运算符 E2E2 E1 E1与与

6、E2E2为逻辑型的量为逻辑型的量, ,可以是可以是: : 逻辑变量、逻辑常量、关系表达式、逻辑表达式、逻辑变量、逻辑常量、关系表达式、逻辑表达式、整型量整型量 逻辑表达式运算次序逻辑表达式运算次序: :括号括号函数函数算术表达式算术表达式关系表达式关系表达式逻辑运算逻辑运算同一级别的运算同一级别的运算,从左至右从左至右进行进行 逻辑运算符优先级别逻辑运算符优先级别: : .NOT. .NOT.高于高于.AND.AND.高于高于.OR.OR.高于高于.EQV.EQV.和和 .NEQV.NEQV. 逻辑表达式的值也是逻辑量逻辑表达式的值也是逻辑量: :真真或或假假 当逻辑运算符作用于整型量时当逻辑

7、运算符作用于整型量时, ,执行整数的按位执行整数的按位操作操作, ,结果是一个整数而不是逻辑型数据。结果是一个整数而不是逻辑型数据。3.XOR.5=6 3.and.5 = 5 3.or.5=73.XOR.5=6 3.and.5 = 5 3.or.5=7 五种五种逻辑运算符逻辑运算符中中, ,逻辑非、逻辑与、逻辑或是逻辑非、逻辑与、逻辑或是基本的。其它两种可以由它们组合得到基本的。其它两种可以由它们组合得到, ,例如例如: :.eqv.b .eqv.b 等价于等价于( (注意逻辑运算符两边小圆点注意逻辑运算符两边小圆点) ) a.and.b .or. .not.a.and.not.b a.and

8、.b .or. .not.a.and.not.b.neqv.b .neqv.b 等价于等价于 a.and.not.b .or. .not.a.and.ba.and.not.b .or. .not.a.and.b 关系表达式不可连写关系表达式不可连写: :BC 0) print :if(x0) print * *, x, xif(x0.and.y0) print if(x0.and.y0) print * *, ,第一象限第一象限 逻辑逻辑IFIF语句本身仅仅是一条语句语句本身仅仅是一条语句, ,当条件为真时当条件为真时, ,也也只执行一条语句只执行一条语句, ,而不可能执行多条语句而不可能执行

9、多条语句, ,与下面要与下面要介绍的块介绍的块IFIF有明显的区别。有明显的区别。例例如如求求函函数数 X X0 Y= X+5 X0 IF(X=0)Y=X+5也可写为也可写为Y=XIF(X=0)Y=X+5而而IF(X=0)Y=X+5Y=X是错误的是错误的.2.2.2 块块IFIFif(e) then(if(e) then(块块if if语句语句) ) 一条或多条执行语句一条或多条执行语句(then(then块块) )else(elseelse(else语句语句) ) 一条或多条执行语句一条或多条执行语句(else(else块块) )endif(endifendif(endif语句语句) )EI

10、F块ELSE块真真假假 N-S 图为: E 真 假 THEN 块 ELSE 块 2.2.2 块块IFIFif(e) thenif(e) then 一条或多条执行语句一条或多条执行语句elseif(e)thenelseif(e)then 一条或多条执行语句一条或多条执行语句elseif(e)thenelseif(e)then 一条或多条执行语句一条或多条执行语句elseelse 一条或多条执行语句一条或多条执行语句 endifendifEIF块真真假假EELSEIF块真真假假EELSEIF块真真假假ELSE块EndIfIF 块块if if语句和语句和end if end if 语句分别标志块语句

11、分别标志块IFIF的开始和结束。的开始和结束。每个块每个块IFIF都有且仅有一条块都有且仅有一条块if if语句、语句、end if end if 语句语句 块块IFIF中每个块都可以省略中每个块都可以省略, ,表示那种情况下什么也表示那种情况下什么也不做。不做。 每个块每个块IFIF至多有一条至多有一条ELSEELSE语句和一个语句和一个ELSEELSE块。块。没有没有ELSEELSE块的时候块的时候,ELSE,ELSE语句可有可无。语句可有可无。 一个块一个块IFIF中可以没有也可以有一条或多条中可以没有也可以有一条或多条Else ifElse if语语句句, ,省略省略ELSEIFELS

12、EIF块时块时,Else if,Else if语句可有可无。语句可有可无。 被省略的块也可以理解为空块。被省略的块也可以理解为空块。 块块IFIF中最多只有一个块被执行中最多只有一个块被执行, ,在省略在省略ELSEELSE语句语句的情况下的情况下, ,有可能什么也不做。有可能什么也不做。2.2.2.1 块块IFIF的几种形式的几种形式 因各个块都可省略因各个块都可省略, ,块块IFIF常以较简单的形式出现常以较简单的形式出现 形式一形式一: :只有只有IFIF块块 IF(E) THENIF(E) THEN 一条或多条执行语句一条或多条执行语句 END IF END IFEIF块真真假假 形式

13、二形式二: :只有只有ELSEELSE块块 IF(E) THEN IF(E) THEN ELSE ELSE 一条或多条执行语句一条或多条执行语句 ENDIF ENDIFEELSE块真真假假形式二实际是形式一的变种形式二实际是形式一的变种IF(.NOT.E) THENIF(.NOT.E) THEN 一条或多条执行语句一条或多条执行语句 ENDIFENDIF.NOT.ETHEN块真真假假2.2.2.2 块块IFIF编程例题编程例题例例: :输入三条边的长度输入三条边的长度, ,计算三角形面积。计算三角形面积。简要程序简要程序read(read(* *, ,* *) ) a,b,ca,b,cif(a

14、.le.0.or.b.le.0.or.c.le.0) thenif(a.le.0.or.b.le.0.or.c.le.0) thenstop stop 输入数据错误输入数据错误, ,边长必须为正数边长必须为正数endifendifif(a+b.le.c.or.a+c.le.b.or.b+c.le.a) thenif(a+b.le.c.or.a+c.le.b.or.b+c.le.a) then print print * *, , 不能构成三角形不能构成三角形! ! stop 12345 stop 12345elseelse s = (a+b+c) s = (a+b+c)* *0.50.5 s

15、= sqrt(s s = sqrt(s* *(s-a)(s-a)* *(s-b)(s-b)* *(s-c)(s-c) print print * *, , 三角形边长三角形边长: :,a,b,c, ,a,b,c, 面积面积: :,s ,sendifendifendend y=y=例例: :计算分段函数的值计算分段函数的值0 x -100 x -102x+20 -102x+20 -10 x 0 x 020 020 0 x 20 x 2030-0.5x 20 x 4030-0.5x 20 x 4050-x 4050-x 40 x 50 x 500 x 0 x 5050简要程序简要程序: :read

16、(read(* *, ,* *) x) xif(x .lt. if(x .lt. 10) then10) then y = 0 y = 0elseif(x .lt.0) thenelseif(x .lt.0) then y = 2 y = 2* *x+20 x+20elseif (x.lt.20) thenelseif (x.lt.20) then y = 20 y = 20else if(x.lt.40) then else if(x.lt.40) then y=30-0.5 y=30-0.5* *x xelse if(x .lt.50) thenelse if(x .lt.50) then

17、 y = 50-x y = 50-xelseelsey=0y=0end ifend ifendend2.2.2.3 块块IFIF的嵌套的嵌套 块块IFIF中各块里的执行语句都可以出现又一个块中各块里的执行语句都可以出现又一个块IFIF结构结构, ,称为称为块块IFIF的嵌套的嵌套。块。块IFIF的嵌套理论上可的嵌套理论上可以有无穷层。以有无穷层。 块块IFIF结构是由块结构是由块IFIF语句和语句和ENDIFENDIF语句括起来的语句括起来的一段程序。块一段程序。块IFIF嵌套中的嵌套中的IFIF与与ENDIFENDIF必须成对必须成对出现出现, ,这是显而易见的。这是显而易见的。ENDIF

18、ENDIF 与与IFIF总是就近总是就近配对配对 。 应该推敲算法应该推敲算法, ,减少块减少块IFIF嵌套的层数。因为块嵌套的层数。因为块IFIF嵌套太深会导致程序结构复杂嵌套太深会导致程序结构复杂, ,可读性降低。可读性降低。 可选部分如果有可选部分如果有, ,就必须与关键字用空格分开。就必须与关键字用空格分开。 为提高块为提高块IFIF嵌套结构的程序可读性嵌套结构的程序可读性, ,可以给块可以给块IFIF结构取名结构取名, ,其一般用法为其一般用法为: : named_if_block: if(e) then named_if_block: if(e) then statements s

19、tatements else named_if_block else named_if_block statements statements endif named_if_block endif named_if_block例例: :输入点输入点P(x,y)P(x,y)的坐标的坐标, ,判别判别P P点在第几象限。点在第几象限。简要程序简要程序read(read(* *, ,* *) ) x,yx,yif(x.gt.0) thenif(x.gt.0) then if(y.gt.0) then if(y.gt.0) then print print * *, , p p点在第一象限点在第一象限

20、 else else print print * *, , p p点在第四象限点在第四象限 endifendifelseelse if(y.gt.0) then if(y.gt.0) then print print * *, , p p点在第二象限点在第二象限 elseelse print print * *, , p p点在第三象限点在第三象限 endifendifendifendifendend未考虑正好在坐标轴上的情形例例:将学生的成绩分为将学生的成绩分为a(g90),b(80g90),c(70g80),d(60g70),e(g=90)thenprint*, aelse if(g=80

21、)thenprint*,belse if(g=70)thenprint*,celseif(g=60)thenprint*,delseprint*,eend ifend例:阅读程序,写出程序的运行结果例:阅读程序,写出程序的运行结果程序程序1logical p,qread(*,(1x,2l4)p,qx=0;y=0if(p)x=1.0if(q)y=1.0write(*,*)x,yend当从键盘输入当从键盘输入ffttffttfftt,则则x,y的值为的值为 _. 程序程序2read*,xif(x0)theny=0.0else if(x15)theny=1.0else if(x30)theny=2.

22、0elsey=3.0end ifwrite(*,*)yend当当x=-12,12,22,32时,对应的时,对应的y值值各为多少。各为多少。2.3 CASE CASE结构结构 对多重分支选择结构对多重分支选择结构, ,可以用可以用CASECASE结构描述结构描述, ,比比起块起块IFIF嵌套结构来嵌套结构来, ,更加直观简洁。更加直观简洁。2.3.1 CASECASE结构的形式结构的形式 CASECASE结构一般形式结构一般形式: :Select case(case_exp)Select case(case_exp) case (case_selector1) case (case_select

23、or1) CASE CASE块块statementsstatements case (case_selector2) case (case_selector2) CASE CASE块块statementsstatements. .case defaultcase default DEFAULT DEFAULT块块statementsstatementsEnd SelectEnd Select Select caseSelect case与与End SelectEnd Select是是CASECASE结构的入口和出结构的入口和出口口, ,必须成对出现必须成对出现 CASECASE表达式表达式ca

24、se_expcase_exp可以是整型、逻辑型与字可以是整型、逻辑型与字符型符型, ,但不可以用实型或复型表达式但不可以用实型或复型表达式 CASECASE选择器必须与选择器必须与CASECASE表达式类型一致表达式类型一致 CASECASE块可多可少块可多可少, ,可以省略。可以省略。 CASE DEFAULTCASE DEFAULT语句应不多于一条语句应不多于一条, ,并应放在并应放在所有所有CASECASE语句之后。语句之后。 CASECASE选择器是整数时选择器是整数时, ,可以有多种表示法可以有多种表示法: : case(1),case(1,3,5),case(1:5,9,6) ca

25、se(1),case(1,3,5),case(1:5,9,6) case(100:200) case(100:) case(:120) case(100:200) case(100:) case(:120)2.3.2 CASECASE结构的执行过程结构的执行过程 计算计算CASECASE表达式的值表达式的值 依次比较依次比较CASECASE选择器的值与选择器的值与CASECASE表达式的值表达式的值, ,如果找到相等的就执行相应的如果找到相等的就执行相应的CASECASE块块, ,否则就否则就执行执行DEFAULTDEFAULT块。块。2.3.3 CASECASE结构的命名结构的命名CASECASE结构命名方式与块结构命名方式与

温馨提示

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

评论

0/150

提交评论