六、程式語言與邏輯 教學實例

33
六六六六六六六 六六六六 -- 六六 ( 六六 ) 六六

description

六、程式語言與邏輯 教學實例. -- 重複 ( 迴圈 ) 結構. 報告人: 國立鳳新高中 電腦教師 林光耀 Email: [email protected] 學歷: 國立台灣師範大學資訊教育研究所暑期 四十學分班畢業 (85 級 ) 國立台灣師範大學資訊教育系畢業 (78 級 ) 經歷: 國立鳳新高中 專任電腦教師 ( 83.8~ 迄今 ) 國立華南高商 資料處理科教師 ( 78.8~83.7 ). 自我介紹. 軟體使用建議. 本教學實例建議使用 Dev C++ 5.0(beta 9) 整合環境。 - PowerPoint PPT Presentation

Transcript of 六、程式語言與邏輯 教學實例

Page 1: 六、程式語言與邏輯 教學實例

六、程式語言與邏輯教學實例

-- 重複 (迴圈 )結構

Page 2: 六、程式語言與邏輯 教學實例

自我介紹 報告人:

國立鳳新高中 電腦教師 林光耀 Email: [email protected]

學歷:國立台灣師範大學資訊教育研究所暑期

四十學分班畢業 (85 級 )國立台灣師範大學資訊教育系畢業 (78 級 )

經歷:國立鳳新高中 專任電腦教師 (83.8~ 迄今 )國立華南高商 資料處理科教師 (78.8~83.7)

Page 3: 六、程式語言與邏輯 教學實例

本教學實例建議使用 Dev C++ 5.0(beta 9) 整合環境。

您可直接連上網頁http://prdownloads.sourceforge.net/dev-cpp/devcpp-4.9.9.2_setup.exe?use_mirror=jaist 下載 Dev C++ 5.0(Beta 9) 的安裝程式。

軟體使用建議

Page 4: 六、程式語言與邏輯 教學實例

目 次1 前 言2 for 迴圈3 前測式迴圈 --while 敘述4 後測式迴圈 --do-while 敘述5 break 與 continue 敘述6 無窮迴圈7 實例

Page 5: 六、程式語言與邏輯 教學實例

1 前 言

撰寫程式時,有某些敘述片段需重複執行多次,為避免相同的程式片段重複撰寫, C語言將重複執行的敘述片段改用「迴圈敘述」編寫。

可縮短程式長度。程式易維護。增加可讀性。此種架構稱為「重複結構」或「迴圈結構」。譬如,設計累加一個數值、九九乘法表、矩陣的相加或相乘、密碼輸入檢查等程式,這些都是重複一樣的計算或判斷,都可以透過迴圈來完成。

Page 6: 六、程式語言與邏輯 教學實例

例右圖密碼檢查的流程圖:

若密碼正確,則進入系統繼續往下執行;反之,密碼輸入錯誤,再重新輸入密碼,一直詢問到輸入的密碼正確為止。

1 前 言

Page 7: 六、程式語言與邏輯 教學實例

2 for 迴圈

C 語言提供三種迴圈敘述:for 、 while 、 do-while 敘述。

若迴圈的次數可預知, for 敘述是最好的選擇。例如大隊接力競賽。

若迴圈次數無法確定,則可使用 while 、do-while 敘述來達成。例如大富翁遊戲。

Page 8: 六、程式語言與邏輯 教學實例

2.1 for 的迴圈敘述

for 迴圈是使用: 初始運算式、條件運算式、控制運算式、 來完成重複計數的工作。語法如下:

Page 9: 六、程式語言與邏輯 教學實例

例:計算 1+2+3總和的 for 迴圈執行過程與流程圖對照如下:

2.1 for 的迴圈敘述

Page 10: 六、程式語言與邏輯 教學實例

若有兩個以上條件運算式時,必須所有條件運算式都成立時,才執行迴圈內的敘述區段,否則離開迴圈。

2.1 for 的迴圈敘述

Page 11: 六、程式語言與邏輯 教學實例

2.2 for 的用法簡例例 1依序顯示 1~10數字,間距為 1。

Page 12: 六、程式語言與邏輯 教學實例

例 2若有多個條件運算式時,以逗號隔開,而且所有條件運算式必須全部滿足,才能執行迴圈內的敘述。

2.2 for 的用法簡例

Page 13: 六、程式語言與邏輯 教學實例

例 3列印 10,9,8,7,6,5,4,3,2,1, 可以有下面四種寫法:

2.2 for 的用法簡例

Page 14: 六、程式語言與邏輯 教學實例

2.3 for 巢狀迴圈

程式中如果一個 for 迴圈內,還需要再執行另一個重複的動作,此種迴圈內還有迴圈,一層一層有如洋蔥一般,由內而外即構成一個『 for巢狀迴圈』。

使用巢狀迴圈時要注意,每個迴圈都必須使用自己對應的迴圈控制變數,迴圈和另一個迴圈範圍不可以交叉,只能一個迴圈包圍一個迴圈。

例如用 for巢狀迴圈來印出九九乘法表的結果。執行結果及流程圖如下:

Page 15: 六、程式語言與邏輯 教學實例
Page 16: 六、程式語言與邏輯 教學實例

2.3 for 巢狀迴圈兩個常見的 for 巢狀迴圈範例:

Page 17: 六、程式語言與邏輯 教學實例

2.3 for 巢狀迴圈練習:使用 for 巢狀迴圈顯示 ASCII 碼 0~127 的字元,每列 10個,如下圖。

Page 18: 六、程式語言與邏輯 教學實例

程式碼片段:2.3 for 巢狀迴圈

Page 19: 六、程式語言與邏輯 教學實例

3 前測式迴圈 -- while 敘述若事先不確定迴圈要重複執行多少次,使用while及 do-while 迴圈會較為方便。

此類迴圈無迴圈控制變數,而是靠一個條件運算式來判斷是否停止迴圈,若條件運算式的結果不為零 (真 ) ,迴圈內敘述區段將再執行一次。

此種迴圈內的敘述區段必須能改變條件運算式的結果方能離開迴圈,否則會變成無窮迴圈;若運算式結果為零 (假 ) ,則離開迴圈。

Page 20: 六、程式語言與邏輯 教學實例

由於 while 迴圈是將判斷條件運算式置於迴圈的最開頭屬前測式迴圈,若ㄧ開始便不滿足條件,迴圈內的敘述區段連一次都不會執行。

語法如下:

3 前測式迴圈 -- while 敘述

Page 21: 六、程式語言與邏輯 教學實例

範例:輸入一整數 n。輸出每列顯示 5個 1到100 之間可被 n 整除的整數,並統計共有多少個整數。執行結果及流程圖如下:

3 前測式迴圈 -- while 敘述

Page 22: 六、程式語言與邏輯 教學實例
Page 23: 六、程式語言與邏輯 教學實例

4 後測式迴圈 -- do-while 敘述後測迴圈 do-while是將條件運算式置於迴圈的最後面,因此一開始就先執行迴圈內的敘述一次,接著再檢查 while後面的條件運算式。

當結果不為零 (真 )會再執行迴圈內的敘述一次,一直到結果為零 (假 ) 才會離開迴圈。

要注意 while(條件運算式 )後面必須加上一個「 ;」分號。其語法如下:

Page 24: 六、程式語言與邏輯 教學實例

範例:輸入一整數n。輸出 n!(階乘)的計算值。執行結果及流程圖如下:

4 後測式迴圈 -- do-while 敘述

Page 25: 六、程式語言與邏輯 教學實例
Page 26: 六、程式語言與邏輯 教學實例

5 break 與 continuebreak 與 continue 敘述可在 for 、 while 、 do-while 迴圈內的敘述區段中使用。

如上圖,當執行到 break敘述時,會跳離迴圈繼續執行接在迴圈後面的敘述。

如下圖,執行到 continue敘述時,會直接返回到迴圈的 cond 條件運算式,忽略接在 continue 後面的敘述區段,並判斷是否繼續執行迴圈。

Page 27: 六、程式語言與邏輯 教學實例

5 break 與 continue範例:在某些特殊狀況下,可利用

break 敘述強制中途跳離 for迴圈。

Page 28: 六、程式語言與邏輯 教學實例

6 無窮迴圈如果迴圈的條件運算式永遠不為零 ( 表示真 ) ,則會形成無窮迴圈,程式將無法停止,此時欲中斷執行可按下 Ctrl + C 鍵強迫程式中止執行。

因此撰寫無窮迴圈內的程式片段必須有改變條件的敘述才能離開無窮迴圈。

下面三種為無窮迴圈常見的寫法:

Page 29: 六、程式語言與邏輯 教學實例

範例:輸入兩整數。回答兩數相加結果,輸出若答案正確則詢問是否繼續,若錯誤則要求重新回答到答案正確為止。執行結果及流程圖如下:

6 無窮迴圈

Page 30: 六、程式語言與邏輯 教學實例

7 實例7.1 終極密碼遊戲猜測由程式以亂數產生一個介於 1~99 之間的整數。逐次輸出提示再大或再小若答案正確則詢問是否繼續,若錯誤則要求重新回答直到答案正確為止。

Page 31: 六、程式語言與邏輯 教學實例

執行結果及流程圖如下

Page 32: 六、程式語言與邏輯 教學實例

7.2 統計各類字元個數 由鍵盤輸入任意字元,按 Esc鍵結束。輸出統計所輸入的各類字元個數。執行結果如右:在 C 語言的 ctype.h標頭檔中有函式可供判斷字元類別。

數字: isdigit(int c)英文字母: isalpha(int c) 大寫英文: isupper(int c) 小寫英文: islower(int c)標點符號: ispunct(int c) 控制字元: iscntrl(int c) Esc鍵的 ASCII碼為 27。

7 實例

Page 33: 六、程式語言與邏輯 教學實例

謝謝 !敬請指教 !謹以拙見拋磚引玉

祝福各位先進 廣義集思 教學如意 !