当前位置:首页 > Fortran语言基础 - 图文
山东建筑大学
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
共分享92篇相关文档