什麼是布林值?



很多時候,我們建立一個變數,不需要儲存文字或數字,而是單純記憶事情的「是」與「非」,這時候,布林值就有很大的用途。電腦中的布林值,是以一位數學家喬治.布林來命名的;在大部分的環境中,布林值是一種只能帶有「是」或「非」的資料型態


程式中的布林值



帶著布林值的變數


這個章節的重點,在於帶領讀者理解物件導向的概念,而非介紹單一個程式語法。此章節的程式語法和 JavaScript 等程式語言相近,但並非任何真實程式語言。請專注於章節中的概念部分,而非語法部分。

大部分的程式語言中,true 代表「是」,而 false 代表「非」,但請注意不同程式語言中 true 和 false 的大小寫變化。現在讓我們建立一個變數:

a = true;

現在變數 a 中,帶有 true 的值。如同前幾章提到的其他資料型態,我們可以使用 a 這個變數。下列程式碼將在螢幕上印出 true 的值。

print(a);


「 1 」還是「 0 」?


我們一定有聽過,電腦的語言是一堆的「 1 」和「 0 」。你可能會好奇為甚麼如此,但那已經超出我們的範圍了。不過,如果說布林值也是由「 1 」和「 0 」構成的,你相信嗎?再一些很低階的程式語言中,我們可以直接控制電腦的記憶體運作,此時如果我們需要儲存布林值的「是」與「非」,最不複雜而且節省空間的方法就是把「是」與「非」變成「 1 」跟「 0 」。

我們將 true 定義為「 1 」,並將 false 定義為「 0 」。當看到 truefalse 的值時,請記得它們背後其實是「 1 」與「 0 」。


布林值的運算




「&&」運算


就像數字的計算,布林值也有專屬的計算符號可以計算。假設我們知道「A喜歡吃蘋果」,也知道「B喜歡吃蘋果」,並將這兩件事實變作布林值儲存在「 A_likes_apples 」和「 B_likes_apples 」兩個變數中:

A_likes_apples = true;
B_likes_apples = true;

假設今天我們需要知道「他們是不是都喜歡吃蘋果」,那該怎麼做呢?你可能覺得很簡單,直接建立一個變數並將值定義為「 true 」就好了,因為我們已經知道「A喜歡蘋果」跟「B喜歡蘋果」了。但這需要仰賴人來判斷,有沒有一種方法,可以讓電腦判斷呢?

此時,「&&」這個運算符號就很有用了。就像「 + 」這個符號可以解讀為「加」,「&&」這個符號可以直接解讀為「而且」。回到「他們是不是都喜歡吃蘋果」這個問題,可以看作一個新的題目:
  是否「A喜歡吃蘋果,而且B也喜歡吃蘋果」?
這麼一來,我們就可以把問題交給電腦了:

they_like_apples = A_likes_apples && B_likes_apples;
print(they_like_apples);

電腦在執行時,會把變數換成它們代表的值,而「A_likes_apples」和「B_likes_apples」都代表「 true 」,因此電腦的解讀會變成:

建立一個變數「they_like_apples」,它的值是「true 而且 true」

最後,螢幕上將會出現「 true 」。大家都喜歡蘋果!讓我們作個結論,「&&」運算符號,只有在符號兩側都「 true 」的情況下,才會是「 true 」;只要任一側有「 false 」,結果就會是「 false 」。


「||」運算


「||」所代表的意義是「或者」,使用方法與上述的「&&」一樣,但結果卻大不相同。如果我們要設計一道門,只要年滿18歲或者已經結婚的人都能通過。那我們該怎麼做呢?先讓我們建立兩個變數:

is_married = true;
over_18 = false;

我們的目標是讓電腦顯示「 true 」,那該怎麼做?「 is_married 」是「 true 」,而「 over_18 」是「 false 」,因此我們不能使用「&&」運算,因為一個 true 和一個 false,是一個 false。此時「||」就很有用了:

door_open = is_married || over_18;
print(door_open);

電腦看到時,會把它解讀為:

建立一個變數 door_open,並把值定義為「is_married 或 over_18」

也就是:

建立一個變數 door_open,並把值定義為「true 或 false」

最後螢幕上會出現「true」。作一個結論:「||」運算只要在兩側中任一側有「 true 」,結果都會是「 true 」



「!」運算


「!」是一個很好懂得運算符號,簡單來說它的用意就是將 true 和 false 交換。如果今天看到了一個 true,就輸出 false;如果今天看到了一個 false,就輸出 true

a = true;
b = !a;
print(b);

螢幕上將會印出「 false 」。
上一章節
下一章節
使用者分享的影片來自 YouTube。瞭解更多
+1 
感謝內容貢獻者 此篇文章由 1 位使用者共同編輯而成,並且由學呀的編輯團隊負責維護。點此查看編輯者名單。