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

for90 第6章1讲义教材.ppt

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

第6章 程序单元和过程;1、一个Fortran90程序主程序单元个数:1个 2、子程序单元:0-n个 子程序单元不能独立存在,只能被主程序单元或被其它子程序单元调用,甚至可以递归调用(调用本身);子程序(又称过程)的分类:;§6.2外部函数子程序;6.2.1函数子程序的编写方法;PROGRAM MAIN INTEGER::FACT=1,SUM=0,I DO I=1,N FACT=FACT*I SUM=SUM+FACT ENDDO PRINT*,SUM END;例:编写求N!的函数子程序。;如要求1!+2!+…+5!, 则主程序为:;END [FUNCTION [函数名]];1、作为函数子程序的第一行(注释行除外)。 2、如果函数是递归的,则应以RECURSIVE开头。 3、函数名与普通变量名的取法相同,且为全局名,即作用域为整个程序,不得与已有的全局名同名。;4、主调程序与被调程序 两个单位之间的数据传递:;5、虚元的含义:编写子程序时没有具体值(调用时或调用结束后才获得数值),因此只是一个符号,表示输入、输出,名字可随便用户取。 6、虚元可以是变量名、数组名、过程名、指针等。 7、虚元的可选属性INTENT: INTENT(IN):表示函数开始时,虚元从实元中获得值,作为子程序的输入(不得再改变其值) INTENT(OUT):表示函数结束时,把虚元的值传送给实元,作为子程序的输出(对应的实元不能是表达式) INTENT(INOUT):表示虚元既要从实元中获得值,又要向实元传送值,作为子程序的输入输出。 例:REAL,INTENT(IN)::X,Y;三、子程序程序体的写法 ;复习:子程序编写思路;例6-2、编写函数子程序,求下列公式前n项的和。;主调程序:;算法2:把求和的工作全部由函数实现,这时需要给函数设计两个虚元(n 和x),如下所示:;主调程序为:;调用子程序的执行流程;1、调用式是表达式, 调用结束后调用式得到函数值。 2、常见形式: ①Y=函数名(实元表) ②PRINT*,函数名(实元表) ③IF(函数名(实元表))…… 注意:实元与虚元一般必须在个数、次序、类型上保持一致;但实元与虚元名字可以不同。;FUNCTION F(X,Y,Z)RESULT(F_RESULT) IMPLICIT NONE REAL::X,Y,z,F_RESULT F_RESULT=X+Y Z=X-Y END;例6-3、编写判断素数的函数子程序,调用它实现例5-11的功能:求出20~50之间的全部素数。;主调程序:;改写PRIME函数(使用逻辑???量):;主调程序:;6.3 外部子例行子程序;与函数子程序的区别 ;例:编写求N!的子例行子程序;如要求1!+2!+…+5!则主程序为:;首先将该多边形划分成若干个三角形,每个三角形的边长分别用L1、L2、L3表示。 然后用下面的公式(海伦公式)计算每个三角形的面积。最后将这几个三角形的面积相加: 以上问题要经过三次完全相同的运算,但参加运算的L1、L2、L3量值不同。我们可以编写一段程序实现这一功能,并为该程序段命名。在计算每个三角形面积时调用该程序,并代入不同的参数完成运算,从而简化设计,便于结构化的程序设计。 ;FUNCTION AREA(A,B,C) RESULT(AREA_RESULT) REAL,INTENT(IN)::A,B,C REAL::P,AREA_RESULT P=(A+B+C)/2. AREA_RESULT=SQRT(P*(P-A)*(P-B)*(P-C)) END FUNCTION AREA;方法2:使用子例行子程序实现:;主调程序为: ;练习题:;练习题:;练习: 计算函数Sinh(x)的值,当ex的通项值小于等于1E-6时停止。计算公式如下:; !主程序如下: Program main1 Real:: MyExp,y,x Write(*,*) Enter x: Read(*,*)x Y=(MyExp(x)-MyExp(-x)) /2.0 Write (*,*) Y END PROGRAM

文档评论(0)

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

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

1亿VIP精品文档

相关文档