六、程式語言與邏輯 教學實例 --重複(迴圈)結構
自我介紹 報告人: 學歷: 經歷: 國立鳳新高中 電腦教師 林光耀 Email: fcsh412@yahoo.com.tw 學歷: 國立台灣師範大學資訊教育研究所暑期 四十學分班畢業(85級) 國立台灣師範大學資訊教育系畢業(78級) 經歷: 國立鳳新高中 專任電腦教師 (83.8~迄今) 國立華南高商 資料處理科教師 (78.8~83.7)
軟體使用建議 本教學實例建議使用 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)的安裝程式。
目 次 1 前 言 2 for迴圈 3 前測式迴圈--while敘述 4 後測式迴圈--do-while敘述 目 次 1 前 言 2 for迴圈 3 前測式迴圈--while敘述 4 後測式迴圈--do-while敘述 5 break與continue敘述 6 無窮迴圈 7 實例
1 前 言 撰寫程式時,有某些敘述片段需重複執行多次 ,為避免相同的程式片段重複撰寫,C語言將重複執行的敘述片段改用「迴圈敘述」編寫。 可縮短程式長度。程式易維護。增加可讀性。 此種架構稱為「重複結構」或「迴圈結構」。 譬如,設計累加一個數值、九九乘法表、矩陣的相加或相乘、密碼輸入檢查等程式,這些都是重複一樣的計算或判斷,都可以透過迴圈來完成。
1 前 言 例右圖密碼檢查的流程圖: 若密碼正確,則進入系統繼續往下執行;反之,密碼輸入錯誤,再重新輸入密碼,一直詢問到輸入的密碼正確為止。
2 for迴圈 C語言提供三種迴圈敘述: for、while、do-while敘述。
2.1 for的迴圈敘述 for迴圈是使用: 初始運算式、條件運算式、控制運算式、 來完成重複計數的工作。 語法如下:
例:計算1+2+3總和的for迴圈 執行過程與流程圖對照如下:
2.1 for的迴圈敘述 若有兩個以上條件運算式時,必須所有條件運算式都成立時,才執行迴圈內的敘述區段,否則離開迴圈。
2.2 for的用法簡例 例1依序顯示1~10數字,間距為1。
2.2 for的用法簡例 例2 若有多個條件運算式時,以逗號隔開,而且所有條件運算式必須全部滿足,才能執行迴圈內的敘述。
2.2 for的用法簡例 例3列印10,9,8,7,6,5,4,3,2,1, 可以有下面四種寫法:
2.3 for巢狀迴圈 程式中如果一個for迴圈內,還需要再執行另一個重複的動作,此種迴圈內還有迴圈,一層一層有如洋蔥一般,由內而外即構成一個『for巢狀迴圈』。 使用巢狀迴圈時要注意,每個迴圈都必須使用自己對應的迴圈控制變數,迴圈和另一個迴圈範圍不可以交叉,只能一個迴圈包圍一個迴圈。 例如用for巢狀迴圈來印出九九乘法表的結果。執行結果及流程圖如下:
2.3 for巢狀迴圈 兩個常見的for巢狀迴圈範例:
2.3 for巢狀迴圈 練習:使用for巢狀迴圈顯示ASCII碼 0~127的字元,每列10個,如下圖。
2.3 for巢狀迴圈 程式碼片段:
3 前測式迴圈-- while敘述 若事先不確定迴圈要重複執行多少次,使用while及do-while迴圈會較為方便。 此類迴圈無迴圈控制變數,而是靠一個條件運算式來判斷是否停止迴圈,若條件運算式的結果不為零(真),迴圈內敘述區段將再執行一次。 此種迴圈內的敘述區段必須能改變條件運算式的結果方能離開迴圈,否則會變成無窮迴圈;若運算式結果為零(假),則離開迴圈。
3 前測式迴圈-- while敘述 由於while迴圈是將判斷條件運算式置於迴圈的最開頭屬前測式迴圈,若ㄧ開始便不滿足條件,迴圈內的敘述區段連一次都不會執行。 語法如下:
3 前測式迴圈-- while敘述 範例:輸入一整數n。輸出每列顯示5個1到100之間可被n整除的整數,並統計共有多少個整數。執行結果及流程圖如下:
4 後測式迴圈-- do-while敘述 後測迴圈do-while是將條件運算式置於迴圈的最後面,因此一開始就先執行迴圈內的敘述一次,接著再檢查while後面的條件運算式。 當結果不為零(真)會再執行迴圈內的敘述一次, 一直到結果為零(假)才會離開迴圈。 要注意while(條件運算式)後面必須加上一個「;」分號。其語法如下:
4 後測式迴圈-- do-while敘述 範例:輸入一整數n。輸出n!(階乘)的計算值。 執行結果及流程圖如下:
5 break與continue break與continue敘述可在for、while、do-while迴圈內的敘述區段中使用。 如下圖,執行到continue敘述時,會直接返回到迴圈的cond條件運算式,忽略接在continue後面的敘述區段,並判斷是否繼續執行迴圈。
5 break與continue 範例:在某些特殊狀況下,可利用 break敘述強制中途跳離for迴圈。
6 無窮迴圈 如果迴圈的條件運算式永遠不為零(表示真),則會形成無窮迴圈,程式將無法停止,此時欲中斷執行可按下 Ctrl + C 鍵強迫程式中止執行。 因此撰寫無窮迴圈內的程式片段必須有改變條件的敘述才能離開無窮迴圈。 下面三種為無窮迴圈常見的寫法:
6 無窮迴圈 範例: 輸入兩整數。回答兩數相加結果,輸出若答案正確則詢問是否繼續,若錯誤則要求重新回答到答案正確為止。執行結果及流程圖如下:
7 實例 7.1 終極密碼遊戲 猜測由程式以亂數產生一個介於1~99之間的整數。逐次輸出提示再大或再小若答案正確則詢問是否繼續,若錯誤則要求重新回答直到答案正確為止。
執行結果及 流程圖如下
7 實例 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。
謝謝! 敬請指教! 謹以拙見拋磚引玉 祝福各位先進 廣義集思 教學如意!