fortran 第8章_1.ppt

fortran 第8章_1.ppt

ID:48736963

大小:996.00 KB

页数:46页

时间:2020-01-20

fortran 第8章_1.ppt_第1页
fortran 第8章_1.ppt_第2页
fortran 第8章_1.ppt_第3页
fortran 第8章_1.ppt_第4页
fortran 第8章_1.ppt_第5页
资源描述:

《fortran 第8章_1.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、FORTRAN95第8章函数§8函数程序代码中需要重复的某个功能和重复使用某一段程序代码时,可用函数。“函数”包括:自定义函数(function)和子程序(subroutine)自定义函数扩充库函数的功能§8-1子程序(SUBROUTINE)§8-1子程序(SUBROUTINE)以subroutine开头,要取名。以return返回;end或endsubroutine或endsubroutinename结束用call来调用主程序不一定要放在最开头,书写顺序可任意子程序独立地拥有属于自己的变量声明

2、;主程序和子程序中声明的变量各不相干子程序拥有独立的行代码(format等用)互相之间传递参数变量独立传递参数§8-1子程序(SUBROUTINE)Fortan在传递参数时,是地址调用,即调用时所传递出去的参数和子程序中接受的参数使用相同的内存地址来记录数据。可以视为同一变量。例:以初速度和角度,计算标枪的投射距离§8-2自定义函数(FUNCTION)与子程序的不同:1)调用前要声明;2)会返回一个数值,并对储存返回值的函数名声明;调用时不用callFortran77:RealaddExtern

3、aladd等同于:Add(1.0,2.0)参数可用数值投标程序改写:§8-3全局变量(COMMON)定义一块共享的内存空间,不同的程序单元之间(函数之间,函数与主程序之间),声明的变量使用相同的内存位置,以传递参数。FORTRAN77使用两种:1)有名无名公用区;2)有名公用区§8-3-1COMMON的使用§8-3-1COMMON的使用无名公用区的规则和特点:1)COMMON语句必须在所有可执行语句之前,说明变量名、数组名和数组说明符;COMMONA,B,NP(15),LOC(2,4)等同于DI

4、MENSIONNP(15),LOC(2,4)COMMONA,B,NP,LOC2)虚拟参数不能使用;3)一个程序只有一个无名公用区;§8-3-1COMMON的使用对应关系:主程序模块:Commona,b,c,dCommona1,b1,c1,d1子程序:Commona1,b1,c1,d1Commona,bCommoncabcda1b1c1d1a1b1c1d1abc§8-3-1COMMON的使用4)各程序单位COMMON中的变量类型必须按位置一一对应5)各程序单位中,无名公用区的变量数可以不同,从起始

5、位置开始对应COMMONA,B,C,D,E,FCOMMONN1,N2,N3,N4,N5,F6)字符变量不能和其他变量共用一个公用区§8-3-1COMMON的使用有名公用区:COMMON/N1/A1,A2,…/N2/B1,B2,…,…需要共享的变量不多时,用参数传递,大量的变量或者在多个函数之间需要使用这些变量时用全局变量§BLOCKDATACOMMON中的变量不能使用接在子程序或主程序中的data来赋初值,要在blockdata程序模块中使用data设置初值。Blockdata中只是用来填写全局

6、变量的数据内容,不能放置程序命令。数据内容在一开始执行程序时,即主程序执行之前初值内容就会设置完毕。§8-4函数中的变量8-4-1传递参数的注意事项SUBROUTINENAME(虚拟参数,…)Callname(实在参数,…)函数或子程序的虚参数,在调用前不配置内存,只是形式。调用时,与实参按地址结合。退出子程序时,虚参又变得无定义。§8-4-1传递参数的注意事项类型匹配可以直接传递常数,常量的类型也要匹配传递常量时,要确定函数不改变相对应的虚参的内容§8-4-2数组参数1)传递数组参数实际上传递

7、的是数组元素的内存地址函数所接受到的数组参数,都在函数执行前已经配置好内存空间,函数中的声明只是定义如何去使用它们,可以使用其中一部分;把一维变成二维;改变坐标范围等。2)函数数组参数传递时,虚参数组不要超过实参数组的范围。编译器不会辨别,但执行会出错.3)数组在声明时,要使用常数来确定数组的尺寸,当作为函数的虚参,可用变量来声明数组的尺寸。4)作为函数虚参的多维数组,最高一维的大小可以不声明,其他维必须声明尺寸。§8-4-2数组参数§8-4-2数组参数数组虚参的尺寸用变量声明例2,数组作为函数

8、的虚参时,可用变量来声明数组尺寸,最高维尺寸甚至可以不设置,但不能超过实参数组的范围调用时虚参不要超过实参数组范围字符串数组的传递:传递字符串变量时可以不声明长度多维数组的传递:最高一维的大小可以不声明,其他维必须声明尺寸不能写成write(*,*)aprogramch_arrayimplicitnonecharacter(len=5)::ch(5)!字符串数组5*5datach/'12345','bbbbb','ccccc','ddddd','eeeee'/callsub(ch)stopend

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。