收藏 分销(赏)

fortran第九章--过程附加特性.ppt

上传人:精**** 文档编号:12884881 上传时间:2025-12-23 格式:PPT 页数:22 大小:1.26MB 下载积分:10 金币
下载 相关 举报
fortran第九章--过程附加特性.ppt_第1页
第1页 / 共22页
fortran第九章--过程附加特性.ppt_第2页
第2页 / 共22页


点击查看更多>>
资源描述
,单击此处编辑母版标题样式,精选课件ppt,*,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,精选课件ppt,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,精选课件ppt,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,二级,三级,四级,五级,精选课件ppt,*,Fortran95/2003,第九章 过程的附加特性,1,精选课件ppt,本章学习目标,:,学习在,Fortran,过程中如何使用多维数纽,理解何时、如何使用,SAVE,属性或者,SAVE,语句,理解可分配数组和自动数组之间的区别以及何时在过程中分别使用它们,理解纯过程和逐元过程,学习怎样声明和使用内部子程序及函数,2,精选课件ppt,9.1,给子程序和函数传递多维数组,9.1.1,显式结构的形参数组,9.1.2,不定结构的形参数组,(assumed-shape dummy arrays),3,精选课件ppt,在声明不定结构的数组时,数组中的下标都用冒号来代替。只有子程序或者函数有显式接口,才能使用这种数组,调用程序不知道子程序接口的所有信息。通常采用的方式是将子程序放在模块中,然后在调用程序中,use,该模块。,例,9-1,使用不定结构的形参数组,4,精选课件ppt,9.2 SAVE,属性和语句,当离开过程后,过程中的所有局部变量和数组的值都成为未定义的值。,Fortran,提供了一种方式来保存在调用过程之间的局部变量和数组。例如定义局部变量:,任意在类型声明语句中初始化的局部变量都会被自动保存,例如:,5,精选课件ppt,Fortran,也提供了,SAVE,语句,任何列在,SAVE,语句中的局部变量都会在调用过程中保存;如果,SAVE,语句中没有变量,那么所有的局部变量都会被被保存起来。,任何共享数据的模块都应该使用,SAVE,语句保存数据,并通过,USE,语句使用该模块数据。,例,9-2,计算均值,注意,使用,save,仅在子程序中保留变量值,其值如果没有返回,则调用程序仍不可见该值。,6,精选课件ppt,9.3,过程中的动态数组,如果用,SAVE,属性来声明可分配数组,或者数组出现在一个,SAVE,语句中,那么数组只会在该过程第一次被调用的时候利用,ALLOCATE,语句分配一次内存。如果没有用,SAVE,属性来声明可分配数组,那么在每次调用过程的时候都必须用,ALLOCATE,语句给数组分配空间,,,当返回到调用程序的时,候,数组的内容会被自动地释放掉。,7,精选课件ppt,9.4,过程中的自动数组,Fortran 95/2003,提供了另外一种简单的方式在过程执行的时候自动创建临时数组,在过程执行到返回之后自动释放掉数组。这种数组被称为自动数组,(automatic arrays),。自动数组是局部的显式结构数组,它的下标由形式参数或者来自于模块的数据指定。,8,精选课件ppt,回顾一下不同的数组类型,:,1.,带有常数下标的显式结构数组,2.,形参数组,(1),显式结构形参数组。,9,精选课件ppt,(2),不定结构形参数组。,(3),不定大小的形参数组。,3.,自动数组,4.,预定义结构数组,10,精选课件ppt,9.5,在,Fortran 2003,过程中的可分配数组,在,Fortran 2003,的两点改变,:,(1),可以使用可分配形式参数,(2),函数可以返回可分配的值,9.5.1,可分配形式参数,如果,Fortran 2003,子程序有显式接口,那么对于子程序来说,它的形式参数可以是可分配的。如果声明形式参数为可分配的,那么用于调用子程序的相应实际参数也必须是可分配的。,11,精选课件ppt,形式参数可以有,INTENT,属性。,INTENT,属性可能影响到子程序的操作,:,(1),如果可分配参数具有,INTENT(IN),属性,那么不允许在子程序中对这个数组分配或者释放空间,数组中的值也不能被修改。,(2),如果可分配参数具有,INTENT(INOUT),属性,那么当调用子程序的时候,将会传递给它相应的实际参数的状态,(,是否可分配,),和数据。数组可以在子程序的任何位置被释放、重分配或者修改。形式参数的最终状态,(,是否可分配,),和数据将会返回给实际参数所在的调用程序。,12,精选课件ppt,(3),如果可分配参数具有,INTENT(OUT),属性,那么调用程序中的实际参数将会在入口处被自动地释放掉,实际数组中的所有数据都会丢失。子程序可以以任何方式来使用没有分配的参数,形式参数的最终状态,(,是否可分配,),和数据将会返回给实际参数所在的调用程序。,例,9-3,:说明可分配数组形式参数用法的程序,9.5.2,可分配函数,(Allocatable Functions),Fortran 2003,函数的返回值允许有,ALLOCATABLE,属性。在函数的入口不会分配返回变量。在函数内部每当需要的时候,可以分配和释放变量。但是返回之前必须分配和赋值。,13,精选课件ppt,例,9-4,:说明可分配函数用法的程序。,9.6,纯过程,(pure procedures),和逐元过程,(elemental procedures),9.6.1,纯过程,纯函数是没有任何副作用的函数。即,它们不会修改输入参数,不会修改任何在函数外部可见的其他数据,(,如模块中的数据,),,它的局部变量没有,SAVE,属性,不能在类型声明语句中初始化局部变量,(,因为这一初始化隐含有,SAVE,属性,),。任何被纯函数调用的过程也必须是纯过程。在纯函数中每个参数都必须定义为,INTENT(IN),,不能有任何外部文件,I/O,操作,不能包含,STOP,语句。,14,精选课件ppt,在函数语句中增加一个,PURE,前缀就可以定义纯函数。,纯子程序,(pure subroutine),是没有任何副作用的子程序。除了允许它们修改用,INTENT(OUT),或者,INTENT(INOUT),声明的参数外,它们的限制和纯函数是相同的。在,SUBROUTINE,语句中增加,PURE,前缀可以声明纯子程序。,15,精选课件ppt,9.6.2,逐元过程,逐元函数,(elemental functions),是为标量参数指定的函数。它也适用于数组参数。如果一个逐元函数的参数是标量,那么这个函数的返回值也是标量。如果函数的参数是数组,那么函数的返回值也是和输入参数相同结构的数组。,用户自定义的逐元函数必须是,PURE,函数,且满足,:,16,精选课件ppt,1.,所有的形式参数都必须是标量,不能带有,POINTER,属性。,2.,函数的返回值也必须是标量,不能带有,POINTER,属性。,3.,除了作为某种内置函数的参数,形式参数不能用在类型声明语句中。,在函数语句中增加一个,ELEMENTAL,前缀可以声明用户自定义逐元函数。,17,精选课件ppt,18,精选课件ppt,9.7,内部过程,除了外部过程,(external procedures),和模块过程,(module procedures),。还有第三种过程内部过程,(intemal procedures),。内部过程是完全包含在另一个被称为宿主程序单元,(host program unit,,,host),的过程中。内部过程和宿主一起编译,且只能从宿主程序单元中调用它。像模块过程一样,内部过程用,CONTAINS,语句来引入。内部过程必须跟在宿主过程的所有执行语句之后,而且必须用,CONTAINS,语句引入。,19,精选课件ppt,为什么要使用内部过程呢,?,在某些问题中,作为解决方案的一部分,有一些低级操作可能要重复执行。经定义内部过程未完成这些操作,可以简化这些低级操作。,例,9-5,:内部过程示例。,20,精选课件ppt,内部过程函数和外部过程有以下三方面的区别,:,(1),内部过程只能被宿主过程调用,程序中的其他过程不能访问它。,(2),内部过程的名字不能作为命令行参数传递给其他的过程。,(3),内部过程通过宿主关联,(host association),继承了宿主程序单元的所有数据实体,(,参数和变量,),,宿主程序单元中的所有参数和变量都可以在内部过程中使用。只有一种情况内部过程不能去访问定义在宿主程序中的数据,那就是在内部过程中定义了和宿主程序中的数据同名的数据。,21,精选课件ppt,此课件下载可自行编辑修改,供参考!,感谢您的支持,我们努力做得更好!,22,精选课件ppt,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服