判断是最小的条件执行结构:条件表达式为真时执行一小段语句,为假时直接越过这一段。相关数学记号可写作。
判断结构的核心是把一个能得到真或假的logical表达式放在if后面。Fortran不把普通整数自动当作真假条件,条件位置应写关系表达式、逻辑变量或逻辑表达式。
块状simple if的结构是if(条件)then开始,以end if结束。then到end if之间的语句属于受控语句块,只有条件为真时才执行。
- 语法位置:if后面放条件表达式,then表示受控语句块开始。
- 条件类型:条件表达式的结果应为logical,即.true.或.false.。
- 执行规则:同一次判断中,程序只沿着满足条件的路径继续。
本文代码
! 简单if用于条件成立时执行一小段语句。
program simpleIfDemo
implicit none
real :: temperatureCelsius
temperatureCelsius=38.5
print "(A)","简单if:"
print "(A,F6.2)","温度=",temperatureCelsius
if (temperatureCelsius>37.3) then
print "(A)","判断结果:温度高于常用发热阈值。"
end if
end program simpleIfDemo
编译运行
(base) hong@hongdeMacBook-Pro 020.simpleIf % gfortran exampleSimpleIf.f90
(base) hong@hongdeMacBook-Pro 020.simpleIf % ./a.out
简单if:
温度= 38.50
判断结果:温度高于常用发热阈值。
结果分析
本例先把temperatureCelsius设为38.5,然后用temperatureCelsius>37.3作为if条件。38.5>37.3,因此条件表达式的值为真,程序执行then到end if之间的输出语句。
如果把temperatureCelsius改成36.8,条件表达式会变为假,此时if块内部语句不会执行。simple if的重点不是“判断后一定输出”,而是“条件成立才执行被包住的语句”。
常见注意
- 不要把if条件写成普通数值表达式;Fortran条件位置需要logical结果。
- 多个else if分支有先后顺序,前面条件成立后,后面的分支不会再检查。
- end if的作用是结束整个判断结构,不是结束某一条print语句。
知识点总结
- 条件表达式的结果必须是logical,即真或假。
- simple if只有一个受控语句块,没有else分支。
- 当条件为假时,if块内部语句不执行,程序继续执行end if后面的语句。