什么是fortran函数

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/03 03:53:25

什么是fortran函数
什么是fortran函数

什么是fortran函数
Fortran中函数分两类:子程序(subroutine)和自定义函数(function).自定义函数本质上就是数学上的函数,一般要传递自变量给自定义函数,返回函数值.子程序不一定是这样,可以没有返值.传递参数要注意类型的对应,这跟C是一样的.
1、子程序
目的:把某一段经常使用的有特定功能的程序独立出来,可以方便调用.
习惯上一般都把子程序放在主程序结束之后.
形式:
subroutine name (parameter1,parameter2)
!给子程序起一个有意义的名字.可以传递参数,这样可以有返回值.括号内也可以空着,代不传递参数.
implicit none
integer::parameter1,parameter2 !需要定义一下接收参数的类型.
…… !接下来的程序编写跟主程序没有任何别.
……
mreturn !跟C不同,这里表示子程序执行后回到调用它的地方继续执行下面的程序.不一定放
!在最后.可以放在子程序的其他位置,作用相同;子程序中return之后的部分不执行.
end [subroutine name]
调用:使用call命令直接使用,不需要声明.在调用处写:
call subroutine name(parameter1,parameter2)
注意点:
a.子程序之间也可相互调用.直接调用就是了,像在主程序中调用子程序一样.
b.传递参数的原理和C中不同.Fortran里是传址调用(call by address/reference),就是传递时用参数和子程序中接收时用的参数使用同一个地址,尽管命名可以不同.这样如果子程序的执行改子程序中接收参数的值,所传递的参数也相应发生变化.
c.子程序各自内部定义的变量具有独立性,类似于C.各自的行代码也具有独立性.因此各个子程序主程序中有相同的变量名、行代码号,并不会相互影响.
2、自定义函数
和子程序的明显不同在于:需要在主程序中声明之后才能使用.调用方式也有差别.另外按照惯例用函数不去改变自变量的值.如果要改变传递参数的值,习惯上用子程序来做.
声明方式:real,external ::function_name
一般自定义函数也是放在主程序之后.
形式:
function function_name(parameter1,parameter2)
implicit none
real::parameter1,parameter2 !声明函数参数类型,这是必需的
real::function_name !声明函数返回值类型,这是必需的
……
……
function_name=….!返回值的表达式
return
end
也可以这样直接声明返回值类型,简洁些:
real function function_name(parameter1,parameter2)
implicit none
real::parameter1,parameter2 !这个还是必需的
……
……
function_name=….!返回值表达式
return
end
调用:function_name(parameter1,parameter2)
不需要call命令.
自定义函数可以相互调用.调用时也需要事先声明.
总之,调用自定义函数前需要做声明,调用子程序则不需要.