-
(1)可以用轉(zhuǎn)移控制語(yǔ)句使流程從循環(huán)體內(nèi)轉(zhuǎn)移到循環(huán)體外,但不允許從循環(huán)體外轉(zhuǎn)到循環(huán)體內(nèi)。如下圖7.3.1所示。
圖7.3.1
(2)循環(huán)控制變量在循環(huán)體內(nèi)不能再被賦以新值。
如:
DO 10 I=1,10
I=3*I
10 WRITE(*,*)I
是不允許的。
(3)當(dāng)循環(huán)重復(fù)次數(shù)為零時(shí),不執(zhí)行循環(huán)體。如:
DO 4 J=4,2,1
4 WRITE(*,100)
6 WRITR(*,200)
S
100 FORMAT(2X,’******’)
200 FORMAT(2X,’######’)
END
程序輸出結(jié)果為: ######
(4)IF塊、ELSE IF塊、ELSE塊可以包含DO語(yǔ)句,但DO循環(huán)的范圍必須整個(gè)部分被分別包括在IF塊、ELSE IF塊、ELSE塊內(nèi)。
如:
S=0
DO 10 I=1,100
T=1.0
READ(*,*)N
IF(N.GT.0)THEN
DO 20 K=1,N
20 T=T*K
ELSE
T=N
END IF
10 S=S+T
WRITE(*,*)S
END
以上程序就是輸入100個(gè)整數(shù),要求計(jì)算其中正數(shù)的階乘,并求出它們和輸入的全部負(fù)數(shù)之和。
(5)CONTINUE語(yǔ)句。
許多可執(zhí)行語(yǔ)句可以作為DO循環(huán)的終端語(yǔ)句,但GOTO語(yǔ)句、塊IF、ELSE、ELSEIF、END IF、算術(shù)IF、END等不能作為循環(huán)的終端語(yǔ)句。為了使流程引向它的下一個(gè)語(yǔ)句繼續(xù)執(zhí)行,可以采用CONTINUE語(yǔ)句,它稱為繼續(xù)語(yǔ)句或空語(yǔ)句,是一個(gè)可執(zhí)行語(yǔ)句,但不進(jìn)行任何操作。如求20!,可如下編程:
DOUBLE PRECISION C
C=1.0
DO 10 N=2.20
C=C*N
10 CONTINUE
WRITE (*,100) C
100 FORMAT(2X,’C=’,D18.12)
END
(1)可以用轉(zhuǎn)移控制語(yǔ)句使流程從循環(huán)體內(nèi)轉(zhuǎn)移到循環(huán)體外,但不允許從循環(huán)體外轉(zhuǎn)到循環(huán)體內(nèi)。如下圖7.3.1所示。
圖7.3.1
(2)循環(huán)控制變量在循環(huán)體內(nèi)不能再被賦以新值。
如:
DO 10 I=1,10
I=3*I
10 WRITE(*,*)I
是不允許的。
(3)當(dāng)循環(huán)重復(fù)次數(shù)為零時(shí),不執(zhí)行循環(huán)體。如:
DO 4 J=4,2,1
4 WRITE(*,100)
6 WRITR(*,200)
S
100 FORMAT(2X,’******’)
200 FORMAT(2X,’######’)
END
程序輸出結(jié)果為: ######
(4)IF塊、ELSE IF塊、ELSE塊可以包含DO語(yǔ)句,但DO循環(huán)的范圍必須整個(gè)部分被分別包括在IF塊、ELSE IF塊、ELSE塊內(nèi)。
如:
S=0
DO 10 I=1,100
T=1.0
READ(*,*)N
IF(N.GT.0)THEN
DO 20 K=1,N
20 T=T*K
ELSE
T=N
END IF
10 S=S+T
WRITE(*,*)S
END
以上程序就是輸入100個(gè)整數(shù),要求計(jì)算其中正數(shù)的階乘,并求出它們和輸入的全部負(fù)數(shù)之和。
(5)CONTINUE語(yǔ)句。
許多可執(zhí)行語(yǔ)句可以作為DO循環(huán)的終端語(yǔ)句,但GOTO語(yǔ)句、塊IF、ELSE、ELSEIF、END IF、算術(shù)IF、END等不能作為循環(huán)的終端語(yǔ)句。為了使流程引向它的下一個(gè)語(yǔ)句繼續(xù)執(zhí)行,可以采用CONTINUE語(yǔ)句,它稱為繼續(xù)語(yǔ)句或空語(yǔ)句,是一個(gè)可執(zhí)行語(yǔ)句,但不進(jìn)行任何操作。如求20!,可如下編程:
DOUBLE PRECISION C
C=1.0
DO 10 N=2.20
C=C*N
10 CONTINUE
WRITE (*,100) C
100 FORMAT(2X,’C=’,D18.12)
END