機
器
人
產生布林值
大於與小於
這個章節的重點,在於帶領讀者理解物件導向的概念,而非介紹單一個程式語法。此章節的程式語法和 JavaScript 等程式語言相近,但並非任何真實程式語言。請專注於章節中的概念部分,而非語法部分。
我們都知道如何比較數字的大小,例如 5 < 6 就是件眾所皆知的事實。在程式中,我們也經常會需要比較數字的大小,例如我們在製作一個改考卷的軟體,必須決定學生成績是否及格,那它就必須知道如何判斷學生分數是否大於 60 分。假設有一個學生成績 58 分,我們要分辨他是否及格,並輸出布林值,那麼我們會這樣寫:
pass = 58 > 60;
print(pass);
結果應當輸出「 false 」,因為「 58 > 60」這件事是錯的,所以「 58 > 60」所代表的就是「 false 」。但是我們很快就會遇上問題,假設有學生考試成績為 60 分:
pass = 60 > 60;
print(pass);
如果執行這段程式碼,我們會發現結果為「 false 」,但常理判斷,60 分應該是及格的。那麼我們該如何解決這個問題呢?相信我們都知道數學中「大於或等於(≧)」的概念,在此便可使用這樣的想法,而在程式中,我們會使用 >=
來表示:
pass = 60 >= 60;
print(pass);
這樣就大功告成了!另外,「小於」和「小於等於」也是相同的用法與概念,他們的符號分別為 <
和 <=
。
等於與不等於
現在我們要寫一段程式來判斷學生分數是否 100 分,因為老師想要嘉獎滿分的學生。你可能覺得我們會使用「 = 」的符號,但事實上,我們會使用 ==
雙等號來表達相等。
good = 100 == 100;
print(good);
螢幕上將會顯示「 true 」,因為 100 等於 100。不幸的是,下一節是數學課,老師打算讓所有沒有 100 分的學生罰站。那麼我們該如何表達「不等於 100 」呢?很簡單,只要把 ==
換成 !=
就好了:
punished = 98 != 100;
螢幕上將顯示「 true 」,真是個可憐的學生!
想想看
a = 100 = 100; /*錯誤寫法*/
b = 100 == 100; /*正確寫法*/
為什麼執行第一行程式時會出現錯誤,執行第二行卻不會?電腦分辨的了第一行中兩個 =
的差別嗎?
複合的邏輯運算
綜合以上以及上一個章節所提到的所有概念,這裡將提供一些範例作為參考。範例程式碼中的變數皆如同其名字所表示。
未滿 18 歲但是已婚:
status = is_married && age < 18;
兩次考試成績任一達到及格標準:
status = exam_1 >= 60 || exam_2 >= 60;
體重沒有過重但是體脂肪過高:
status = !is_overweight && is_overfat;
是國際學生但是英文成績低於 70:
status = is_international_student && score < 70;
是登入的但是等級太低:
status = is_logged_in && level < threshold;
資產超過 100 萬、單親、有兩個小孩:
status = wealth > 1000000 && is_divorced && kids == 2;
智商超過 140,而且不是Google的員工:
status = iq > 140 && company != "Google";