Fortran语言基础 - 图文 联系客服

发布时间 : 星期四 文章Fortran语言基础 - 图文更新完毕开始阅读f58fff49fe4733687e21aa93

山东建筑大学

integer :: i,j integer :: t do i=1, size-1 do j=i+1, size

if ( a(i) > a(j) ) then ! a(i)跟a(j)交换 t=a(i) a(i)=a(j) a(j)=t end if end do end do

write(*,\ stop end

例 矩阵乘法

program ex0719 implicit none

integer, parameter :: L=3, M=4, N=2 real :: A(L,M) = (/ 1,2,3,4,5,6,7,8,9,10,11,12 /) real :: B(M,N) = (/ 1,2,3,4,5,6,7,8 /) real :: C(L,N) integer :: i,j,k do i=1,L do j=1,N C(i,j) = 0.0 do k=1,M

C(i,j) = C(i,j)+A(i,k)*B(k,j) end do end do end do

41

数值分析程序设计——Fortran基础

do i=1,L write(*,*) C(i,:) end do stop end

42

山东建筑大学

6 函数(FUNCTION)

在程序代码中,经常会在不同的地方需要重复某一个功能和重复使用某一段程序,这个时候就可以使用函数。函数是自定义函数和子程序的统称。

6.1 子程序(SUBROTINE)

写程序时,可以把某一段常被使用的具有特定功能的程序代码独立出来,封装成子程序,以后只要经过调用CALL命令就可以执行这一段程序代码。看一个实例:

program ex0801 implicit none

call message() ! 调用子程序message call message() stop end

! 子程序message subroutine message() implicit none write(*,*) \ return end

程序执行结果: Hello. Hello.

子程序和主程序(以program开始,end来结束的程序代码)的最大不同在于:主程序的程序代码,在程序一开始就自动被执行,而子程序则不会自动执行,它需要被别人调用才会执行。

子程序的程序代码以Subroutine开头,同样需要取一个名字,以end或end subroutine结束。子程序的名字比主程序的名字重要的多,它是识别子程序的标

43

数值分析程序设计——Fortran基础

志。

一个包含子程序的Fortran程序在结构上的模样大致如下: program mian !主程序 {程序代码}

end program main !主程序结束 subroutine sub1() !第一个子程序 {程序代码}

end subroutine sub1 !第一个子程序结束 subroutine sub2() !第二个子程序 {程序代码}

end subroutine sub2 !第二个子程序结束

主程序并不一定放在程序代码的开头,它可以安排在程序中的任意位置,可以先写子程序再写主程序。

子程序可以在程序的任何地方被别人调用,甚至可以自己调用自己,这个操作称为“递归”。子程序的详细使用方法请参考FORTRAN的帮助文件。

关于子程序还有一个重要的概念:子程序独立地拥有属于自己的变量声明。

program ex0803 implicit none integer :: a = 1 call sub1()

write(*,\ stop

end program ex0803 subroutine sub1() implicit none integer :: a=2 write(*,\ return

end subroutine sub1

44