"สวัสดี อามีโก! ฉันมัวแต่แก้ปัญหาตรรกะจนไม่ทันสังเกตว่าคุณเข้ามา มีข้อหนึ่งสำหรับคุณ: ถ้าจระเข้บินได้ หิมะก็ขาวโพลน จระเข้บินได้ บทสรุปคืออะไร"

"อืม...สรุปว่าหิมะเป็นสีขาวงั้นเหรอ?"

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

"วิธีที่ว่า?"

"ฉันหมายความว่าคุณสามารถเขียนนิพจน์เชิงตรรกะได้หลายวิธี ตัวอย่างเช่น:

รหัส คำอธิบาย
int age = 35;
if (age >= 18 && age <= 65)
   System.out.println("You can work");
หากค่าของอายุอยู่ระหว่าง18และ65จะแสดงวลี "คุณทำงานได้"
int age = 35;
boolean isYoung = (age < 18);
if (!isYoung && age <= 65)
   System.out.println("You can work");
เราสร้างisYoungตัวแปรและย้ายส่วนแรกของนิพจน์เข้าไป เราก็แทนที่age >= 18ด้วยage < 18.
int age = 35;
boolean isYoung = (age < 18);
boolean isOld = (age > 65);
if (!isYoung && !isOld)
   System.out.println("You can work");
เราสร้างตัวแปร 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