第六讲 Fortran中的子程序要点.ppt

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六讲 Fortran中的子程序要点

* * 第六讲 Fortran中的子程序 实际中的程序由若干个程序单元组成,但是有且只有一个主程序(Program main),其它的都是子程序。子程序是构造大型实用程序的有效工具,设计程序要善于利用子程序,因此,本讲学习Fortran中的子程序:函数子程序和子例行程序。此外,在Fortran中还有一种类似与函数子程序的语句函数。 §1 语句函数 就是用一条语句定义一个函数,比如: 就可以用Fortran的一条语句写出来: (1)语句函数名:其取名及数据类型与变量相同。 * * 一、语句函数的格式 其中:f 称为函数名,x1、x2、…、xn称为虚参,e是关于虚参的一个有效表达式。 又比如:Double precision FF FF(x,y)=x**2+y**2→定义了一个双精度型函数FF 注意在同一程序单元中,语句函数名不能与某个变量同名。 比如: F(x,y)=x**2+y*y→定义了一个实型函数F NF(x,y)=x**2+y*y→则定义了一个整型函数NF (3)语句函数表达式 给出函数与参数之间的对应关系,可由虚参(必须包含所有的虚参)、常量、变量、数组、Fortran的内部函数及在其前面说明了的语句函数。 * * (2)语句函数的虚参---即语句函数的自变量 1、称其为“虚参”是因为其本身是没有值的,只有在函数被调用时才用实际意义(叫实参)代替; 2、可以按照普通变量对待虚参,但是一个语句函数中虚参不能同名,但不同语句函数中虚参可以同名,虚参也可以和程序中的变量同名; 3、虚参的类型说明与变量的类型说明方法与规则相同,而且对与虚参同名变量同时有效; 4、当存在多个虚参时,之间用“,”分隔,如果没有虚参则函数名后的括号是不能省略的。 * * 1、只有当函数关系简单到,可以用一条语句描述函数与参数的对应关系时,才能使用语句函数; 2、语句函数是非执行语句,要放在一个程序单元的所有其它说明语句之后,并放在所有可执行语句之前; 3、语句函数只有在本程序单元中才有意义,即不能使用其它程序单元中的语句函数; 此外,还需注意的是: 4、语句函数中的虚参必须是变量,不能是常量、数组元素和内部函数等; 5、语句函数是有类型的,因此语句函数表达式的类型一定要与其函数名同类型。 二、语句函数的调用 语句函数一经定义,就可以在同一程序单元中调用它,调用的方法与内部函数相同,即: 函数名(实参表) * * 需要注意下面2个问题: 1、调用时可以使用常量、变量、内部函数及其表达式作为实参代替对应的虚参位置,但要保证实参和虚参具有完全相同的类型,并且实参是可以计算值的(即调用前实参中包含的变量全部已经赋值); 2、实参和虚参个数相同。 比如: integer x,f f(x)=5*x**3-2*x**2+7*x+6 print*,f(-1),f(0),f(1) End 运行结果为:-8 6 16 * * §2 函数子程序 语句函数的不足是必须要在一条语句中完成对函数的定义,因此只能用于较简单的函数,对于复杂的函数关系、无法用一条语句完成时,需要用到本节的函数子程序。 一、函数子程序的定义 函数子程序是以Function语句开头,并以End语句结束的一个程序段,其可以独立自成一个程序文件,也可以和调用它的程序单元合并成一个程序文件。其定义的一般格式为: [类型说明符] Function 函数名(虚参表) 函数体 end * * 其中,类型说明用于说明函数名的类型;函数名的命名方法与变量名相同;虚参可以是简单变量和数组变量,但不能是常数、数组元素、表达式。 比如:求 function sm(m,n,l) sm=0 do i=m,n if(l0)then sm=sm+i**l else sm=sm+(1.0*i)**l end if end do end program main write(*,*)s1=,sm(1,100,2) write(*,*)s2=,sm(100,140,3) write(*,*)s3=,sm(20,50,-1) end 程序的运行结果为: S1=338350.000000 S2=7.291440E+07 S3=9.514656E-01 * * 程序说明: 1、整个程序由主程序和1个函数子程序组成,二者的位置不分先后,因为程序执行时总是从主程序开始的; 2、函数子程序Function SM(m,n,l)中,缺省类型说明时,则函数SM及其虚参标量m、n、l的类型遵守I~N规则; 3、主程序中的第2~4语句都要输出SM的值,其调用了函数子程序SM。 函数子程序的定义还应注意以下问题: 1、函数值的类型说明方法可使用: Integer Function f(x

文档评论(0)

2299972 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档