(精)fortran子程序.ppt

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * 第 九 章 数组 第 十 章 语句函数 第十二章 数据共用存储单元 和数据块子程序 第十三章 文件 第十一章 子程序 Fortran程序往往由一个主程序和若干个子程序组成。 write(*,*) y(5.0),y(0.0),y(-6.0) end real function y(x) if(x.gt.0.0) then y=1.0 else if(x.eq.0.0) then y=0.0 else y=-1.0 end if end 一、 函数子程序 类型说明 子程序标志 函数名(虚参) 主程序 函数子程序 (外部函数) 函数子程序必须以function 语句开头,end语句结束。 Fortran的子程序有函数子程序、子例行子程序和数据块子程序三种。 子程序可以被主程序调用,也可以被其他子程序调用。Fortran77中的子程序不能递归调用。 说明: 1. 函数名的取名方法与变量 名同,遵循I—N隐含约定, 否则需采用类型说明语句。 function myabs(x) real myabs . 定义法二 2. 函数名后的虚参可以是变量名、数组名和子程序名。 如没有虚参,一对圆括号不能省。 3. 在函数子程序流程返回调用单位之前,必须把所求得 的函数值赋给函数名(不带括号和虚参)。 4. 函数子程序流程执行到return或end语句时,立即返回 到调用单位。return语句在子程序中可以有多处,如 果紧邻end 可以省去。 7. 函数子程序的调用形式与语句函数完全相同。 必须在调用程序中使外部函数名与函数子程序定义中函数名的类型完全一致。必须保证函数名的类型、虚参的类 型与调用处的函数名以及实参类型一一对应。 5. 函数子程序中除虚参外的任何变量都不与其他程序单 位有关系,语句标号也是独立的。 6. 同一源程序文件中,主程序和子程序先后次序无关紧要。 function myexp(x) real myexp n=0 t=1 s=1 do 10 while(abs(t).gt.1e-5) n=n+1 t=t*x/n s=s+t 10 continue myexp=s end real myexp write(*,*) Enter x: read(*,*) x y=(myexp(x)-myexp(-x))/2.0 write(*,100) sinh(,x,)=,y 100 format(1x,a,f5.2,a,e13.6) end call sum(3,y1) call sum(4,y2) call sum(5,y3) call sum(6,y4) call sum(7,y5) y=(y1+y2+y3)/(y4+y5) write(*,100) y=,y 100 format(1x,a,e13.6) end subroutine sum(n,s) integer n real s s=0 do 10 i=1,n s=s+i 10 continue end 二、 子例行子程序 子例行 子程序标志 主程序 子例行子程序 子例行子程序必须以 subroutine语句开头, 以end语句结束。 子程序名只供调用,不代表某个值。 说明: 1. 子例行子程序取名法则与变量名同。 2. 如果没有虚参,程序名后的一对括号必须省略不写。 3. 子例行子程序也是独立的程序单位,return语句、 语句标号、变量的定义和使用与函数子程序相同。 4. 子例行子程序靠形参实参虚实结合传递数据,可返 回两个以上的数值。(优点) subroutine astar write(*,100) 100 format(1x,20(*)) end call astar call astar end 一行打印20个 “*”号,打两行。 5. 子例行子程序必须用独立的call语句调用。而函数子 程序的调用总是出现在表达式中,参与运算。 subroutine opp(a,s1,s2) real a(5,5) s1=0 do 10 i=1,5 s1=s1+a(i,i) 10 continue s2=0 do 20 i=1,5 j=5-i+1 s2=s2+a(i,j) 20 continue end real w(5,5) call readin(w) call opp(w,x1,x2) write(*,1

文档评论(0)

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

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

1亿VIP精品文档

相关文档