第五章 迴 圈結構
description
Transcript of 第五章 迴 圈結構
![Page 1: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/1.jpg)
第五章 迴圈結構 第五章
迴圈結構
![Page 2: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/2.jpg)
本章學習目標
1. 讓讀者瞭解迴圈結構種類、語法及適用時機。
2. 說明計數迴圈與條件式迴圈的差異。
![Page 3: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/3.jpg)
本章內容
5-1. 計數迴圈5-2. for 迴圈5-3 巢狀迴圈 for 的使用5-4 條件迴圈 (Do/Loop)5-5. while 迴圈5-6 do/while 迴圈5-7 break 與 continue 敘述
![Page 4: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/4.jpg)
前言 (1/3)
日常生活中,有許多事都是具有重覆性,例如一天有 24 小時,一星期有七天,同一門課要上18 次才能拿到學分,一個大學學位可以要修132 個學分才能拿到,諸如此類問題,如果只靠人工處理必定是一件非常煩工作。
因此可以利用程式設計來解決此類所面臨問題。一般而言,可把一再重複動作,全部交由電腦處理,因此驅使電腦做這樣事情的方式,就是迴圈(Loop) ,亦即讓某一段程式反覆執行多次的敘述,稱之為「迴圈結構」。
![Page 5: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/5.jpg)
前言 (2/3)
![Page 6: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/6.jpg)
前言 (3/3)
![Page 7: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/7.jpg)
5-1 計數迴圈 (1/2)
計數迴圈可以想像成一個「計數器」,你設定多少次,此迴圈就會執行多少次。在 VC#2008 中計數迴圈又可分為下列兩種:
1. for 迴圈:是單層次的迴圈結構2. 使用時機:適用於「單一變數」的重覆變化。 典型例子: 1+2+3+…+10
![Page 8: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/8.jpg)
5-1 計數迴圈 (2/2)
(2) 巢狀迴圈 for 的使用:是多層次的迴圈結構 使用時機:適用於「兩個或兩個以上變數」的重覆變化。典型例子:九九乘法表
![Page 9: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/9.jpg)
5-2 for 迴圈 (1/7)
![Page 10: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/10.jpg)
5-2 for 迴圈 (2/7)
![Page 11: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/11.jpg)
5-2 for 迴圈 (3/7)
![Page 12: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/12.jpg)
5-2 for 迴圈 (4/7)
【使用時機】已知程式執行次數固定且重覆時,使用此種迴圈最適合。
【 流 程 圖 】 當 程 式 執 行 「 敘 述一 」 之 後 , 可 重 新 執 行 「 敘 述二」,直到條件式不成立為止。如圖 5-3 所示:
![Page 13: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/13.jpg)
5-2 for 迴圈 (5/7)
![Page 14: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/14.jpg)
5-2 for 迴圈 (6/7)
![Page 15: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/15.jpg)
5-2 for 迴圈 (7/7)
![Page 16: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/16.jpg)
5-3 巢狀迴圈 for 的使用 (1/6)
定義:指迴圈內還有其他的迴圈,稱為巢狀迴圈(Nested Loop) 。因為它像鳥巢一樣,是由一層層組合而成。
![Page 17: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/17.jpg)
5-3 巢狀迴圈 for 的使用 (2/6)
![Page 18: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/18.jpg)
5-3 巢狀迴圈 for 的使用 (3/6)
![Page 19: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/19.jpg)
5-3 巢狀迴圈 for 的使用 (4/6)
![Page 20: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/20.jpg)
5-3 巢狀迴圈 for 的使用 (5/6)
![Page 21: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/21.jpg)
5-3 巢狀迴圈 for 的使用 (6/6)
![Page 22: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/22.jpg)
5-4 條件迴圈 (Do/Loop) (1/3)
如果不能預先知道迴圈次數的話,則必須要使用條件迴圈來解決。例如王媽媽第一天給小明 10 元,第二天給 20 元,第三天給 30 元,請問小明要儲存到 5000 元需要多少天?諸如此類題目,最好使用條件式迴圈比較容易處理,如果使用計數迴圈(For) 來處理的話,將會增加程式複雜度。
一般而言,條件迴圈有下面兩種: 1. 前測試迴圈 ( 先判斷再執行 )2. 後測試迴圈 ( 先執行再判斷 )
![Page 23: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/23.jpg)
5-4 條件迴圈 (Do/Loop) (2/3)
![Page 24: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/24.jpg)
5-4 條件迴圈 (Do/Loop) (3/3)
![Page 25: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/25.jpg)
5-5 while 迴圈 (1/7)
如果預先已知道了迴圈執行次數,使用 for 計數迴圈是一個很好選擇,但事實並非永遠如此。如果不能預先知道迴圈次數的話,使用 while 迴圈會是一個好選擇。 while 迴圈是屬於前測試迴圈,當條件式「成立(True) 」時,則執行迴圈敘述。
![Page 26: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/26.jpg)
5-5 while 迴圈 (2/7)
![Page 27: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/27.jpg)
5-5 while 迴圈 (3/7)
![Page 28: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/28.jpg)
5-5 while 迴圈 (4/7)
![Page 29: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/29.jpg)
5-5 while 迴圈 (4/7) -1
![Page 30: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/30.jpg)
5-5 while 迴圈 (5/7)
雖然上面例子,似乎無法明顯看出 while 迴圈優點,但是有些時候使用 for 迴圈並不容易描述想做的事情,例如如果想要知道 2的多少次方才會大於 1,000 ,由於事先並不知道到底是多少,所以很難設定 for 迴圈之中的變數值,勉強去用也會顯得很累贅,但是如果改用 while 迴圈,就會變得很簡單:
實例 1 :求 2 的多少次方才會大於 1,000呢?
![Page 31: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/31.jpg)
5-5 while 迴圈 (6/7)
![Page 32: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/32.jpg)
5-5 while 迴圈 (7/7)
![Page 33: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/33.jpg)
5-6 do/while 迴圈 (1/3)
do/while 是屬於後測試迴圈,當條件式「 成立 (True) 」時,則執行迴圈敘述。
![Page 34: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/34.jpg)
5-6 do/while 迴圈 (2/3)
![Page 35: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/35.jpg)
5-6 do/while 迴圈 (3/3)
![Page 36: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/36.jpg)
5-7 break 與 continue 敘述
break 與 continue 敘述主要是應用在 for 與while 迴圈當中,其中 break 敘述的目的就是用來中斷程式的執行動作。而 continue敘述則是用來繼續執行某一動作。
![Page 37: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/37.jpg)
5-7.1 break 敘述 (1/2)
break 敘述會使程式強迫跳離迴圈,繼續執行迴圈外下一個敘述,若其出現在巢狀迴圈內,則跳離該層迴圈,而 break 敘述在for 與 while 迴圈中的比較如下:
![Page 38: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/38.jpg)
5-7.1 break 敘述 (2/2)
此行執行不到
![Page 39: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/39.jpg)
5-7.2 continue 敘述 (1/2)
continue 則是強迫程式跳到迴圈的起頭,當遇到其敘述時,停止執行迴圈主體,而到迴圈的開始處繼續執 行 , 而 continue 敘 述 在 for 與while 迴圈中的比較如下:
![Page 40: 第五章 迴 圈結構](https://reader033.fdocuments.net/reader033/viewer/2022051416/5681367d550346895d9e091a/html5/thumbnails/40.jpg)
5-7.2 continue 敘述 (2/2)