FORTRAN90第6章子程序.ppt

上传人:hyn****60 文档编号:70710453 上传时间:2023-01-25 格式:PPT 页数:27 大小:244.50KB
返回 下载 相关 举报
FORTRAN90第6章子程序.ppt_第1页
第1页 / 共27页
FORTRAN90第6章子程序.ppt_第2页
第2页 / 共27页
点击查看更多>>
资源描述

《FORTRAN90第6章子程序.ppt》由会员分享,可在线阅读,更多相关《FORTRAN90第6章子程序.ppt(27页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、FORTRAN90FORTRAN90程序设计程序设计计算机中心计算机中心 2006.3Fortran 90Fortran 90Visual Fortran 90 程序设计6.1概述概述6.5 子程序的嵌套调用子程序的嵌套调用6.2 函数子程序函数子程序6.6 模块模块6.3 子例子程序子例子程序6.7 递归过程递归过程6.4 虚实结合虚实结合6.8 其他部分其他部分6.9 程序举例程序举例Fortran 90Fortran 906.1 概述概述主程序的结构:主程序的结构:单位定义单位定义说明部分说明部分输入输入计算或处理计算或处理输出输出END用用子程序完成子程序完成用用子程序完成子程序完成用

2、用子程序完成子程序完成子程序子程序子程序子程序引入子程序的目的:引入子程序的目的:模块化设计模块化设计所有功能都在主所有功能都在主程序单位内完成程序单位内完成Fortran 90Fortran 901 1、一个一个Fortran90Fortran90程序主程序单元个数:程序主程序单元个数:1 1个个2 2、子程序单元:、子程序单元:0-n0-n个个子程序单元被主程序单元或被其它子程序单子程序单元被主程序单元或被其它子程序单元元调用调用,甚至可以递归调用(调用本身),甚至可以递归调用(调用本身)源程序的结构源程序的结构Fortran 90Fortran 90主程序:主程序:单位定义单位定义说明部

3、分说明部分输入输入调用子程序调用子程序输出输出END计算或处理计算或处理子程序:子程序:最简单的源程序的结构最简单的源程序的结构Fortran 90Fortran 90子程序分类子程序分类1 1、函数子程序、函数子程序 分为内部函数子程序分为内部函数子程序 外部函数子程序外部函数子程序2 2、子例行子程序、子例行子程序 分为内部子例行子程序分为内部子例行子程序 外部子例行子程序外部子例行子程序用于完成用于完成复杂的计算复杂的计算返回返回 一个或多个值一个或多个值用用于于完完成成复复杂杂计计算算,返返回回一一个个或或多多个个值值,或或用用于于其其它它数数据据处处理理Fortran 90Fortr

4、an 906.2外部函数子程序外部函数子程序单位定义语句单位定义语句说明部分说明部分程序体:具体计算程序体:具体计算END语句语句外部函数子程序的结构外部函数子程序的结构FUNCTION F(X,Y,Z)RESULT(F_RESULT)IMPLICIT NONEREAL:X,Y,z,F_RESULTF_RESULT=X+YZ=X-YENDPROGRAM NAINREAD*,A,BD=F(A,B,c)PRINT*,C,DEND两单位相互独立编译两单位相互独立编译必须进行数据的传递必须进行数据的传递Fortran 90Fortran 90END FUNCTION 函数名函数名子程序子程序END语句

5、写法语句写法1、函数单位的结束标志、函数单位的结束标志 2、将控制返回到主调程序。、将控制返回到主调程序。子程序子程序END语句功能语句功能Fortran 90Fortran 90函数函数单位定义语句单位定义语句的的写法写法RECURSIVEFUNCTION 函数名(虚元表)函数名(虚元表)RESULT(结果名结果名)1、函数子程序的第一行(注释行除外)。、函数子程序的第一行(注释行除外)。2、如果函数是递归的,则应以、如果函数是递归的,则应以RECURSIVE开头。开头。3、函函数数名名为为全全局局名名:作作用用域域为为整整个个程程序序,不不与与已有的全局名同名。已有的全局名同名。各独立程序

6、单位的名字为全局名各独立程序单位的名字为全局名Fortran 90Fortran 904、主调程序与被调程序、主调程序与被调程序 两个单位之间的数据传递两个单位之间的数据传递结果名:子程序的结果名:子程序的一个输出一个输出一般写法:一般写法:函数名函数名_RESULT,用于用于保存一个计算结果,称为保存一个计算结果,称为函函数值数值。且结果名有类型,必须在子程序说明部分。且结果名有类型,必须在子程序说明部分说明类型说明类型。虚元表:子程序的虚元表:子程序的所有输入所有输入,及除函数值之,及除函数值之外的外的其他计算结果的输出其他计算结果的输出。函数值返回给调用式函数值返回给调用式由由实元传递给

7、对应实元传递给对应的虚元的虚元虚元数据返回给对应的实元虚元数据返回给对应的实元Fortran 90Fortran 90FUNCTION F(X,Y,Z)RESULT(F_RESULT)IMPLICIT NONEREAL:X,Y,z,F_RESULTF_RESULT=X+YZ=X-YENDPROGRAM NAINREAD*,A,BD=F(A,B,c)PRINT*,C,DEND主主子子Fortran 90Fortran 905、虚虚元元的的含含义义:编编写写子子程程序序时时没没有有具具体体值值(调调用用时时或或调调用用结结束束后后才才获获得得数数值值),因因此此只只是是一一个个符符号号,表表示示输

8、输入、输出入、输出,名字可随便用户取。名字可随便用户取。6、虚元可以是变量名、数组名、过程名、指针等。、虚元可以是变量名、数组名、过程名、指针等。7、虚元的可选属性、虚元的可选属性INTENT:INTENT(IN):作为子程序的输入作为子程序的输入(不得再改变其值不得再改变其值)INTENT(OUT):子子程程序序的的输输出出(对对应应的的实实元元不不能能是是表表达式)达式)INTENT(INOUT):子程序的输入输出子程序的输入输出例:例:REAL,INTENT(IN):X,YFortran 90Fortran 90子程序程序体的写法子程序程序体的写法分为说明部分和执行部分。分为说明部分和执

9、行部分。1、说说明明部部分分应应对对程程序序体体内内一一切切变变量量、数数组组等等实实体体(包包括括虚虚元元)作作出出说说明明,同同时时还还要要说说明明函函数数结结果果变量名,变量名,但不可说明函数名但不可说明函数名。2、执行部分中必须对函数结果名、执行部分中必须对函数结果名至少赋值一次。至少赋值一次。FUNCTION F(X,Y,Z)RESULT(F_RESULT)IMPLICIT NONEREAL:X,Y,z,F_RESULTF_RESULT=X+YZ=X-YEND两单位独立编译两单位独立编译Fortran 90Fortran 901、调用式是表达式、调用式是表达式,调用结束后调用式得到函

10、数值。调用结束后调用式得到函数值。2、常见形式:、常见形式:Y=函数名(实元表)函数名(实元表)PRINT*,函数名(实元表)函数名(实元表)IF(函数名(实元表)函数名(实元表)注意注意:实元与虚元一般必须在:实元与虚元一般必须在个数、次序、类型个数、次序、类型上保持上保持一致;但实元与虚元名字可以不同一致;但实元与虚元名字可以不同。函数子程序的调用函数子程序的调用Fortran 90Fortran 90例例1:编写子程序编写子程序求求K=M*N,L=M-N,主程序输入主程序输入2,3,调用子程序,计算,调用子程序,计算2*3及及2-3。Program mainImplicit noneIn

11、teger:M,N,K,L,FRead*,M,NK=F(M,N,L)PRINT*,K,LENDFUNCTION F(M,N,L)RESULT(F_RESULT)IMPLICIT NONEINTEGER:M,N,L,F_RESULTF_RESULT=M*NL=M-NEND注意:虚元名任意,但一般与实元一致。注意:虚元名任意,但一般与实元一致。检查调用原则,程序体编写规则。检查调用原则,程序体编写规则。不能省略说明不能省略说明两单位独立编译两单位独立编译Fortran 90Fortran 90例例2计算计算y=f(x)+g(x)值。值。其中其中 f(x)=x+sin30 x+1,f(x)0g(x)

12、=0,f(x)=0 x-1,f(x)0)THENGF_RESULT=X+1ELSEIF(F0)THENGF_RESULT=X-1ELSEGF_RESULT=0ENDIFENDG,GF不能同名不能同名Fortran 90Fortran 90练习:练习:计计算算函函数数Sinh(x)的的值值,当当ex的的通通项项值值小小于于等等于于1E-6时停止。计算公式如下:时停止。计算公式如下:Fortran 90Fortran 90 !主程序如下:主程序如下:Program main1 Real:MyExp,y,x Write(*,*)Enter x:Read(*,*)x Y=(MyExp(x)-MyExp

13、(-x)/2.0 Write(*,)Y END PROGRAM !函数子程序!函数子程序Function MyExp(x)result(Exp_res)Real:Exp_res,x,s,T integer:N N=1;T=1;S=1 do T=T*X/N IF(ABS(T)=1E-5)EXIT S=S+T;N=N+1 end do Exp_res=S END FUNCTION 两次调用两次调用Fortran 90Fortran 901、计算实元值(作为输出的可预先无值)、计算实元值(作为输出的可预先无值)2、虚实按地址结合:虚元、虚实按地址结合:虚元按顺序按顺序借用实元存储单元借用实元存储单元

14、3、运行权至子程序的第一句,直至遇子程序的、运行权至子程序的第一句,直至遇子程序的END语句返回到主调程序:语句返回到主调程序:运行权返回至调用点运行权返回至调用点 函数值返回给调用表达式函数值返回给调用表达式 虚实脱离结合,但子程序运行时造成的实元值虚实脱离结合,但子程序运行时造成的实元值的改变将保留。的改变将保留。调用的执行过程调用的执行过程Fortran 90Fortran 90子程序阅读技巧:画出虚实结合表子程序阅读技巧:画出虚实结合表INTEGER:X,Y,Z,fY=f(X,X)PRINT*,YZ=f(y,x)PRINT*,ZENDFUNCTION f(X,Y)RESULT(f_RE

15、SULT)INTEGER:X,Y,f_RESULT,II=1;X=3*I;Y=2*If_RESULT=X+YEND注意:一个变量只有注意:一个变量只有一个存储单元一个存储单元按顺序结合,不是按按顺序结合,不是按名结合名结合1、虚元为变量,实元为同类型的变量、虚元为变量,实元为同类型的变量Fortran 90Fortran 90开辟临时单元存放常量或表达式的值开辟临时单元存放常量或表达式的值REAL:MN,X,SX=3.0PRINT*,S(X,MN(X),),XENDFUNCTION S(A,C)RESULT(S_RESULT)REAL:A,S,S_RESULTA=A+1;B=A*AS_RESU

16、LT=B-CEND FUNCTION SFUNCTION MN(X)RESULT(MN_RESULT)MN_RESULT=3.0*XEND FUNCTION MN247.0 4.0、虚元为变量,实元为常量、表达式:、虚元为变量,实元为常量、表达式:Fortran 90Fortran 906.3 外部子例行子程序外部子例行子程序外部子例行子程序的结构外部子例行子程序的结构外部子例行子程序:用户定义,用于完成复杂外部子例行子程序:用户定义,用于完成复杂计算任务,返回一个或多个值,或用于其它数计算任务,返回一个或多个值,或用于其它数据处理据处理RecursiveSubroutine 子程序名(虚元表

17、)子程序名(虚元表)说明部分说明部分程序体程序体End Subroutine 子程序名子程序名Fortran 90Fortran 90与函数子程序的区别与函数子程序的区别1.1.没有没有RESULTRESULT关键字。关键字。2 2、虚元:负责子程序的全部输入和全部输出、虚元:负责子程序的全部输入和全部输出3 3、无虚元时:、无虚元时:SUBROUTINT SUBROUTINT 子程序名子程序名 或或 SUBROUTINT SUBROUTINT 子程序名()子程序名()4 4、函数子程序的调用是函数子程序的调用是表达式表达式中。中。而而子例子程序必须通过子例子程序必须通过CALLCALL语句来

18、调用语句来调用。CALL CALL 子程序名(实元表)子程序名(实元表)Fortran 90Fortran 90例子程序求例子程序求K=M+N,L=M-N 主程序输入主程序输入2,3调用子程序求调用子程序求2+3,2-3的值。的值。Program mainImplicit noneInteger:M,N,K,LRead*,M,NCALL S(M,N,K,L)PRINT*,K,LENDSubroutien S(m,n,k,l)Implicit NoneInteger:m,n,k,lK=m+nL=m-nEnd所有的输入、输出所有的输入、输出Fortran 90Fortran 901、计算实元值(作

19、为输出的可预先无值)、计算实元值(作为输出的可预先无值)2、虚实按地址结合:虚元按顺序借用实元存储单元、虚实按地址结合:虚元按顺序借用实元存储单元3、运行至子程序的第一句,直至遇子程序的、运行至子程序的第一句,直至遇子程序的END语句返回到主调程序:语句返回到主调程序:运行返回至运行返回至CALL语句的下一个语句语句的下一个语句 虚实脱离结合,但子程序运行时造成的实元虚实脱离结合,但子程序运行时造成的实元值的改变将保留。值的改变将保留。调用的执行过程调用的执行过程Fortran 90Fortran 90INTEGER:X,YCALL SUB(X,X,Y)CALL SUB(X,Y,Y)ENDSUBROUTINE SUB(X,Y,Z)INTEGER:X,Y,ZI=1X=3*I;Y=2*I;Z=X+YPRINT*,X,Y,ZEND 阅读程序:画虚实结合表阅读程序:画虚实结合表注意:一个变量只有一注意:一个变量只有一个存储单元个存储单元按顺序结合,不是按名按顺序结合,不是按名结合结合

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com