版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、FORTRAN语言第3章(共8章)nIF结构除了能够单独使用外,结构中的任意一个语句块里都可以再次嵌入另一个结构。n被嵌入的结构可以是另一个IF结构,也可以是另一些形态、功能不同的结构,如CASE结构、DO结构等。前提是必须将整个结构完整地嵌入到IF结构的某一个语句块中,不允许被嵌入结构的一部分在一个语句块中,另一部分在别的语句块或是不在被嵌入的IF结构中,即被嵌入的任何结构不允许跨越两个独立的语句块。二、块IF的嵌套第二节第二节 块块IF选择结构选择结构FORTRAN语言第3章(共8章)IF语句嵌套的形式可以表示如下:构造名1:IF(逻辑表达式1) THEN 构造名2:IF(逻辑表达式2)
2、THEN 构造名3:IF(逻辑表达式3) THEN ENDIF构造名3 ENDIF构造名2 ELSEENDIF构造名1第二节第二节 块块IF选择结构选择结构FORTRAN语言第3章(共8章)一个嵌套分支结构可使用若干个块IF语句,相应就有若干个ENDIF语句,每个块IF语句还可能使用一些ELSE IF语句、ELSE语句,这就可能构成一个复杂的IF-ELSEIF-THEN-ELSE结构。当嵌套层次过多时,往往一时难以找到同一层的块IF中的各语句,一般可按以下方法确定:(1)从最内层的块IF语句开始,向下找到离它最近的ENDIF语句,将它们用线括起来,这就是同一层次的块IF。(2)由内向外重复这一
3、个过程,直到遇见最外层块IF语句和ENDIF语句为止。(3)在书写嵌套分支结构时采取缩进方式进行程序书写,程序的嵌套层次就容易确定。FORTRAN语言第3章(共8章)例、 给定一个年份,判断是否为闰年。分析:闰年的判断条件是能被4整除,但不能被100整除除或能被100整除且能被400整除。Y不能被4整除TF打印Y不是闰年Y不能被100整除T打印Y是闰年FY能被400整除打印Y是闰年TF打印Y不是闰年FORTRAN语言第3章(共8章)例、 给定一个年份,判断是否为闰年。分析:闰年的判断条件是能被4整除,但不能被100整除除或能被100整除且能被400整除。If ( MOD(y, 4) = 0)
4、Then If ( MOD(y ,100) = 0) Then If( MOD(y,400) = 0) Then a = “TRUE ” !既能被既能被100又能被又能被400整除的数整除的数 Else a = “FALSE “ !能被能被100整除但不能被整除但不能被400整除的数整除的数 End If Else a = “TRUE“ !能被能被4整除但不能被整除但不能被100整除的数整除的数 End If Else a = “FALSE“ !不能被不能被4,100和和400整除的数整除的数 End IfFORTRAN语言第3章(共8章)使用块IF嵌套应注意以下几点: 1、不允许从块IF语句
5、外控制转移到块IF语句的语句体内的任意位置。 2、允许通过控制转移语句(如GOTO语句)从块IF语句内控制转移到块IF语句外。 3、在嵌套的块IF语句中,内层的块IF不能和外层的块IF相互交叉。 第二节第二节 块块IF选择结构选择结构FORTRAN语言第3章(共8章)nIF结构除了可以实现二义判断之外,还可以实结构除了可以实现二义判断之外,还可以实现多重判断。此时,现多重判断。此时,IF结构中需加入新的元素结构中需加入新的元素-ELSEIF语句。语句。n方法方法1:转化为单分支,逻辑:转化为单分支,逻辑IF语句并列语句并列n方法方法2:逐次二分,转化为块:逐次二分,转化为块IF结构嵌套结构嵌套
6、例:将百分制转换成等级制,根据成绩例:将百分制转换成等级制,根据成绩x输出输出 A: x=90 B: 80=x90 C: 70=x80 D: 60=x70 E: x= 90) WRITE(*,*) 优秀优秀!If (X = 80 . AND. X= 70 .AND. X= 60 .AND. X70) WRITE(*,*) 及格及格!If (X = 90) Then WRITE(*,*) 优秀优秀!Else If (a = 80 )Then WRITE(*,*) 良好良好! Else If( a = 70) Then WRITE(*,*) 中等中等! Else If (a = 60) Then
7、WRITE(*,*) 及格及格! Else WRITE(*,*) “不及格不及格! End If End If End IfEnd IfWRITE(*,*)请输入成绩请输入成绩:“READ(*,*) XIf (X = 90) Then WRITE(*,*) 优秀优秀!ElseIf (X = 80 )Then WRITE(*,*) 良好良好! ElseIf( X= 70) Then WRITE(*,*) 中等中等! ElseIf (X = 60) Then WRITE(*,*) 及格及格! Else WRITE(*,*) “不及格不及格!End If下面给出下面给出ELSEIF块更块更一般的构造
8、形式:一般的构造形式:三、ELSEIF的语句FORTRAN语言第3章(共8章)n有了有了ELSE IF语句后,语句后,IF结构中可以同时存在多个判断条结构中可以同时存在多个判断条件和多个执行模块,但是件和多个执行模块,但是只有其中一个条件能够成立,并只有其中一个条件能够成立,并且只有一个执行模块能够执行且只有一个执行模块能够执行。使用。使用IF语句和语句和ELSE IF语语句来实现多重判断的基本形式如下:句来实现多重判断的基本形式如下:IF(e1)THEN block1ELSEIF(e2)then block2 ELSEIF(e3)then block3 -ELSE block ENDIFe1
9、e1e1block1block1block1TTTFFF第二节第二节 块块IF选择结构选择结构FORTRAN语言第3章(共8章)n多分支块多分支块IF结构的执行过程为:结构的执行过程为: 首先判断条件首先判断条件1是否成立,是否成立,若条件成立若条件成立(为为“真真”),则执行,则执行块块1,再执行,再执行ENDIF后面的语句;后面的语句;若条件若条件1不成立不成立(为为“假假”),则,则判断条件判断条件2是否成立,若条件是否成立,若条件2成立成立(为为“真真”),则执行块,则执行块2,再执行再执行END IF后面的语句后面的语句如果所有的条件都不成立,则如果所有的条件都不成立,则执行执行EL
10、SE块块(ELSE语句和块语句和块n+1是可选项是可选项),再执行,再执行END IF后面的语句。后面的语句。 第二节第二节 块块IF选择结构选择结构条件2条件1条件.条件n真真真真假假假假块1块2块.块nEND IF的后继语句块n+1FORTRAN语言第3章(共8章) 多重判断的多重判断的IF结构中,判断条件的成立具有结构中,判断条件的成立具有唯一性。即一旦有判断条件成立,就去执行相应唯一性。即一旦有判断条件成立,就去执行相应的模块,如果其后仍有判断条件是成立的,也不的模块,如果其后仍有判断条件是成立的,也不会再去执行。这一点同后面的会再去执行。这一点同后面的SELECT CASE完完全不同
11、。也就是说全不同。也就是说IF结构中的选择条件是允许重结构中的选择条件是允许重叠的,但叠的,但SELECT CASE语句不允许选择条件有语句不允许选择条件有重叠。重叠。第二节第二节 块块IF选择结构选择结构FORTRAN语言第3章(共8章)n1.ELSEIF语句其作用相当于将语句其作用相当于将ELSE语句与其语句与其后的后的ELSE块中的块块中的块IF语句连接在一起。语句连接在一起。n2.同块同块IF语句不同,语句不同, ELSEIF语句与语句与ENDIF语语句间不存在一一对应关系句间不存在一一对应关系。n3.在这种在这种IF结构中,允许使用多个结构中,允许使用多个ELSEIF语语句。在最后一
12、个句。在最后一个ELSEIF语句之后,可以有与语句之后,可以有与之对应的之对应的ELSE语句,也可以没有。语句,也可以没有。当有当有ELSE语句在最后时,表示如果前面所有的条语句在最后时,表示如果前面所有的条件都不成立,执行其后的件都不成立,执行其后的ELSE块;块;如果没有如果没有ELSE块,则表示如果前面所有的条件都不成块,则表示如果前面所有的条件都不成立时,流程转到立时,流程转到ENDIF语句。语句。第二节第二节 块块IF选择结构选择结构FORTRAN语言第3章(共8章)n4.在同一个块在同一个块IF结构中,只允许有一个结构中,只允许有一个ELSE语句和语句和ELSE块。块。n5. EL
13、SE IF是在是在“条件为假条件为假”的分支中再继续的分支中再继续进行分支处理的。故在处理多分支的选择时,进行分支处理的。故在处理多分支的选择时,要把出现几率高的条件写在前面,以提高效率。要把出现几率高的条件写在前面,以提高效率。第二节第二节 块块IF选择结构选择结构FORTRAN语言第3章(共8章)WRITE(*,*)请输入成绩请输入成绩:“READ(*,*) aIf (a = 90) Then WRITE(*,*) 优秀优秀!Else If (a = 80 )Then WRITE(*,*) 良好良好! Else If( a = 70) Then WRITE(*,*) 中等中等! Else
14、If (a = 60) Then WRITE(*,*) 及格及格! Else If (a = 40) Then WRITE(*,*) 补考补考! Else WRITE(*,*) 重修重修! End If End If End If End IfEnd If例例 输入成绩,显示等级。输入成绩,显示等级。WRITE(*,*)请输入成绩请输入成绩:“READ(*,*) aIf (a = 90) Then WRITE(*,*) 优秀优秀!ElseIf (a = 80 )Then WRITE(*,*) 良好良好! ElseIf( a = 70) Then WRITE(*,*) 中等中等! ElseIf
15、(a = 60) Then WRITE(*,*) 及格及格! ElseIf (a = 40) Then WRITE(*,*) 补考补考! Else WRITE(*,*) 重修重修!End If 值得一提,值得一提,ELSEIF结构要求结构要求合理排列逻辑条合理排列逻辑条件,使得一次只件,使得一次只能有一个逻辑条能有一个逻辑条件为件为“真真”。第二节第二节 块块IF选择结构选择结构FORTRAN语言第3章(共8章)read(*,*) xif(x.lt.-10.0) then y=0.0else if(x.lt.0.0) then y=2.0*x+20.0else if(x.lt.20.0) th
16、en y=20.0else if(x.lt.40.0) then y=30.0-0.5*xelse if(x.lt.50.0) then y=50.0-xelse y=0.0end ifwrite(*,*) y=,yend求函数值求函数值FORTRAN语言第3章(共8章)n例:计算例:计算y=f(x)+g(x) f(x)=x2-16 1+ ex+1, f(x)0 分析:分析:1.通过表达式计算通过表达式计算f 注:注:f 与与f(x)的区别的区别 2.计算计算g 3.f +g3x 第二节第二节 块块IF选择结构选择结构FORTRAN语言第3章(共8章)第三节第三节 CASECASE结构结构(F
17、90/95(F90/95新增新增) )nSELECT CASE语句是Fortran 90/95标准中新增加的语句。该语句用于容纳CASE块,为程序员提供了一种从多个备用可执行分支选项中选取一个来执行的手段。尽管多重判断的IF结构也可以实现这一功能,但是在某些多条件选择的应用场合使用IF结构会使代码显得比较繁琐、层次关系比较复杂。使用CASE结构就可以避免这一问题,编写出来的代码也显得更加直观、简洁。FORTRAN语言第3章(共8章)第三节第三节 CASECASE结构结构(F90/95(F90/95新增新增) )nCASE结构的作用和IF构造非常类似,它也用于编写分叉选择算法,即根据判断条件的成
18、立与否来区分操作不同的可执行模块。不同之处在于:CASE结构只能把某个判断条件的可能结果区分成若干个孤立的离散值或片断(这意味着CASE结构中的判断条件不允许出现重叠),按不同的值或片断进行不同的操作。如果遇到判断条件比较复杂或者存在多种判断条件互相交叉的情况时,CASE结构在处理这些判断条件时显得不是很方便,在这种情况下只能考虑使用IF结构来进行处理。FORTRAN语言第3章(共8章)第三节第三节 CASECASE结构结构(F90/95(F90/95新增新增) )n使用范围:多分支结构SELECT CASE(情况表达式)(情况表达式)CASE(情况选择器(情况选择器1)block1(块(块1
19、)CASE(情况选择器(情况选择器2)block(块(块2)-CASE(情况选择器(情况选择器n)block nCASE default默认块默认块END SelectNN=1N=2N=3N=4其他语句语句语句语句语句FORTRAN语言第3章(共8章)第三节第三节 CASECASE结构结构qSelect case后括号里的后括号里的“情况表达式情况表达式”用来表示待选择的内容,用来表示待选择的内容,如成绩、工资、年龄等。它一般如成绩、工资、年龄等。它一般为变量名,可以是整型变量、为变量名,可以是整型变量、逻辑变量、字符型变量或相应的表达式逻辑变量、字符型变量或相应的表达式qCase后面括号里的
20、后面括号里的“选择表达式列表选择表达式列表”提供了选择表达式可能提供了选择表达式可能的取值范围:它只能是一个或多个整型、字符型、逻辑型常量,的取值范围:它只能是一个或多个整型、字符型、逻辑型常量,不能为变量不能为变量q,(逗号逗号)分隔符表示分隔单个值的列表。分隔符表示分隔单个值的列表。 例:例: case(3,5,7)值不能重复)值不能重复q:(冒号冒号)分隔符表示值的范围分隔符表示值的范围 例:例: case(5:10); case(i:n)q类型与类型与Setect case中一致,下界、上界可省略。中一致,下界、上界可省略。qCase default:其后的默认块语句,可有可无。如果加
21、入它,则代表:其后的默认块语句,可有可无。如果加入它,则代表前面所有选择表达式的值皆非的情况下执行该块。前面所有选择表达式的值皆非的情况下执行该块。FORTRAN语言第3章(共8章)第三节第三节 CASECASE结构结构n情况表达式:情况表达式:q整型变量、逻辑变量、字符型变量或相应的表达式整型变量、逻辑变量、字符型变量或相应的表达式n选择表达式列表提供了选择表达式可能的取值选择表达式列表提供了选择表达式可能的取值范围:它范围:它只能是一个或多个整型、字符型、逻只能是一个或多个整型、字符型、逻辑型常量,不能为变量辑型常量,不能为变量q,(逗号逗号)分隔符表示分隔单个值的列表。分隔符表示分隔单个
22、值的列表。 例:例: case(3,5,7)值不能重复)值不能重复q:(冒号冒号)分隔符表示值的范围分隔符表示值的范围 例:例: case(5:10); case(i:n)q类型与类型与Setect case中一致,下界、上界可省略。中一致,下界、上界可省略。qCase default:只能有一个:只能有一个FORTRAN语言第3章(共8章)第三节第三节 CASECASE结构结构执行过程执行过程 在在case列表中顺序查找与之匹配的值列表中顺序查找与之匹配的值1. 计算情况表达式的值计算情况表达式的值2. 顺序匹配各情况选择器,执行相应的语句块顺序匹配各情况选择器,执行相应的语句块block,每每执行完一个执行完一个CASE
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026财达证券股份有限公司财富管理与机构业务委员会陕西分公司总经理招聘1人考试参考题库及答案解析
- 2026年山西水利职业技术学院单招职业技能考试模拟试题含详细答案解析
- 2026济南市委党校物业服务综合保障项目招聘人员考试备考试题及答案解析
- 2026广东佛山三水投资发展集团有限公司招聘下属企业佛山市三水区淼通排水工程有限公司工作人员10人考试参考题库及答案解析
- 2026江西九江市浔阳区第四幼儿园九樾分园招聘教职员工3人考试参考题库及答案解析
- 2026上海市农业科学院工作人员招聘(2026年第一批)考试备考试题及答案解析
- 2026福建泉州晋江市永和镇中心幼儿园春季保育员招聘考试参考试题及答案解析
- 2026广西南宁市第二十八中学招聘代课教师3人考试参考题库及答案解析
- 2026安徽黄山徽投集团面向全国部分重点高校引进人才2人考试备考题库及答案解析
- 2026江苏徐州市泉山数据有限公司招聘考试有关(第二轮)考试备考试题及答案解析
- 软枣猕猴桃的深度加工技术及市场应用
- 配电房10kV电气设备维修保养方案
- 福建福州市2025-2026学年物理高三第一学期期末监测试题
- 2025年江西省高职单招文化考试语文试卷
- 七下21古代诗歌五首《己亥杂诗》(其五)公开课一等奖创新教案
- 《水法》培训课件
- 《汽车维护》课件 模块二任务2:制动踏板的检查
- 智能客户服务实务(第三版)课件全套 王鑫 项目1-8 走近智能时代客户服务-打造极致的客户体验
- 2025年乡镇安全生产工作总结模版
- 房颤患者的护理常规
- 《新能源汽车维护与保养》 课件 任务1.3 高压用电作业安全规范
评论
0/150
提交评论