分享
分享赚钱 收藏 举报 版权申诉 / 45

类型fortran课件 第7章_3.ppt

  • 上传人:gnk289057
  • 文档编号:7928522
  • 上传时间:2019-05-30
  • 格式:PPT
  • 页数:45
  • 大小:1.04MB
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    fortran课件 第7章_3.ppt
    资源描述:

    1、第七章 函 数,84函数中的变量,函数中的变量(不含所输入的参数)是独立的(局部变量),其生存时间,仅在子程序被调用期间。 声明中用SAVE,可保证程序整个执行过程中,始终保留其内存空间,上一设置的内容有记忆。 传递参数的注意事项:函数或子程序的虚参数,在调用前不配置内存,只是形式。调用时,与实参按地址结合。退出子程序时,虚参又变得无定义。 一) 类型匹配 传递的参量要求类型匹配,可以直接传递常数,常量的类型也要匹配,二) 数组参数 1)传递数组参数实际上传递的是数组元素的内存地址 函数所接受到的数组参数,都在函数执行前已经配置好一块连续的内存空间,函数中的声明只是定义如何去使用它们,可以使用

    2、其中一部分;把一维变成二维;改变坐标范围等。 2)函数数组参数传递时,虚参数组不要超过实参数组的范围。编译器不会辨别,但执行会出错. 3) 数组在声明时,要使用常数来确定数组的尺寸,当作为函数的虚参,可用变量来声明数组的尺寸。 4)作为函数虚参的多维数组,最高一维的大小可以不声明,其他维必须声明尺寸。 三)传递函数 传递的参数可以是函数名(function,subroutine) 作实参的函数名要先声明。 函数声明时,intrinsic 表示库函数;external表示自定义的函数。,8-5 特殊参数的使用方法,Fortran 90 中:可设置某些参数的属性:为只读或可写等: 类型,INTEN

    3、T(IN): 参数变量名 !参数为只读,不能改变数值,否则编译会出现错误信息类型,INTENT(OUT): 参数变量名 !参数在程序中重新设置数值,否则编译会出现警告类型,INTENT(INOUT): 参数变量名,函数的使用接口INTERFACE是一段程序模块,说明所要调用的函数的参数类型及返回值的类型等。 必须要使用的情况: 函数返回值为数组 指定参数位置来传递参数时 所调用的函数的参数数目不固定 输入指针参数时 函数返回值为指针时,不定个数的参数的传递函数的传递参数,采用optional 命令来声明可省略参数用present( )来检查,返回逻辑值。 改变参数的传递位置subroutine

    4、 sub(a, b,c) Call sub(b=2, c=3, a=1)对于有多个可省略参数的函数,调用时可使用这个办法只传递其中的部分参数,8-6 特殊的函数递归(RECURSIVE),递归函数除了被其他程序块调用外,可以自己调用自己来执行程序 必要条件: 每次被调用时,递归函数中的局部变量(那些不是传递的参数和SAVE的变量)独立存在,每次被调用会使用不同的内存地址。 用result来设置另一个储存返回值的变量 程序中要设置调用终点,以免无限循环调用,8-7 MODULE,MODULE可以用来封装程序模块,通常用来把具备相关功能的函数和变量封装在一起 形式:,Module module_n

    5、ame 声明变量,写子程序或函数 End modulemodule_name,应用:use module_name,8-7-1 MODULE中的变量,在module中声明变量,通过use module 来使用它们 形式:使用: use module_name module中的声明的全局变量全程序可用 module中的一般变量被函数使用时为局部变量,注明save的变量与全局变量相同,Module module_name类型 变量名 End modulemodule_name,例题,通过使用module 来使用全局变量,例题,module 中普通变量,声明时没有save,结果相同,但不是每一种编译

    6、器都有此结果,8-7-2 module中的自定义类型type,用module封装, 简化程序,无需反复声明type类型 自定义类型type的数据, 可以作为函数参量传递。,例题: 计算一组运动员的标枪射程。由投射角度,初速度,来计算射程,Module module_name 先声明变量,或包含应用其他moduleContains 从contains后开始写函数、子程序Subroutine sub_nameEnd subroutine sub_name subroutine不能省Function func_nameEnd function func_name function不能省 End mo

    7、dule module_name, 8-7-3 Module中的函数, 8-7-3 Module中的函数,1)应用了某个module, module 中的函数类型声明也就包含 2)Module 中的函数和子程序互相认识,无需另外声明 3)同一个module 中的函数可以直接使用module中声明的变量 4) Module 中可以用其他的module,并有功能继承的效果。,Module用法和功能: 定义Module的程序代码需要写在使用它的module、子程序或主程序之前 使用module的语句use module_name必须写在应用它的子、主程序中最前面的语句 封装程序块,不必重复写相同的声

    8、明语句 应用了某个module, module 中的函数、变量类型声明也就包含 Module 中的函数和子程序互相认识,无需另外声明 同一个module 中的函数可以直接使用module中声明的变量,8-9 使用多个文件,相关功能的函数独立编写在不同的文件中。编译器分别编译(compile)这些程序文件,最后在连接到同一个执行文件。 独立文件中的函数可以被其他不同的程序使用 加快编译速度。修改其中一个文件时,不必全部重新编译, 8-9-1 INCLUDE,采用INCLUDE Filename命令在程序代码中,插入另一个文件中的内容。 例题:两个分开的放在同一个目录下的文件,编译执行,INCLU

    9、DE命令可以写在任何地方,只是单纯地从书写的地方插入另一个文件的内容,可应用来作全局变量的声明,或者用作替换内容, 8-9-2 VISUAL FORTRAN中使用多个文件,在一个project里可有放入任意多个文件,Visual fortran会把它们编译成一个可执行文件。,注意编译顺序依照应用顺序,1)各个文件可以分开编译(compile),最后链接成一个可执行文件每个文件都可以编译成一个*.obj的文件,链接成一个*.exe文件。 2)只能有一个主程序,因为刚开始执行时只能有一个进入点 3)修改文件只需单独编译此文件 4)可以把旧的FORTRAN 77的程序代码与FORTRAN 90的程序

    10、代码混用,8-10 函数的应用TextGraphLib.f90文件中提供了文本格式下绘图的程序库,可被其他程序利用来作图。,执行结果:,!圆的分段数,! 定义预设用来画图的字符 subroutine SetCurrentChar( char ) end subroutine! 把画好的存在内存screen(:, :)的画显示在屏幕上, 输出screen(x,y) subroutine UpdateScreen() end subroutine! 在指定的(x,y)位置画上一个字符 subroutine PutChar( x, y, char ) end subroutine PutChar,S

    11、creenwidth=30 Str=(030A1),用整数的加法和减法来模拟除法计算。先计算斜率,斜率小于1(xaddyadd),x方向上点较多;斜率大于1,y方向上画点较多。,! 在(x0,y0)到(x1,y1)之间画一条直线 subroutine DrawLine(x0,y0, x1,y1)call PutChar( x, y )end ifreturn end subroutine ! 以(cx,cy)为圆心, 水平轴半径为radiusA, 垂直轴半径为radiusB的椭图 subroutine DrawCircle( cx, cy, radiusA, radiusB )call DrawLine(x,y, nx,ny) !画短线end subroutine,! 以(x0,y0)为左上角, (x1,y1)为右下角画一个空心的矩形 subroutine DrawRect( x0, y0, x1, y1 ) end subroutine! 以(x0,y0)为左上角, (x1,y1)为右下角画一个实心的矩形 subroutine DrawFilledRect( x0, y0, x1, y1 ) end subroutine end module,

    展开阅读全文
    提示  道客多多所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:fortran课件 第7章_3.ppt
    链接地址:https://www.docduoduo.com/p-7928522.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    道客多多用户QQ群:832276834  微博官方号:道客多多官方   知乎号:道客多多

    Copyright© 2025 道客多多 docduoduo.com 网站版权所有世界地图

    经营许可证编号:粤ICP备2021046453号    营业执照商标

    1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png



    收起
    展开