邏輯運算的認識
在電腦的世界,數目字可用以進行運算。例如1+1=2,畢竟電腦其中一大用途便是用以計算數目。但電腦還可以根據某些條件,從而進行某些動作。(用電腦的術言是進行邏輯運算)
例如,同學撰寫scratch 程式時,是不是曾撰寫過以下語句
如果物件遇到邊界時,便會說Hello,持續2秒。
同學會不會疑惑,電腦是如何貯存「物件遇到邊界」這一資訊的? 這涉及電腦運算內另一種值,稱為邏輯值(或稱布林值)。
邏輯值祇有兩個符號: 真(true)及假(false)。在電腦內,真(TRUE)值以1表示,假(FALSE)值以0表示。(畢竟電腦祇能判辨1及0)(其實,即使是數目字,在電腦內,也還是祇有1或0,而不是0-9, 因為電腦內的運算是二進制的。)
以上例子中,物件遇到邊界的邏輯值是true(1),很明顯,物件沒遇到邊界的邏輯值便是false(0)。
數學運算有加(+)減(-)乘(x)除(/),那邏輯值是否可運算?
答案是有的! 但邏輯值的運算子(operator)跟數學運算有點不同,祇有3種,分別是and, or及not。
以下是這3種運算子的功能
|
邏輯運算子 |
功能 |
相等於中文 |
|
And |
兩條件皆要成立 |
而且 / 及 |
|
Or |
其中一個條件成立 |
或 |
|
Not |
把條件變成相反 |
不是 |
以下是各運算子的運算結果,其實同學可先猜猜結果是甚麼?
And 運算子
|
條件A |
條件B |
結果(result) |
|
True |
True |
True |
|
False |
True |
False |
|
True |
False |
False |
|
False |
False |
False |
Or 運算子
|
條件A |
條件B |
結果(result) |
|
True |
True |
True |
|
False |
True |
True |
|
True |
False |
True |
|
False |
False |
False |
Not 運算子
|
關係(條件)運算式 |
結果(result) |
|
True |
False |
|
False |
True |
根據以上的說明,同學可否猜猜以下三條邏輯表達題目的答案。(答案在最下方)
|
題目 |
題目 |
Result |
|
1 |
Not 10>5 |
|
|
2 |
10<20 or 5>10 |
|
|
3 |
10<20 and 10>5 |
|
同學可能覺得以上的運算挺無聊的,這樣寫有甚麼作用?
我們用一個具體例子來說明以上的邏輯運算子是如何運用的。
------------------------------------------------------------------------------------------------------
假設有一位同學,有兩筆成績,分別是中文(Chi)及英文(Eng)。程式要根據他的各科成績,顯示他是否可升班(promote)。條件如下:
必須兩科也達60分或以上,便會顯示升班(promote),程式應如何撰寫?
同學可利用SCRATCH或其他電腦語言,撰寫一個程式,輸入不同中文及英文分數後,會顯示不同的資訊。
------------------------------------------------------------------------------------------------------
以下是建議的寫法: (留意,以下不是某一電腦語言的語法,不同的電腦語言有不同的語法,但看上去應是差不多的。)
寫法(1)
|
If chi>=60 and eng>=60 then Print (“promote”)
|
如果中文分等於或大於60 及 英文分等於或大於60 的話,那) 輸出「升班」 |
寫法(2)
|
If chi<60 or eng<60 then Print (“cannot promote”)
|
如果中文分小於60 或 英文分小於60 的話 輸出「不能升班」 |
還有一種寫法(3)
|
If not chi<60 and not eng<60 then Print(“promote”)
|
如果中文不是低於60 及英文不是低於60 的話,那 輸出「升班」 |
備註: not chi<60 意思是中文不是低於60分,那即是合格,布林值是TRUE
同學現時可能覺得似乎不需要理解甚麼是布林值(邏輯值),還不是一樣可以撰寫程式? 那也是! 因為以上的運算,跟平時日常生活的邏輯運算是很接近的。
暫時而言,同學可能覺得很簡單呀! 但現實上,可能有更多條件的配合,最後的邏輯值才是真(true)。例如用以上分數的例子,假如多了以下條件,同學又是否可撰寫一個正確的程式?
條件
1. 共有10科,總平均分要高於60 及
2. 中文、英文及數學,其中兩科要合格 及
3.
中文、英文或數學,不可低於40 及
4. 總不合格科數不可多於3科。
5. …..
怎樣? 同學有信心撰寫程式解決以上問題嗎?
------------------------------------------
建議答案
|
題目 |
題目 |
Result |
說明 |
|
1 |
Not 10>5 |
False |
10>5 是真(True)的, not True = false |
|
2 |
10<20 or 5>10 |
True |
10<20 是真(True), 而 5>5 是假的(False), True or False = True,因祇要其中一個是True,結果便是True |
|
3 |
10<20 and 10>5 |
True |
10<20 是真(True), 而 10>5 也是真的(True), True and True = True |

留言
張貼留言