程序流程控制课件.ppt
8.3.6DO迴圈規則在使用DO迴圈時,需要注意迴圈的一些其他規則。比如,迴圈變數可以在循環體中被引用,但不應當再被賦值,即使迴圈變數的值保持不變。例如下麵的寫法都是不正確的,迴圈變數N和M不能在循環體內被重新賦值:DON=1,10……N=N*2……ENDDODOM=1,10……M=M……ENDDO8.3.7隱式DO迴圈隱式DO迴圈實際上是一種帶控制迴圈變數的DO迴圈,但簡化成只有DO迴圈的第一句,並且把關鍵字DO隱去。隱式DO迴圈的一般形式如下:I=m1,m2[,m3]其中,m1表示迴圈的初值;m2表示迴圈的終值;m3表示迴圈的增量。如果省略本項目,則默認為1。隱式DO迴圈不是一種可以獨立存在的語句。它只能作為輸入輸出列表的一個組成部分,用來控制重複讀寫的次數。它的應用形式如下:(I/O列表,迴圈變數名=迴圈初值,迴圈終值[,迴圈增值])8.4迴圈的控制在Fortran90/95標準中,引入了兩個控制迴圈執行流程的語句EXIT和CYCLE。這兩條語句實際上在某些Fortran77編譯器中早已被當成了不成文的標準之一了。8.4.1EXIT語句在實際變成種,有許多實際問題是無法預先知道迴圈次數的,比如一些數學和工程領域中的迭代演算法。對於這類問題,最常見的做法是給出一個判別條件。如果滿足這個判別條件就重複執行循環體,否則就退出迴圈。因此有條件迴圈時迴圈的執行次數不是固定的。傳統的做法是使用GOTO語句來使流程跳出迴圈,但這種方法不符合結構化程式設計的要求。針對這種情況,Fortran90/95通過引入EXIT語句來滿足結構化程式設計的要求。EXIT語句的作用是停止迴圈並使流程控制退出迴圈結構,因此又被稱為出口語句。該語句的一般形式如下:EXIT[DO構造名]8.4.2EXIT語句與條件迴圈通過DOWHILE語句來實現迴圈猜測,在這條DOWHILE語句中的邏輯判斷運算式就是簡單的邏輯真(TRUE)。這種用法是允許的,它表示當型迴圈的執行條件一直滿足,無須進行判斷。但是在使用時應該注意,在循環體內一定要提供跳出迴圈的手段,否則迴圈會一直執行下去形成死迴圈。下麵的代碼通過在判斷語句中加入EXIT語句,跳出迴圈。IF(Rchar==Gchar)EXIT如果用戶輸入的字元等於系統隨機得到的字元,則執行EXIT語句退出迴圈。如果用戶猜測的字元不正確,則會向用戶提示應該向哪個字元方向進行猜測。8.4.3EXIT語句與無條件迴圈除了應用於條件迴圈中用作迴圈退出的手段外,EXIT語句還可以應用於無條件迴圈中。當EXIT語句應用於無條件迴圈中時,如果迴圈變數大於迴圈終值或是與EXIT語句配合的邏輯運算式為真都會跳出迴圈的執行。這種應用通常用在無法預知迴圈執行的次數並且不知道迴圈退出條件是否能夠滿足的場合。比如,計算流體力學中求解流動問題時,通常採用這種方法來提供雙重的迴圈退出機制。由於這類問題的複雜性會涉及到計算方法、流動對象的網格好壞等因素,通常不知道該問題是否能夠收斂,也不知道需要計算多少步才能收斂。程式流程控制8.1演算法與流程要想充分利用電腦的高速計算能力來處理實際的問題,需要使用者能夠將問題抽象成計算能夠理解的電腦語言,也就是使用者應該編寫電腦程式的能力。那麼學習了一種電腦語言是否就具有了編程的能力呢?答案是否定的。使用者還需要具有將實際問題分解成一連串具體可操作步驟的能力。這就涉及到演算法的問題了。通常意義上的編程高手,不僅僅是指這個人對於某一門電腦語言有深入的研究,還指這個人在演算法上也有一定的造詣。8.1.1演算法學習一種電腦語言僅僅學習它的語法規則還不夠,更重要的是要學習如何針對各種類型的具體問題,制定行之有效的解決方法和操作步驟,也就是所謂的演算法(Algorithm)。只要學會了制定正確且有效的演算法,用何種高級電腦語言來編寫具體的電腦程式就僅僅只是一個工具選擇的問題了。因此,演算法的設計也是電腦程式設計的核心內容。需要注意的是,演算法這個詞所涉及的並不僅僅是計算的問題。演算法可以包括很多領域,泛指為解決實際而採取的方法和步驟。在英語中,計算方法和演算法是兩個詞。前者是“ComputationalMethod”,後者是“Algorithm”。計算方法更像通常意義上所理解的演算法,它指求解數值解的近似方法。實際的“演算法”一詞含義更為廣泛。它不僅僅指數值計算中的計算方法,還可以指事務處理中的規章流程、物資供應中的調配方法、糕點師傅製作蛋糕的技法等。而程式員所關心的,自然僅僅是指能夠在電腦上實現的演算法。8.1.2