|
| 1 | +# Boolean |
| 2 | + |
| 3 | +**Boolean \(บูเลียน\)** ถึอว่าเป็นข้อมูลพื้นฐานที่สำคัญมากในการเขียนโปรแกรม เนื่องจากจะทำให้โปรแกรมนั้นมีการ "ตัดสินใจ" ได้จากเงื่อนไขที่เราสร้างขึ้น |
| 4 | + |
| 5 | +Boolean จะมีค่าเพียง 2 แบบ คือ จริง `true` และเท็จ `false` ในภาษา Ruby นั้นจะเขียนเป็นตัวพิมพ์เล็ก |
| 6 | + |
| 7 | +{% hint style="info" %} |
| 8 | +เพราะฉะนั้น เราจึงไม่สามารถตั้งชื่อตัวแปรเป็น `true` หรือ `false` ได้ เพราะว่าภาษาได้ทำการ "จอง" ชื่อนี้ไปแล้ว เรียกว่าเป็น **Reserved Keywords** ที่เราจะเอามาใช้เป็นชื่อของตัวแปรไม่ได้นั่นเอง |
| 9 | + |
| 10 | +ดู Reserved Keywords ทั้งหมดได้ที่นี่ [https://ruby-doc.org/core-3.0.0/doc/keywords\_rdoc.html](https://ruby-doc.org/core-3.0.0/doc/keywords_rdoc.html) |
| 11 | +{% endhint %} |
| 12 | + |
| 13 | +{% embed url="https://repl.it/@narze/boolean-basic?lite=true" caption="การใช้ Boolean และการสร้างตัวแปรให้มีค่าเป็น Boolean" %} |
| 14 | + |
| 15 | +## Boolean Expression |
| 16 | + |
| 17 | +Boolean Expression \(นิพจน์บูเลียน\) เป็นการสร้างค่า Boolean จากการเขียนโค้ดให้เป็น Expression ต่างๆ ในที่นี้จะขอยกตัวอย่างนิพจน์ทางคณิตศาสตร์ \(สมการ\) ก่อน อาทิเช่น |
| 18 | + |
| 19 | +* `10 > 5` ใช้เครื่องหมาย "มากกว่า" `>` |
| 20 | + * เหมือนกับการตั้งคำถามว่า "10 มากกว่า 5 หรือเปล่า?" ซึ่งคำตอบคือ จริง ฉะนั้นผลของ Expression นี้คือ `true` |
| 21 | +* `10 < 5` ใช้เครื่องหมาย "น้อยกว่า" `<` |
| 22 | + * เหมือนกับการตั้งคำถามว่า "10 น้อย 5 หรือเปล่า?" ซึ่งคำตอบคือ เท็จ ฉะนั้นผลของ Expression นี้คือ `false` |
| 23 | +* `a <= 5` ใช้เครื่องหมาย "น้อยกว่า**หรือ**เท่ากับ" `<=` |
| 24 | + * Expression สามารถใช้คู่กับตัวแปรได้ |
| 25 | + * ถ้า `a` มีค่าน้อยกว่าหรือเท่ากับ `5` เช่น 0, 5, -100 ผลของ Expression นี้คือ `true` |
| 26 | + * ถ้า `a` มีค่าไม่น้อยกว่าหรือเท่ากับ `5` \(มากกว่า\) เช่น 6, 1000, 5.1 ผลของ Expression นี้คือ `false` |
| 27 | + * ถ้า `a` เป็นข้อมูลประเภทอื่นที่ไม่ใช้ตัวเลข \(เช่น String\) โปรแกรมจะทำงานไม่ได้ \(Error\) |
| 28 | +* `7 >= b` ใช้เครื่องหมาย "มากกว่า**หรือ**เท่ากับ" `>=` |
| 29 | + * ตัวแปรจะอยู่ด้านไหนของ Expression ก็ได้ หรือจะท้ังสองด้านก็ได้ |
| 30 | + * ถ้า `7` มีค่ามากกว่าหรือเท่ากับ `b` เช่น `b` เป็น 7, 6, 5, ... ผลของ Expression นี้คือ `true` |
| 31 | + * ถ้า `7` มีค่าไม่มากกว่าหรือเท่ากับ `b` \(น้อยกว่า\) เช่น `b` เป็น 8, 9, 10, ... ผลของ Expression นี้คือ `false` |
| 32 | +* `a == b`ใช้เครื่องหมายเท่ากับสองตัว เพื่อเทียบว่ามีค่าเท่ากันหรือเปล่า |
| 33 | + * ถ้าค่าท้ังสองด้านเท่ากัน ผลของ Expression นี้คือ `true` |
| 34 | + * ถ้าค่าท้ังสองด้านไม่เท่ากัน ผลของ Expression นี้คือ `false` |
| 35 | +* `a != b`ใช้เครื่องหมายอัศเจรีย์ `!`ตามด้วยเท่ากับ เพี่อเทียบว่ามีค่า**ไม่**เท่ากันหรือเปล่า \(ตรงข้ามกับ `==`\) |
| 36 | + * ถ้าค่าท้ังสองด้านไม่เท่ากัน ผลของ Expression นี้คือ `true` |
| 37 | + * ถ้าค่าท้ังสองด้านเท่ากัน ผลของ Expression นี้คือ `false` |
| 38 | + |
| 39 | +{% hint style="info" %} |
| 40 | +เหตุผลที่ Expression "เท่ากับ" ต้องใช้เครื่องหมายเท่ากับสองตัว เพราะว่าการใช้เครื่องหมายเท่ากับตัวเดียว แสดงถึง**การกำหนดค่าให้กับตัวแปร** |
| 41 | + |
| 42 | +* `a = 1` หมายถึง กำหนดให้ตัวแปร `a` มีค่าเป็น `1` |
| 43 | +* `a == 1` หมายถึง การถามว่า `a` มีค่าเท่ากับ `1` หรือไม่ |
| 44 | +{% endhint %} |
| 45 | + |
| 46 | +นิพจน์ที่เป็นการเทียบว่าค่าเท่ากัน หรือไม่เท่ากัน สามารถใช้กับประเภทข้อมูลอื่นนอกจากตัวเลขได้ด้วย |
| 47 | + |
| 48 | +* String : `name == "monosor"` เป็นการเช็คว่าตัวแปร `name` มีค่าเป็น `"monosor"` หรือไม่ |
| 49 | +* Boolean : `is_admin == false` เป็นการเช็คว่าตัวแปร `is_admin` มีค่าเป็น `false` หรือไม่ |
| 50 | +* Nil : `value == nil` เป็นการเช็คว่าตัวแปร `value` มีค่าเป็น `nil` หรือไม่ |
| 51 | + |
| 52 | +{% embed url="https://repl.it/@narze/boolean-expressions?lite=true" caption="ตัวอย่าง Boolean Expression" %} |
| 53 | + |
| 54 | +### นิเสธ \(Negation\) |
| 55 | + |
| 56 | +ใช้เครื่องหมายอัศเจรีย์ด้านหน้าตัวแปร หรือ Expression เพื่อแปลงค่าความจริงไปเป็นตรงกันข้าม \(จาก `true` เป็น `false` และ `false` กลายเป็น `true`\) |
| 57 | + |
| 58 | +{% embed url="https://repl.it/@narze/boolean-negation?lite=true" %} |
| 59 | + |
| 60 | + |
| 61 | + |
| 62 | + |
| 63 | + |
0 commit comments