六、控制語(yǔ)句
一般情況下, FORTRAN程序是按語(yǔ)句順序執(zhí)行的,但需要時(shí),可以改變這種順序。 這種改變可以通過(guò)各種控制轉(zhuǎn)移語(yǔ)句、邏輯條件語(yǔ)句等來(lái)實(shí)現(xiàn)。
(一)轉(zhuǎn)移語(yǔ)句
1.無(wú)條件轉(zhuǎn)移語(yǔ)句
無(wú)條件轉(zhuǎn)移語(yǔ)句的一般形式為:
GOTO n
當(dāng)程序流程到達(dá)GOTO語(yǔ)句時(shí),隨后就轉(zhuǎn)向語(yǔ)句標(biāo)號(hào)為n的語(yǔ)句。標(biāo)號(hào)為n的語(yǔ)句必須 是可執(zhí)行語(yǔ)句,但它在程序中的排列位置,可以在引導(dǎo)到它的GOTO語(yǔ)句之后,也可以 在該GOTO 語(yǔ)句之前。無(wú)條件轉(zhuǎn)移語(yǔ)句常和其他控制語(yǔ)句結(jié)合起來(lái)使用。
2.算術(shù)條件轉(zhuǎn)移語(yǔ)句
算術(shù)條件轉(zhuǎn)移語(yǔ)句的一般形式為:
IF (e) nl, n2, n3
其中, e必須是算術(shù)表達(dá)式,當(dāng)表達(dá)式運(yùn)算結(jié)果e<0時(shí),程序轉(zhuǎn)向標(biāo)號(hào)為n1的語(yǔ)句;當(dāng) e=0時(shí),轉(zhuǎn)向標(biāo)號(hào)為n2的語(yǔ)句;當(dāng)e>0時(shí),轉(zhuǎn)向標(biāo)號(hào)為n3的語(yǔ)句。
例如,計(jì)算邊長(zhǎng)為B的正方形中挖去半徑為R的圓后的面積,若B<2R,則給出相 關(guān)信息。該問(wèn)題的FORTRAN程序可用別遼條件轉(zhuǎn)移語(yǔ)句編寫(xiě)如下。
C Computation of area.
READ*B.R
IF (B-2*R) 5, 15, 15
5 WRITE (*, 10)
10 FORMAT (’Error message: B less than 2*R‘)
GOTO 20
15 AREA=B*B-3.14159*R*R
WRITE *AREA
20 CONTINUE
END
本例中,在算術(shù)條件轉(zhuǎn)移語(yǔ)句的第1個(gè)分支后,使用了GOTO語(yǔ)句;倘沒(méi)有此語(yǔ)句,則 程序按順序仍會(huì)執(zhí)行標(biāo)號(hào)為15的語(yǔ)句,從而得出不正確的結(jié)果。
一般情況下, FORTRAN程序是按語(yǔ)句順序執(zhí)行的,但需要時(shí),可以改變這種順序。 這種改變可以通過(guò)各種控制轉(zhuǎn)移語(yǔ)句、邏輯條件語(yǔ)句等來(lái)實(shí)現(xiàn)。
(一)轉(zhuǎn)移語(yǔ)句
1.無(wú)條件轉(zhuǎn)移語(yǔ)句
無(wú)條件轉(zhuǎn)移語(yǔ)句的一般形式為:
GOTO n
當(dāng)程序流程到達(dá)GOTO語(yǔ)句時(shí),隨后就轉(zhuǎn)向語(yǔ)句標(biāo)號(hào)為n的語(yǔ)句。標(biāo)號(hào)為n的語(yǔ)句必須 是可執(zhí)行語(yǔ)句,但它在程序中的排列位置,可以在引導(dǎo)到它的GOTO語(yǔ)句之后,也可以 在該GOTO 語(yǔ)句之前。無(wú)條件轉(zhuǎn)移語(yǔ)句常和其他控制語(yǔ)句結(jié)合起來(lái)使用。
2.算術(shù)條件轉(zhuǎn)移語(yǔ)句
算術(shù)條件轉(zhuǎn)移語(yǔ)句的一般形式為:
IF (e) nl, n2, n3
其中, e必須是算術(shù)表達(dá)式,當(dāng)表達(dá)式運(yùn)算結(jié)果e<0時(shí),程序轉(zhuǎn)向標(biāo)號(hào)為n1的語(yǔ)句;當(dāng) e=0時(shí),轉(zhuǎn)向標(biāo)號(hào)為n2的語(yǔ)句;當(dāng)e>0時(shí),轉(zhuǎn)向標(biāo)號(hào)為n3的語(yǔ)句。
例如,計(jì)算邊長(zhǎng)為B的正方形中挖去半徑為R的圓后的面積,若B<2R,則給出相 關(guān)信息。該問(wèn)題的FORTRAN程序可用別遼條件轉(zhuǎn)移語(yǔ)句編寫(xiě)如下。
C Computation of area.
READ*B.R
IF (B-2*R) 5, 15, 15
5 WRITE (*, 10)
10 FORMAT (’Error message: B less than 2*R‘)
GOTO 20
15 AREA=B*B-3.14159*R*R
WRITE *AREA
20 CONTINUE
END
本例中,在算術(shù)條件轉(zhuǎn)移語(yǔ)句的第1個(gè)分支后,使用了GOTO語(yǔ)句;倘沒(méi)有此語(yǔ)句,則 程序按順序仍會(huì)執(zhí)行標(biāo)號(hào)為15的語(yǔ)句,從而得出不正確的結(jié)果。