Fortran程序设计基础课件

上传人:6**** 文档编号:240976972 上传时间:2024-05-22 格式:PPT 页数:43 大小:373KB
返回 下载 相关 举报
Fortran程序设计基础课件_第1页
第1页 / 共43页
Fortran程序设计基础课件_第2页
第2页 / 共43页
Fortran程序设计基础课件_第3页
第3页 / 共43页
点击查看更多>>
资源描述
第3章 流程控制和逻辑运算第3章 流程控制和逻辑运算流程控制顺序结构:执行流程成直线,很难实现一些复杂功能的程序。选择结构选择结构、循环结构、循环结构B块块PA块块成立成立不成立不成立入口入口出口出口IF(条件P)THENA块ELSEB块END IF流程控制顺序结构:执行流程成直线,很难实现一些复杂功能的程序关系表达式关系表达式是构成选择结构判断条件的基本式子。它也是一种最简单的逻辑表达式关系表达式的一般形式 算术量关系运算符算术量 涵义:关系表达式是由关系运算符将两个算术量连接起来的式子。关系表达式关系表达式是构成选择结构判断条件的基本式子。它也是关系运算符 关系关系Fortran 77Fortran 90大于.gt.大于等于.ge.=等于.eq.=小于.lt.小于等于.le.15.4 或 x+y.gt.15.4 a+ba-b 只能写成 a+b.ne.a-b 或 (a+b)/=(a-b)ex2.17 只能写成 exp(x).ge.2.17 或 exp(x)=2.172023/8/36关系表达式关系表达式的例子:关系表达式关系运算用于两个不同类型的运算时,将自动进行数据类型转换,规则同算术运算。关系表达式的运算元素是算术量,结果是逻辑量:真(.True.)或假(.False.)。运算符如.LE.中,点与LE字符是一个整体符号,之间不能有空格。在使用.EQ.(=)或.NE.(/=)时,应注意实数类型数据的存储误差。例如:logical A real:x=1.2 A=x*x.EQ.1.44 print*,A 关系表达式关系运算用于两个不同类型的运算时,将自动进行数据类关系表达式实数运算误差对关系表达式的影响如:1.0/3.0*3.0.EQ.1.0 值为.false.1.0/3.0*3.0=0.9999999 所以采用如下的形式:a.eq.b abs(a-b).lt.1E-6 c.ne.d abs(c-d).gt.1E-6关系表达式实数运算误差对关系表达式的影响字符关系表达式两个字符型数据也可以经比较,与数值型格式一致两个单个字符比较,以其ASCII码比较,ASCII码大者为大 如:AB两个字符常量(字符串)比较,将两个字符串中的字符自左向右进行比较,如有差别,则ASCII码大者为大,否则两者相等。如:SHANGHAISHANGKONG如果两个字符串长度不等,则系统会自动将短的字符补以空格,使两者等长再比较。如:thethen the5 (3)M能被3或5同时乘除 以上关系应如何表示呢?他们不能简单地用关系表达式表。解决的方法是:逻辑表达式。逻辑运算关系表达式只能表达简单的关系,但如:逻辑表达式逻辑表达式的一般形式 逻辑量逻辑运算符逻辑量 逻辑表达式是由逻辑运算符将两个逻辑量连接起来的式子。逻辑表达式的运算元素是逻辑量,结果也是逻辑量:真(.True.)或假(.False.)。逻辑量包括逻辑常量、逻辑变量和关系表达式。逻辑表达式逻辑表达式的一般形式逻辑运算回顾逻辑常量 两个:.true.(真).false.(假)逻辑变量 用于存放逻辑常量的变量。逻辑变量可以通过赋值语句来接受逻辑常量的值,但在使用前,要进行类型说明。例:logical a,b a=.true.b=.false.逻辑运算回顾逻辑常量逻辑运算逻辑运算符 .and.(逻辑与).or.(逻辑或).not.(逻辑非).eqv.(逻辑等(同或).neqv.(逻辑不等(异或)逻辑运算逻辑运算符逻辑运算逻辑运算符的运算规则 若a,b为两个逻辑量,则:a.and.b(当a、b同时为真时,为真。)a.or.b(当a、b中任意一个为真或同时为真时,为真。).not.a(当a为真,其值为假;当a为假,其值真。)a.eqv.b(当a、b为同一逻辑常量时,为真。)a.neqv.b(当a、b不为同一逻辑常量时,为真。)逻辑运算逻辑运算符的运算规则逻辑运算举例例如:(1)5x10 表示为:x=5.and.x5 表示为:x5 或者为:abs(x)5(3)M能被3或5同时乘除表示为:Mod(m,3)=0.or.Mod(m,5)=0逻辑运算举例例如:逻辑运算次序逻辑表达式的运算次序 运算次序为:括号算术运算关系运算逻辑运算 而逻辑运算:.not.and.or.eqv.,.neqv.逻辑运算次序逻辑表达式的运算次序逻辑运算举例例1:写出下列条件的逻辑表达式。5k10 k.ge.5.and.k.le.10 f3g或f5t abs(f).le.3*g.or.abs(f).eq.5*t 1a8并且1b8(a.ge.1.and.a.le.8).and.(b.ge.1.and.b.le.8)逻辑运算举例例1:写出下列条件的逻辑表达式。逻辑运算举例若a=2.5,b=7.5,c=5.0,d=6.0,求下列逻辑表达式的值。(a.lt.b).and.(b.lt.c)t f f 逻辑运算举例若a=2.5,b=7.5,c=5.0,d=6.0逻辑运算举例若a=2.5,b=7.5,c=5.0,d=6.0,求下列逻辑表达式的值。c/2.0+d.lt.a.and.not.true.or.c.le.d 8.5 F T F .F .T逻辑运算举例若a=2.5,b=7.5,c=5.0,d=6.0块 if 选择结构有以下三种典型的块if选择结构:单分支结构:if(条件)then (块if语句)块 (then块)endif (endif语句)PA块 if 选择结构有以下三种典型的块if选择结构:PA块 if 选择结构 双分支结构 if(条件)then 块1 (then块)else 块2 (else块)endif PAB块 if 选择结构 双分支结构PAB块 if 选择结构例:2X3 (X2)Y X5 (X2)编程如下:read(*,*)xif(x.le.2)then y=2*x+3else y=x+5endifwrite(*,*)x=,x,y=,yendX2True FalseY=2X3 Y=X+5输出结果输出结果结束结束输入输入X值值块 if 选择结构例:2X3 块 if 选择结构多分支块if结构 if(条件1)then 块1 else if(条件2)then 块2 (else if块)else if(条件n)then 块n else 块(n+1)endif 块 if 选择结构多分支块if结构块 if 选择结构说明:每个块if中可以完整地包含一个(或多个)块if结构,即构成块if 的嵌套结构。如:if(条件1)then if(条件1)then 块1 if(条件2)then else 块2 if(条件2)then endif 块2 else endif 块1 endif endif 块 if 选择结构说明:块 if 选择结构一个块if 语句必须和一个endif语句相对应。块if 中的“then块”、“else块”和“else if块”可为空块。块 if 选择结构一个块if 语句必须和一个endif语句块 if 选择结构举例求一元二次方程ax2+bx+c=0的根。(当b2-4ac0时有两个实根,b2-4ac0时有两个复根。)输入输入a、b、cb24ac d true d0 false计算两实根计算两实根 计算两复根计算两复根输出输出x1,x2 输出输出x1,x2 结束结束 块 if 选择结构举例求一元二次方程ax2+bx+c=0的根块 if 选择结构举例程序 print*,input a,b,c:read*,a,b,c f=-b/(2.0*a)d=b*2-4.0*a*c g=sqrt(-d)/(2.0*a)if(d.ge.0.0)then print*,x1=,f,+i,g e=sqrt(d)print*,x2=,f,-i,g x1=(-b+e)/(2.0*a)endif x2=(-b-e)/(2.0*a)end print*,x1=,x1 print*,x2=,x2 else块 if 选择结构举例程序 print*,input块 if 选择结构举例求下列函数值。0 (x-10)2x+20 (-10 x0)y=20 (0 x20)30-0.5x (20 x40)50-x (40 x50)0 (x50)块 if 选择结构举例求下列函数值。块 if 选择结构 输入输入x xtrue true x x-10-10 false falsetrue true x x0 0 false falsetrue true x x2020 false falsetrue true x x4040 false falsetruetrue x x5050 falsefalse y=50-x y=0 y=50-x y=0打印打印y yy y0 0y=20y=20y=30-0.5xy=30-0.5xy=2x+20y=2x+20块 if 选择结构 输入xtrue 块 if 选择结构举例程序 read*,x print*,y=,y if(x.lt.-10.0)then end 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 endif块 if 选择结构举例程序 read*,x 块 if 选择结构程序举例read*,x if(x.lt.50.0)then if(x.lt.-10.0)then y=50.0-x y=0.0 else else y=0.0 if(x.lt.0.0)then endif y=2.0*x+20.0 endif else endif if(x.lt.20.0)then endif y=20.0 endif else print*,y=,y if(x.lt.40.0)then end y=30.0-0.5*x else块 if 选择结构程序举例read*,x 逻辑 if 语句 逻辑if语句也是一种选择结构,但与块if 不同,主要表现在:只用一行表示一个选择结构;仅当条件成立时执行,并且只执行一条语句。逻辑if语句的一般形式:If条件语句 例:if(n.le.100)n=n+1逻辑 if 语句 逻辑if语句也是一种选择结构,但与块逻辑 if 语句例:2X3 (X2)Y X5 (X2)编程如下:read(*,*)x read(*,*)x if(x.le.2)then if(x.le.2)y=2*x+3 y=2*x+3 if(x.gt.2)y=x+5 else write(*,*)y=,y y=x+5 end endif write(*,*)y=,y end逻辑 if 语句例:2X3 (多重判断:块CASE选择结构SELECT CASE(变量)CASE(数值1)语句块1 CASE(数值2)语句块2 CASE(数值n)语句块n CASE DEFAULT 类似于 ELSE 语句块n+1END SELECT块CASE选择结构的一般格式Fortran 90 引入多重判断:块CASE选择结构SELECT CASE(变量)SELECT CASE 语句Case default 程序模块没有规定一定要出现。Case 语句里的冒号前后可以放入两个数值,表示在这两个数字范围内的所有数值。Case 语句可以用逗号放入多个变量每个Case 所用的数值都必须是固定的常量,不能使用变量只能使用整数,字符和逻辑型变量不能使用浮点数和复数。SELECT CASE 语句Case default 程序模块CASE选择结构问题:已知年月,判断该月所对应的天数。输入年和月月=1,3,5,7,8,10,12DAY=31月=4,6,9,11DAY=30月=2DAY=29DAY=28输出DAYTFFFTT闰年F FT块CASE选择结构问题:输入年和月月=1,3,5,7DAY=Integer y,m,dRead*,y,mIf (m=1.or.m=3.or.m=5.or.m=7.or.m=8.or.m=10.or.m=12)then d=31Else if (m=4.or.m=6.or.m=9.or.m=11)then d=30Else if(mod(y,4)=0.and.mod(y,100)/=0).or.mod(y,400)=0)then d=29 else d=28 end ifend if print*,y,年,m,月所对应的天数为:,d,天end块块if结构求结构求解问题解问题Integer y,m,d块if结构求解问题integer y,Month,Dayprint*,请输入y和Monthread*,y,Monthselect case(Month)case(1,3,5,7,8,10,12)Day=31 case(4,6,9,11)Day=30 case(2)if(mod(y,4)=0.and.mod(y,100)/=0).or.mod(y,400)=0)then Day=29 else Day=28 End ifEnd select print*,y,年,Month,月所对应的天数,Day,天end块块Case选选择结构求择结构求解问题解问题integer y,Month,Day块Case选择结构GOTO 语句GOTO 语句其他语句Pause 语句的功能就是,当程序执行到pause时,会暂停,直到用户按下Enter键后才会继续执行。可以用来调试,输出间断(需要分页),或者数据显示(确定是否运行)Continue 功能为继续向下执行语句。Stop 功能为结束程序运行。其他语句Pause 语句的功能就是,当程序执行到pause时作业题目3.1 题目3.2 作业题目3.1 题目3.2 作业题目3.3 请采用Fortran90 自由格式编写程序,求解实系数方程ax2+bx+c=0的实数解。要求:系数a,b,c 为程序执行时键盘输入,a,b,c为任意实数;所有的解均输出到屏幕。题目3.4 请采用IF GOTO 语句编写Fortran90 自由格式程序,求1+2+3+100=?作业题目3.3 请采用Fortran90 自由格式编写程序,
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 教学培训


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!