fortran课件 第7章_3.ppt

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

第七章 函 数 §8-4函数中的变量 函数中的变量(不含所输入的参数)是独立的(局部变量),其生存时间,仅在子程序被调用期间。 声明中用SAVE,可保证程序整个执行过程中,始终保留其内存空间,上一设置的内容有记忆。 传递参数的注意事项: 函数或子程序的虚参数,在调用前不配置内存,只是形式。调用时,与实参按地址结合。退出子程序时,虚参又变得无定义。 一) 类型匹配 传递的参量要求类型匹配,可以直接传递常数,常量的类型也要匹配 二) 数组参数 1)传递数组参数实际上传递的是数组元素的内存地址 函数所接受到的数组参数,都在函数执行前已经配置好一块连续的内存空间,函数中的声明只是定义如何去使用它们,可以使用其中一部分;把一维变成二维;改变坐标范围等。 2)函数数组参数传递时,虚参数组不要超过实参数组的范围。编译器不会辨别,但执行会出错. 3) 数组在声明时,要使用常数来确定数组的尺寸,当作为函数的虚参,可用变量来声明数组的尺寸。 4)作为函数虚参的多维数组,最高一维的大小可以不声明,其他维必须声明尺寸。 三)传递函数 传递的参数可以是函数名(function,subroutine) 作实参的函数名要先声明。 函数声明时,intrinsic 表示库函数;external表示自定义的函数。 §8-5 特殊参数的使用方法 Fortran 90 中:可设置某些参数的属性:为只读或可写等: 类型,INTENT(IN):: 参数变量名 !参数为只读,不能改变数值,否则编译会出现错误信息 类型,INTENT(OUT):: 参数变量名 !参数在程序中重新设置数值,否则编译会出现警告 类型,INTENT(INOUT):: 参数变量名 函数的使用接口INTERFACE是一段程序模块,说明所要调用的函数的参数类型及返回值的类型等。 必须要使用的情况: 函数返回值为数组 指定参数位置来传递参数时 所调用的函数的参数数目不固定 输入指针参数时 函数返回值为指针时 不定个数的参数的传递 函数的传递参数,采用optional 命令来声明可省略参数 用present( )来检查,返回逻辑值。 改变参数的传递位置 subroutine sub(a, b,c) … Call sub(b=2, c=3, a=1) 对于有多个可省略参数的函数,调用时可使用这个办法只传递其中的部分参数 §8-6 特殊的函数--递归(RECURSIVE) 递归――函数除了被其他程序块调用外,可以自己调用自己来执行程序 必要条件: 每次被调用时,递归函数中的局部变量(那些不是传递的参数和SAVE的变量)独立存在,每次被调用会使用不同的内存地址。 用result来设置另一个储存返回值的变量 程序中要设置调用终点,以免无限循环调用 §8-7 MODULE MODULE可以用来封装程序模块,通常用来把具备相关功能的函数和变量封装在一起 形式: §8-7-1 MODULE中的变量 在module中声明变量,通过use module 来使用它们 形式: 使用: use module_name module中的声明的全局变量全程序可用 module中的一般变量被函数使用时为局部变量,注明save的变量与全局变量相同 例题,通过使用module 来使用全局变量 例题,module 中普通变量, §8-7-2 module中的自定义类型type 用module封装, 简化程序,无需反复声明type类型 自定义类型type的数据, 可以作为函数参量传递。 例题: 计算一组运动员的标枪射程。由投射角度,初速度,来计算射程 § 8-7-3 Module中的函数 1)应用了某个module, module 中的函数类型声明也就包含 2)Module 中的函数和子程序互相认识,无需另外声明 3)同一个module 中的函数可以直接使用module中声明的变量 4) Module 中可以用其他的module,并有功能继承的效果。 Module用法和功能: 定义Module的程序代码需要写在使用它的module、子程序或主程序之前 使用module的语句use module_name必须写在应用它的子、主程序中最前面的语句 封装程序块,不必重复写相同的声明语句 应用了某个module, module 中的函数、变量类型声明也就包含 Module 中的函数和子程序互相认识,无需另外声明 同一个module 中的函数可以直接使用module中声明的变量 §8-9 使用多个文件 相关功能的函数独立编写在不同的文件中。编译器分别编译(compile)这些程序文件,最后在连接到同一个执行文件。 独立文件中的函数可以被其他不同的

文档评论(0)

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

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

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档