94學年度第一學期 東海大學物理系‧資訊教育 施奇廷 C語言的流程控制 94學年度第一學期 東海大學物理系‧資訊教育 施奇廷
何謂流程控制 程式的進行,主要是依照原始碼的順序由上而下依序執行的,然而有時會視需要改變其順序,此時由流程控制的指令來告訴電腦,應以何種順序來執行指令 流程控制有三種:條件判斷、迴圈、以及呼叫函數(式)。本節將討論前面兩種,函數將另章討論
Example: 單一流程的程式
需要條件判斷的程式
條件判斷:if 由上面的例子可以看出,有些時候我們需要視不同的狀況而採取不同的對策。對程式而言,則是依不同的條件選擇執行不同的指令 語法一: { 指令一; 指令二; …… } 練習:寫作一程式,要求使用者輸入一個字元,若此字元為數字則輸出:「這是一個數字!」。
條件判斷:if-else 語法二: if(條件) { } else 指令五… 條件是否為真? 指令一; 指令二; …… 指令三; 指令四; 指令一、二…… 指令三、四…… 指令五…… 練習:寫作一程式,要求使用者輸入一個字元,若此字元為大寫字母則將之改為小寫後顯示於螢幕上,否則不變更該字元直接輸出。
練習 寫作一程式,輸入一整數後,可判斷其是否為3的倍數
條件判斷:if-else if-else 條件一是否為真? 語法二: 否 是 條件二是否為真? 指令一…… 否 是 指令二…… 指令三…… { 指令一; …… } else if(條件二) 指令二; else 指令三; 指令四… 否 是 條件二是否為真? 指令一…… 否 是 指令二…… 指令三…… 指令四……
練習 輸入一字元,若為大寫字母則改為小寫後輸出,若為小寫字母則改為大寫後輸出,其他情況則不做修改直接輸出
習題: 寫作一程式,可以解一元二次方程式: 之解,使用者輸入 a, b, c 後,判斷該方程式為二相異實數解、二相同實數解、以及無實數解之狀況。注意 a=0 之情況亦需要另外處理。
流程圖 程式開始 顯示:請輸入a,b,c 由鍵盤讀取a,b,c N a=0? Y 判別式<0? N b=0? N Y 判別式0? Y x=-c/b 輸出:Not a equation! 輸出:No real root 解出二重根 解出二相 異實跟 輸出:x=…… 程式結束
數學函數 在這個習題中,你必須用到「開根號」這個功能,使用方法是: 如果你有兩個變數 x, y,而 ,指令即為「x=sqrt(y);」 編譯時,必須用「cc –lm 檔名.f」,-lm參數表連結至數學函式庫的指令