"สวัสดี อามีโก! ฉันมัวแต่แก้ปัญหาตรรกะจนไม่ทันสังเกตว่าคุณเข้ามา มีข้อหนึ่งสำหรับคุณ: ถ้าจระเข้บินได้ หิมะก็ขาวโพลน จระเข้บินได้ บทสรุปคืออะไร"
"อืม...สรุปว่าหิมะเป็นสีขาวงั้นเหรอ?"
"เยี่ยมมาก! คุณผ่านการทดสอบเริ่มต้นแล้ว คุณพร้อมที่จะเชี่ยวชาญในหัวข้อต่อไปแล้ว เรียกว่า 'ตัวดำเนินการเชิงตรรกะ' และเราจะเริ่มด้วยตรรกะบูลีน ตามสัญชาตญาณคุณก็รู้อยู่แล้ว คุณก็เป็นหุ่นยนต์อยู่ดี เราแค่ต้องปรับแต่งการตั้งค่าของคุณให้ตรงกับภาษา 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