Fortran第6章讲述.ppt

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

Visual Fortran 90 程序设计 第6章 子程序 Visual Fortran 90 程序设计 §6.1 概述 §6.2.1外部函数子程序 6.6 常见的虚实结合的类型 6.6 常见的虚实结合的类型 6.3.1 外部子例行子程序的定义 6.2.3、6.3.3 内部子程序的定义 6.6.2 子程序名作为虚参数 1、牛顿迭代法计算方程根 11.5 递归及其应用 外部子程序:包含外部的FUNCTION子程序和 外部的 SUBROUTION子程序 均是一个独立的程序单位 内部子过程:包含内部的FUNCTION子程序和 内部的 SUBROUTION子程序 不是一个独立的程序单位, 包含在其它独立程序单位的内部,只能给包含它的程序及其他并列的内部子程序调用。 外部FUNCTION、外部SUBROUTINE、模块单位 主程序单位 1.内部子程序的位置 例: PROGRAM NAME [主程序的说明部分] [主程序的执行部分] [CONTAINS 内部子程序1 …… 内部子程序n] END [PROGRAM [NAME]] 分隔内部过程与包含它的程序单位 2.内部子程序与外部子程序的区别: 外部子程序独立成为一个程序单位,与其它程序单位分开编译。 内部子程序在其它程序单位内,和宿主程序单位一起编译。 ` Real::a,b,c !不得说明F的类型 Read*,a,b Print*,f(),c Contains Function f() result(f_result) real::f_resulr f_result=a+b C=a-b+2 Endfunction End 一起编译,子单位没有说明A,B,c类型,主、子单位中的变量为同一个变量(如输入3,2 则输出5,3) 但如子程序中重新说明A、B、C的类型为不同变量(输出0,0) real:: f,a,b,c Read*,a,b Print*,f(),c End Function f() result(f_result) real::f_resulr,a,b,c f_result=a+b C=a-b+2 End 主、子单位分开编译,变量A,B,c为不同的变量(输出0,0) 内部函数 类型 外部函数 类型 内部函数的类型不得在主调程序中说明 外部函数的类型如无接口块必须在主调程序中说明 函数名的类型说明的区别 非虚元变量的类型说明区别 内部函数: ①与主调程序同名的非虚元变量,如不说明,为同一个变量, ②与主调程序同名的非虚元变量,如说明,为不同变量,只能在内部子程序中使用。 ③虚元为局部名,一定要说明。 外部函数:所有变量均需说明类型, 不管是否与主调程序同名,均是不同的变量。 1)结束语句为ENDFUNCTION或 ENDSUBROUTINE 2)内部子程序中不得再含有内部子程序 3)内部子程序名为局部名,不得作为实元 4)内部子程序只能给包含它的程序及其他并列的内部子程序调用。 5)内部子程序与外部子程序同名时,内部子程序优先调用 除非有EXTERNAL属性或接口。 其它的区别 [例6-3] 编写一个程序,从键盘上输入A、B、C,求F1=(F(A)+F(B)+F(C))/3的值,其中: 在编写程序时,将函数F(x)编写成一个内部函数子程序,供宿主(这里是主程序)调用。 PROGRAM EXAM6_3 IMPLICIT NONE REAL :: A,B,C,F1 !不能说明内部函数名FUNC READ*,A,B,C F1=(FUNC(A)+FUNC(B)+FUNC(C))/ 3.0 ! 内部函数过程的调用 PRINT *,’F1=’,F1 CONTAINS FUNCTION FUNC(X) RESULT(FUNC_RE) ! 内部函数过程 REAL :: X,FUNC_RE IF(ABS(X) 1.0)THEN FUNC_RE=X*X+SQRT(1.0 – X*X ) ELSE FUNC_RE=X*X ENDIF END FUNCTION FUNC END PROGRAM EXAM6_3 若输入值为2,2,2,则程序执行结果为F1=4.000000。 例6-10阅读下面程序,写出程序运行结果 PROGRAM EXAM10 IMPLICIT NONE INTEGER::A=2,B=5 CALL TT(A,B) PRINT)(1X,A=,I3

文档评论(0)

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

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

1亿VIP精品文档

相关文档