下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章流程控制与逻辑运算3.1 if 语句前面所介绍的程序,它们的执行流程,都是经过直线,一行接着一行来执行,这样 的东西是很难做出一个具备复杂功能的程序。 功能较强的程序, 都免不了会出现一些 “流程判断 的命令。也就是能够在程序执行当中自动选择转向、跳过某些程序块来执行程序代码, 这也正是 if 这 个关键字的功能。3.1.1 if 的根本用法If 的使用方法很直观,最根本的使用方法是由一个程序模块所构成。当 if 中所赋值的逻辑判断式 成立时,这个程序模块中的程序代码才会执行。if (逻辑判断式 ) thenJ逻辑成立时,才会执行这里的程序代码end if下面用 if 来写一个警告车速过
2、快的程序。 假设现在正在高速公路上, 如果车速超过 100 公里, 就输出警告标志。1. program ex03012. implicit none3. real:speed4. write(*,*) speed: ! 信息提示5. read(*,*) speed !读入车速6. if (speed>100.0) then7. ! speed>100 时才会执行下面这一行程序8. write(*,*) Slow down. 9. end if10. stop11. end程序执行后会要求输入现在车速 ,如果车速太快会输出“ Slow down. ,没有超速的话 就不会出现任何警告
3、。If 命令还可以搭配上 else ,用来赋值当判断不成立时,会去执行某一段程序代码。 if (逻辑判断 式) then< - 逻辑成立时,执行这一段代码else<- 逻辑不成立时,那么执行这一段代码end if看下面例子 : 计算并输出以下分段函数值,其中 x 从键盘输入。x3 2x2 4x 7,x 0y23x 6x 10,x 0PROGRAM EX0302IMPLICIT NONEREAL:X,YREAD*,* XIF X<0.0 THENY=X*3+2*X*2-4*X+7ELSEY=3*X*2-6*X+10END IFWRITE*,* 'Y=',YEND
4、由此可以看出,一般的块 IF 结构由块 IF 语句、 THEN 块、 ELSE 语句、 ELSE 块、 END IF 语 句组成。块 IF 结构的执行过程如下: 1 首先执行块 IF 语句,计算其中的逻辑表达式值; 2 如果逻辑表达式值为真,那么执行THEN 块中的各可执行语句,否那么执行 ELSE块中的各可执行语句; 3 无论是执行完 THEN 块还是完 ELSE 块,最后都要转到 END IF 语句,从而结 束该块 IF 结构的执行。由此可以看出, 块 IF 结构的执行总是从块 IF 语句开始,以 END IF 语句结束,而 ELSE 语句 的作用是将 THEN 块和 ELSE 块隔开。特
5、别要提醒大家注意的是, THEN 块与 ELSE 块不能都执行, 只能根据块 IF 语句中的逻辑表达式值来确定是执行哪一块。下面对块 IF 语句作一些说明: 1 块 IF 语句是块 IF 结构的第一个语句,其中的逻辑表达式必须用一对圆括号括起 来; 2 THEN 块可以由假设干个可执行语句组成,但一行上只能写一个语句,语句太长时可以使用继续行; 3 ELSE 语句必须单独占一行; 4 ELSE 块也是由假设干个可执行语句组成,但一行上只能写一个语句,语句太长时可以使用继续行; 5 END IF 语句是块 IF 结构的最后一个语句,必须单独占一行,它表示块 IF 结构 的结束; 6 在一个块 I
6、F 结构中,块 IF 语句与 END IF 语句是必须的,而 THEN 块、 ELSE 语句、 ELSE 块可以根据实际情况省略。3.1.2 多重判断 if-else ifIf 可以配合 else if 来做多重判断 ,多重判断可以一次列出多个条件及多个程序模块,但其中最多只有一个条件成立 , 也就是最多只有其中一个程序模块会被执行。IF 条件 1 THEN块 1 < 条件 1 成立时,执行这个模块程序ELSE IF 条件 2 THEN块2< 序条件 2 成立时,执行这个模块程ELSE IF条件 3 )块3THEN< 条件 3 成立时,执行这个模块程ELSE IF条件 n T
7、HEN块n<条件 n 成立时,执行这个模块程序ELSE块n+1<每个条件都不成立时,才执行这个模块程END IF 面用一个序例子来说明ELSE IF语句的使用。例如:计算并输出以下分段函数值,其中 x 从键盘输入。0,x 102x 20, 10 x 020,0 x 2030 0.5x,20 x 4050 x,40 x 500,x 50PROGRAM EX0303IMPLICIT NONEREAL:X,YREAD(*,*) XIF (X>=50.0) THENY=0.0ELSE IF (X>=40.0) THENY=50-XELSE IF (X>=20.0) THE
8、NY=30.0-0.5*XELSE IF (X>=0.0) THENY=20ELSE IF (X>=-10.0) THEN Y=2.0*X+20ELSEY=0.0END IFWRITE (*,*) 'Y=',YEND 在上述程序中,由于第一个 ELSE IF 语句中的条件“ X>=40.0 是在块 IF 语句中的“ X>=50.0 为假的前提下进行处理的,因此,实际上意味着条件为“X>=40.0.AND.X<50.0。同样的道理,第二个 ELSE IF 语句中的条件“ X>=20.0 ,实际上意味着条件为 “ X>=20.0.AN
9、D.X<40.0 。后面两个 ELSE IF 语句的情况以此类推。在用 ELSE IF 语句实现多路分支选择结构时,要注意以下几个问题:( 1 ) ELSE IF 语句相当于将 ELSE 语句与下一行的块 IF 语句连接成一个语句。 (2)在用块 IF 结构实现多路分支时,每一个块 IF 语句必须有一个 END IF 语句与之相对应。 但 ELSE IF 语句不需要 END IF 语句与之相对应。( 3 )在一个块 IF 结构中,可以有多个 ELSE IF 语句,但只能有一个 ELSE 语句,且该 ELSE 语句与块 IF 结构中的最后一个 ELSE IF 语句相配对;在一个块 IF 结
10、构中,也可 以只有 ELSE IF 语 句,而没有 ELSE 语句,此时 ELSE 块为一个空块。( 4 )特别要强调的是,在利用块 IF 结构的嵌套或者利用 ELSE IF 语句处理多路分支 选择的 时候,块 IF 语句或 ELSE IF 语句中的条件必须写对, 否那么会出现逻辑错误,程序运 行后将得到错 误的结果。3.1.3 嵌套 if 语句介绍完多重判断 if-else if 后,现在来介绍多层 if 的使用。块 IF 结构嵌套的一般形式为: IF ( C1) THENIF (C11 ) THENELSEEND IFELSEIF (C12 ) THENELSEEND IFEND IF其中
11、, C1,C11 ,C12 均为逻辑表达式,并且在所有省略的地方都还可以是块IF 结构。例如:从键盘读入一个成绩, 如果在 85? 100 分之间,那么输出“ Very good ;在 70 / 84 分之 间,那么输出“ Good ;在 60? 69 分之间,那么输出“ Pass ;在 60 分以下,那么输出“ No pass 。PROGRAM EX0304 IMPLICIT NONE REAL:GRADE READ(*,*) GRADE IF (GRADE>=85.0) THEN WRITE(*,*) 'Very good!'ELSEIF (GRADE>=70.
12、0) THEN WRITE(*,*) 'Good!' ELSEIF (GRADE>=60.0) THENWRITE(*,*) 'Pass!'ELSEWRITE(*,*) 'No pass!' END IFEND IFEND IFEND逻辑运算if命令需要搭配逻辑表达式才能使用。一个逻辑表达式,可以不只是单纯的两个数字之间互相比拟大小,它还可以是由两个,甚至多个小逻辑表达式组合成的。Fortra n90的逻辑运算符号共有以下几种:=判断是否“相等/=判断是否“不相等>判断是否“大于>=判断是否“大于或等于<判断是否“小于&l
13、t;=判断是否“小于或等于逻辑表达式除了可以单纯地对两个数字来比拟大小之外,还可以对两个逻辑表达式间的关系来运算,看下面的例子:IF (A>=80.AND.A<90) the n“.AND. 是并且的意思,所以上一行程序代码的逻辑判断式就是在说“如果A>=80并且A<90的话,就。下面就是所有使用在相互关系之间的集合运算符号:.AND.交集,如果两边的表达式都成立,整个表达式就成立.OR.:并集,两边的表达式只要有一个成立,整个表达式就成立.NOT.逻辑反向,如果后面的表达式不成立,整个表达式就成立.EQV.两边表达式的逻辑运算结果相冋时,整个表达式就成立:.NEQV.
14、两边表达式的逻辑运算结果不冋时,整个表达式就成立3.2循环语句循环可以用来自动重复执行某一段程序代码,善用循环可以让让程序代码变得很精简。循环有两种执行格式,第一种格式会固定重复程序代码n次。另一种格式那么是不固定重复几次,一直执行到出现跳出循环的命令为止。3.2.1 DO循环语句先来看一段实例程序,例如:我们想对一个好朋友连说 10次happy birthday,用前面学过的方法要连续用10个write命令来显示10行happy birthday。使用循环语句就不用这么麻烦。Program ex0305implicit nonein teger:co un terin teger,param
15、eter:li n es=10!cou n ter<=li nes 之前会一直重复循环!每执行一次循环 cou nter会累加1do coun ter=1,li n es,1write(*,*) " happy birthday " ,counterend dostopend程序执行后显示10行happy birthday,每一行最后还会计算行数用的数字happy birthday1happy birthday2happy birthday3happy birthday4happy birthday5happy birthday6happy birthday7happ
16、y birthday8happy birthday9happy birthday10这个程序会重复执行程序中第7行至第9行的程序代码10次。下面是do语句的详 细语法:DO V=e 1, e2, e3其中,V称为循环控制变量,并且它只能是简单变量整型或实型,而不能是表达式。e1,e2, e3分别为循环控制变量的初值、终值和增量步长,它们都可以是表达式。当e3为1时,e3可以省略。DO循环结构的执行过程如以下图所示:计算e1,e2,e3的值V= e 1计算循环次数 CONT=INT(e 2-e1+ e3)/ e 3)当 CONT>0循环体语句V=V+e 3CONT=CONT+1由上图中可以
17、看出,DO循环的执行过程如下:首先分别计算表达式 e1,e2,e3的值,并将它们转换成与循环控制变量V的类型一致;然后将初值e1赋给循环控制变量 V,并计算需要循环的次数 CONTENT e 20+ e3/ e 3;最后 根据循环次数执行循环体中的各语句,并且每执行完一次循环体,就将循环控制变量 V增值一次,循环次数减少一次。下面再举一个例子来说明 DO循环结构。 例如:用DO循环语句的功能是计算并输出 n!阶乘值, 其中n从键盘输入。PROGRAM EX0306IMPLICIT NONEINTEGER:N,KREAL:SREAD(*,*)NS=1.0DO K=1,NS=S*KEND DOWR
18、ITE(*,*)N,'!=',SEND 在 DO 语句中,由于步长为 1 ,因此其步长就省略了。3.2.2 DO WHILE 循环循环并不一定要由循环控制变量的增、 减来决定是否该结束循环, 它可改由一个逻辑运 定,这就是 do while 的功能。的 do while 语句的详细语法为:!拿来累加使用 !设置循环控制变量的初值do while(逻辑运算)j-逻辑运算成立时,会一直重复执行循环 end do例如 :用 do while 语句计算 2+4+6+8+10 Program ex0307 implicit none!循环控制变量的上限integer,parameter:
19、limit=10 integer:! 循环控制变量counter integer : ans=0 counter=2do while(counter<=limit) ans=ans+counter counter=counter+2 end do write!循环控制变量累加(*,*)ans stop end执行后结果会显示 303.2.3 循环的流程控制( 1)cycle 命令Cycle 命令可以略过循环程序模块中, 在 cycle 命令后面的所有程序代码,直接跳回 头来进行下一次循环,来看下面的例子。例如: 假设某百货公司共有 9 层楼,但电梯在 4 层不停,试写一个程序来仿真百货公 从一楼爬升到 9 楼时的等号显示情况。program ex0308implicit noneinteger: dest=9integer: floordo floor=1,dest if(floor=4) cycle write(*,*) floor end do stopend算来决循环的开司中电梯执行结果如下:35 (没有出现4,直接跳到5)6789在程序中,如果需要略过目前的循环
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高中信息技术《网络设备配置与接入测试》教学设计
- 高中化学冲刺重本:溶解度与一定物质的量浓度溶液配制专题复习教学设计
- 大学英语四级听力高分突破教学设计(非英语专业本科一年级)
- 2026考调面试题目及答案解析
- 2026罗湖说课面试题目及答案
- 2026上岸面试题型及答案
- 2026实施工作岗面试题及答案
- 2026创造性执法面试题及答案
- 医院价格投诉管理制度
- 贸易法学就业前景分析
- 屋面排水管施工要点方案
- 地下室工程有限空间作业专项施工方案
- 2026年完整三支一扶考试真题解析试卷及答案
- 2026教案自查报告(2篇)
- 免疫检查点抑制剂特殊人群应用专家共识
- 低压电工资格证考试题库(2026年版适配应急管理部考核标准)
- 2026年湖南湘江新区发展集团有限公司校园招聘笔试模拟试题及答案解析
- DB31∕T 1662-2025 养老机构消毒卫生要求
- (正式版)DB50∕T 1920-2025 《制氢加氢一体站建设技术规范》
- 拌合站安装、拆除专项施工方案
- 2025福建泉州市晋江市图书馆招聘编外人员拟聘用笔试历年常考点试题专练附带答案详解试卷2套
评论
0/150
提交评论