一般來說一個復雜的程序邏輯可以歸入以下三種結構之一:順序結構(從上往下逐行執行,每句都執行)、分支結構(有條件地執行某語句,并非每句都執行)、循環結構(反復執行相同或相似的代碼)。不同的結構,代碼的語法結構也是各不相同,今天和大家一起聊一聊常見的循環語句。
在實際問題當中會遇到有規律的重復性操作,對應到程序中就需要重復執行某些語句,一組被重復執行的語句稱之為循環體。目前較流行的編程語言(C、Java、Python)當中有三種類型的循環語句:for語句、while語句和dowhile語句。在循環語句結構中有三個要素:循環變量的初始化、循環的條件(以循環變量為基礎)、循環變量的改變(向著循環的結束變化)。
在循環語句練習中經常有同學會問小陳老師while語句和dowhile語句的區別,今天我也著重講一下兩者的區別以及注意事項。
首先對比一下圖片中左右段代碼的區別,并思考一下運行后輸出的結果是否相同,從中我們不難看出兩者初始變量num值都為1,循環的條件都為num小于10,循環變量的更新也是num每次增加1,并且輸出的語句都是一樣的,所以兩者運行輸出后的結果都為1-10。
如果對兩段代碼的循環條件稍加改變,將num<10改為num<0。運行的結果就完全不相同了,左邊while代碼運行后不輸出任何東西,右邊dowhile代碼運行后輸出數字1。


這是為什么呢?其實,最關鍵的原因在于循環過程中執行的順序,在while循環中,num1首先被賦值為1,其次會對num1進行一個判斷查看num1是否小于0,如果num1小于0不執行循環體內容,直接結束循環,輸出結果為空。
在dowhile循環中,num2首先被賦值為1,直接執行循環體中的內容,輸出數字1,最后進行判斷num2是否小于0,如果小于0結束循環。
所以while循環和dowhile循環運行的結果可能是相同的,但是在特殊的環境下也存在運行結果不相同的情況。
簡單總結,while循環會首先判斷一個條件是否滿足,如果條件滿足,則執行后面緊跟著的語句或語句括號,然后再次判斷條件是否滿足,如果條件滿足則再次執行,直到條件不滿足為止。dowhile循環和while循環很像,唯一的區別是在循環體執行結束的時候才來判斷條件。也就是說,無論如何,循環都會執行至少一遍,然后再來判斷條件。