คณิตศาสตร์สำหรับการเขียนโปรแกรม ตอนที่ 3

ในบทความนี้จะพูดถึงเรื่องของลำดับในการทำงานของ operator ความหมายของ operator คือ การทำงานทางคณิตศาสตร์ เช่น +, -, *,/, %, and, or และอื่นๆ เมื่อตัวดำเนินการต่างๆมาทำงานร่วมกันหลายๆตัว ก็จำเป็นจะต้องจัดลำดับความสำคัญว่าใครทำก่อน ใครทำหลัง

ซึ่งในการทำงานหรือการทำข้อสอบจะเป็นเรื่องปวดหัวมากถ้าเจอกับโจทย์แบบนี้ เรามีวิธีการง่ายๆในการช่วยให้จำได้ง่ายขึ้นมากๆ

ในการจัดลำดับ operator ต่างๆ ให้ใช้หลักการของ BODMAS ซึ่งย่อมาจาก

  • B   – Bucket First (ทำในวงเล็บก่อนเสมอ)
  • O   – Orders (มีการทำงาน 2 อย่างคือ ยกกำลัง หรือ square root)
  • DM – Division and Multiplication (การหารและการคูณ ที่ต้องเอาไว้คู่กันเพราะทั้งการหารและการคูณมีลำดับความสำคัญเท่ากัน)
  • AS – Addition and Subtraction (การบวกและการลบ เหมือนกับการคูณและการหาร ทั้ง 2 ตัวนี้มีลำดับความสำคัญเท่ากัน)

สุดท้ายถ้าจำลำดับความสำคัญได้แล้วก็ให้จำว่า ถ้าความสำคัญเท่ากันจะเรียงจากซ้ายไปขวาเสมอ เหมือนกับเราอ่านหนังสือ

ตัวอย่าง

  1.  สิ่งที่ต้องทำก่อนคือ 6 *3 เนื่องจากอันดับการทำงานสูงกว่า + และ – (ที่เลือก 6 * 3 ก่อนเพราะคูณกับหารมีความสำคัญเท่ากันเลยเลือกที่จะทำจากซ้ายไปขวา)
  2. หลังจากนั้นให้เอาผลลัพธ์จาก 6*3 คือ 18 มาหารด้วย 2
  3. สุดท้ายเราจะนำผลลัพธ์ที่ได้จาก 18 /2 ซึ่งก็คือ 9 มาบวกกับ 12

ผลลัพธ์สุดท้ายเราจะได้  21

ดังนั้นถ้าเราจำคำว่า BODMAS ได้ เราก็มาแยกหาลำดับการทำงานของ Operator ได้ เมื่อเราเจอโจทย์ที่ต้องทำการจัดลำดับของ Operator ก็จะไม่มีปัญหาอีกต่อไป

หมายเหตุ ในตัวอย่างที่ให้มาไม่มี วงเล็บ และ การยกกำลังหรือ ถอด square roots ดังนั้น * และ / จึงมีลำดับสูงสุด

ข้อแนะนำในการทำงาน เราอาจเข้าใจเรื่องของลำดับของ Operators เป็นอย่างดีแต่เราก็ไม่ควรทำให้ Code อ่านยากโดยไม่จำเป็นดังนั้นให้พยายามจัดลำดับของการคำนวนด้วยวงเล็บเสมอ นอกจากเวลาเขียนไม่ต้องคิดให้ปวดหัวแล้วคนอ่านก็ไม่ต้องตีความเช่นเดียวกัน

คณิตศาสตร์สำหรับการเขียนโปรแกรม ตอนที่ 2

หลังจากย้อนความทรงจำกับการเรียน Logic กันไปแล้วในตอนที่แล้วเราจะมาดูกันต่อในเรื่องของการประยุกต์ใช้งาน Logic ในชีวิตจริง

เวลาเจอโจทย์ถ้าเราใช้ AND หรือ OR กับค่าของตัวแปรปกติ จะไม่มีผลอะไรมากเพราะไม่ค่อยซับซ้อนเท่าไหร่ เช่น

หรือ

จะเห็นว่าทั้ง 2 ตัวอย่างด้านบนจะเขียนเงื่อนไขแบบที่เป็นภาษาพูดได้เลย แต่ถ้าเมื่อไหร่ที่มี not เข้ามาเกี่ยวข้องการเขียนจะยากขึ้น เพราะจะต้องเรียบเรียงให้ใกล้กับภาษามนุษย์ได้ยากกว่าปกติ

ถ้าเราย้อนกลับไปสมัยเรียนคณิตศาสตร์ สูตรที่เราท่องกันอยู่คือ

ค่า not ของ p และ q จะเท่ากับ not p หรือ not q เป็นการกระจายเครื่องหมาย not เข้าไปในวงเล็บ และกลับจาก and หรือ or เป็นค่าตรงข้าม ถ้าเดิมเป็น and ให้เปลี่ยนเป็น or

เวลาเราเลือก logic ที่มีลักษณะนี้ให้เลือกเป็น “และ” เวลาอ่านจะง่ายที่สุด เช่น

ให้นิพจน์แรก (p) เป็น ลูกค้า และ q เป็น ซื้อเกิน 100000 บาท ถ้าเอา p และ q มาทำการเชื่อมกันจะแยกได้เป็น 4 กรณี

  1. เป็นลูกค้า และ ซื้อเกิน 100000
  2. เป็นลูกค้า และ ซื้อไม่เกิน 100000
  3. ไม่ใช่ลูกค้า และ ซื้อเกิน 100000
  4. ไม่ใช่ลูกค้า และ ซื้อไม่เกิน 100000

พยามใช้ Logic ที่มี และเป็นตัวเชื่อมในกรณีที่ต้องใช้ not ทั้งคู่ ดังนี้

  • ไม่ใช่ลูกค้าและซื้อไม่เกิน 100000 บาท (~p and ~q) มีกลุ่มที่ 4 กลุ่มเดียวเท่านั้นที่เข้าเงื่อนไข
  • ไม่ใช่ลูกค้าที่ซื้อเกิน 100000 บาท (~(p and q)) กลุ่มที่ 1, 2 และ 3 จะเข้าเงื่อนไขนี้ ซึ่งจริงๆแล้วประโยคนี้จะเขียนเป็น ไม่ใช่ลูกค้า หรือ ซื้อไม่เกิน 100000 บาท (~p v ~q) ก็ได้ แต่การอ่านทำความเข้าใจจะทำได้ยาก ดังนั้นเวลาเราเขียนโปรแกรมพยายามเลือกใช้ และ เป็นอันดับแรก

*** เมื่อไหร่ก็ตามที่ต้องมีการตรวจสอบที่มี 2 เงื่อนไขมาเชื่อมต่อกันให้พยายามเชื่อมด้วย “และ” เสมอ

คณิตศาสตร์สำหรับการเขียนโปรแกรม ตอนที่ 1

ในการเขียนโปรแกรมจำเป็นต้องมีพื้นฐานทางคณิตศาสตร์ที่ดี โดยเฉพาะอย่างยิ่งเรื่องของ Logic ในบทความนี้จะเน้นเรื่อง Logic เพราะเป็นพื้นฐานที่ใช้กันบ่อย พบเห็นได้ในชีวิตประจำวัน ลองมาดูกันว่าคิดเรื่อง Logic ยังไงให้ง่าย

เริ่มจาก ทบทวนเรื่องของ Logic กันก่อน

Logical Conjunction
p q pq
T T T
T F F
F T F
F F F

การใช้ And ถ้าตัวใดตัวนึงเป็น False ผลลัพธ์ที่ได้จะเป็น False ทันที

Logical Disjunction
p q pq
T T T
T F T
F T T
F F F

การใช้ OR ถ้าตัวใดตัวนึงเป็น True ผลลัพธ์ที่ได้จะเป็น True ทันที

Logical Negation
p ¬p
T F
F T

การใช้ NOT ผลลัพธ์จะเป็นค่าตรงข้าม

Exclusive Disjunction
p q pq
T T F
T F T
F T T
F F F

การใช้ Exclusive OR หรือ XOR ถ้า ค่าตรงข้ามกันเป็น TRUE เหมือนกันเป็น FALSE

อันนี้เป็นพื้นฐาน Logic ที่ต้องมี ตอนต่อไปจะพูดถึงการนำ Logic ไปใช้ใน if statement