四、循環(huán)語旬
(一)DO語句
DO語句的一般形式為:
DO n V = el, e2, e3
n循環(huán)體
其中,n為語句標(biāo)號(hào);V為循環(huán)控制變量,它只能是簡(jiǎn)單變量(整型或?qū)嵭? ,不能是表 達(dá)式; el, e2, e3分別為循環(huán)控制變量的初值、終值與增量(步長(zhǎng)) ,它們都可以是表達(dá) 式,當(dāng)e3為1時(shí)可以省略不寫。循環(huán)體是若干語句的集合,其中最后一個(gè)語句稱為循環(huán) 終端語句;若循環(huán)體只有一個(gè)語句,則該語句也就是終端語句。終端語句必須有標(biāo)號(hào)n。
在DO循環(huán)執(zhí)行時(shí),首先計(jì)算表達(dá)式el, e2, e3的值,并將它們化為與循環(huán)控制變 量V的類型一致;然后將初值賦給循環(huán)控制變量v,并計(jì)算需要循環(huán)的次數(shù);最后根據(jù) 循環(huán)次數(shù)重復(fù)執(zhí)行循環(huán)體中的語句,并每次執(zhí)行完循環(huán)體后,將循環(huán)控制變量增值一次, 循環(huán)次數(shù)減少一次。當(dāng)循環(huán)次數(shù)為零時(shí),則結(jié)束循環(huán),轉(zhuǎn)向程序規(guī)定的下一個(gè)語句。
(二)繼續(xù)語句CONTINUE
CONTINUE是一個(gè)可執(zhí)行語句,其功能是使程序的流程繼續(xù)到邏輯上的下一個(gè)語句。
FORTRAN 77規(guī)定,循環(huán)終端語句必須是一個(gè)可執(zhí)行語句,但不能是GOTO語句、 塊IF語句、ELSE語句、ELSE IF 語句、ENDIF語句、00語句、S語句、END語 句。由于這些限制,通常用CONTINUE 語句作為循環(huán)的終端語句。當(dāng)然, CONTINUE 語句也可用在其他場(chǎng)合。
(三)循環(huán)嵌套
使用循環(huán)嵌套可以實(shí)現(xiàn)多重循環(huán)。這時(shí)應(yīng)注意各重循環(huán)的層次和循環(huán)變量的關(guān)系。例如,編寫一個(gè)計(jì)算乘法表的程序段,可以寫為:
DO 10 1=1, 9
DO 8 J=l, 9
IJ = I*j
8 CONTINUE
10 CONTINUE
本例中,外層循環(huán)控制變量I初值為1,終值為9,內(nèi)層循環(huán)控制變量J初值為外層循環(huán) 控制變量I的當(dāng)前值,終值為9。外層的第1次循環(huán),內(nèi)層經(jīng)過9-1+1=9次循環(huán),依次 計(jì)算1×1=1,1×2=2,…,1×9=9,外層的第2次循環(huán),內(nèi)層經(jīng)過9-2+1=8次循 環(huán),依次計(jì)算2×2=4, 2×3=6,…, 2×9 = 18……
(四)使用循環(huán)語句應(yīng)注意的若干問題
1.正確選定循環(huán)變量的初值。比如,對(duì)累加問題和連乘問題,變量初值不正確,使 影響最終結(jié)果。
例如計(jì)算m=l!十2! +……十10! ,采用循環(huán)語句編寫程序,涉及到累加和連乘。 其程序可編寫如下:
m=0
n=1
DO 20 I= 1, 10
n=n×I
m=m十n
20 CONTINUE
PRINT*,m
END
例中, n用于存放連乘結(jié)果,其初值設(shè)定為1,而m用于存放累加結(jié)果,其初值設(shè)定為0。
2. DO語句可以和轉(zhuǎn)換語句,條件語句等結(jié)合起來使用,此時(shí)應(yīng)注意從循環(huán)體內(nèi)可以 轉(zhuǎn)向循環(huán)體外,但不允許從循環(huán)體外轉(zhuǎn)向循環(huán)體內(nèi);從內(nèi)層循環(huán)中可以轉(zhuǎn)向外層循環(huán),但 不允許從外層循環(huán)轉(zhuǎn)向內(nèi)層循環(huán)中。
3.當(dāng)內(nèi)外層循環(huán)體的終端語句相同,且兩個(gè)終端語句之間沒有其他語句時(shí),可以合 并使用一個(gè)終端語句。例如,前面計(jì)算乘法表的程序段可以寫為:
DO 10 I=1. 9
DO 10J=I,9
IJ = I*j
10 CONTINUE
或?qū)憺?BR> DO 10 I=1,9
00 10 J=I, 9
10 IJ=I*J
(一)DO語句
DO語句的一般形式為:
DO n V = el, e2, e3
n循環(huán)體
其中,n為語句標(biāo)號(hào);V為循環(huán)控制變量,它只能是簡(jiǎn)單變量(整型或?qū)嵭? ,不能是表 達(dá)式; el, e2, e3分別為循環(huán)控制變量的初值、終值與增量(步長(zhǎng)) ,它們都可以是表達(dá) 式,當(dāng)e3為1時(shí)可以省略不寫。循環(huán)體是若干語句的集合,其中最后一個(gè)語句稱為循環(huán) 終端語句;若循環(huán)體只有一個(gè)語句,則該語句也就是終端語句。終端語句必須有標(biāo)號(hào)n。
在DO循環(huán)執(zhí)行時(shí),首先計(jì)算表達(dá)式el, e2, e3的值,并將它們化為與循環(huán)控制變 量V的類型一致;然后將初值賦給循環(huán)控制變量v,并計(jì)算需要循環(huán)的次數(shù);最后根據(jù) 循環(huán)次數(shù)重復(fù)執(zhí)行循環(huán)體中的語句,并每次執(zhí)行完循環(huán)體后,將循環(huán)控制變量增值一次, 循環(huán)次數(shù)減少一次。當(dāng)循環(huán)次數(shù)為零時(shí),則結(jié)束循環(huán),轉(zhuǎn)向程序規(guī)定的下一個(gè)語句。
(二)繼續(xù)語句CONTINUE
CONTINUE是一個(gè)可執(zhí)行語句,其功能是使程序的流程繼續(xù)到邏輯上的下一個(gè)語句。
FORTRAN 77規(guī)定,循環(huán)終端語句必須是一個(gè)可執(zhí)行語句,但不能是GOTO語句、 塊IF語句、ELSE語句、ELSE IF 語句、ENDIF語句、00語句、S語句、END語 句。由于這些限制,通常用CONTINUE 語句作為循環(huán)的終端語句。當(dāng)然, CONTINUE 語句也可用在其他場(chǎng)合。
(三)循環(huán)嵌套
使用循環(huán)嵌套可以實(shí)現(xiàn)多重循環(huán)。這時(shí)應(yīng)注意各重循環(huán)的層次和循環(huán)變量的關(guān)系。例如,編寫一個(gè)計(jì)算乘法表的程序段,可以寫為:
DO 10 1=1, 9
DO 8 J=l, 9
IJ = I*j
8 CONTINUE
10 CONTINUE
本例中,外層循環(huán)控制變量I初值為1,終值為9,內(nèi)層循環(huán)控制變量J初值為外層循環(huán) 控制變量I的當(dāng)前值,終值為9。外層的第1次循環(huán),內(nèi)層經(jīng)過9-1+1=9次循環(huán),依次 計(jì)算1×1=1,1×2=2,…,1×9=9,外層的第2次循環(huán),內(nèi)層經(jīng)過9-2+1=8次循 環(huán),依次計(jì)算2×2=4, 2×3=6,…, 2×9 = 18……
(四)使用循環(huán)語句應(yīng)注意的若干問題
1.正確選定循環(huán)變量的初值。比如,對(duì)累加問題和連乘問題,變量初值不正確,使 影響最終結(jié)果。
例如計(jì)算m=l!十2! +……十10! ,采用循環(huán)語句編寫程序,涉及到累加和連乘。 其程序可編寫如下:
m=0
n=1
DO 20 I= 1, 10
n=n×I
m=m十n
20 CONTINUE
PRINT*,m
END
例中, n用于存放連乘結(jié)果,其初值設(shè)定為1,而m用于存放累加結(jié)果,其初值設(shè)定為0。
2. DO語句可以和轉(zhuǎn)換語句,條件語句等結(jié)合起來使用,此時(shí)應(yīng)注意從循環(huán)體內(nèi)可以 轉(zhuǎn)向循環(huán)體外,但不允許從循環(huán)體外轉(zhuǎn)向循環(huán)體內(nèi);從內(nèi)層循環(huán)中可以轉(zhuǎn)向外層循環(huán),但 不允許從外層循環(huán)轉(zhuǎn)向內(nèi)層循環(huán)中。
3.當(dāng)內(nèi)外層循環(huán)體的終端語句相同,且兩個(gè)終端語句之間沒有其他語句時(shí),可以合 并使用一個(gè)終端語句。例如,前面計(jì)算乘法表的程序段可以寫為:
DO 10 I=1. 9
DO 10J=I,9
IJ = I*j
10 CONTINUE
或?qū)憺?BR> DO 10 I=1,9
00 10 J=I, 9
10 IJ=I*J