Fortran77教程4逻辑运算和选择结构

上传人:t****d 文档编号:243086614 上传时间:2024-09-15 格式:PPT 页数:25 大小:320KB
返回 下载 相关 举报
Fortran77教程4逻辑运算和选择结构_第1页
第1页 / 共25页
Fortran77教程4逻辑运算和选择结构_第2页
第2页 / 共25页
Fortran77教程4逻辑运算和选择结构_第3页
第3页 / 共25页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,中国矿业大学,25,第八章 常用算法的程序设计举例,第一章 算法,第二章 计算机和计算机程序,第四章 逻辑运算和选择结构,第五章 循环结构的实现,第六章,Fortran,的数据结构,第七章 数据的输入、输出,第三章,Fortran,语言程序设计初步,一、引言,在,FORTRAN77,中,用块,IF,结构来实现选择结构,,其形式为:,IF,(,条件),THEN,then,块,ELSE,else,块,END IF,例:计算职工工资。正常工资,rate (yuan/h),,一周超过40,hours,时,超过部分按1.5,rate (yuan/h) 。,cPayroll with overtime,program,payroll,read,(*,*) rate, hours,if,(hours,.gt.,40.0),then,regpay=rate*40.0,ovtpay=1.5*rate*(hours-40.0),else,regpay=rate*hours,ovtpay=0.0,end if,pay=regpay+ovtpay,write,(*,*) rate=, rate, hours=, hours,write,(*,*) regular pay=, regpay, overtime pay=, ovtpay,write,(*,*) total pay=, pay,end,二、关系表达式,关系表达式是最简单的一种逻辑表达式。,其一般形式为:, ,算术量:,数值常数、数值型变量、数值函数、算术表达式。,关系运算符:,关系比较符。,FORTRAN,中有六种关系运算符,几点注意:,1. 关系运算符字母两侧各有一个句点,不要漏写。,2. 在一个关系表达式中可能包括算术运算符和关系运算符,先进行算术运算,然后进行关系运算。(建议加括号),i+j,.ne.,m+n,相当于,(,i+j),.ne.,(m+n),3. 不同类型常变量比较时,遵循低级向高级转化规律。,X,.GT.,3,4.关系表达式的值不是一个数值,而是逻辑量“真”或“假”。,5.判断实数相等和不等,用.,EQ.,和.,NE.,时要特别注意。,(1.0/3.0+1.0/3.0+1.0/3.0),.,EQ.,1.0,(10.0*0.1),.,NE.,1.0,A,.EQ.,B,可改为,ABS,(A-B),.LT.,1E-6,C,.NE.,D,可改为,ABS,(C-D),.GT.,1E-6,三、逻辑表达式,1.,逻辑常量,FORTRAN,只有两个逻辑常量,.TRUE.,表示“真”,即满足逻辑条件,.FALSE.,表示“假”,即不满足逻辑条件,2.,逻辑型变量,Fortran,用,LOGICAL,语句说明逻辑变量。,logical,a, b,a=,.true.,b=(x+y),.gt.,z,3.,逻辑运算符,4.,逻辑表达式, ,FORTRAN,77逻辑量包括:,逻辑常量,逻辑型变量,关系表达式,(,a,.lt.,b),.and.,(a,.gt.,c),(,x,.lt.,0.),.or.,(a,.gt.,100.),.,not.,(x,.le.,0.),(,a,.gt.,b),.eqv.,(c,.gt.,d),(,l1,.lt.,0.),.neqv.true.,注意:,.,AND.,和.,EQV.,的区别。,例如,,A=3.5, B=5.0, C=2.5, D=1.0,算术运算符,的运算对象是数值量,运算结果为数值。,关系运算符,的运算对象是数值量,运算结果为逻辑量。,逻辑运算符,的运算对象是逻辑量,运算结果仍为逻辑量。,逻辑运算符,和,算术运算符,可以,连续,用运算符连接运算量,但,关系运算符,不可以。,逻辑运算符,可以写成:(设,L1,L2,L3,L4,为逻辑变量),L1 .AND. L2 .AND. L3 .AND. L4,算术运算符,可以写成:,A+B+C+D,但,关系运算符,不能写成:,A .LT. B .LT. C .LT. D,四、用块,IF,实现选择结构,IF,(,逻辑表达式),THEN,块1,ELSE,块2,END IF,几点说明:,1. 一个块,IF,是有若干个语句组成的,其中三条语句均不能单独是使用。,2. 一个块,IF,必须以块,IF,语句开始,以,END IF,语句结束。一个块,IF,语句必须和一个,END IF,语句对应。,3. 一个块,IF,可以不包含,ELSE,语句和,else,块,也可以不包含,then,块。,if,(grade,.lt.,60.),then,print,*, No., num,print,*, grade, grade,end if,4. 块,IF,的嵌套,一个块,IF,可以嵌套另一个块,IF,,但,另一个块,if,必须完整地出现在,then,块或,else,块的位置,。,if,(grade,.ge.,60.),then,else,print,*, No., num,print,*, grade, grade,end if,read,(*,*) grade,if,(grade,.ge.,60.),then,if,(grade,.ge.,70.),then,if,(grade,.ge.,80.),then,write,(*,*) A,else,write,(*,*) B,end if,else,write,(*,*) C,end if,else,write,(*,*) D,end if,end,成绩分级,A :,80,B :,70,且,80,C :,60,且,70,D :,60,给,a, b, c,三个数排序,要求从小到大输出,read,(*,*) a,b,c,if,(a,.le.,b),then,else,t=a,a=b,b=t,end if,if,(b,.le.,c),then,else,t=b,b=c,c=t,if,(a,.le.,b),then,else,t=a,a=b,b=t,end if,end if,write,(*,*) a,b,c,end,五、,ELSE IF,语句,read,(*,*) grade,if,(grade,.ge.,60.),then,if,(grade,.ge.,70.),then,if,(grade,.ge.,80.),then,write,(*,*) A,else,write,(*,*) B,end if,else,write,(*,*) C,end if,else,write,(*,*) D,end if,end,为了避免过多的块,IF,嵌套,,FORTRAN,还提供了,ELSE IF,语句来处理“,否则,如果,”的情况。,read,(*,*) grade,if,(grade,.ge.,60.),then,if,(grade,.ge.,70.),then,if,(grade,.ge.,80.),then,write,(*,*) A,else,write,(*,*) B,end if,else,write,(*,*) C,end if,else,write,(*,*) D,end if,end,read,(*,*) grade,if,(grade,.ge.,80.),then,write,(*,*) A ,else if,(grade,.ge.,70.),then,write,(*,*) B,else if,(grade,.ge.,60.),then,write,(*,*) C,else,write,(*,*) D,end if,end,几点说明:,2.,ELSE IF,语句不需,END IF,语句与之对应。,3.一个块,IF,可以有多个,ELSE IF,语句,除非有块,IF,嵌套否则只能有一个,ELSE,语句。,1.,ELSE IF,语句相当于把,ELSE,语句和其下一行的块,IF,语句连结成一个语句。,4.当处理多分支选择时,用,ELSE IF,语句往往比较方便。,5.,ELSE IF,是在“,条件为假,”的分支中再继续进行分支处理的。故在处理多分支的选择时,要把出现几率高的条件写在前面,以提高效率。,read,(*,*) grade,if,(grade,.ge.,80.),then,write,(*,*) A ,else if,(grade,.ge.,70.),then,write,(*,*) B,else if,(grade,.ge.,60.),then,write,(*,*) C,else,write,(*,*) D,end if,end,read,(*,*) grade,if,(grade,.le.,60.),then,write,(*,*) D ,else if,(grade,.le.,70.),then,write,(*,*) C,else if,(grade,.le.,80.),then,write,(*,*) B,else,write,(*,*) A,end if,end,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,求函数值,六、逻辑,IF,语句,逻辑,IF,语句只有“条件为真”时才有操作,为“假”时不进行任何操作,且,条件为“真”时只能执行一条执行语句,而后不论“真”或“假”,都接着执行逻辑,IF,语句的下一条语句。,逻辑,IF,语句又称行,IF,语句。,如果在块,IF,结构中,else,块空块,而,then,块只有一条语句,则用逻辑,IF,语句比较方便。,if,(x,.lt.,60.0),then,write,(*,*),grade,end if,end,if,(x,.lt.,60.0),write,(*,*),grade,因为不论“真”或“假”,都接着执行逻辑,IF,语句的下一条语句,故,逻辑,IF,语句的条件要写全。,read,(*,*) grade,if,(grade,.ge.,80.),write,(*,*) A,if,(grade,.ge.,70.,.and.,grade,.lt.,80.),write,(*,*) B,if,(grade,.ge.,60.,.and.grade.lt.,70.),write,(*,*) C,if,(grade,.lt.,60.),write,(*,*) D,end,read,(*,*) grade,if,(grade,.ge.,80.),write,(*,*) A,if,(grade,.ge.,70.),write,(*,*) B,if,(grade,.ge.,60.),write,(*,*) C,write(*,*) D,end,C,单价850,100以上95折优惠,求货款。,price=850,read,(*,*) n,if,(n,.ge.,100) price=price*0.95,amount=n*price,write,(*,*) n=,n, amount=,amount,end,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


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

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


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