06-Fortran基础--Fortran模块化编程


  Fortran的模块化编程是一种组织和管理代码的方法,它包括模块的定义和使用、接口和模块间通信以及模块化编程的优势。

1 模块的定义和使用

  1.1模块定义: 使用MODULE关键字创建模块,并在其中定义变量、子程序和其他对象。

MODULE my_module
    IMPLICIT NONE
    INTEGER :: var1
    REAL :: var2

    CONTAINS
    SUBROUTINE my_subroutine()
        ! ...
    END SUBROUTINE my_subroutine
END MODULE my_module

  1.2 模块使用: 在主程序或其他模块中使用USE语句引用模块,并访问其中定义的变量和子程序。

PROGRAM main_program
    USE my_module
    IMPLICIT NONE
    var1 = 10
    var2 = 3.14
    CALL my_subroutine()
END PROGRAM main_program

2 接口和模块间通信

  2.1 接口: 可以在模块中定义接口来规定子程序的输入、输出参数和返回值,以提高代码的可读性和安全性。

MODULE my_module
    INTERFACE
        SUBROUTINE my_subroutine(input_var, output_var)
            REAL, INTENT(IN) :: input_var
            REAL, INTENT(OUT) :: output_var
        END SUBROUTINE my_subroutine
    END INTERFACE
END MODULE my_module

  2.2 模块间通信: 模块间通信可以通过在模块中定义共享的变量、使用USE语句引用其他模块来实现。

3 模块化编程的优势:

  • 可读性: 模块化编程使得代码结构更清晰,易于理解和阅读。
  • 可维护性: 将代码分成模块,使得修改和更新变得更加简单和安全。
  • 封装性: 模块可以包含私有成员,限制了对模块内部的访问,提高了代码的封装性和安全性。
  • 重用性: 模块化编程使得代码中的模块可以在不同的项目中被重复使用,提高了代码的可重用性。
  • 避免命名冲突: 模块化编程可以避免全局命名空间的污染和命名冲突,增强了代码的健壮性。

4 模块使用示例

  假设有一个模块文件 my_module.f90:

module my_module
    implicit none
    private ! module下所有定义啊变量、函数都默认私有属性(也就是仅能在本模块使用)
    public :: cal_pi ! 声明下面的方法公有(表明可以被外部调用)
    public :: my
    
    ! 模块类(将module下同属一个类下的方法进行合并)
    type :: my_type
        
    contains
        procedure,nopass :: cal_pi
        procedure,nopass :: cal_area
    end type my_type
    type(my_type) :: my
    
    contains
    
    ! 计算pi
    function cal_pi()result(res) ! 模块方法1
        implicit none
        real(8) :: res
        
        res = 4.d0 * atan(1.d0)
    end function cal_pi
    
    ! 计算面积
    function cal_area(v,h)result(res) ! 模块方法2
        implicit none
        real(8),intent(in) :: v,h
        real(8) :: res
        
        res = v*h
    end function cal_area
    
end module my_module

  然后,在主程序文件 main_program.f90 中使用这个模块:

program test_module
	implicit none
    use my_module
    
    print *,"计算pi",cal_pi() ! cal_pi是public属性,可以被直接调用
    
    print *,"计算矩形面积",my%cal_area(5.d0,4.d0) ! cal_area定义在my下面,没有Public属性,只能通过“my%”这种方式调用

end program 

运行结果:

5 结语

  上面简单介绍了Fortran Module的使用,掌握Module的基础知识对后续的面向对象编程有益处,后续如果想到有其他的有关知识或内容会在此基础上进行补充。

相关推荐

  1. MacOS命令行运行fortran程序|编程私教解答

    2024-05-12 23:34:04       28 阅读
  2. Fortran入门(一)(期末复习)

    2024-05-12 23:34:04       30 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-12 23:34:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-12 23:34:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-12 23:34:04       82 阅读
  4. Python语言-面向对象

    2024-05-12 23:34:04       91 阅读

热门阅读

  1. list转成tree返回前端

    2024-05-12 23:34:04       28 阅读
  2. MATLAB--Sequences & Series II

    2024-05-12 23:34:04       32 阅读
  3. LVM逻辑卷管理之快照 —— 筑梦之路

    2024-05-12 23:34:04       28 阅读
  4. vue组件循环依赖

    2024-05-12 23:34:04       30 阅读
  5. 物联网系统

    2024-05-12 23:34:04       32 阅读