




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第八章 函 数, 8-5特殊参数的使用方法,Fortran 90 中:可设置某些参数的属性:为只读或可写等 参数个数可以不定 传递参数的顺序可变,8-5-1 参数的属性,FORTRAN 90用INTENT设置虚参的属性: 类型,INTENT(IN): 参数变量名 !参数为只读,不能改变数值,否则编译会出现错误信息 类型,INTENT(OUT): 参数变量名 !参数在程序中重新设置数值,否则编译会出现警告 类型,INTENT(INOUT): 参数变量名 !参数可读可写,和没指定一样 Fortran 中,变量作为实参传递出去之后,在调用函数后有可能被改变,以此来限制或提醒。,8-5-2 函数的使用
2、接口(INTERFACE),INTERFACE是一段程序模块,说明所要调用的函数的参数类型及返回值的类型等。,例:,结构:,Interface !interface定义开始 Function func_name(n1, n2nm) !开始定义函数 func_name Implicit none Integer !声明n1nm及返回值func_name Real !的数值类型 End function func_name !定义函数func_name结束 Subroutine sun_name !定义子程序sub_name Implicit none Integer . Real . End s
3、ubroutine sub_name . End interface !interface 结束,8-5-2 函数的使用接口(INTERFACE),必须要使用的情况: 函数返回值为数组 指定参数位置来传递参数时 所调用的函数的参数数目不固定 输入指针参数时 函数返回值为指针时,8-5-3 不定个数的参数的传递,Fortran 90 中采用optional 命令来声明可省略参数,要用interface作函数的参数定义,或用Module来定义,8-5-4 改变参数的传递位置,Fortran 90中,可以改变参数传递位置,要用interface声明 subroutine sub(a, b,c) Ca
4、ll sub(b=2, c=3, a=1) 直接代入函数变量名来传递 子程序接受到的是a=1, b=2, c=3 对于有多个可省略参数的函数,调用时可使用这个办法只传递其中的部分参数,例:,Subroutine sub(a, b, c, d, e, f) implicit none integer, optional: a, b, c, d, e, f end subroutine sub Call sub(b=3, f=5) !只输入b和f的值,其他省略,例:要计算A*X*2+B*X+C, 对于A, B,C没有的情况默认为0来计算,8-6 特殊的函数类型,Fortran 90中的函数可以特别
5、指定成 RECURSIVE 递归 PURE ELEMENTAL 这三种特殊类型,并行及数组设置时使用,8-6-1 递归(RECURSIVE),递归函数除了被其他程序块调用外,可以自己调用自己来执行程序 必要条件: 每次被调用时,递归函数中的局部变量(那些不是传递的参数和SAVE的变量)独立存在,每次被调用会使用不同的内存地址。 用result来设置另一个储存返回值的变量 程序中要设置调用终点,以免无限循环调用,格式 : Recursive 类型 function func_name( parameters) result (ans),Result可以用来在程序代码中使用另外一个名字来设置函数的
6、返回值,根据fortran 90标准,最开始加上recursive才能递归调用,Recursive subroutine ( parameters ),例题, 计算N!,执行: 【ans = n * fact(n-1) 】 n=4 第一次调用:ans=4*fact(3) , 调用fact(n-1) 第二次调用:n=3, ans=3*fact(2), 调用fact(n-1) 第三次调用:n=2, ans=2*fact(1), 调用fact(n-1) 第四次调用:n=1, ans=1, 返回,返回值 Fact(1)=Ans=1 Fact(2)=ans=2*fact(1)=2! Fact(3)=an
7、s=3*fact(2)=3! Fact(4)=ans=4*fact(3)=4!,每次被调用时,递归函数中的局部变量独立存在,每次被调用会使用不同的内存地址。,执行: n=4 第一次调用:ans=4*fact(3) , count=1, localcount=1, count=2 第二次调用:n=3, ans=3*fact(2), localcount=2, count=3 第三次调用:n=2, ans=2*fact(1), localcount=3, count=4 第四次调用:n=1, ans=1, localcount=4, count=5返回,返回后 N=2, Fact(1)=Ans=1
8、, count=5, localcount=3; N=3, Fact(2)=ans=2*fact(1)=2! Count5,localcount=2; N=4, Fact(3)=ans=3*fact(2)=3! Count=5, localcount=1 主程序: Fact(4)=ans=4*fact(3)=4!,write(6,(I2,th enter, n=,I2) localcount, nans = n * fact(temp) write(6,(I2,th exit, n=,I2, ans=,I5, count=, i3) localcount, n, ans, count,特别注意改变传递参数带来的问题,非递归函数的局部变量可能每次调用放在相同的内存位置,WRITE(6, 100) localcount, n FORMAT(I2,th enter, n=,I2) . Temp=n-1 fact = n * ifact(temp) WRITE(6, 200) localcount, n, fact,从第2次调用开始temp和虚参的n
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 健康社会课课件视频下载
- 张家界市重点中学2025届物理高二第二学期期末教学质量检测试题含解析
- 鼻窥镜项目可行性研究报告
- 葛洲坝集团退休管理办法
- 虹口区冷冻仓库管理办法
- 融资性担保管理暂行办法
- 街道志愿服务站管理办法
- 裕安区健身设施管理办法
- 西安市雨水泵站管理办法
- 证券经纪业务管理办法
- 商业租户招商营运一户一档移交资料清单
- 废弃物分类、清运、处理流程图
- 电白局设备采购4开标过程评标报告
- 比和比例综合练习题及答案-
- 小学古诗词大赛-九宫格练习课件
- 医院(诊所)门诊病人登记簿表格模板
- 有限空间外包作业管理制度管理办法
- 10kV电气试验方案
- (高清正版)T-CAGHP 021—2018泥石流防治工程设计规范(试行)
- 鼎力软件操作鼎立pilot navig操作手册
- 国际篮球联合会(FIBA)标准篮球记录表.xls
评论
0/150
提交评论