迴圈

 

最能展現計算機 (電腦) 威力的程式指令,應該迴圈了。電腦能以極快的速度作單純的算術,因此 如果我們能夠把要處理或解決的數學等運算轉化成可以重複執行的迴圈,那麼電腦就能以令人驚嘆的效率完成它。

最簡單的一種迴圈寫法如下,若我們要做1到10的整數連加,則:

ISUM=0

DO I=1,10

ISUM=ISUM+I

END DO

Tip:把 DO-loop 之內圈的指令寫縮進去是故意的 (要不要這樣做都可以 ),如此可以讓程式的迴圈結構看起來非常清楚。

 

另一種迴圈的寫法,常被用於在迴圈內的指令很長的時候,

DO 1000,I=1,100

很多行套在迴圈中的指令

1000  CONTINUE

它的好處自然是讓迴圈的起始及終止都比較明顯 。

 

兩個或多個迴圈可以套在一起而形成巢狀迴圈,如下:


DO J=1,100

DO I=1,10

A = A + B(I,J)

END DO

END DO

 

Tip:FORTRAN 是 column wise(直欄取向),因此其資料的排列的連續性是與汽機里程表相反的走向跳動 (1,1)→(2,1)→(3,1),即多格數碼在跳動時是最靠左手邊的跳最頻繁。如此不同的巢狀 DO-loop 順序會影響速度。

DO I=1,100

DO J=1,100

C(I,J)=A(I,J)+B(I,J)

END DO

END DO

DO J=1,100

DO I=1,100

C(I,J)=A(I,J)+B(I,J)

END DO

END DO

上面右手邊的巢狀迴圈,以 I 在內圈的作法,由於 A(I,J) , B(I,J) 讀取的記憶能連續進行,因此會比較快。

 

 

補充:執行迴圈內的指令直到 判斷條件 滿足為止。(小心邏輯錯誤員造成無限迴圈)

DO WHILE (判斷條件)

END DO