网站大量收购独家精品文档,联系QQ:2885784924

Fortran程序设计(第七章-函数及子程序(上)).ppt

Fortran程序设计(第七章-函数及子程序(上)).ppt

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第七章 函数与子程序(上) §7.1概述 §7.5 子程序的嵌套调用 §7.2 函数子程序 §7.6 模块 §7.3 子例子程序 §7.7 递归过程 §7.4 虚实结合 §7.8 其他部分 §7.9 程序举例 §7.1 概述 过程是可供调用的一个子程序单元,可供程序中任何需要它的地方调用。这既能避免重复性编程劳动,又能节省编程时间与程序的存储空间。但一个Fortran程序必须有一个主程序单元,而且只能有一个主程序单元。一个程序中可以根据需要包含任意数量的子程序单元,子程序单元可以被主程序单元调用,也可以被其它子程序单元调用,甚至可以递归调用。主程序单元一般由Program语句开头,以END语句结束。 Fortran程序中的过程有两种: 函数子程序过程(简称函数子程序或函数) 子例子程序过程(简称子例子程序或子例行子程序)。 这两者的形式、功能与调用方法都有所不同,但总称为过程子程序,也简称为过程或子程序。 过程 函数过程 子程序过程 模块过程 (在模块文件中) 外部过程 (在主程序外部,用户编写) 内部过程(在主程序内部,用户编写) 内在过程 (系统内部提供) 函数的分类: 对过程有如下说明: 1.过程作为子程序不能独立运行,只供其它程序单元调用。 2.过程的调用方法是书写过程名,后跟用一对圆括号括起来的实元表。 3.过程单元中的虚元的个数可以有多个,它们都要写在一对圆括号内。 4.当一个过程被调用时,调用它的主程序或子程序称作主调程序。 5.主调程序和被调用程序间的数据传递主要是通过虚实结合实现。 内在函数分类 (1)三角函数 SIN() 、COS()、TAN()(以弧度为单位) SIND()、COSD()、TAND()(以度为单位) (2)常见的数据操作 类型转换函数:REAL()、DBLE()、CMPLX()、INT() 求绝对值:ABS() (3)地址函数 LOC();%LOC()(在Fortran90中新增) (4)位运算函数(在Fortran90中新增) OR、AND、XOR、LSHIFT、RSHIFT 系统函数调用 方法:写出相应的函数名字,并在后面的括号中给出所要计算的自变量值 如:SQRT(9.0)、ABS(X) 注意: (1)每个函数对所需自变量的个数和自变量类型有明确的规定和要求。 (2)系统函数的函数返回值也具有一定的类型。一般返回值与自变量类型一致。 (3)函数引用时,自变量必须写在括号里,自变量可以是常数、变量或表达式。 §7.2 函数子程序 函数子程序的编写方法 例7-1 编写求1+2+3+……+N的值的函数子程序。 应当注意:引用函数子程序时写出的是函数名,但函数的返回值却是函数的结果值。每一个函数子程序中都要使用一个结果变量。 1.函数开始语句的一般形式 FUNCTION 函数名(形参表)RESULT(结果名) 2.函数结束语句 是函数的结束标志,将控制返回到主调程序。 END [FUNCTION [函数名]] 3.函数过程体 是函数语句和函数结束语句之间的程序段,分为说明部分和执行部分。说明部分应对程序体内一切变量、数组等实体(包括变元)作出说明,同时还要说明函数结果变量名,但不可说明函数名。执行部分中必须对函数结果名至少赋值一次。 4.形参 可以是变量名、数组名、过程名、指针等。 函数子程序编写规则: 函数调用 函数子程序的调用形式与内在函数的引用形式相同,函数子程序的调用应出现在表达式中。调用形式: 函数名(实元表) 注意:实元与虚元个数、类型、位置一一对应,但实元与虚元名字可以不同。 例7-2 编写函数子程序,求 前n项的和,x和n的值在调用时给定。 练习: 计算函数Sinh(x)的值,当ex的通项值小于等于1E-6时停止。计算公式如下: !主程序如下: Program main1 Real:: myExp,y,x Write(*,*) ‘Enter x:’ Read(*,*)x Y=(MyExp(x)-MyExp(-x))/2.0 Write(*,100) ‘Sinh(‘,x,’)=’,Y END PROGRAM !函数子程序 Function MyExp(x) result (exp_res) Real::Exp_res,x,s,t integer::n N=0 T=1 S=1 do while (ABS(T)1E-5)

文档评论(0)

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

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

1亿VIP精品文档

相关文档