C 語言初學教材 - 第三章 狀態 目錄

程式執行可能會像是這樣




「開始」執行後,就進入「選擇」的框框,若是往「工作 B 」的方向,工作 B 執行完就繼續往底下走,若是選擇往「工作 A 」的方向,工作 A 執行完可能會執行「工作 C 」的框框,工作 C 執行完要不繼續重複執行工作 C ,要不就繼續往下走。


這是說明程式設計大體上可以分為三種結構,分別是循序結構 (sequence structure) 、選擇結構 (selection structure) 及重複結構 (repetition structure) ,這便是結構化程式設計 (structured programming) 的概念,下圖用流程圖的方式畫出三種結構



C 語言函數內的執行方式,便是預設為循序結構,例如,我們曾經依序呼叫函數 printf()
printf("\n\n今天是 %d 月 %d 日\n", month, day);
    printf("現在是上午 %d:%d\n", hour, min);
    printf("哈囉, %s!\n\n", name);


依陳述的順序,從上而下,一個陳述執行完,再去執行另一個陳述,這便是循序結構。


選擇結構如 if 陳述,或 if-else 陳述,可以作為程式執行的分流,也可以組合成巢狀的 if-else結構。


這一章中,我們繼續發展猜數字遊戲,包括利用狀態控制遊戲


else 後面也可以直接加上 if 陳述,形如 if-else if-if- .... else 的多重選擇機制,我們也已經遇見過另一個多重選擇的 switch-case


巢狀的 if-else 陳述不宜太複雜,我們先來看看如何簡化巢狀的 if-else


猜數字遊戲的目前版本都只能執行一次猜一次,答案也無法固定,我們可以加入 for 迴圈多猜幾次,就猜固定一個答案。


用了迴圈,就得小心無窮迴圈的陷阱


遊戲是用時間函數回傳的秒數當答案,其實,我們可以建立自己的亂數表,既然有了亂數表,我們就來發展另一個擲骰子遊戲吧!


迴圈其實還有後測試迴圈前測試迴圈之別,處理字串的迴圈也很常用,當然,也存在迴圈中的迴圈


我們最後以使用者帳號的登入程式這一章講解迴圈最後的例子,其中也用到二維陣列,這是說陣列也可以當做陣列的元素。


問題與討論
  1. 程式可以分為哪三種結構?
  2. 哪些方式可以做到多重選擇?
  3. C 語言有幾種迴圈?試舉例說明。
  4. 什麼是無窮迴圈?
  5. 為什麼處理字串要用迴圈?
  6. 什麼是二維陣列




沒有留言: