例如,有如下一个程序:
READ*,M
GOTO(20;30,40,50)M
20 N=M
GOTO 60
30 N=M*2
GOT0 60
40 N=M*3
GOT0 60
50 N=M*4
60 WRITE*,N
END
程序运行时,若输入1,则转向标号为20的语句,X的值为1;若输入2,则转向标号为30的语句,X的值为4;输入3,转向标号为40的语句,X的值为9,输入4,转向标号为50的语句,X的值为16。
(二)逻辑条件语句
1.逻辑IF语句
逻辑IF语句用来实现选择结构。它的一般形式为:
IF(逻辑表达式) 内嵌语句
其中内嵌语句是单独的一个可执行语句。逻辑IF语句执行时,首先计算逻辑表达式的值,如果逻辑表达式的值为“真”,则执行内嵌语句,若内嵌语句非转移语句,则执行该语句后继续按顺序往下执行,若内嵌语句是转移语句,则转向指定的语句;如果逻辑表达式的值为“假”,则不执行内嵌语句,而直接执行该语句后面的语句。
例如,从键盘读人一个代表百分制成绩的数据,如果数据在90—100之间就输出
‘Excellent’,在80—89之间输出‘Good’,在60—79之间输出‘Pass’,在60以下则输出‘Not pass’。其程序可以如下编写:
READ(*.*)IPOINT
IF(1POINT.GT.100.OR.IPOINT.LT.0) WRITE(*,*)’DATAERROR’
1F(1POINT.GE.90.AND.IPOINT.LE.100) WRITE(*,*)’Excellent’
IF(1POINT.GE.80.AND.IPOINT.LT.89) WRITE(*,*)’Good’
IF(1POINT.GE.60.AND.IPOINT.LT.79) WRITE(*,*)’Pass’,
, IF(1POINT.GE.0.AND.IPOINT.LT.59) WRITE(*,*)’Not Pass’
END
2.块IF结构的各种形式
(1)块IF和ENDIF形式
IF(逻辑表达式)THEN
语句块
ENDIF
当逻辑表达式的值为“真”时,执行语句块,否则按顺序执行ENDIF后的语句。例如,
如下程序段:
READ*,RN,AN
IF(RN.GE.0.0.AND.AN.GT.0.0)THEN
STRESS=RN/AN
WRITE*,RN,AN,STRESS
END
当RN大于等于零且AN大于零时,执行赋值语句和输出语句。
(2)使用ELSE的形式
IF(逻辑表达式)THEN
语句块1
ELSE
语句块2
ENDIF.
当逻辑表达式的值为“真”时,执行语句块1,当逻辑表达式的值为“假”时,执行语句块2。由此可见,使用ELSE的形式,可以进行两个分支的选择。
(3)使用ELSE IF的形式
IF(逻辑表达式1)THEN
语句块1
ELSE IF(逻辑表达式2)THEN
语句块2
ELSE
语句块3
ENDIF
这种形式,允许在三个分支中作出选择。当逻辑表达式1的值为“真”时,执行语句块1表示的分支;当逻辑表达式1的值为“假”而逻辑表达式2的值为“真”时,执行语句块2表示的分支;当逻辑表达式1的值和逻辑表达式2的值均为“假”时,执行语句块3表示的分支。
3.块IF结构的嵌套
在一个块IF结构的语句块中,可以完整地包含另一个或多个块IF结构,称为块IF 的嵌磁。块的嵌套可以多层。