if条件语句

Fortran中使用条件语句if(<condition>)then来表示某条语句在满足条件时被执行,其中<condition>必须是一个逻辑值。

单分支

if结构中的语句只有一行时,可是省略thenend if,写为一行

program main
   implicit none
   integer::angle
   angle=10
   if (angle < 90) then
      write(*,*)"锐角"
   end if
   !等价形式
   if(angle < 90) write(*,*)"锐角" 
end program main
$ fpm run
 锐角
 锐角
  • 在 if 结构中缩进代码是一种很好的做法,以使代码更具可读性。

两个分支

当有两个分支时,需要增加else语句或else if语句

program main
   implicit none
   integer::angle
   angle=90
   if (angle < 90) then
      write(*,*)"锐角"
   else
      write(*,*)"不是锐角"
   end if
   !
   if (angle < 90) then
      write(*,*)"锐角"
   else if(angle == 90) then
      write(*,*)"直角"
   end if
end program main
$ fpm run
 不是锐角
 直角
  • 注意else if后面还有一个then

多个分支

可以使用多个else if一直连接下去

program main
   implicit none
   integer::angle
   angle=120
   if (angle < 90) then
      write(*,*)"锐角"
   else if(angle == 90) then
      write(*,*)"直角"
   else if(angle < 180) then
      write(*,*)"钝角"
   else if(angle == 180) then
      write(*,*)"平角"
   end if
end program main
$ fpm run
 钝角
  • Fortran中的if语句并没有短路机制,所以例如if( i <= 10 .and. a(i) > 1) ,数组a的大小为10,这样的语法并不能保证在运行时不出错。
program main
   implicit none
   integer::a(10)
   integer::i
   i=11
   a=2
   if (i<=10 .and.a(i)>1)then
      write(*,*)"hello"
   end if
end program main
$ fpm run
At line 7 of file app/main.f90
Fortran runtime error: Index '11' of dimension 1 of array 'a' above upper bound of 10