子程序的定义和使用.ppt

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 第九讲 子程序的定义及使用 9.1 Fortran 子程序概述 FORTRAN 90子程序,也称过程,划分为两类:函数和子例行程序。 函数是指产生一个运算结果且通过操作数调用执行的子程序。 子例行程序是指可产生多个处理结果且通过CALL语句调用执行的子程序。 每类子程序又划分为标准子程序和用户自定义子程序。 用户自定义子程序又划分为内部子程序、外部子程序和模块子程序。 FORTRAN 90的子程序分类 FORTRAN 90 子程序 子例行程序 标准子例行程序 用户自定义子例行程序 内部子例行程序 外部子例行程序 模块子例行程序 函数 标准函数 用户自定义函数 内部函数 外部函数 模块函数 语句函数 标准子程序 内部子程序 外部子程序 模块子程序 标准子程序 内部子程序 外部子程序 模块子程序 使用标准函数需要注意以下几点: 标准函数对变元的个数和类型有明确的规定和要求。要求有一个变元,如函数SIN(x);要求两个变元,如函数MOD(m,n);要求多个变元,如函数MAX(x1,x2,…,xn)。要求变元类型为整型,如函数MOD(m,n);,要求变元类型为实型,如SIND(x);要求变元类型为整型、实型、双精度、复型等多种类型,如ABS(x)。 标准函数的函数值只有一个,且有明确的类型规定。多数函数函数值类型与变元类型相同,如函数SQRT(9.0D0)=3.0D0,类型都为双精度;也有函数函数值类型与变元类型不相同,如函数INT(8.5)=8,变元类型为实型,而函数值类型为整型。 对于“弧度”和“角度”单位,使用不同的三角函数。 函数变元必须写在函数名后括号内,变元可是常数、变量或表达式,少数标准函数变元要求变量,如LOG(v) IMPLICIT语句不能改变一个标准函数的类型。 9.2 语句函数 在求解实际问题时,特别是在求解有关科学与工程数值计算问题时,常常会遇到计算一些数学表达式,如: 这些数学表达式在程序中多次出现,需要重复书写它们,不但浪费了宝贵的时间和精力,而且也容易出错。任何数学表达式实际上都可表示成一元、二元或多元函数关系,即F(x1,x2,…,xn),这些函数关系如果没有对应的标准函数,则需要用户设法定义新的函数来实现它们。 FORTRAN 90提供了语句函数定义功能来定义一些简单的函数,用于实现有关的函数关系。用户自定义语句函数其使用方法与标准函数相同,可以作为操作数在表达式中调用。 一般形式为:F(x1,x2,…,xn)=表达式 F为函数名,x1,x2,…,xn为虚拟变元(或称形式参数或哑元)。 要求:不能重名,只能为普通变量名。类型可用隐含规则定义,也可用类型声明语句定义,但须放在该语句函数定义语句之前。 下面程序通过语句函数实现[例9.2]问题。 PROGRAM F72 F(x1,x2,x3)=3.14159*(x1+x2/60.0+x3/3600.0)/180.0 A=F(36.0,43.0,27.0) B=F(15.0,24.0,0.0) C=F(8.0,16.0,54.0) S=COS(A)**2-4*SIN(B)*TAN(C) WRITE (*,*) A,B,C,S END program 调用一般形式为: 语句函数名([实在参数表]) 说明: 语句函数名同语句函数定义语句中的语句函数名相同。 实在参数表为实在参数或实参,其个数、次序和类型应与定义语句中形式参数一致。实在参数之间用逗号分隔。 实参可是常数、变量、数组元素、函数名、表达式。 当调用语句函数时,其执行过程如下: 首先计算实参表达式的值; 将实参值赋予对应的形参,即形实参结合 用被赋值的形参对语句函数定义语句中的表达式进行求值运算; 将运算后的表达式值转换为函数名类型,并将其按函数值返回到调用位置。 使用语句函数的一些规定: 一个语句函数只能在一行内定义。如果太长,可续行书写。 语句函数定义语句是非执行语句。 语句函数只有一个函数返回值,函数名与函数值符合赋值规则。 定义语句函数,右端表达式中可调用已定义语句函数或标准函数,但不能调用该语句函数自己,即不能递归调用。 H(x1,x2)=x1*x1+x2*x2 F(x1,x2)=SQRT(H(x1,x2)) 语句函数的形式参数不允许为数组或下标变量或常量。 DIMENSION A(10),B(2,3) F1(x,y)=x+A(1)+y-B(1,2) !表达式中可以引用数组元素 F(C)=C+100 语句函数名属于局部变量,只能在定义它的程序单位中引用。 语句函数可无形参,称为无参函数,圆括号不能省略

文档评论(0)

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

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

1亿VIP精品文档

相关文档