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

下载本文档

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

文档简介

选择结构程序设计§2.1关系表达式与逻辑表达式算法中经常要根据某种逻辑判断的结果来决定下一个步骤应该做什么。这就是带分支选择的算法。选择结构是结构化算法中一种基本结构。实现选择结构的前提是进行关系运算和逻辑判断。第2页,共32页,2024年2月25日,星期天§2.1.1关系表达式算术量A与B之间存在六种关系:A>BA≥BA≠BA=BA≤BA<B

FORTRAN用六种关系运算符表示它们:

>(.GT.)表示>>=(.GE.)表示≥

/=(.NE.)表示≠==(.EQ.)表示=

<=(.LE.)表示≤<(.LT.)表示<()中是早期版本的写法,不提倡使用。格式:E1关系运算符E2E1与E2为算术量或字符型的量关系表达式的值是逻辑量:真或假第3页,共32页,2024年2月25日,星期天算术运算符的优先级别高于关系运算符:3+5.GT.SQRT(49.0)-3=8.GT.4,真实数的运算与存储都有误差,对实数进行==或/=运算时要特别当心。一般用两者之差的绝对值作为判断的依据。用ABS(A-B)<1E-6来代替A==B用ABS(A-B)>1E-6来代替A/=B对于整型数,可直接用==,/=来判断.第4页,共32页,2024年2月25日,星期天§2.1.2逻辑表达式逻辑型变量:可以将关系表达式的结果赋值给一个变量,该变量的值只能是真或假,类型是逻辑型

LOGICALA,B,L1A=3+5.GT.SQRT(49.0)-3逻辑赋值语句FORTRAN用五种逻辑运算符表示布尔运算:.NOT.逻辑非

.AND.逻辑与

.OR.逻辑或

.EQV.逻辑等

.NEQV.逻辑不等.NEQV.也可用

.XOR.表示。布尔运算按照数学上的规定进行。要在理解的基础上掌握逻辑运算的“真值表”判断几个条件是否同时满足,数学上可以用布尔运算,FORTRAN用逻辑表达式表示。第5页,共32页,2024年2月25日,星期天逻辑表达式的格式:E1逻辑运算符E2E1与E2为逻辑型的量,可以是:

逻辑变量、逻辑常量、关系表达式、逻辑表达式、整型量逻辑表达式运算次序:括号>函数>算术表达式>关系表达式>逻辑运算同一级别的运算,从左至右进行逻辑运算符优先级别:.NOT.高于.AND.高于.OR.高于.EQV.和.NEQV.逻辑表达式的值也是逻辑量:真或假第6页,共32页,2024年2月25日,星期天当逻辑运算符作用于整型量时,执行整数的按位操作,结果是一个整数而不是逻辑型数据。3.XOR.5=63.and.5=53.or.5=7五种逻辑运算符中,逻辑非、逻辑与、逻辑或是基本的。其它两种可以由它们组合得到,例如:A.EQV.B等价于(注意逻辑运算符两边小圆点)A.AND.B.OR..NOT.A.AND..NOT.BA.NEQV.B等价于

A.AND..NOT.B.OR..NOT.A.AND.B第7页,共32页,2024年2月25日,星期天关系表达式不可连写:A<B≤C不能写成A.LT.B.LE.C须用逻辑表达式A.LT.B.AND.B.LE.C第8页,共32页,2024年2月25日,星期天§2.2块IF结构与IF语句FORTRAN90有三种方法实现选择结构:IF语句、块IF结构和CASE结构。§4.2.1逻辑IF语句§4.2.2块IF结构第9页,共32页,2024年2月25日,星期天§2.2.1逻辑IF语句逻辑IF语句也称为行IF语句。格式:IF(E)可执行语句例:IF(X>0)PRINT*,XIF(X>0.and.Y>0)PRINT*,‘第一象限’逻辑IF语句本身仅仅是一条语句,当条件为真时,也只执行一条语句,而不可能执行多条语句,与下面要介绍的块IF有明显的区别。第10页,共32页,2024年2月25日,星期天IF(X<0)Y=XIF(X>=0)Y=X+5也可写为Y=XIF(X>=0)Y=X+5而IF(X>=0)Y=X+5Y=X是错误的.第11页,共32页,2024年2月25日,星期天§4.2.2

块IFIF(E)THEN(块IF语句)

一条或多条执行语句(THEN块)ELSE(ELSE语句)

一条或多条执行语句(ELSE块)ENDIF(ENDIF语句)EIF块ELSE块真假第12页,共32页,2024年2月25日,星期天§2.2.2

块IFIF(E)THEN

一条或多条执行语句ELSEIF(E)THEN

一条或多条执行语句ELSEIF(E)THEN

一条或多条执行语句…………ELSE

一条或多条执行语句ENDIFEIF块真假EELSEIF块真假EELSEIF块真假ELSE块EndIfIF第13页,共32页,2024年2月25日,星期天

块if语句和endif语句分别标志块IF的开始和结束。每个块IF都有且仅有一条块if语句、endif语句块IF中每个块都可以省略,表示那种情况下什么也不做。每个块IF至多有一条ELSE语句和一个ELSE块。没有ELSE块的时候,ELSE语句可有可无。一个块IF中可以没有也可以有一条或多条Elseif语句,省略ELSEIF块时,Elseif语句可有可无。被省略的块也可以理解为空块。块IF中最多只有一个块被执行,在省略ELSE语句的情况下,有可能什么也不做。第14页,共32页,2024年2月25日,星期天§2.2.2.1

块IF的几种形式因各个块都可省略,块IF常以较简单的形式出现形式一:只有IF块

IF(E)THEN

一条或多条执行语句ENDIFEIF块真假形式二:只有ELSE块IF(E)THENELSE

一条或多条执行语句ENDIFEELSE块真假第15页,共32页,2024年2月25日,星期天形式二实际是形式一的变种IF(.NOT.E)THEN

一条或多条执行语句ENDIF.NOT.ETHEN块真假第16页,共32页,2024年2月25日,星期天§2.2.2.2

块IF编程例题第17页,共32页,2024年2月25日,星期天例:输入三条边的长度,计算三角形面积。简要程序Read(*,*)

A,B,CIF(A.LE.0.OR.B.LE.0.OR.C.LE.0)THENSTOP‘

输入数据错误,边长必须为正数’ENDIFIF(A+B.LE.C.OR.A+C.LE.B.OR.B+C.LE.A)THENPRINT*,‘

不能构成三角形!’STOP12345ELSES=(A+B+C)*0.5S=SQRT(S*(S-A)*(S-B)*(S-C))PRINT*,‘三角形边长:’,A,B,C,‘面积:’,SENDIFEND第18页,共32页,2024年2月25日,星期天

y=例:计算分段函数的值0x<-102x+20-10≤x<0200≤x<2030-0.5x20≤x<4050-x40≤x<500x≥50第19页,共32页,2024年2月25日,星期天简要程序:Read(*,*)XIF(X.LT.–10)THENY=0ELSEIF(X.LT.0)THENY=X+X+20ELSEIF(X.LT.20)THENY=20ELSEIF(X.LT.40)THENY=30-0.5*XELSEIF(X.LT.50)THENY=50-XELSEY=0EndifEnd第20页,共32页,2024年2月25日,星期天§2.2.2.3

块IF的嵌套块IF中各块里的执行语句都可以出现又一个块IF结构,称为块IF的嵌套。块IF的嵌套理论上可以有无穷层。块IF结构是由块IF语句和ENDIF语句括起来的一段程序。块IF嵌套中的IF与ENDIF必须成对出现,这是显而易见的。ENDIF与IF总是就近配对。应该推敲算法,减少块IF嵌套的层数。因为块IF嵌套太深会导致程序结构复杂,可读性降低。第21页,共32页,2024年2月25日,星期天可选部分如果有,就必须与关键字用空格分开。为提高块IF嵌套结构的程序可读性,可以给块IF结构取名,其一般用法为:named_if_block:if(e)thenstatementselse[named_if_block]statementsendif[named_if_block]第22页,共32页,2024年2月25日,星期天例:输入点P(x,y)的坐标,判别P点在第几象限。简要程序Read(*,*)

X,YIF(X.GT.0)THENIF(Y.GT.0)THENPRINT*,‘P点在第一象限’

ELSEPRINT*,‘P点在第四象限’

ENDIFELSEIF(Y.GT.0)THENPRINT*,‘P点在第二象限’

ELSEPRINT*,‘P点在第三象限’

ENDIFENDIFEND未考虑正好在坐标轴上的情形第23页,共32页,2024年2月25日,星期天例:将学生的成绩分为A(G≥90),B(80≤G<90),C(70≤G<80),D(60≤G<70),E(G<60)五等.程序为:INTEGERGREAD*,GIF(G>=90)THENPRINT*,’A’ELSEIF(G>=80)THENPRINT*,’B’ELSEIF(G>=70)THENPRINT*,’C’ELSEIF(G>=60)THENPRINT*,’D’ELSEPRINT*,’E’ENDIFEND第24页,共32页,2024年2月25日,星期天例:阅读程序,写出程序的运行结果程序1LOGICALP,QREAD(*,’(1X,2L4)’)P,QX=0;Y=0IF(P)X=1.0IF(Q)Y=1.0WRITE(*,*)X,YEND当从键盘输入FFTTFFTTFFTT,则X,Y的值为

_________.

程序2READ*,XIF(X<0)THENY=0.0ELSEIF(X<15)THENY=1.0ELSEIF(X<30)THENY=2.0ELSEY=3.0ENDIFWRITE(*,*)YEND当X=-12,12,22,32时,对应的Y值各为多少。第25页,共32页,2024年2月25日,星期天§2.3CASE结构对多重分支选择结构,可以用CASE结构描述,比起块IF嵌套结构来,更加直观简洁。第26页,共32页,2024年2月25日,星期天§2.3.1CASE结构的形式

CASE结构一般形式:Selectcase(case_exp)case(case_selector1)CASE块statementscase(case_selector2)CASE块statements….[casedefaultDEFAULT块statements]EndSelect第27页,共32页,2024年2月25日,星期天

Selectcase与EndSelect是CASE结构的入口和出口,必须成对出现CASE表达式case_exp可以是整型、逻辑型与字符型,但不可以用实型或复型表达式CASE选择器必须与CASE表达式类型一致CASE块可多可少,可以省略。CASEDEFAULT语句应不多于一条,并应放在所有CASE语句之后。CASE选择器是整数时,可以有多种表示法:case(1),case(1,3,5),case(1:5,9,6)case(100:200)case(100:)case(:120)第28页,共32页,2024年2月25日,星期天§2.3.2CASE结构的执行过程计算CASE表达式的值依次比较CASE选择器的值与CASE表达式的值,如果找到相等的就执行相应的CASE块,否则就执行DEFAULT块。第29页,共32页,2024年2月25日,星期天§2.3.3CASE结构的命名CASE结构命名方式与块IF结构相仿:Case结构名:Select

温馨提示

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

评论

0/150

提交评论