"สวัสดี อามีโก! ฉันมัวแต่แก้ปัญหาตรรกะจนไม่ทันสังเกตว่าคุณเข้ามา มีข้อหนึ่งสำหรับคุณ: ถ้าจระเข้บินได้ หิมะก็ขาวโพลน จระเข้บินได้ บทสรุปคืออะไร"
"อืม...สรุปว่าหิมะเป็นสีขาวงั้นเหรอ?"
"เยี่ยมมาก! คุณผ่านการทดสอบเริ่มต้นแล้ว คุณพร้อมที่จะเชี่ยวชาญในหัวข้อต่อไปแล้ว เรียกว่า 'ตัวดำเนินการเชิงตรรกะ' และเราจะเริ่มด้วยตรรกะบูลีน ตามสัญชาตญาณคุณก็รู้อยู่แล้ว คุณก็เป็นหุ่นยนต์อยู่ดี เราแค่ต้องปรับแต่งการตั้งค่าของคุณให้ตรงกับภาษา Java"
"ตรรกะบูลีน? ฉันเพิ่งได้รับแจ้งเกี่ยวกับประเภทบูลีน..."
"ใช่ มีการเชื่อมต่อโดยตรงที่นี่ นิพจน์บูลีนสามารถเป็นจริงหรือเท็จเท่านั้น และเมื่อมันเกิดขึ้น ตรรกะประเภทนี้ล้วนเกี่ยวกับนิพจน์ที่เป็นจริงหรือเท็จ และการรวมกันของนิพจน์ดังกล่าว ตัวอย่างเช่น นิพจน์ 18 < 25 เป็นจริงเสมอ และ 7 < 5 เป็นเท็จเสมอ นิพจน์ (i < 10) ขึ้นอยู่กับค่าของ i และถ้านิพจน์ประเมินค่า เช่น เป็นจริง เราก็สามารถขอให้โปรแกรมทำบางสิ่งได้"
"อ่า ฉันเข้าใจแล้ว นิพจน์บูลีนช่วยให้เราไม่เพียงแต่สร้างข้อสรุปเชิงตรรกะเท่านั้น แต่ยังสร้างทางแยกในโปรแกรมด้วย"
"ถูกต้อง สิ่งสำคัญคือการเรียนรู้วิธีเขียน ตัวอย่างเช่นใน Java คุณไม่สามารถเขียนนิพจน์ได้18 < age <65สิ่งนี้จะไม่ถูกต้องทางวากยสัมพันธ์และโปรแกรมจะไม่คอมไพล์
"แต่คุณสามารถเขียนแบบนี้:
(18 < age) AND (age < 65)
แน่นอนว่าเราไม่ได้ใช้คำภาษาANDอังกฤษ คุณต้องใช้ ตัวดำเนินการบูลีนแทน นั่นคือ 'และ' จะแสดงแตกต่างกัน
"มีตัวดำเนินการทางตรรกะสามตัวใน Java: AND(&&), OR(||), NOT(!)
ข่าวดีก็คือคุณสามารถใช้วงเล็บเพื่อสร้างนิพจน์ตรรกะของความซับซ้อนใดๆก็ได้
ข่าวร้ายคือนักพัฒนา Java ตัดสินใจใช้สัญกรณ์จากภาษาCแทนคำandว่าorและnot
ดูที่หน้าจอ:
| ตัวดำเนินการเชิงตรรกะ | ความคาดหวัง | ความเป็นจริง |
|---|---|---|
AND (∧) |
and |
&& |
OR (∨) |
or |
|| |
NOT (¬) |
not |
! |
"มันก็ไม่ได้แย่ขนาดนั้น... ค่อนข้างกะทัดรัด ฉันจำมันได้เกือบหมดแล้ว"
"เยี่ยมมาก ต่อไปนี้เป็นตัวอย่างของการใช้ตัวดำเนินการเชิงตรรกะใน Java:
| การแสดงออก | การตีความ | คำอธิบาย |
|---|---|---|
(0 < a) && (a < 100) |
(0 < a) and (a < 100) |
(0 < a) AND (a < 100) |
(!a) && (!b) |
(not a) and (not b) |
(NOT a) AND (NOT b) |
!(!a || !b) |
not((not a) or (not b)) |
NOT((NOT a) OR (NOT b)) |
ตัวอย่างการใช้ตัวดำเนินการเปรียบเทียบและตัวแปรบูลีน
"จำไว้ Amigo ทุกที่ที่คุณสามารถเขียนนิพจน์เชิงตรรกะได้ คุณสามารถเขียนตัวแปรเชิงตรรกะได้"
"วิธีที่ว่า?"
"ฉันหมายความว่าคุณสามารถเขียนนิพจน์เชิงตรรกะได้หลายวิธี ตัวอย่างเช่น:
| รหัส | คำอธิบาย |
|---|---|
|
หากค่าของอายุอยู่ระหว่าง18และ65จะแสดงวลี "คุณทำงานได้" |
|
เราสร้างisYoungตัวแปรและย้ายส่วนแรกของนิพจน์เข้าไป เราก็แทนที่age >= 18ด้วยage < 18. |
|
เราสร้างตัวแปร isOld และย้ายส่วนที่สองของนิพจน์เข้าไป นอกจากนี้age <= 65ยังถูกแทนที่ด้วยage > 65. |
"ตัวอย่างทั้งสามนี้เทียบเท่ากัน เฉพาะในตัวอย่างที่สองเท่านั้นที่เราย้ายส่วนหนึ่งของนิพจน์จากคำifสั่งไปยังตัวแปรบูลีนแยกต่างหาก ( isYoung) ในตัวอย่างที่สาม เราย้ายส่วนที่สองของนิพจน์ไปยังตัวแปรที่สอง ( isOld) อย่างไรก็ตาม ค่าเริ่มต้นของตัวแปรบูลีนคือfalse"
"ฉันจะจำไว้ ฉันหวังว่า"
เลขคณิตเชิงตรรกะ
"ตอนนี้เรามาดูการดำเนินการเชิงตรรกะโดยสังเขป พวกเขาปฏิบัติตามกฎที่เรียบง่ายและมีเหตุผล (จะเป็นอย่างอื่นไปได้อย่างไร!)
"ก่อนอื่น มาดูกันว่าตัวดำเนินการทำงานอย่างไรเรียกORอีกอย่างว่าตัว แยก ||หรือตัวแยก
| การแสดงออก | ผลลัพธ์ |
|---|---|
true || true |
true |
true || false |
true |
false || true |
true |
false || false |
false |
"สรุปตอนนี้ได้ไหมว่าผลลัพธ์ของนิพจน์a || bอิงตามตารางคืออะไร"
"ฉันเห็น!" ค่าของนิพจน์คือtrueถ้าอย่างน้อยหนึ่งพจน์ในนิพจน์trueคือ หากเป็นทั้งคู่falseผลลัพธ์falseคือ
"ถูกต้อง เนื่องจากคุณฉลาดมาก ลองดูตารางอีกครั้งแล้วจินตนาการว่าfalseเป็น 0 และtrueเท่ากับ 1 เมื่อคุณดูแบบนั้น||พฤติกรรมของตัวดำเนินการจะเตือนคุณถึงอะไรจากเลขคณิตธรรมดาหรือไม่"
"อืม... มันก็เหมือนกับการบวก... แต่เมื่อคุณบวก 1 + 1 จะไม่เท่ากับ 1"
"มีความรู้สึกว่ามันเท่ากันถ้าเราทำงานด้วย 0 กับ 1 เท่านั้น แต่อย่าเพิ่งกังวลไปในตอนนี้ สิ่งสำคัญคือคุณสังเกตเห็นความคล้ายคลึงกันระหว่างการดำเนินการและการบวก ซึ่งหมายความว่าคุณ||จะ ไม่ต้องแปลกใจกับข้อเท็จจริงที่ว่าการดำเนินการนี้มักเรียกว่า 'การบวกเชิงตรรกะ'
"เข้าใจแล้ว."
"ตอนนี้ ผู้ดำเนินการ ร่วมAND aka &&aka ขึ้นมาบนเวที
| การแสดงออก | ผลลัพธ์ |
|---|---|
true && true |
true |
true && false |
false |
false && true |
false |
false && false |
false |
"ตามที่ฉันเข้าใจ ผลลัพธ์ของนิพจน์จะเกิดขึ้นtrueก็ต่อเมื่อทั้งสองค่าที่ประกอบกันเป็นนิพจน์trueมิฉะนั้น จะเป็นเสมอfalse"
"ทำได้ดีมาก Amigo! คุณดูดซับทั้งหมดนี้เหมือนฟองน้ำ คุณเห็นความคล้ายคลึงกันอื่นกับเลขคณิตหรือไม่"
"คูณ!"
"ถูกต้อง ตรงนี้เรามี 'การคูณเชิงตรรกะ'"
"ต่อไปเราจะดูที่NOTตัวดำเนินการ หรือที่รู้จักกัน!ในชื่อว่า ลอจิคัล อินเวอร์ส
| การแสดงออก | ผลลัพธ์ |
|---|---|
!true |
false |
!false |
true |
"ทุกอย่างค่อนข้างง่ายที่นี่ ผู้ดำเนินการเปลี่ยนtrueไปfalseและในทางกลับกัน"
"ถูกต้อง ต่อไปนี้เป็นสำนวนที่มีประโยชน์สำหรับคุณ:"
| การแสดงออก | ผลลัพธ์ |
|---|---|
m && !m |
false |
m || !m |
true |
!(a && b) |
!a || !b |
!(a || b) |
!a && !b |
GO TO FULL VERSION