大一程設
東華大學
東華大學資管系
基本程式概念
資管經驗分享
迴圈可以說是程式設計師在開發時不可或缺的工具,迴圈能夠讓我們反覆執行一段程式,直到條件失敗或是我們終止這個迴圈,讓他不再執行。
舉個實例,大家在玩遊戲時,除非你關閉遊戲,不然遊戲會一直執行,而一直執行這件事就是依靠迴圈。又或是今天你想算出 1 累加到 100 為多少,你也可以依靠迴圈幫你累加。
像這樣:
當然腦筋動得快的同學會說,這麼麻煩,直接梯形公式不就可以了嗎?幹嘛還要用到這個迴圈? 確實,這是最正確的思維,可是今天若只單純地用梯形公式,我們的程式會被限縮,他就只能這做這件事,但今天一個迴圈可能會做的事不只這一件,甚至是要利用其中的值來為我們做其他的運算,比方說,程式執行加到第 30 次的時候要印出,今天天氣真好,那就不可能用梯形公式做出來。
這就是為什麼要學習迴圈,因為程式能夠做擴充,而且能夠增加易讀性,真的是非常方便的工具,請一定要學起來。
tips: 很早就說過,程式語言很多事情語法是固定的沒有為什麼, for 就是最好的例子
語法格式:
解釋:
範例: 就以剛才 1 累加到 100 為例,我們來了解迴圈的運作。
次數 | ans | i值 |
---|---|---|
1 | ans = 0 + 1 | 1 |
2 | ans = 1 + 2 | 2 |
3 | ans = 3 + 3 | 3 |
4 | ans = 6 + 4 | 4 |
5 | ans = 10 + 5 | 5 |
6 | ans = 15 + 6 | 6 |
7 | ans = 21 + 7 | 7 |
100 | ans = 4950 + 100 | 100 |
這邊可能會比較疑惑的點是 ans 的地方,ans 會被反覆的更改,而我們講過「=」代表的是指派,所以每次會把上一次的值指派給 ans,把舊的蓋過去。
while 也是迴圈的一種,我們等等會來談談兩者的使用時機,我們先來看看 while 是什麼。
語法格式:
我們同樣用累加到 100 作為範例。
而這裡的初值、條件、步進與 for 完全相同,所以其實我們可以得到一個小結論,只要能用 for 寫的迴圈,就一定可以用 while 寫,因為只有一些語法的不同而已。
while的注意事項:
do-while 與 while 只有一點小差別,我們先看 do-while 的語法。
語法格式:
do-while 與 while 的差異在於,do-while 一定會執行迴圈一次,而 while 有可能不會執行,只要不滿足條件。 所以在 do 的這個範圍內代表的就是 while 的程式細節,只是我一定會先執行一次。所以可以看你遇到的需求適合用哪一種迴圈就使用哪一種。
舉個小例子,因為疫情都需要實名制,若是兩人或以上同行可以選擇只留下一個人的資料,但你不能不留資料(就表示一定要執行一次),透過這樣的思維,我們可以寫下如下的程式。
因為一定會執行一次,所以當程式執行時 8-17 行一定會執行一次,當 19 行的條件成立,再從 8 執行到 17 行,周而復始,直到條件不成立為止。
你會發現,用 do-while 有可能甚至不用初值,完全端看需求是什麼,相信這個例子能夠更幫大家了解 do-while 的內容。
兩個都是迴圈,能夠做到的事也相同,究竟差在哪裏呢? 就是使用時機,透過上面的例子我們可以發現,使用 for 的時候我們會先明訂我們會做幾次,但 while 卻不會,這也就是兩者的最大使用差異。
何時用 for ?
何時用 while ?
結論:兩種你都要會 orange
++
、--
相信在看迴圈時 ++
、--
這兩個運算子影響了不少人,雖然你明確的知道了他就是往上 +1,但其實它沒有想像中那麼簡單哦。
前置式 | 後置式 |
---|---|
先做++ -- 再取值 |
先取值,再做 ++ -- |
++i --i |
i++ i-- |
相信這樣看一定看不懂,我們直接舉例,
透過上面的表格,我們理解前置式跟後置式的差異,所以第三行後置式,先做取值再做 +1,所以我們先把 A 指派給變數 x,再把 A 做 +1 的動作,因此 x 會印出 5,A 會印出 6。 那前置式就同理可證。先做 +1 再指派。
無窮迴圈常常發生在遊戲開發中,因為你總不希望玩遊戲玩到一半忽然關掉吧。 for 跟 while 都有無窮迴圈的樣子,學過 if-else,你們覺得應該會長什麼樣子呢?
這邊看的出來,當條件恆成立的時候,我們就會一直執行迴圈內的內容,但是無窮迴圈不可能不終止掉的,你玩遊戲也會有想結束的時候,如果今天一個無窮迴圈沒有設立終止條件,你的電腦是會當機的。所以接下來我們來談談下面的關鍵字。
在談到迴圈,不可避免一定要提這兩個保留字,因為他是能夠幫我們終止迴圈的好幫手,我們馬上來談談。
break | continue |
---|---|
完全終止迴圈 | 終止這一次的迴圈,執行下一次 |
舉個例子
我相信應該不難理解吧!當 a > 10的時候,這個迴圈就會結束。
這應該也不難理解,當 a 是偶數的時候會進入第一個 if 判斷式,因為遇到 continue,所以第 6 行開始都不執行了,直接從第 3 行再來執行,因為 while(true) 條件必成立,就再執行下一次。
可以把程式碼 run 在自己的電腦上看看結果是什麼 你覺得 a 最後一個是印出 99 還是 101 呢? 答案可能不如你所想喔 orange