Fortran-95-程序设计-第七章ppt课件_第1页
Fortran-95-程序设计-第七章ppt课件_第2页
Fortran-95-程序设计-第七章ppt课件_第3页
Fortran-95-程序设计-第七章ppt课件_第4页
Fortran-95-程序设计-第七章ppt课件_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、中山大学环境科学与工程学院 陆 希,九. 函数和子程序,概述 语句函数 函数子程序(自定义函数)(funcation) 子例行程序(subroutine) 实参和虚参之间的数据传送 其它应用,概述,使用顺序结构、选择结构和循环结构可设计和编写一些比较复杂的程序;使用函数和子例行程序能编写编写结构清晰、层次分明、短小简洁的好程序,是编写高质量、高水平、高效率程序的有效手段。 在设计和编写程序时,程序中不同部位会多次出现相同或相似的运算或处理过程(程序代码,例如:求五边形ABCDE的面积问题,如图所示。 已知:五边形5条边长为:a、b、c、d、e,两条对角线为:f、g。五边形面积计算问题变为3个三

2、角形面积计算问题,3个三角形面积area1、area2、area3之和就是五边形面积area。 三角形面积A求解公式:三边长为x,y,z,如情况1,一般方法求解,函数方法求解,如情况2: 问题一:某房地产公司买下一块呈三角形形状的地盘准备盖住宅小区,地价为每平方米1000元,求这块地的总价。 求解问题的核心是计算三角形面积。 问题二:某单位有一个呈三棱台形状的水箱,平均每天消耗2水箱水,水价为每立方米8角钱,计算每天需支付的水费。 求解问题的核心是计算三角形面积,用一般方法求解,用函数方法求解两问题,对于比较复杂的问题,设计和编写程序需要采用科学的程序设计方法。模块化和结构化程序设计方法是常用

3、的程序设计方法,使用这些方法可大大降低问题的复杂性,使复杂问题的求解变得相对容易。使用函数和子程序可使用模块化和结构化程序设计方法设计和编写大型、复杂、高质量程序。 对复杂问题逐层进行任务分解,得到问题分层结构图。根据分层结构图, 逐层设计和编写程序。最顶层问题用主程序实现,其余层子问题用函数或子例行程序实现,最后将主程序和若干函数或子例行程序组装成完整的可运行程序。 设计和编写主程序时,可假定下一层子问题已经通过函数或子程序实现,暂不考虑其具体实现内容,如情况3,输入一批测试数据(30个),对其排序,输出排序结果数据,一般方法求解,结构化程序设计方法及求解,语句函数,在求解实际问题时,特别是

4、在求解有关科学与工程数值计算问题时,常常会遇到计算一些数学表达式,如: 这些数学表达式在程序中多次出现,需要重复书写它们,不但浪费了宝贵的时间和精力,而且也容易出错。任何数学表达式实际上都可表示成一元、二元或多元函数关系,即F(x1,x2,xn),这些函数关系如果没有对应的标准函数,则需要用户设法定义新的函数来实现它们。 FORTRAN 90提供了语句函数定义功能来定义一些简单的函数,用于实现有关的函数关系。用户自定义语句函数其使用方法与标准函数相同,可以作为操作数在表达式中调用,例951已知角度A364327,B1524,C81654,计算 : Scos2A-4sinBtgC 角度Dnx1x

5、2 x3的弧度转换公式,语句函数定义,一般形式为:F(x1,x2,xn) F为函数名,x1,x2,xn为虚拟参数(或称形式参数或哑元)。 要求:不能重名,只能为普通变量名。类型可用隐含规则定义,也可用类型声明语句定义,但须放在该语句函数定义语句之前。 下面程序通过语句函数实现例951问题,调用一般形式为: () 说明: 同语句函数定义语句中的语句函数名相同。 为实在参数或实参,其个数、次序和类型应与定义语句中形式参数一致。实在参数之间用逗号分隔。 实参可是常数、变量、数组元素、函数名、表达式。 当调用语句函数时,其执行过程如下: 首先计算实参表达式的值; 将实参值赋予对应的形参,即形实参结合

6、用被赋值的形参对语句函数定义语句中的表达式进行求值运算; 将运算后的表达式值转换为函数名类型,并将其按函数值返回到调用位置,使用语句函数的一些规定: 一个语句函数只能在一行内定义。如果太长,可续行书写。 语句函数只有一个函数返回值。 定义语句函数,右端表达式中可调用已定义语句函数或标准函数,但不能调用该语句函数自己,即不能递归调用。 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)=

7、C+100 语句函数的虚参应该是变量名,不能是常量、表达式或数组元素 语句函数可无虚参,称为无参函数,圆括号不能省略,即:F(,语句函数定义语句是非执行语句,应该放在所有可执行语句之前和有关的类型说明语句之后 语句函数只在其所在的程序单位中才有意义,例953计算空间一点P(x,y,z)的方向弦,其计算公式如下: 其中:、为点P到原点直线与坐标轴x、y、z的夹角,例954已知=30,=38,=58,编写程序求,自定义函数 (funcation)-函数子程序,外部函数,函数:内部函数 语句函数:只能是由一个语句定义的函数,即,必须用一个表达 式来表示出函数关系。 如: f(x)=x5+x3+2x-

8、7 下列函数关系则无法用一个语句函数来表示: +1 (x0) y = 0 (x=0) -1 (x0) 函数子程序,或称外部函数,可以用一个函数子程序来定义之,函数子程序的定义: 类型说明 FUNCTION函数名(虚参列表) . END FUNCTION函数名 其中函数名的取法与变量名相同。 函数名既是某个函数的名字又代表该函数的函数值,所以必须有类型说明。 也可以在FUNCTION语句后进行说明: FUNCTION 函数名 (虚拟参数,) 类型说明 函数名 虚拟参数之间用逗号隔开,虚参可以是变量名、数组名、子程序名 没有虚参时,一对括号必不可少,FUNCTION END 其中语句的排列和主程序

9、相同: 说明语句在前,执行语句在后 说明语句包括对虚参变量和虚参数组的说明,也包括对函数中所用变量、数组和符号常量的说明。 执行语句用来完成对函数值的运算,在程序的执行流程返回调用单位之前,必须有求得到函数值赋给函数名。给函数赋值时注意: 函数名 = 表达式 函数中当程序执行的流程遇到RETURN语句或END语句时,返回调用单位并由函数名把函数值带回。RETURN语句只允许出现在子程序中,其与END的区别在于:子程序中可以有任意多个RETRUN语句,可以根据需要把它放在合适的语句行,程序执行的流程遇到它时就立即返回调用单位;而子程序中的END语句只能有一条,而且必须放在子程序的最后,在编译时作

10、为标志通知编译程序:“本程序单位到此结束”,在执行时起RETURN语句的作用,函数是一个独立的编译单位,所以函数体内所用的变量、语句标号等的作用范围仅仅局限于本程序单位内,除了函数名和虚参以外与其它程序单位没有任何联系。所以编写函数子程序时可以不必顾及所用标号/名字是否与其他程序单位相重。具有很大的独立性和灵活性,例:编写一个求实型数绝对值得函数,并由主程序来调用它,函数子程序的调用 与调用内在函数形式一样,在主调程序任何处,作为表达式的一项写下: 函数名(实在参数,) 或 函数名() 无参数的情况 可以在任何允许函数值出现的表达式中调用函数,也只能在表达式中对函数进行调用 在主程序或子程序中调用一个外部函数时,应在他们的说明部分对函数名的数据类型加以说明。 必须在调用程序中使外部函数名与函数子程序定义中函数名的类型说明完全一致。 实参与形参按照位置一一对应,个数必须相同,类型完全一致,练习1: 编写求 的函数子程序,调用此函数求以下表达式的值: 练习2:已知 由程序输入X的值,求出sin h(X) 我们已经知道ex可用

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论