欢迎来到得力文库 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
得力文库 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    FORTRAN90第6章子程序.ppt

    • 资源ID:70710453       资源大小:244.50KB        全文页数:27页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    FORTRAN90第6章子程序.ppt

    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用用子程序完成子程序完成用用子程序完成子程序完成用用子程序完成子程序完成子程序子程序子程序子程序引入子程序的目的:引入子程序的目的:模块化设计模块化设计所有功能都在主所有功能都在主程序单位内完成程序单位内完成Fortran 90Fortran 901 1、一个一个Fortran90Fortran90程序主程序单元个数:程序主程序单元个数:1 1个个2 2、子程序单元:、子程序单元:0-n0-n个个子程序单元被主程序单元或被其它子程序单子程序单元被主程序单元或被其它子程序单元元调用调用,甚至可以递归调用(调用本身),甚至可以递归调用(调用本身)源程序的结构源程序的结构Fortran 90Fortran 90主程序:主程序:单位定义单位定义说明部分说明部分输入输入调用子程序调用子程序输出输出END计算或处理计算或处理子程序:子程序:最简单的源程序的结构最简单的源程序的结构Fortran 90Fortran 90子程序分类子程序分类1 1、函数子程序、函数子程序 分为内部函数子程序分为内部函数子程序 外部函数子程序外部函数子程序2 2、子例行子程序、子例行子程序 分为内部子例行子程序分为内部子例行子程序 外部子例行子程序外部子例行子程序用于完成用于完成复杂的计算复杂的计算返回返回 一个或多个值一个或多个值用用于于完完成成复复杂杂计计算算,返返回回一一个个或或多多个个值值,或或用用于于其其它它数数据据处处理理Fortran 90Fortran 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语句写法语句写法1、函数单位的结束标志、函数单位的结束标志 2、将控制返回到主调程序。、将控制返回到主调程序。子程序子程序END语句功能语句功能Fortran 90Fortran 90函数函数单位定义语句单位定义语句的的写法写法RECURSIVEFUNCTION 函数名(虚元表)函数名(虚元表)RESULT(结果名结果名)1、函数子程序的第一行(注释行除外)。、函数子程序的第一行(注释行除外)。2、如果函数是递归的,则应以、如果函数是递归的,则应以RECURSIVE开头。开头。3、函函数数名名为为全全局局名名:作作用用域域为为整整个个程程序序,不不与与已有的全局名同名。已有的全局名同名。各独立程序单位的名字为全局名各独立程序单位的名字为全局名Fortran 90Fortran 904、主调程序与被调程序、主调程序与被调程序 两个单位之间的数据传递两个单位之间的数据传递结果名:子程序的结果名:子程序的一个输出一个输出一般写法:一般写法:函数名函数名_RESULT,用于用于保存一个计算结果,称为保存一个计算结果,称为函函数值数值。且结果名有类型,必须在子程序说明部分。且结果名有类型,必须在子程序说明部分说明类型说明类型。虚元表:子程序的虚元表:子程序的所有输入所有输入,及除函数值之,及除函数值之外的外的其他计算结果的输出其他计算结果的输出。函数值返回给调用式函数值返回给调用式由由实元传递给对应实元传递给对应的虚元的虚元虚元数据返回给对应的实元虚元数据返回给对应的实元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、虚虚元元的的含含义义:编编写写子子程程序序时时没没有有具具体体值值(调调用用时时或或调调用用结结束束后后才才获获得得数数值值),因因此此只只是是一一个个符符号号,表表示示输输入、输出入、输出,名字可随便用户取。名字可随便用户取。6、虚元可以是变量名、数组名、过程名、指针等。、虚元可以是变量名、数组名、过程名、指针等。7、虚元的可选属性、虚元的可选属性INTENT:INTENT(IN):作为子程序的输入作为子程序的输入(不得再改变其值不得再改变其值)INTENT(OUT):子子程程序序的的输输出出(对对应应的的实实元元不不能能是是表表达式)达式)INTENT(INOUT):子程序的输入输出子程序的输入输出例:例:REAL,INTENT(IN):X,YFortran 90Fortran 90子程序程序体的写法子程序程序体的写法分为说明部分和执行部分。分为说明部分和执行部分。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、调用式是表达式、调用式是表达式,调用结束后调用式得到函数值。调用结束后调用式得到函数值。2、常见形式:、常见形式:Y=函数名(实元表)函数名(实元表)PRINT*,函数名(实元表)函数名(实元表)IF(函数名(实元表)函数名(实元表)注意注意:实元与虚元一般必须在:实元与虚元一般必须在个数、次序、类型个数、次序、类型上保持上保持一致;但实元与虚元名字可以不同一致;但实元与虚元名字可以不同。函数子程序的调用函数子程序的调用Fortran 90Fortran 90例例1:编写子程序编写子程序求求K=M*N,L=M-N,主程序输入主程序输入2,3,调用子程序,计算,调用子程序,计算2*3及及2-3。Program mainImplicit noneInteger: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)=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(-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、虚实按地址结合:虚元、虚实按地址结合:虚元按顺序按顺序借用实元存储单元借用实元存储单元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_RESULT)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_RESULT=B-CEND FUNCTION SFUNCTION MN(X)RESULT(MN_RESULT)MN_RESULT=3.0*XEND FUNCTION MN247.0 4.0、虚元为变量,实元为常量、表达式:、虚元为变量,实元为常量、表达式:Fortran 90Fortran 906.3 外部子例行子程序外部子例行子程序外部子例行子程序的结构外部子例行子程序的结构外部子例行子程序:用户定义,用于完成复杂外部子例行子程序:用户定义,用于完成复杂计算任务,返回一个或多个值,或用于其它数计算任务,返回一个或多个值,或用于其它数据处理据处理RecursiveSubroutine 子程序名(虚元表)子程序名(虚元表)说明部分说明部分程序体程序体End Subroutine 子程序名子程序名Fortran 90Fortran 90与函数子程序的区别与函数子程序的区别1.1.没有没有RESULTRESULT关键字。关键字。2 2、虚元:负责子程序的全部输入和全部输出、虚元:负责子程序的全部输入和全部输出3 3、无虚元时:、无虚元时:SUBROUTINT SUBROUTINT 子程序名子程序名 或或 SUBROUTINT SUBROUTINT 子程序名()子程序名()4 4、函数子程序的调用是函数子程序的调用是表达式表达式中。中。而而子例子程序必须通过子例子程序必须通过CALLCALL语句来调用语句来调用。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、计算实元值(作为输出的可预先无值)、计算实元值(作为输出的可预先无值)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 阅读程序:画虚实结合表阅读程序:画虚实结合表注意:一个变量只有一注意:一个变量只有一个存储单元个存储单元按顺序结合,不是按名按顺序结合,不是按名结合结合

    注意事项

    本文(FORTRAN90第6章子程序.ppt)为本站会员(hyn****60)主动上传,得力文库 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知得力文库 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档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  

    收起
    展开