《FORTRAN语言第2章(共8章)》由会员分享,可在线阅读,更多相关《FORTRAN语言第2章(共8章)(103页珍藏版)》请在金锄头文库上搜索。
1、第一节第一节 FORTRAN常量常量第二节第二节 FORTRAN变量变量第三节第三节 FORTRAN内部函数内部函数第四节算术表达式第四节算术表达式第五节赋值语句第五节赋值语句第六节表控输入第六节表控输入/输出语句输出语句第七节第七节END、PAUSE、STOP语句语句第二讲第二讲 顺序结构程序设计顺序结构程序设计第一节第一节 FORTRAN常量常量 FortranFortran的语言元素是指在程序设计中所用到的基本成分,的语言元素是指在程序设计中所用到的基本成分,例如字符集、常量、变量、记号以及其它的基本结构等。只例如字符集、常量、变量、记号以及其它的基本结构等。只有了解并掌握了这些基本要素
2、,才可能正确自如地使用该种有了解并掌握了这些基本要素,才可能正确自如地使用该种语言。语言。 一、一、FORTRAN字符集字符集2626个英文字母,个英文字母,( (除了字符串内的字符外,程序中小除了字符串内的字符外,程序中小写字母等价于相应的大写字母写字母等价于相应的大写字母) ) 数字数字0 09 9 _(_(下划线下划线) )22个个特殊字符特殊字符空格空格 = + - * / ( ) , : . $ ! ” % & ; 0,则| x1 |;若x21时,由于 1和N均为整型量,其运算结果总是为0,因为这是一个整型除法,只有当N=1时,其和不为0而等于1。因此,最后累加到实型变量S中的值只有
3、1.0。解决这个问题的措施是只需在表达式中将1/N改成1.0/N。类似于上例中的错误在编程时是很容易发生的。例如,等都是错误的。第五节第五节 赋值语句赋值语句 赋值是一种非常重要的概念,赋值是一种非常重要的概念,是最基本的语句。最基本的语句。 一般格式为:一般格式为:变量名变量名=表达式表达式 作用是:作用是:将一个确定的值(右边表达式的值即常量)赋将一个确定的值(右边表达式的值即常量)赋给左边变量,给左边变量,即将表达式的值存放到变量所对应的存储单元。即将表达式的值存放到变量所对应的存储单元。 例如:例如: pi=3.1416 x=x1+x2*x3+5 i=i+1第五节第五节 赋值语句赋值语
4、句赋值语句使用说明:赋值语句使用说明:(1)赋值语句的功能是先计算右边表达式的值,)赋值语句的功能是先计算右边表达式的值,而后将此结果赋给左边的变量。而后将此结果赋给左边的变量。对变量的赋值对变量的赋值过程是过程是“覆盖覆盖”过程,指的是在变量对应的存过程,指的是在变量对应的存贮单元中用新的值去替换原有的值。贮单元中用新的值去替换原有的值。例如:例如: n=n十十1(2)赋值号赋值号“=”是语句符号,执行赋值操作,不是语句符号,执行赋值操作,不是运算符,不是去判断赋值号两端相等。是运算符,不是去判断赋值号两端相等。(3)赋值语句不能连等赋值语句不能连等,赋值语句只允许出现一个,赋值语句只允许出
5、现一个赋值号,不允许有两个赋值号。例如赋值号,不允许有两个赋值号。例如a=b=3在在数学上是合法的,但是非法的数学上是合法的,但是非法的Fortran赋值语赋值语句。句。(4)“=”两两边边数数据据类类型型不不相相同同时时,先先对对右右边边表表达达式式进进行行计计算算,然然后后将将计计算算结结果果的的数数据据类类型型转转换换为为赋值号左边变量的数据类型进行赋值。赋值号左边变量的数据类型进行赋值。 (先计算,再类型转换,最后赋值)(先计算,再类型转换,最后赋值) 例如:例如:integer m,nreal x,ym=5/2 n=5.0/2x=5/2y=5.0/2m=2n=2x=2.0y=2.5
6、在编写程在编写程序时,应尽可序时,应尽可能使贼值号两能使贼值号两侧保持同类型。侧保持同类型。 输输入入输输出出是是计计算算机机内内存存与与外外部部设设备备交交换换数数据据的的过过程程。要要顺顺利利地地传传递递数数据据,一一般般应应在在输输入入输输出出语句中给计算机语提供三方面的信息:语句中给计算机语提供三方面的信息: (1) 通过什么设备进行输入输出;通过什么设备进行输入输出; (2) 采用什么样的格式进行输入输出;采用什么样的格式进行输入输出; (3) 输入、输出的内容。输入、输出的内容。 第六节第六节 表控输入语句表控输入语句FORTRAN提供了三种类型的输入输出格式:提供了三种类型的输入
7、输出格式:(1)(1)表控格式输入、输出表控格式输入、输出: :它是它是FORTRAN输入、输出中输入、输出中最简单的一种方式,是按系统隐含的标准格式输入输出。最简单的一种方式,是按系统隐含的标准格式输入输出。(2)(2)有格式输入、输出有格式输入、输出: :它是按用户规定的数据格式输入、它是按用户规定的数据格式输入、输出。故也称可控格式(或有格式)的输入、输出。输出。故也称可控格式(或有格式)的输入、输出。(3)(3)无格式的输入、输出无格式的输入、输出: :它是以二进制形式输入和输出它是以二进制形式输入和输出数据,只适用于计算机内存与磁盘、磁带等之间的数据数据,只适用于计算机内存与磁盘、磁
8、带等之间的数据交换。交换。第六节第六节 表控输入语句表控输入语句一、一般形式一、一般形式 简单的输入语句:简单的输入语句: Read *,变量名表变量名表 Read(*,*)变量名表变量名表表控格式、自由格式表控格式、自由格式键盘键盘 表控格式表控格式 表控输入输出是一种不需要指定格式的输入输出,在前面示例中出现的READ*, READ(*,*)和PRINT*,WRITE(*,*)语句就是表控输入输出语句,下面我们分别详细地介绍该类语句。二、功能二、功能执行时,暂停,等待用户从键盘输入数据,执行时,暂停,等待用户从键盘输入数据, 分别分别赋给各变量,赋值顺序自左向右。赋给各变量,赋值顺序自左向
9、右。第六节第六节 表控输入语句表控输入语句例:READ *,a,b,m,n如果a,b为实型,m,n为整型,可以从键盘输入以下数据:3.7,-1.8,24,10 (数据间用逗号分隔)或3.7 -1.8 24 10 (数据间用空格分隔)则a=3.7,b=-1.8,m=24,n=10。第六节第六节 表控输入语句表控输入语句在使用表控输入语句时应注意以下几点:(1)应保证从输入设备上输入数据的个数与READ语句输入表中变量的个数相同,各数据类型与相应变量的类型一致。(2)输入数据可分为多行输入,直到输入全部数据。如下例READ语句可以分两行数据输入,还可分更多的行进行数据输入。 3,10,7.5,-1
10、5.8 3,10 7.5,-15.8 3 10 7.5,-15.8 READ(*,*) i, j, a, b第六节第六节 表控输入语句表控输入语句在使用表控输入语句时应注意以下几点:(3)输入数据个数要求不少于输入表中变量个数。如果少于变量个数,则程序将等待用户输入后续数据。如果多于变量个数,则多余的数据不起作用。 3,10,7.5,-15.8,30,70.6 后2个数是无效的,将被忽略。READ语句读取前4个数后,程序将继续执行下一条语句。 例如:上述READ语句执行时输入以下数据: 第六节第六节 表控输入语句表控输入语句在使用表控输入语句时应注意以下几点:(4)使用多个READ语句时,每个
11、READ语句都是从一个新的输入行开始读数的。 READ(*,*) i, j READ(*,*) a, b输入输入 3,10,7.5,-15.8 第一个READ语句读入前两个数,即i=3,j=10,而第二个READ语句并不会从这一输入行剩余的数据中读数,所以a,b未被赋值。想要正确赋值,应改为两个输入行: 3,10 7.5,-15.8 READ(*,*) i, j, a, b输入输入 3,10 / 7.5,-15.8 i=3 a值不变值不变0j=10 b值不变值不变0第六节第六节 表控输入语句表控输入语句在使用表控输入语句时应注意以下几点:(5)如果在输入数据行中出现“”号,表示对READ语句的
12、输入到此结束,未被赋值的变量保持原值不变。(6)如果READ语句中有几个连续的变量要赋以相同的值,则可用重复因子r,r表示某一数据重复出现的次数。例如:READ *,i,j,k,a,b,c,d,str1,str2执行时输入以下数据:3*12,4*125.45,2*student 将12赋予i,j,k,将125.45赋予a,b,c,d,将“student”赋予str1和str2。 第六节第六节 表控输入语句表控输入语句(7)在一个数之间不能插入空格。因为空格也是两个数据间的分隔符。例如:m=123,n=456,输入语句为:READ *, m,n如果输入数据为:123,456 键入数据时不小心输入
13、了一个空格,则执行结果为m=1,n=23,显然不是想要的数据。(8)当变量为整型,而输入的数据为实型时,按出错处理。若变量为实型,而输入数据为整型,则系统自动将输入数据转换为实型再赋值给实型变量。例如:READ *, a,b输入: 12,34执行结果为a=12.0,b=34.0。一、含义:一、含义:表控输出是最简单的格式输出。其输出格式不必用表控输出是最简单的格式输出。其输出格式不必用户自己说明,而是由系统作了隐含的规定,故也称为固定格式户自己说明,而是由系统作了隐含的规定,故也称为固定格式输出。输出。FORTRAN提供了两种形式的表控输出语句:提供了两种形式的表控输出语句:PRINT输输出语
14、句和出语句和WRITE输出语句。输出语句。 二、写法:二、写法:WRITE (*,*)输出表输出表 PRINT*,输出表输出表表控格式表控格式三、功能:三、功能:WRITE语句中第一个星号语句中第一个星号“*”表示在系统隐含指表示在系统隐含指定的设备上输出;定的设备上输出;WRITE语句中的第二个星号语句中的第二个星号“*”表示表示“表表控格式输出控格式输出”;输出项可以有多个,每个输出项之间用逗号;输出项可以有多个,每个输出项之间用逗号“,”分隔;当语句中没有输出项时,命令将输出一个空白行。分隔;当语句中没有输出项时,命令将输出一个空白行。 第七节第七节 表控输出语句表控输出语句变量名,表达
15、式或常量变量名,表达式或常量四、表控输出的特点:四、表控输出的特点:系统自动地分别为每一个不同类型的数据规定系统自动地分别为每一个不同类型的数据规定所占的列数和表数形式。所占的列数和表数形式。2.2.系统为每个整数分配系统为每个整数分配10101313列,数据打印在这列,数据打印在这些列的右端。当要输出的数据位数不够时,左端些列的右端。当要输出的数据位数不够时,左端以空格补齐。以空格补齐。 第七节第七节 表控输出语句表控输出语句四、表控输出的特点:四、表控输出的特点:3.3.一个实数分配给一个实数分配给15151818列,其中小数部分列,其中小数部分6 67 7列。列。如果实数的值很大,以上格
16、式无法容纳,则系统会如果实数的值很大,以上格式无法容纳,则系统会自动改成用标准化的指数形式输出。自动改成用标准化的指数形式输出。第七节第七节 表控输出语句表控输出语句4.对一个用指数形式输出的实数分配给对一个用指数形式输出的实数分配给15列,其中指列,其中指数部分数部分4 5列,小数部分列,小数部分6列。列。6.一条一条print或或write语句可同时输出多个整数和实数。语句可同时输出多个整数和实数。当在一行内打印不下时,会自动换行再打印,直到当在一行内打印不下时,会自动换行再打印,直到把全部需输出的数据打印完为止。把全部需输出的数据打印完为止。5.如果实数的整数部分位数多于系统规定的有效位
17、如果实数的整数部分位数多于系统规定的有效位数(例如数(例如IBMPC为为7位位),或实数的数值小于,或实数的数值小于1,则在则在输出时会自动转换成规范化的指数形式输出输出时会自动转换成规范化的指数形式输出。如如123106和和0.132的输出为,的输出为,四、表控输出的特点:四、表控输出的特点:第七节第七节 表控输出语句表控输出语句第七节第七节 表控输出语句表控输出语句7.如果如果print或或write语句中无任何输出项,它将输出语句中无任何输出项,它将输出一个空白行一个空白行。 表控输出结果因不同计算机而异!表控输出结果因不同计算机而异! PRINT *,或 WRITE(*,*)四、表控输
18、出的特点:四、表控输出的特点:例例 分析下列程序的结果分析下列程序的结果implicit noneinteger m , nread * , m , n , n , mm=m+nn=m+nprint * , m , nend当输入当输入78 9 10时时输出结果为输出结果为? ?19 28例例 : 输入三个实数,输出最大值和最小值输入三个实数,输出最大值和最小值read * , x1 , x2 , x3maxnum=max(x1 , x2 , x3)minum=min(x1 , x2 , x3)print * , 最大的数是最大的数是 , maxnumwrite(* , *)最小的数是最小的数
19、是“ , minumend从键盘输入从键盘输入 2.8,9.6,4.3输出结果为:输出结果为: 最大的数是最大的数是9.6 最小的数是最小的数是2.8例:例:交换交换x和和y的值的值 implicit nonereal x,y,zprint*,请输入请输入x和和y的值:的值:read*,x,ywrite(*,*)print*,交换前交换前x和和y的值为:的值为: x=,x,y=,yz=x;x=y;y=zprint*,交换后交换后x和和y的值为:的值为: x=,x,y=,yend第八节第八节 ENDEND语句、语句、STOPSTOP语句和语句和PAUSEPAUSE语句语句 END语句应该出现在程
20、序单位的最后一行,一个程序语句应该出现在程序单位的最后一行,一个程序单位中只能有一个单位中只能有一个END语句。语句。 它的作用有:结束本程序单位的运行,作为一个程序它的作用有:结束本程序单位的运行,作为一个程序单位的结束标志,子程序中的单位的结束标志,子程序中的END还有使流程返回调用程还有使流程返回调用程序(兼有序(兼有RETURN语句的功能)。语句的功能)。 一个程序单位中可以有多个一个程序单位中可以有多个STOP语句,执行到任一个语句,执行到任一个STOP语句处时,程序即停止运行语句处时,程序即停止运行。在子程序中如果有。在子程序中如果有STOP语句,也是使整个程序停止运行。语句,也是
21、使整个程序停止运行。STOP 1111 或或 STOP ERROR1其中,其中,1111和和ERROR1为输出信息,供调试程序和辨别流为输出信息,供调试程序和辨别流程用。数字为不超过程用。数字为不超过5位的无符号整数,字符串加引号。位的无符号整数,字符串加引号。第八节第八节 ENDEND语句、语句、STOPSTOP语句和语句和PAUSEPAUSE语句语句 PAUSE语句是暂停语句语句是暂停语句,调试程序用,调,调试程序用,调试完成后可删去。程序暂停时,试完成后可删去。程序暂停时,按回车键则继按回车键则继续运行。使用方法同续运行。使用方法同STOP语句。语句。程序举例程序举例【例例 】 输入一个
22、三位整数,将它反向输出,如输入输入一个三位整数,将它反向输出,如输入123,输出,输出321。 分析分析:用:用n代表原三位整数,代表原三位整数,n1、n2、n3分别分别代表其个位、十位、百位,代表其个位、十位、百位,m代表反向的数。代表反向的数。 m=n1*100+n2*10+n3, 如:如:321实际上是实际上是3*100+2*10+1。解决此问。解决此问题的关键在于如何将题的关键在于如何将n拆分成拆分成1、2、3,这可以通整,这可以通整除与求余运算来完成。除与求余运算来完成。integer n , m , n1 , n2 , n3read * , nn1=mod(n , 10)n2=mo
23、d(n/10 , 10)n3=n/100m=n1*100+n2*10+n3print * , 原来的数为原来的数为: , nprint * , 反向输出的数为反向输出的数为: , mend 程序举例程序举例 program exam1read(*,*) a,b,cs=(a+b+c)/2.0area=sqrt(s*(s-a)*(s-b)*(s-c)write(*,*) a=,a,b=,b,c=,cwrite(*,*) area=,areaend1. 求三角形面积。(用公式求三角形面积。(用公式 ) program exam2real IR0=100.R1=20.R2=50.U=100.R12=R
24、1*R2/(R1+R2)R=R0+R12I=U/Rwrite(*,*) R=,Rwrite(*,*) I=,Iend2. 已知已知U=100v, R1=20,R2=50 , R0=100 。 求等效电阻求等效电阻R和总电流和总电流I。 program exam3parameter(pi=3.1415926)h=20000.R=6.37154e6vc=7900.*sqrt(R)/sqrt(h+R)ve=vc*sqrt(2.0)c=2.0*pi*(h+R)t=c/vcvc=int(vc*3600./1000.*100.+0.5)/100.ve=int(ve*3600./1000.*100.+0.5
25、)/100.t=int(t/60.*100.+0.5)/100.write(*,*) vc=, vc, Km/hwrite(*,*) ve=, ve, Km/hwrite(*,*) time=, t, minutesend3. 已知:人造卫星距地面已知:人造卫星距地面h=20000m, 地球半径地球半径 R=6.37106m 。求:求: (1)卫星绕地球圆周运动速度卫星绕地球圆周运动速度Vc(Km/h)和脱离轨道速度和脱离轨道速度Ve(Km/h), (2)环行一周所需时间。以上结果取小数点后两位,对第三位四舍五入。环行一周所需时间。以上结果取小数点后两位,对第三位四舍五入。谢谢观看!更多网络资源:http:/