邏輯運算的認識

在電腦的世界,數目字可用以進行運算。例如1+1=2,畢竟電腦其中一大用途便是用以計算數目。但電腦還可以根據某些條件,從而進行某些動作。(用電腦的術言是進行邏輯運算)

 

例如,同學撰寫scratch 程式時,是不是曾撰寫過以下語句



 

 

如果物件遇到邊界時,便會說Hello,持續2秒。

 

同學會不會疑惑,電腦是如何貯存「物件遇到邊界」這一資訊的? 這涉及電腦運算內另一種值,稱為邏輯值(或稱布林值)

 

邏輯值祇有兩個符號: (true)及假(false)在電腦內,真(TRUE)值以1表示,假(FALSE)值以0表示。(畢竟電腦祇能判辨10)(其實,即使是數目字,在電腦內,也還是祇有10,而不是0-9, 因為電腦內的運算是二進制的。)

 

以上例子中,物件遇到邊界的邏輯值是true(1),很明顯,物件沒遇到邊界的邏輯值便是false(0)

 

數學運算有加(+)(-)(x)(/),那邏輯值是否可運算?

 

答案是有的! 但邏輯值的運算子(operator)跟數學運算有點不同,祇有3種,分別是and, ornot

以下是這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

留言