基本學習目標:
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(合格)。"
- 根據以上條件,最佳的測試分數自然是60,60以上任何一個數字及60以下任何一個數字。起碼應使用3個數字用測試,因為有可能自己把符號也不小心用錯了,例如用了if (score=60),用60測試的話,仍可輸出正確,但其實是用錯了。(特別提示,如要標示分數等於60的話,應用 score==60,而不是score=60。)
- 測試結果應如下:
|
輸入測試的數值 |
輸出結果 |
說明 |
|
60 |
passed |
根據原來要求 |
|
59 (即60以下) |
沒有輸出 |
沒有要求不達60分的話要輸出甚麼,程式內也沒有撰寫,因此沒有輸出。 |
|
61 (即60以上) |
passed |
根據原來要求 |
再參考以下範例,雖然多了一些語句,但應該也不難理解。
|
行 |
說明 |
|
10-12 |
如不符合第7行if內的判斷描述的話(即score 不是等於或大於60),便執行10-12行的指令。 留意,else 後的標準寫法是有{ 及 }的,但如祇有一句指令的話,{ }也是可以省略的。 |
如果if或else之內祇有一句指令敍的話,其實可省略{ }的,但強烈建議,應善用縮排方式,例如第8及第10行,把if 及 else 所屬的指令內縮一些,否則不易觀察程式的作用。
如果有多重條件判斷,例如要根據以下分數判斷從而輸出不同等級,又如何做?
|
分數 |
等級 |
|
10分以下 |
D |
|
10 - 49 分 |
C |
|
50 - 70分 |
B |
|
71 - 100 分 |
A |
以下是其中一個建議寫法,祇用了以上曾用過的運算子(即>=)及指令(即 if ...else)完成。
如要測試以上的程式是否正確,又要輸入甚麼數字?
以上的方法稱為「巢狀的判斷式」。
但同學會否覺得以上的寫法不太容易理解,其實還有其他的寫法的,不過要多學習一些符號及寫法,如下:
說明:
1. &&的意思是and,if (score >=10 && score<50)的意思是如果score的值大於或等於10 及少於50的話,即是於10-49分的範圍。
2. 以上的寫法似乎更易理解,亦跟以下原來的要求更直觀易明。但其實這樣編寫,執行效率是比較低的。
|
分數 |
等級 |
|
10分以下 |
D |
|
10 - 49 分 |
C |
|
50 - 70分 |
B |
|
71 - 100 分 |
A |
其實還有其他寫法的,因此同一目的,可以有不同的寫法及算法! 不同的算式有不同的優缺點!
延伸參考:
1. C的運算子。
2. 如何判斷程式的執行效率?
沒有留言:
張貼留言