วันอังคารที่ 24 กรกฎาคม พ.ศ. 2555

สอน Delphi:การอ้างอิงสมการ


การคำนวณของคอมพิวเตอร์

           คอมพิวเตอร์ทำการคำนวณโดยการอ้างอิงเครื่องหมาย ไม่ได้ทำจากซ้ายไปขวาตามปกติเหมือนมนุษย์ ลองดูตัวเลขง่ายๆ 2+3*5 ถ้ามนุษย์คำนวณนั้นจะได้คำตอบว่า 25  เนื่องจากมนุษย์จะทำการคำนวณจากซ้ายไปขวา โดยไม่สนใจเครื่องหมาย แต่สำหรับคอมพิวเตอร์จะได้คำตอบออกมาเป็น 27 ซึ่งแตกต่างกันไปเลย :) ไม่ทราบว่าหลาย ๆ คนที่ทำงานกับ Excel เคยใส่ใจเรื่องนี้กันหรือเปล่านะ :P

ลำดับการคำนวณของคอมพิวเตอร์  

                              ** ควรจำ การเขียนโปรแกรม หรือคำสั่ง sql ต้องยึดหลักนี้


 1.   ให้ความสำคัญกับวงเล็บก่อน หากมีวงเล็บหลายระดับ จะทำระัดับในสุดก่อนเสมอ และหากมีวงเล็บระดัีบเดียวกัน หลายครั้ง จะทำวงเล็บซ้ายก่อน
2.    ให้ความสำคัญกับฟังก์ชั่นต่างๆ เช่น Sqrt  ,  Sqr,  Tan,  Sin,  Round,  Abs โดยหากมีฟังก์ชั่้นซ้ำซ้อนกันหลายระัดับ จะทำระดับในสุดก่อน แล้วมาทำที่ระดับนอก และัหากมีฟังก์ชั่นในระดับเดียวกันหลายครั้ง จะทำฟังก์ชั่นที่อยู่ด้านขวาก่อน
3.    หาค่าตามกฎของการคูณก่อน ( เครื่องหมายคูณ และ หาร) โดยหากมีเครื่องหมาย ระดับเดียวกันหลายที่ จะไปทำที่เครื่องหมายที่อยู่ซ้ายสุดก่อน
4.    หาค่าตามกฎของการบวกเป็นลำดับสุดท้าย ( เครื่องหมาย บวก และลบ) โดยหากมีเครื่องหมายระดับเดียวกันหลายที่ จะไปทำเครื่องหมายที่อยู่ซ้ายสุดก่อนเสมอ

ตัวอย่าง

     หาค่าของ 5 + 3 * 2 + 4 / 2

 คอมพิวเตอร์จะคำนวณดังนี้

ทำตามกฎของการคูณก่อน
    ทำคู่ 3*2 ก่อน  ได้ึ่ค่าเป็น   5+6+4/2
    ทำคุ่ 4/2  ก่อน  ได้ค่าเป็น   5+6+2
    ไมีมีกฎของการคูณแล้ว ทำจากซ้ายไปขวาตามปกติ ได้ค่าเป็น 13

ถ้าเราคำนวณเองจะได้ค่า 8*3+4/2 -> 24+4/2 ->28/2 =  14


    หาค่าของ   7 + 6 /( 4 – 1)*9

        ทำคู่ของ 4-1 ก่อน เนื่องจากอยู่ในวงเล็บ  ได้เป็น  7+6/3*9
        มีกฎของการคูณสองคู่ แต่ทำ 6/3 ก่อน เนื่องจากอยู่ซ้ายกว่า ได้เป็น 7+2*9
        ทำกฎของการคูณคู่ที่เหลือ ได้เป็น 7+18
        ได้คำตอบเป็น 25

    หาค่าของ 7+2*(sqrt(8/2)+3)-2

        ทำวงเล็บในสุด คือ 8/2 ก่อน ได้เป็น  7+2*(sqrt(4)+3)-2
        ทำฟังก์ชั้่น คือ sqrt ก่อน ได้เป็น 7+2*(2+3)-2
        ทำในวงเล็บ 2+3 ก่อน ได้เป็น  7+2*5-2
        ทำกฎของการคูณก่อน ได้เป็น 7+10-2
        ได้คำตอบเป็น 15


    การดุลค่าให้คอมพิวเตอร์คำนวณได้ตรงกับมนุษย์

        ไล่หาจากขวาไปซ้าย โดยเปรียบเทียบคู่คำนวนทีละสองคู่เป็นหนึ่งส่วน
        เมื่อพบส่วนใดที่ คู่ซ้ายเป็นกฎของการบวก คู่ขวาเป็นกฎของการคูณให้ทำการใส่วงเล็บปิดเข้าไปที่หน้าเครื่องหมายกฎของการคูณ และใส่งวงเล็บเปิดที่ซ้ายสุด

    ตัวอย่าง

        ให้ดุลค่าของ 6+4/2+3*2/4

        ส่วนแรกที่พิจารณาคือ  3*2/4  เป็นกฎของการคูณด้วยกันจึงไม่ทำอะไีีร
        ส่วนที่สองคือ 2+3*2  พบว่าคู่หน้าเป็นกฎของการบวก คู่หลังเป็นกฎของการคูณ จึงใส่เครื่องหมายวงเล็บ ได้เป็น  (6+4/2+3)*2/4
        ค้นหาหน่วยต่อไป 4/2+3 ด้านหน้าเป็นกฎของการคูณ จึงไม่สนใจ
        ค้นหาหน่วยต่อไป 6+4/2 คู่หน้าเป็นกฎของการบวก จึงใส่วงเล็บ ได้เป็น ((6+4)/2+3)*2/4

 
  ตรวจสอบความถูกต้อง

    การคำนวณแบบมนุษย์   6+4/2+3*2/4

                            = 10/2+3*2/4

                             = 5+3*2/4

                             = 8*2/4

                               = 16/4

                                  = 4

    การคำนวนแบบคอมพิวเตอร์ตามสมการใหม่  ((6+4)/2+3)*2/4

    =  (10/2+3)*2/4

    = (5+3)*2/4

    = 8*2/4

    = 16/4

    = 4

    แสดงว่าการดุลสมการถูกต้อง

ไม่มีความคิดเห็น:

แสดงความคิดเห็น