FORTRAN自定义函数返回值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FORTRAN自定义函数返回值相关的知识,希望对你有一定的参考价值。

function lamda_z(w,a)
implicit none
real*8 w,a
real*8 lamda_z(5)
lamda_z(1)=w-a
lamda_z(2)=w
lamda_z(3)=w
lamda_z(4)=w
lamda_z(5)=w+a
return
end
让这段函数返回值为一个一维数组这样写是否正确?如果正确在原函数怎样对返回数组中数据进行调用?

参考技术A implicit none
real*8 w,a
real*8 lamda_z(5)
w=2; a=3
call sub1(lamda_z,w,a)
write(*,*) w,a, lamda_z
end
! ---------------------------
subroutine sub1(lamda_z,w,a)
implicit none
real*8 w,a
real*8 lamda_z(5)
lamda_z(1)=w-a
lamda_z(2)=w
lamda_z(3)=w
lamda_z(4)=w
lamda_z(5)=w+a
return
end本回答被提问者采纳

什么是fortran函数

什么是fortran函数

参考技术A fortran是一种编程语言,跟C、C++一样,如果理解C函数或者C++函数的话,就就理解了这个 参考技术B 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命令。
自定义函数可以相互调用。调用时也需要事先声明。
总之,调用自定义函数前需要做声明,调用子程序则不需要。

参考资料:网上搜索《Fortran 95 程序设计》读书笔记

本回答被提问者采纳

以上是关于FORTRAN自定义函数返回值的主要内容,如果未能解决你的问题,请参考以下文章

R语言编写自定义函数基于ggsumarystats函数计算每个分组的统计值自定义可视化分组分面条形图,并在X轴标签下方添加分组对应的统计值(样本数N中位数median四分位数的间距iqr)

函数——生成器,面向过程编程,三元表达式,生成式,内置函数

Python基础学习四

fortran的数组定义

fortran 定义全局变量

Fortran函数,根据输入返回标量OR数组