收藏 分销(赏)

FORTRAN语言第3章(共8章).ppt

上传人:s4****5z 文档编号:13964775 上传时间:2026-05-18 格式:PPT 页数:26 大小:2.48MB 下载积分:10 金币
下载 相关 举报
FORTRAN语言第3章(共8章).ppt_第1页
第1页 / 共26页
FORTRAN语言第3章(共8章).ppt_第2页
第2页 / 共26页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,FORTRAN77/90-第三讲 选择分支结构程序设计,IF,结构除了能够单独使用外,结构中的,任意一个语句块里,都可以再次嵌入另一个结构。,被嵌入的结构可以是另一个,IF,结构,也可以是另一些形态、功能不同的结构,如,CASE,结构、,DO,结构等。,前提是必须将整个结构完整地嵌入到,IF,结构的某一个语句块中,不允许被嵌入结构的一部分在一个语句块中,另一部分在别的语句块或是不在被嵌入的,IF,结构中,即被嵌入的任何结构不允许跨越两个独立的语句块。,二、块,IF,的嵌套,第二节 块,IF,选择结构,IF,语句嵌套的形式可以表示如下:,构造名,1:IF(,逻辑表达式,1)THEN,构造名,2:IF(,逻辑表达式,2)THEN,构造名,3:IF(,逻辑表达式,3)THEN,ENDIF,构造名,3,ENDIF,构造名,2,ELSE,ENDIF,构造名,1,第二节 块,IF,选择结构,一个嵌套分支结构可使用若干个块,IF,语句,相应就有若干个,ENDIF,语句,每个块,IF,语句还可能使用一些,ELSE IF,语句、,ELSE,语句,这就可能构成一个复杂的,IF-ELSEIF-THEN-ELSE,结构。当嵌套层次过多时,往往一时难以找到同一层的块,IF,中的各语句,一般可按以下方法确定:,(1),从最内层的块,IF,语句开始,向下找到离它最近的,ENDIF,语句,将它们用线括起来,这就是同一层次的块,IF,。,(2),由内向外重复这一个过程,直到遇见最外层块,IF,语句和,ENDIF,语句为止。,(3),在书写嵌套分支结构时采取缩进方式进行程序书写,程序的嵌套层次就容易确定。,例,、,给定一个年份,判断是否为闰年。,分析:闰年的判断条件是能被,4,整除,但不能被,100,整,除,或能被,100,整除且能被,400,整除。,Y,不能被,4,整除,T,F,打印,Y,不是,闰年,Y,不能被,100,整除,T,打印,Y,是,闰年,F,Y,能被,400,整除,打印,Y,是,闰年,T,F,打印,Y,不是,闰年,例,、,给定一个年份,判断是否为闰年。,分析:闰年的判断条件是能被,4,整除,但不能被,100,整,除,或能被,100,整除且能被,400,整除。,If(,MOD(y,4)=0)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 If,使用块,IF,嵌套应注意以下几点:,1,、不允许从块,IF,语句外控制转移到块,IF,语句的语句体内的任意位置。,2,、允许通过控制转移语句,(,如,GOTO,语句,),从块,IF,语句内控制转移到块,IF,语句外。,3,、在,嵌套的块,IF,语句中,内层的块,IF,不能和外层的块,IF,相互交叉。,第二节 块,IF,选择结构,IF,结构除了可以实现二义判断之外,还可以实现多重判断。此时,,IF,结构中需加入新的元素,-ELSEIF,语句。,方法,1,:转化为单分支,逻辑,IF,语句并列,方法,2,:逐次二分,转化为块,IF,结构嵌套,例:将百分制转换成等级制,根据成绩,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,WRITE(*,*),及格,!,Else,WRITE(*,*),“,不及格,!,End If,End If,End If,End If,WRITE(*,*),请输入成绩,:“,READ(*,*)X,If(X=90)Then,WRITE(*,*),优秀,!,ElseIf,(X=80)Then,WRITE(*,*),良好,!,ElseIf,(X=70)Then,WRITE(*,*),中等,!,ElseIf,(X=60)Then,WRITE(*,*),及格,!,Else,WRITE(*,*),“,不及格,!,End If,下面给出,ELSEIF,块更一般的构造形式:,三、,ELSEIF,的语句,有了,ELSE IF,语句后,,IF,结构中可以同时存在多个判断条件和多个执行模块,但是,只有其中一个条件能够成立,并且只有一个执行模块能够执行,。使用,IF,语句和,ELSE IF,语句来实现多重判断的基本形式如下:,IF,(,e1,),THEN,block1,ELSEIF,(,e2,),then,block2,ELSEIF,(,e3,),then,block3,-,ELSE,block,ENDIF,e1,e1,e1,block1,block1,block1,T,T,T,F,F,F,第二节 块,IF,选择结构,多分支块,IF,结构的执行过程为:,首先判断条件,1,是否成立,若条件成立,(,为“真”,),,则执行块,1,,再执行,ENDIF,后面的语句;若条件,1,不成立,(,为“假”,),,则判断条件,2,是否成立,若条件,2,成立,(,为“真”,),,则执行块,2,,再执行,END IF,后面的语句,如果所有的条件都不成立,则执行,ELSE,块,(ELSE,语句和块,n+1,是可选项,),,再执行,END IF,后面的语句。,第二节 块,IF,选择结构,多重判断的,IF,结构中,判断条件的成立具有唯一性。即一旦有判断条件成立,就去执行相应的模块,如果其后仍有判断条件是成立的,也不会再去执行。这一点同后面的,SELECT CASE,完全不同。也就是说,IF,结构中的选择条件是允许重叠的,但,SELECT CASE,语句不允许选择条件有重叠。,第二节 块,IF,选择结构,1.ELSEIF,语句其作用相当于将,ELSE,语句与其后的,ELSE,块中的块,IF,语句连接在一起。,2.,同块,IF,语句不同,,ELSEIF,语句与,ENDIF,语句间不存在一一对应关系,。,3.,在这种,IF,结构中,允许使用多个,ELSEIF,语句。在最后一个,ELSEIF,语句之后,可以有与之对应的,ELSE,语句,也可以没有。,当有,ELSE,语句在最后时,表示如果前面所有的条件都不成立,执行其后的,ELSE,块;,如果没有,ELSE,块,则表示如果前面所有的条件都不成立时,流程转到,ENDIF,语句。,第二节 块,IF,选择结构,4.,在同一个块,IF,结构中,只允许有一个,ELSE,语句和,ELSE,块。,5.,ELSE IF,是在“,条件为假,”的分支中再继续进行分支处理的。故在处理多分支的选择时,要把出现几率高的条件写在前面,以提高效率。,第二节 块,IF,选择结构,WRITE(*,*),请输入成绩,:“,READ(*,*)a,If(a=90)Then,WRITE(*,*),优秀,!,Else,If(a=80)Then,WRITE(*,*),良好,!,Else,If(a=70)Then,WRITE(*,*),中等,!,Else,If(a=60)Then,WRITE(*,*),及格,!,Else,If(a=40)Then,WRITE(*,*),补考,!,Else,WRITE(*,*),重修,!,End If,End If,End If,End If,End If,例,输入成绩,显示等级。,WRITE(*,*),请输入成绩,:“,READ(*,*)a,If(a=90)Then,WRITE(*,*),优秀,!,ElseIf,(a=80)Then,WRITE(*,*),良好,!,ElseIf,(a=70)Then,WRITE(*,*),中等,!,ElseIf,(a=60)Then,WRITE(*,*),及格,!,ElseIf,(a=40)Then,WRITE(*,*),补考,!,Else,WRITE(*,*),重修,!,End If,值得一提,,ELSEIF,结构要求合理排列逻辑条件,使得一次只能有一个逻辑条件为“真”。,第二节 块,IF,选择结构,read,(*,*)x,if,(x,.lt.,-10.0),then,y=0.0,else if,(x,.lt.,0.0),then,y=2.0*x+20.0,else if,(x,.lt.,20.0),then,y=20.0,else if,(x,.lt.,40.0),then,y=30.0-0.5*x,else if,(x,.lt.,50.0),then,y=50.0-x,else,y=0.0,end if,write,(*,*)y=,y,end,求函数值,例:计算,y=,f(x)+g(x,),f(x,)=x,2,-16,1+e,x+1,,,f(x,)0,分析:,1.,通过表达式计算,f,注:,f,与,f(x,),的区别,2.,计算,g,3.f+g,第二节 块,IF,选择结构,第三节,CASE,结构,(F90/95,新增,),SELECT CASE,语句是,Fortran 90/95,标准中新增加的语句。该语句用于容纳,CASE,块,为程序员提供了一种从多个备用可执行分支选项中选取一个来执行的手段。尽管多重判断的,IF,结构也可以实现这一功能,但是在某些多条件选择的应用场合使用,IF,结构会使代码显得比较繁琐、层次关系比较复杂。使用,CASE,结构就可以避免这一问题,编写出来的代码也显得更加直观、简洁。,第三节,CASE,结构,(F90/95,新增,),CASE,结构的作用和,IF,构造非常类似,它也用于编写分叉选择算法,即根据判断条件的成立与否来区分操作不同的可执行模块。不同之处在于:,CASE,结构只能把某个判断条件的可能结果区分成若干个孤立的离散值或片断(这意味着,CASE,结构中的判断条件不允许出现重叠),按不同的值或片断进行不同的操作。,如果遇到判断条件比较复杂或者存在多种判断条件互相交叉的情况时,,CASE,结构在处理这些判断条件时显得不是很方便,在这种情况下只能考虑使用,IF,结构来进行处理。,第三节,CASE,结构,(F90/95,新增,),使用范围:多分支结构,SELECT CASE,(情况表达式),CASE,(情况选择器,1,),block1,(块,1,),CASE,(情况选择器,2,),block,(块,2,),-,CASE,(情况选择器,n,),block n,CASE default,默认块,END Select,N,N=1,N=2,N=3,N=4,其他,语句,语句,语句,语句,语句,第三节,CASE,结构,Select case,后括号里的“情况表达式”用来表示待选择的内容,如成绩、工资、年龄等。它一般,为变量名,可以是整型变量、逻辑变量、字符型变量或相应的表达式,Case,后面括号里的,“选择表达式列表”提供了选择表达式可能的取值范围:它只能是一个或多个整型、字符型、逻辑型常量,不能为变量,,,(,逗号,),分隔符表示分隔单个值的列表。,例:,case,(,3,,,5,,,7,)值不能重复,:,(,冒号,),分隔符表示值的范围,例:,case,(,5,:,10,),;case,(,i,:,n,),类型与,Setect,case,中一致,下界、上界可省略。,Case default,:其后的默认块语句,可有可无。如果加入它,则代表前面所有选择表达式的值皆非的情况下执行该块。,第三节,CASE,结构,情况表达式:,整型变量、逻辑变量、字符型变量或相应的表达式,选择表达式列表提供了选择表达式可能的取值范围:它,只能是一个或多个整型、字符型、逻辑型常量,不能为变量,,,(,逗号,),分隔符表示分隔单个值的列表。,例:,case,(,3,,,5,,,7,)值不能重复,:,(,冒号,),分隔符表示值的范围,例:,case,(,5,:,10,),;case,(,i,:,n,),类型与,Setect,case,中一致,下界、上界可省略。,Case default,:只能有一个,第三节,CASE,结构,执行过程,在,case,列表中顺序查找与之匹配的值,1.,计算情况表达式的值,2.,顺序匹配各情况选择器,执行相应的语句块,block,每执行完一个,CASE,块,程序自动跳出,CASE,选择结构,再到,END Select,下一个语句,3.,如果均不匹配,则执行,CASE,DEFAULT,其后默认的语句块。如果没有,CASE,DEFAULT,语句,就跳过,CASE,选择结构,执行,END Select,的下一个语句,Select CASE,语句是结构的入口,,END Select,是结构的出口。,第三节,CASE,结构,例:输入学生的成绩,mark,,打印学生成绩等级,优秀,90100,良,7589,通过,6074,不通过,=59,输入错误,100,WRITE(*,,*,),请输入成绩,:“,READ(*,,*,)MARK,Select Case(mark),Case(90:100),Print,优秀,!,Case(75:89),Print,良好,!,Case(60:74),Print“,通过,!,Case(0:59),Print“,不通过,!,Case,default,Print“,输入错误,!,End Select,第三节,CASE,结构,阅读程序,:,READ,*,X,SELECT CASE,(,X=0,),CASE,(,.,TRU,E.,),Y=X+5,CASE,(,.,FALSE,.,),Y=X,ENDSELECT,PRINT,*,Y,END,谢谢观看!,更多网络共享资源:,,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服