2022年3月22日 星期二

C 電腦語言的條件式判斷

 基本學習目標:

1. 如何使用條件式判斷,按不同情況執行不同的指令?(使用if...else語句)

2. 如何測試程式是否正確輸出?


參考視頻: https://youtu.be/i4KoiLOyBLE


參考以下範例:

以下範例是讓使用者輸入一個分數,然後進行判斷。

如分數等於或大於60的話,輸出passed(合格)

說明:

說明

7

這句判斷式的意思是如果score(分數)的值等於或大於60的話

7-9

這是if條件判斷式的標準寫法。

if (判斷語句)後要加{ } 如果符合if內的判斷句的情況(即為真),便執行{ }內的指令。

8

在這一範例中,if 內祇有一句指令敍述,即輸出passed。其實按需要可以寫多行指令的,沒有限制。

提示: 如果if 內祗有一句指示的話,其實{ }是可以省略的。

 

如何測試程式是否正確輸出?

          - 程式選寫後,要進行測試的。要輸入甚麼數值來測試以上程式輸出是否準確?

          - 最好的判斷準則是用原來題目所標示的,即以下條件,不要用程式內的語句(if (score>=60)),因為可能這句指令也出錯!

                   " 如分數等於或大於60的話,輸出passed(合格)"

          - 根據以上條件,最佳的測試分數自然是6060以上任何一個數字及60以下任何一個數字。起碼應使用3個數字用測試,因為有可能自己把符號也不小心用錯了,例如用了if (score=60),用60測試的話,仍可輸出正確,但其實是用錯了。(特別提示,如要標示分數等於60的話,應用 score==60,而不是score=60)

          - 測試結果應如下:

輸入測試的數值

輸出結果

說明

60

passed

根據原來要求

59 (60以下)

沒有輸出

沒有要求不達60分的話要輸出甚麼,程式內也沒有撰寫,因此沒有輸出。

61 (60以上)

passed

根據原來要求

 

 

再參考以下範例,雖然多了一些語句,但應該也不難理解。

說明

10-12

如不符合第7if內的判斷描述的話(score 不是等於或大於60),便執行10-12行的指令。

留意,else 後的標準寫法是有{ }的,但如祇有一句指令的話,{ }也是可以省略的。

 

如果ifelse之內祇有一句指令敍的話,其實可省略{ }的,但強烈建議,應善用縮排方式,例如第8及第10行,把if else 所屬的指令內縮一些,否則不易觀察程式的作用。

 

如果有多重條件判斷,例如要根據以下分數判斷從而輸出不同等級,又如何做?

分數

等級

10分以下

D

10 - 49

C

50 - 70

B

71 - 100

A

 

以下是其中一個建議寫法,祇用了以上曾用過的運算子(>=)及指令( if ...else)完成。

如要測試以上的程式是否正確,又要輸入甚麼數字?

 

以上的方法稱為「巢狀的判斷式」。

 

但同學會否覺得以上的寫法不太容易理解,其實還有其他的寫法的,不過要多學習一些符號及寫法,如下:

說明:

1. &&的意思是andif (score >=10 && score<50)的意思是如果score的值大於或等於10 及少於50的話,即是於10-49分的範圍。

2. 以上的寫法似乎更易理解,亦跟以下原來的要求更直觀易明。但其實這樣編寫,執行效率是比較低的。

分數

等級

10分以下

D

10 - 49

C

50 - 70

B

71 - 100

A

 

其實還有其他寫法的,因此同一目的,可以有不同的寫法及算法! 不同的算式有不同的優缺點!

 

延伸參考:

1. C的運算子。

2. 如何判斷程式的執行效率?

沒有留言:

張貼留言

如何於C程式內輸入字串?

之前我們學過如何於 C 程式內輸入數目字,但如要輸入字串,例如姓名,又要如何處理呢 ?   跟其他大部分電腦程言不一樣, C 並沒有一個字串的變數數據類型 (variable data type) , C 是使用字元 (character) 及變數陣列 (array)...