Fortran学习笔记6(函数、子程序)

本文介绍了Fortran中的函数和子程序,包括子程序的调用与参数传递,自定义函数的声明与返回值,以及全局变量的使用。强调了全局变量的限制,并提到了BLOCK DATA用于设置全局变量初值。建议避免使用COMMON,转而使用module进行数据共享。
摘要由CSDN通过智能技术生成


程序代码中,常常会在不同的地方重复用到某一功能和重复某一代码,这个时候就要使用函数。函数包括内嵌函数,自定义函数,子程序


子程序Subroutine

子程序之所以叫子程序,是因为在没有经过调用之前,它不会被执行。(当然,如果把编译器对主函数的调用也看做同样的话则另当别论。)

包含子程序的程序的格式:

program main 
......
......
call sub_1(...)
......
call sub_2(...)
......
end program main

subroutine sub_1(...)
...
end subroutine sub_1

subroutine sub_2(...)
...
end subroutine sub_2

主程序并不一定要放在最开始,它可以放在程序的任何地方(但是最好放在最开始或者结尾,如果你放在了一大段程序的中间……何苦为难自己!)子程序之间也可以互相调用。甚至可以自己调用自己,这个算法就叫递归,但是Fortran77不支持。调用语句为call

有关子程序,一个很重要的概念是,子程序独立的拥有属于自己的变量申明。主程序和子程序,不同的子程序之间的变量名可以相同,他们互不干扰。除了变量独立,子程序还独立拥有自己的行代码

在子程序的调用中会涉及到参数传递。Fortran中的参数传递使用的是传址调用。也就是说,实参和形参公用一块内存,两者改变其中之一,另一者也会发生变化,(其实是形参暂时的借住在实参家里。)


自定义函数Function

自定义函数的运行和上面的子程序没有什么两样,也需要调用才能被执行,也可以独立声明变量,参数传递的方法和子程序相同。尽管如此,自定义函数和子程序还是有两点不同:

  1. 调用自定义函数前要声明。
  2. 自定义函数调用后会返回一个数值

下面是一个简单的程序:用牛顿法来解方程。

program main
    implicit real*8(a-z)
    external f,g
    integer::max
    integer::i,k=1
    real*8::x0,x
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值