《顺序结构的Fortran程序设计.ppt》由会员分享,可在线阅读,更多相关《顺序结构的Fortran程序设计.ppt(28页珍藏版)》请在三一办公上搜索。
1、2023/9/19,1,第二讲 顺序结构程序设计,从设计上看,任何程序均可用顺序结构、选择结构、循环结构实现。其中,顺序结构就是按照处理顺序,依次写出相应的语句,因此,顺序结构最为简单、也是最基本的Fortran编程,本讲先学习顺序结构的Fortran程序设计。,从内容上看,程序就是数据和语句,其中数据是程序加工处理对象、语句描述了对数据的具体操作。在Fortran中,数据的表现形式有常量、变量、表达式和函数,而数据的类型分为整型、实型、复型、字符型和逻辑型,以及数组等。,因此,本讲先介绍最简单的数据类型(整型和实型)与数据形式(常量、变量、函数、算术表达式),以及最简单的Fortran语句,
2、分2节讲授。通过本讲的学习之后,就能设计最简单的Fortran程序了!,2023/9/19,2,一、Fortran常量,(1)什么是常量在程序运行的过程中,其值不改变的量。比如,12.0、-2、FORTRAN等都是常量。在Fortran中,常量分为直接常量和符号常量两大类:,(2)直接常量指数据本身就是一个常量,Fortran处理整型(Integer)、实型(Real)、双精度型(Double Precision)、复型(Complex)、逻辑型(Logical)、字符型(Character)等六种直接常量,每种数据常量有各自的表示方法。,1 Fortran程序中最基本的数据,2023/9/1
3、9,3,1、整型常量:就是整型常数(整数),包括正数、负数和零。但要注意的是-数字间不能加平常表示千分位的“,”号以及加空格,也不能带小数点。比如,3,567,212、8 99、6.1都是错误的整型常量。,2、实型常量:就是实型常数(实数),有两种表示形式-小数点形式:根据小数点前后是否有数字,有3种形式 m.n、m.、.n,数字前面可以加上符号,比如,-6.8、9.(=9.0)、.89(=0.89)等。,指数形式:一般用来表示绝对值很大或很小的数,表示方式是用E表示以10为底指数,且E的左边为数字部分、右边是指数部分,比如,1.32E6(=1.32106)、2.68E-8(=2.6810-8
4、)。用指数形式表示实数时要注意:,、数字部分可以是整型的也可以是实型的,如1E2=1.0E2=100.0100,2023/9/19,4,、E的左右两边的数字部分和指数部分必须同时出现、缺一不可,比如,E-9(缺数字部分)和.E2(单独的小数点)都是不合法的。,、指数部分只能是整数、不可写成实数,如8E2.3是错误的指数表示;,(3)符号常量所谓的符号常量,是用一个标识符来代表一个常量。使用时,需要对符号常量进行说明,方法是用Parameter语句来说明(定义),比如:,Parameter(Pi=3.14159,M=80)这个语句定义了两个符号常量Pi和M,在程序单元中Pi就代表了3.14159
5、、M代表了80。其中Parameter就是定义符号常量使用的特定标识符,被定义的量要放在括号内、而且有多个符号常量时之间要用“,”分隔。,2023/9/19,5,二、Fortran变量,(1)什么是变量变量与常量相对应,是指在程序运行的过程中,其值可以改变的量。变量实质是代表一个数据存储单元,因此,在Fortran中经常用到下面(貌似错误)的语句:,N=N+1其表示存储单元N中的数据在原来的基础上增加1。,此外,要注意parameter语句是非执行语句,在程序编译时符号常量名均被替换相应的常量,而后面要讲的变量则是一个数据存储单元(其中的值是变化的),因此符号常量不能当变量使用!,(2)变量的
6、取名变量需要一个名字来识别-变量名,其用标识符来命名,在Fortran语言中变量名的标识符只能由字母、数字和下划线组成、且开头只能是字母,比如x、total2、k123等。,2023/9/19,6,2023/9/19,7,根据数据的类型,其中的说明符包括:Integer说明变量为整型变量Real说明变量为实型变量Double precision说明变量为双精度变量Complex说明变量为复型变量Logical说明变量为逻辑型变量Character说明变量为字符型变量,2023/9/19,8,比如:Integer x,y-定义2个整型变量x和yReal area,average,student1
7、-则定义3个实型变量,说明多个变量时,变量间用“,”分开,但末尾不能用“.”,比如,double precision a,b,c.是错误的。,这种说明语句的特点是,不仅进行了变量数据类型的说明,而且还可以给被说明的变量赋予初值或变量初始化(具有双重功能)。比如:Real:total=73.2-定义了实型变量total,同时给它赋初值为73.2。,2023/9/19,9,例如:在没有前面2种说明的情况下,i1、mCA、N3s等均为整型变量。,2023/9/19,10,关于变量的类型说明,还需要注意:1、IN规则在Fortran77中经常使用,但是其有一定的副作用,比如,隐含说明与强制说明一同使用
8、时,变量类型不清楚,因此,在Fortran90中不主张使用,这需要在程序变量说明之前加入:implicit none语句来取消IN规则。,2、3种变量类型说明方式中,强制说明优先级别最高、隐含说明Implicit次之、IN规则级别最低,就是说,当变量被强制定义为某种类型之后,Implicit 语句和IN规则对它就不起作用了。,3、Implicit语句和强制说明语句,均为非可执行语句,Fortran 规定:在编程序时,要把它们放在所有可执行语句的前面。,2023/9/19,11,三、Fortran的内部函数,(1)什么是内部函数在编程序时,经常需要直接使用数学函数,为方便Fortran语言自带有
9、丰富的数学函数,称为内部函数,它是指能完成一定功能的程序单位,内部函数可以直接调用,但需遵守其使用规则。,1、abs(x)-求变量x的绝对值;2、sqrt(x)-求变量x的平方根;3、int(x)-取x的整数部分;4、mod(x,y)-求x除以y的余数;5、sign(x,y)-求x和y的符号;6、max(x,y,z,)-求最大值;7、min(x,y,z,)-求最小值。,2023/9/19,12,8、exp(x)-求自然指数运算;9、log(x)-求以e为底的对数(即自然对数);10、log10(x)-求以10为底的对数(即常用对数)。,11、sin(x)-求正弦;12、tan(x)-求正切;1
10、3、asin(x)-求反正弦;14、atan(x)-求反正切。,(3)内部函数的使用在使用Fortran内部函数时,一定要遵守其规则,否则程序将出错甚至不能运行:,1、Fortran内部函数调用格式:函数名(自变量)例如:sin(90*3.14159/180)1.0;sqrt(9.0)3.0;abs(-5.6)5.6;int(6.75)6;exp(3.0)20.085540其中自变量(常数)必须用括号括起来,比如:sinx+cosx sin(x)+cos(x),2023/9/19,13,2、内部函数含有多个自变量(参数)时,它们之间用“,”分隔,但末尾不能使用“.”。比如,sin(x)、mod
11、(m,n)等。,3、函数的自变量(参数)和函数值都是有相应的数据类型的,比如,mod(m,n)中的自变量及函数值都是整型变量,而sin(x)中的自变量和函数值则均为实型变量。,4、所有函数都必须遵循其原有的数学规则,比如负数不能开平方根,实数不能求余,负数不能求对数等。,5、要注意与数学中函数之间的某些差异,比如,log(x)表示求自然对数(即lnx)而非数学上的求常用对数(logx)。,6、注意函数自变量的单位,比如sind(x)中x取弧度。,(4)、函数运用的例子,比如,求3个数x,y,z的最大值可以表示为:Max(x,y,z),又如,判断一个自然数M是否为另一个自然数N的因数,通过Mod
12、(M,N)是否为零可以判断:如果为则是的因数,否则说明不能被整除,即Mod(m,n)0。,2023/9/19,14,四、Fortran的算术表达式,(1)什么表达式将各常量、变量、函数用运算符连接起来的式子称为表达式。,根据运算符的不同,表达式分为以下种:、算术表达式、字符表达式、关系表达式、逻辑表达式此处先介绍算术表达式-将各种运算元素(常量、变量、函数)用算术运算符连接起来的一个有值式子。,()算术运算符及其优先级、有6种算术运算符加(+)减(-)乘(*)除(/)乘方(*)括号(),、算术运算符的优先级 括号函数乘方乘、除加、减注:同级运算“先左后右”,连续乘方时“先右后左”。,比如:3+
13、5-6.0*8.5/4*2+sin(x)3+5-6.08.542+sinxx*y*z、x*(y*z)xyz(x*y)*z(xy)z利用算术表达式概念,就可以将:数学运算式Fortran算术表达式,2023/9/19,15,(3)Fortran 算术表达式书写注意、表达式中的各运算元素之间必须用运算符分隔。例:xyzx*y*z 2(x+y)2*(x+y)、作任何运算的表达式只能写在一起。例:(a+b)/(c+d)a+b/c+d 3、表达式一律用小括号:ax+b(y+c)a*(x+b*(y+c)4、算术表达式中的乘号不可省略,如3*x不能写成3x。,()算术表达式求值时的数据类型的处理,1、同类型
14、量运算的结果,仍为原类型。例:4*5=20,4.0*5.0=20.0,6.0/4.0=1.5,6/4=1(1.5),2、不同类型量运算时,先将低级类型(整型)转换为高级类型(实型),然后再按同类型量进行运算。例:2.5*4=10.0(10)2.0*3=2.0*2.0*2.0=8.0(属同类型量运算),2023/9/19,16,2023/9/19,17,2 Fortran程序中的基本语句,在Fortran程序中,最为基本的语句包括(给变量)赋值语句、(数据)输入语句、(数据)输出语句、以及一些(程序执行的)控制语句等。,功能:把赋值号右边表达式的值,赋给赋值号左边的变量,即将表达式的值存放到变量
15、所对应的存储单元。例:pi=3.14156 S=3.14159*r*2 N=N+1,2023/9/19,18,(2)赋值时数据类型的转换,执行赋值语句就是把赋值号“右边”给左边的“变量”,因此:,1、当右边数据类型与变量的数据类型相同时:表达式运算完毕、直接赋值,比如:integer N real x,y N=N+1 y=2.5*x*2,2、当左右两边数据类型不同时:右边的先按原规则计算、再转换为左边变量相同的类型,然后将值赋给左边的变量。例如,integer N N=3.33*3!(最后N为9),看一段程序:Integer m,n x=5/2Real x,y y=5.0/2M=5/2 结果:
16、M=2,N=2 N=5.0/2 x=2.0,y=2.5,(1)表控输入(自由格式),输入数据又叫读入数据”,因此,在Fortran中用read语句实现数据输入。而表控输入方式就是从键盘自由地将数据敲入计算机内存(即变量)中。(输入实质给变量一个值),2023/9/19,19,二、简单的输入、输出语句,2023/9/19,20,例如:表控输入语句read*,x,y,z或者read(*,*)x,y,z就是要从键盘上把3个实数(比如1.2,3.6、5.8)给变量x、y、z。,此外,还需注意:1、通常数据与变量是一一对应的,但是,如果数据多变量少,则多余的数据不起作用;而数据少变量多,则多出的变量将等
17、待输入。,在键盘上操作时,要分隔多个数据,有3种方法:1、敲入1个数据,键入1个回车;2、敲入1个数据,键入1个“,”,敲完数据最后来个回车;3、敲入1个数据,键入1个空格,敲完数据最后来个回车。,2023/9/19,21,2、当多个输入语句并列使用时,一个read语句对应一行。如:read*,m,nread*,x,y 2,3 1.5,3.9,3、在输入数据时若出现“/”,则终止对此read语句的输入,后面的变量将不再赋值。例:read*,x,y,z 键盘输入:1.5,2.5/3.9(变量z将得不到赋值),4、数据与变量的类型要尽量保持一致,但也允许高级变量接受低级数据,比如,整型变量不能接受
18、实型数据,但实型变量可以接受整型数据(最后变量取实数)。,2023/9/19,22,(2)表控输出,注意:1、其中输出内容可以是常量、变量、表达式、字符串等,它们之间使用“,”分隔。如果输出的是“字符串”,则要用英文的单引或双引号引起。比如,,Print*,xPrint*,x=,x,”y=”,yPrint*,”最大的数是:”,max,”最小的数是:”,min,2、如果输出的是表达式,则其还具有计算功能,可显示出表达式的结果。,3、每条输出语句在单独的一行显示,因此,单独使用一个print*语句,表示换行(即显示一空行)。,Implicit noneInteger m,nRead*,m,n,n,
19、mm=m+nn=m+nPrint*,m,nEnd键盘输入:7,8,9,10 输出结果:m=19 n=28,Read*,a,b,cmaxnum=max(a,b,c)minnum=min(a,b,c)Print*,”最大的数是”,maxnumPrint*Write(*,*)”最小的数是”,minnumEnd键盘输入:7.2,8.0,9.1 输出结果:最大的数是9 最小的数是7,2023/9/19,23,三、控制语句pause语句,Pause语句是暂停语句,使程序“暂时停止运行”,这时不是“结束运行”,而只是把系统程序暂时挂起来,按回车键可以恢复运行。其使用格式为:Pause N比如:paramet
20、er(r=0.5,pi=3.14159)s=pi*r*2 h=2.0*pi*r pause 打印面积和周长 print*,s,h end,程序中可以允许使用多个pause语句,有意识的使用pause语句相当于在程序中设置断点,把程序分成几段,便于程序一段一段的调试检查,使用完毕再把pause语句删除。,2023/9/19,24,2023/9/19,25,1、自由落体公式,其中v0是初速、g是重力加速度、t为经历的时间。编写程序求t=0.5秒时的位移s。设v0=4.8m.s-1,g=9.81m.s-2,要求把g定义为符号常量,而v0和t的值从键盘输入。,2、编写一个程序,其功能是:从键盘输入一个
21、四位数,计算并输出该数各位数字之和。,3、一个笼中有鸡、兔若干只,共m个头、n只脚,编程求当m=30、n=90时,笼中鸡、兔各多少只。,本讲介绍了最基本的数据(整型、实型;常量、变量、算术表达式、内部函数)和最简单的语句(赋值语句、表控输入输出语句、暂停语句),也知道了顺序结构程序就是按照处理的顺序编写语句、执行运行的一种基本的程序结构。,3 顺序结构程序设计(上机),2023/9/19,26,参考程序,program mainParameter(g=9.81)Real v0,t,sRead*,v0,tS=vo*t+0.5*g*t*2Print*,位移是:,s,”米”End从键盘上输入:4.8
22、,0.5 输出结果:位移是 3.626250米,program mainInteger m,n1,n2,n3,n4,sRead*,mn1=m/1000n2=mod(m/100,10)n3=mod(m/10,10)n4=mod(m,10)S=n1+n2+n3+n4Write(*,*)”输入的四位整数是:”,mPrint*,各位上数字之和是:,sEnd从键盘上输入:1234输出结果:输入的四位整数是:1234 各位上数字之和是:10,2023/9/19,27,2023/9/19,28,program mainInteger m,n,mj,mtRead*,m,nMj=2*m-n/2Mt=n/2-mPrint*,鸡有:,mj,只Print*Write(*,*)”兔是:”,只End从键盘上输入:50,160 输出结果:鸡有:20只 兔是:30只,