กลับไปหน้าบทความ

อ่าน 14 นาที

ลำดับการดำเนินการ

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

ลำดับการดำเนินการ

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

ข้อตกลงเหล่านี้ได้รับการกำหนดอย่างเป็นทางการด้วยการจัดลำดับการดำเนินการ ลำดับของการดำเนินการเรียกว่าลำดับความสำคัญและการดำเนินการที่มี ลำดับความสำคัญ สูงกว่าจะดำเนินการก่อนการดำเนินการที่มีลำดับความสำคัญต่ำกว่า โดยทั่วไป เครื่องคิดเลขจะดำเนินการที่มีลำดับความสำคัญเท่ากันจากซ้ายไปขวา[ 1 ]แต่บางภาษาการเขียนโปรแกรมและเครื่องคิดเลขใช้ข้อตกลงที่แตกต่างกัน

ตัวอย่างเช่น การคูณจะได้รับความสำคัญมากกว่าการบวก และเป็นเช่นนี้มาตั้งแต่มีการนำสัญลักษณ์พีชคณิต สมัยใหม่มา ใช้[ 2 ] [ 3 ]ดังนั้น ในนิพจน์1 + 2 × 3การคูณจะดำเนินการก่อนการบวก และนิพจน์จะมีค่าเป็น1 + (2 × 3) = 7ไม่ใช่(1 + 2) × 3 = 9เมื่อ มี การนำเลขยกกำลังมาใช้ในศตวรรษที่ 16 และ 17 เลขยกกำลังจะได้รับความสำคัญมากกว่าทั้งการบวกและการคูณ และวางไว้เป็นตัวยกทางด้านขวาของฐาน[ 2 ]ดังนั้น3 + 5 2 = 28และ3 × 5 2 = 75

ข้อกำหนดเหล่านี้มีอยู่เพื่อหลีกเลี่ยงความกำกวม ในการเขียน สัญลักษณ์ในขณะที่ยังคงรักษาความกระชับของสัญลักษณ์ไว้[ 4 ]ในกรณีที่ต้องการยกเลิกข้อกำหนดลำดับความสำคัญ หรือแม้กระทั่งเน้นย้ำข้อกำหนดเหล่านั้น สามารถใช้ วงเล็บ ( ) ได้ ตัวอย่างเช่น(2 + 3) × 4 = 20บังคับให้การบวกมาก่อนการคูณ ในขณะที่(3 + 5) 2 = 64บังคับให้การบวกมาก่อนการยกกำลังหากจำเป็นต้องใช้วงเล็บหลายคู่ในนิพจน์ทางคณิตศาสตร์ (เช่นในกรณีของวงเล็บซ้อนกัน) วงเล็บอาจถูกแทนที่ด้วยวงเล็บ ประเภทอื่น เพื่อหลีกเลี่ยงความสับสน เช่น[2 × (3 + 4)] − 5 = 9

ข้อกำหนดเหล่านี้จะมีความหมายก็ต่อเมื่อ ใช้สัญลักษณ์แบบปกติ (เรียกว่าสัญลักษณ์อินฟิกซ์ ) เท่านั้น เมื่อใช้สัญลักษณ์ เชิงฟังก์ชันหรือสัญลักษณ์แบบโปแลนด์สำหรับทุกการดำเนินการ ลำดับของการดำเนินการจะมาจากสัญลักษณ์นั้นเอง

ระเบียบแบบดั้งเดิม

ลำดับการดำเนินการ กล่าวคือ ลำดับการดำเนินการในนิพจน์มักจะดำเนินการตามข้อตกลงที่นำมาใช้ทั่วทั้งคณิตศาสตร์ วิทยาศาสตร์ เทคโนโลยี และภาษาการเขียนโปรแกรม คอมพิวเตอร์หลายภาษา โดยสรุปได้ดังนี้: [ 2 ] [ 5 ]

  1. วงเล็บ
  2. การยกกำลัง
  3. การคูณและการหาร
  4. การบวกและการลบ

นั่นหมายความว่า ในการประเมินนิพจน์ใดๆ จะต้องประเมินนิพจน์ย่อยที่อยู่ภายในวงเล็บก่อน โดยเริ่มจากภายในสู่ภายนอกหากมีวงเล็บมากกว่าหนึ่งชุด ไม่ว่าจะอยู่ภายในวงเล็บหรือไม่ก็ตาม การดำเนินการที่มีลำดับความสำคัญสูงกว่าในรายการข้างต้นควรถูกนำมาใช้ก่อน การดำเนินการที่มีลำดับความสำคัญเท่ากันโดยทั่วไปจะถูกประเมินจากซ้ายไปขวา

หากแทนที่การหารแต่ละครั้งด้วยการคูณด้วยส่วนกลับ (ตัวผกผันการคูณ) กฎ การสลับที่และการจัดกลุ่มของการคูณจะอนุญาตให้คูณตัวประกอบในแต่ละพจน์เข้าด้วยกันได้ในลำดับใดก็ได้ บางครั้งการคูณและการหารมีลำดับความสำคัญเท่ากัน หรือบางครั้งการคูณมีลำดับความสำคัญสูงกว่าการหาร โปรดดูหัวข้อ§ การหารและการคูณแบบผสมด้านล่าง หากแทนที่การลบแต่ละครั้งด้วยการบวกด้วยจำนวนตรงข้าม (ตัวผกผันการบวก) กฎการสลับที่และการจัดกลุ่มของการบวกจะอนุญาตให้บวกพจน์ได้ในลำดับใดก็ได้

สัญลักษณ์รากที่สองซึ่งหมายถึงรากที่สองตามธรรมเนียมแล้วจะถูกขยายด้วยเส้นขีด ( vinculum ) เหนือตัวเลขใต้ราก เพื่อหลีกเลี่ยงความจำเป็นในการใช้วงเล็บรอบตัวเลขใต้ราก ฟังก์ชันอื่นๆ ใช้วงเล็บรอบอินพุตเพื่อหลีกเลี่ยงความกำกวม[ 6 ] [ 7 ] [ a ] ​​สามารถละเว้นวงเล็บได้หากอินพุตเป็นตัวแปรตัวเลขหรือค่าคงที่ตัวเดียว[ 2 ]เช่นในกรณีของsin x = sin( x )และsin π = sin( π ) [ a ] ​​ตาม ธรรมเนียม แล้ว ธรรมเนียมนี้จะขยายไปถึงเอกนามด้วยดังนั้นsin 3 x = sin(3 x )และแม้แต่sin 1/2xy = sin( 1/2xy )แต่ sin x + y = sin( x ) + yเพราะ x + yไม่ใช่เอกนาม อย่างไรก็ตาม ธรรมเนียมนี้ไม่ได้เข้าใจกันโดยทั่วไป และผู้เขียนบางคนชอบใช้วงเล็บอย่างชัดเจน [ b ]เครื่องคิดเลขและภาษาโปรแกรมบางภาษาต้องการวงเล็บรอบอินพุตของฟังก์ชัน ในขณะที่บางภาษาไม่ต้องการ

วงเล็บและสัญลักษณ์การจัดกลุ่มอื่น ๆ สามารถใช้เพื่อแทนที่ลำดับการดำเนินการตามปกติหรือเพื่อให้ลำดับที่ตั้งใจไว้ชัดเจน สัญลักษณ์ที่จัดกลุ่มสามารถถือเป็นนิพจน์เดียวได้[ 2 ]

ตัวอย่าง

การคูณก่อนการบวก:

นิพจน์ย่อยในวงเล็บจะถูกประเมินก่อน:

การยกกำลังก่อนการคูณ การคูณก่อนการลบ:

เมื่อเขียนนิพจน์เป็นตัวยก ตัวยกนั้นจะถูกจัดกลุ่มตามตำแหน่งเหนือตัวอักษรพื้นฐาน:

ตัวถูกดำเนินการของสัญลักษณ์รากจะถูกกำหนดโดยเครื่องหมายขีดบน:

เส้นเศษส่วนแนวนอนก่อให้เกิดนิพจน์ย่อยสองกลุ่ม โดยกลุ่มหนึ่งอยู่ด้านบนและอีกกลุ่มหนึ่งอยู่ด้านล่าง:

วงเล็บสามารถซ้อนกันได้ และควรพิจารณาจากด้านในออกไปด้านนอก เพื่อความชัดเจน วงเล็บด้านนอกอาจมีขนาดใหญ่กว่าวงเล็บด้านใน หรืออาจใช้ สัญลักษณ์จัดกลุ่มอื่นๆ เช่น วงเล็บปีกกา { } หรือวงเล็บเหลี่ยม[ ] ร่วมกับวงเล็บ ( )ก็ได้ ตัวอย่างเช่น:

กรณีพิเศษ

เครื่องหมายลบเอกภาค

มีธรรมเนียมปฏิบัติที่แตกต่างกันเกี่ยวกับการดำเนินการเอกภาค '−' (โดยปกติจะออกเสียงว่า "ลบ") ในคณิตศาสตร์ที่เขียนหรือพิมพ์ นิพจน์ −3 2จะถูกตีความว่าหมายถึง−(3 2 ) = −9 [ 2 ] [ 8 ]

ในบางแอปพลิเคชันและภาษาการเขียนโปรแกรม โดยเฉพาะMicrosoft Excel (และแอปพลิเคชันสเปรดชีตอื่นๆ) การดำเนินการเอกภาคจะมีลำดับความสำคัญสูงกว่าการดำเนินการทวิภาค กล่าวคือ การลบเอกภาคจะมีลำดับความสำคัญสูงกว่าการยกกำลัง ดังนั้นในภาษาเหล่านั้น −3 2จะถูกตีความว่าเป็น(−3) 2 = 9 [ 9 ] [ 10 ] สิ่งนี้ไม่ใช้กับการดำเนินการลบทวิภาค '−'ตัวอย่างเช่น ใน Microsoft Excel สูตร=-2^2, =(-2)^2, และ=0+-2^2จะคืนค่า 4 แต่สูตร=0-2^2และ=-(2^2)จะคืนค่า −4

การหารและการคูณแบบผสม

ไม่มีข้อตกลงสากลสำหรับการตีความนิพจน์ที่มีทั้งการหารซึ่งแทนด้วย '÷' และการคูณซึ่งแทนด้วย '×' ข้อตกลงที่เสนอ ได้แก่ การกำหนดลำดับความสำคัญเท่ากันให้กับการดำเนินการและประเมินจากซ้ายไปขวา หรือเทียบเท่ากับการปฏิบัติต่อการหารเป็นการคูณด้วยส่วนกลับแล้วประเมินในลำดับใดก็ได้[ 11 ]การประเมินการคูณทั้งหมดก่อนแล้วตามด้วยการหารจากซ้ายไปขวา หรือการละเว้นนิพจน์ดังกล่าวและแยกความหมายโดยวงเล็บอย่างชัดเจนเสมอ[ 12 ]

นอกเหนือจากการศึกษาขั้นพื้นฐานแล้ว สัญลักษณ์ '÷' สำหรับการหารแทบจะไม่ถูกใช้ แต่จะถูกแทนที่ด้วยการใช้เศษส่วนพีชคณิต [ 13 ] เศษส่วนเหล่านี้มักเขียน "แนวตั้ง" อย่างชัดเจนและไม่คลุมเครือ โดยวางตัวเศษไว้เหนือตัวส่วนคั่นด้วยเส้นแบ่งเศษส่วน แต่ก็สามารถเขียน "แนวนอน" ได้เช่นกัน โดยคั่นตัวเศษและตัวส่วนด้วย เครื่องหมาย ทับ '/' [ 14 ]กล่าวคือ การแสดงออกเช่นa ÷ bจะถูกหลีกเลี่ยงและแทนที่ด้วยเอ/หรือ / ​​

การคูณที่แสดงโดยการวางติดกัน (หรือที่เรียกว่าการคูณโดยนัย ) สร้างหน่วยภาพและมักได้รับความสำคัญมากกว่าการดำเนินการอื่นๆ ส่วนใหญ่ ในเอกสารทางวิชาการ เมื่อเศษส่วนในบรรทัดรวมกับการคูณโดยนัยโดยไม่มีวงเล็บที่ชัดเจน การคูณจะถูกตีความตามธรรมเนียมว่ามีความสำคัญมากกว่าการหาร เช่น1 / 2 nจะถูกตีความว่าหมายถึง1 / (2 · n )แทนที่จะเป็น(1 / 2) · n [ 2 ] [ 11 ] [ 15 ] [ 16 ]ตัวอย่างเช่นคำแนะนำในการส่งต้นฉบับสำหรับ วารสาร Physical Reviewระบุโดยตรงว่าการคูณมีความสำคัญมากกว่าการหาร[ 17 ]และนี่ก็เป็นธรรมเนียมที่พบในตำราฟิสิกส์ เช่น Course of Theoretical PhysicsโดยLandauและLifshitz [ c ]และตำราคณิตศาสตร์ เช่นConcrete MathematicsโดยGraham , KnuthและPatashnik [ 18 ]อย่างไรก็ตาม ผู้เขียนบางคนแนะนำไม่ให้ใช้การแสดงออกเช่นa / bcโดยแนะนำให้ใช้วงเล็บอย่างชัดเจนa / ( bc )แทน[ 3 ]

กรณีที่ซับซ้อนกว่าจะมีความกำกวมมากกว่า ตัวอย่างเช่น สัญลักษณ์1 / 2 π ( a + b )อาจหมายถึง 1 / [2 π · ( a + b )]หรือ[1 / (2 π )] · ( a + b )ก็ได้[ 19 ]บางครั้งการตีความขึ้นอยู่กับบริบท คำแนะนำในการส่ง Physical Reviewแนะนำไม่ให้ใช้รูปแบบa / b / c ; นิพจน์ที่ชัดเจนกว่า เช่น( a / b ) / cหรือa / ( b / c )จะไม่กำกวม[ 17 ]

6÷2(1+2) จะถูกตีความว่าเป็น 6÷(2×(1+2)) โดยเครื่องคิดเลขfx-82MS (ด้านบน) และ (6÷2)×(1+2) โดย เครื่องคิดเลข TI-83 Plus (ด้านล่าง) ตามลำดับ

ความกำกวมนี้เป็นหัวข้อของมีมบนอินเทอร์เน็ตเช่น " 8 ÷ 2(2 + 2) " ซึ่งมีการตีความที่ขัดแย้งกันสองแบบ คือ 8 ÷ [2 · (2 ​​+ 2)] = 1 และ (8 ÷ 2) · (2 ​​+ 2) = 16 [ 16 ] [ 20 ]นักวิจัยด้านการศึกษาคณิตศาสตร์ Hung-Hsi Wu ชี้ให้เห็นว่า "เราไม่เคยได้รับการคำนวณประเภทนี้ในชีวิตจริง" และเรียกตัวอย่างที่สร้างขึ้นเช่นนี้ว่า "เกม Gotcha! ชนิดหนึ่งที่ออกแบบมาเพื่อดักจับคนที่ไม่ทันระวังตัวโดยการกำหนดกฎเกณฑ์ที่ซับซ้อนอย่างไม่สมเหตุสมผล" [ 13 ]

การยกกำลังแบบอนุกรม

หาก มีการระบุ การยกกำลังด้วยสัญลักษณ์ที่เรียงซ้อนกันโดยใช้สัญกรณ์ตัวยก กฎทั่วไปคือการทำงานจากบนลงล่าง: [ 2 ] [ 7 ]

a b c = a ( b c ) ,

ซึ่งโดยทั่วไปจะไม่เท่ากับ ( a b ) cข้อตกลงนี้มีประโยชน์เพราะมีคุณสมบัติของการยกกำลังที่ว่า ( a b ) c = a bcดังนั้นจึงไม่จำเป็นต้องใช้การยกกำลังแบบอนุกรมสำหรับกรณีนี้

อย่างไรก็ตาม เมื่อการยกกำลังถูกแทนด้วยสัญลักษณ์ที่ชัดเจน เช่น เครื่องหมายแคเร็ต (^) หรือลูกศร (↑) จะไม่มีมาตรฐานทั่วไป ตัวอย่างเช่นMicrosoft ExcelและภาษาโปรแกรมคำนวณMATLABประเมินค่าเป็น ( a b ) cแต่Google SearchและWolfram Alphaประเมินค่าเป็นa ( b c )ดังนั้น จึงมีค่าเป็น 4,096 ในกรณีแรก และเป็น 262,144 ในกรณีที่สอง a^b^c4^3^2

เทคนิคช่วยจำ

ความหมายของคำย่อ PEMDAS และ BODMAS

คำย่อช่วยจำมักถูกสอนในโรงเรียนประถมเพื่อช่วยให้นักเรียนจำลำดับการดำเนินการได้[ 21 ] [ 22 ]คำย่อPEMDASซึ่งย่อมาจากParentheses , Exponents , Multiplication / Divination , Addition / Subtraction [ 23 ]เป็นที่นิยมใช้ในสหรัฐอเมริกา[ 24 ]และฝรั่งเศส[ 25 ]บางครั้งตัวอักษรจะถูกขยายเป็นคำในประโยคช่วยจำ เช่น "Please Excuse My Dear Aunt Sally" [ 26 ] สหราชอาณาจักรและ ประเทศ ในเครือจักรภพ อื่นๆ อาจใช้BODMAS (หรือบางครั้งBOMDAS ) ซึ่งย่อมาจากBrackets , Of , Division / Multiplication , Addition / Subtractionโดย "of" หมายถึงการคูณเศษส่วน[ 27 ] [ 28 ]บางครั้งOจะถูกขยายเป็นOrderซึ่งหมายถึงเลขชี้กำลังหรือราก[ 28 ] [ 29 ]หรือแทนที่ด้วยIสำหรับดัชนีในตัวช่วยจำทางเลือกBIDMAS [ 28 ] [ 30 ]ในแคนาดาและนิวซีแลนด์BEDMAS เป็นที่นิยม[ 31 ]

ตัวช่วยจำเหล่านี้อาจทำให้เข้าใจผิดได้เมื่อเขียนในลักษณะนี้[ 26 ]ตัวอย่างเช่น การตีความกฎข้างต้นผิดไปว่าหมายถึง "บวกก่อน ลบทีหลัง" จะทำให้ประเมินนิพจน์[ 26 ] ผิดพลาด เป็นในขณะที่การประเมินที่ถูกต้องคือค่าเหล่านี้จะแตกต่างกันเมื่อ

ในประเทศเยอรมนี หลักการคำนวณจะสอนง่ายๆ ว่าPunktrechnung vor Strichrechnungซึ่งแปลว่า "การดำเนินการจุดก่อนการดำเนินการเส้น" โดยอ้างอิงถึงรูปทรงกราฟิกของสัญลักษณ์·  (การคูณ),   (การหาร), +  (การบวก) และ  (การลบ) วิธีนี้ช่วยหลีกเลี่ยงความเข้าใจผิดที่อาจเกิดขึ้นดังที่กล่าวมาข้างต้น

ตัวย่อช่วยจำถูกวิพากษ์วิจารณ์ว่าไม่ได้พัฒนาความเข้าใจเชิงแนวคิดเกี่ยวกับลำดับการดำเนินการและไม่ได้ตอบคำถามของนักเรียนเกี่ยวกับจุดประสงค์หรือความยืดหยุ่น[ 32 ] [ 33 ]นักเรียนที่เรียนรู้ลำดับการดำเนินการผ่านตัวย่อช่วยจำมักจะทำผิดพลาด[ 34 ]เช่นเดียวกับครูฝึกหัดบางคน[ 35 ]แม้ว่านักเรียนจะเรียนรู้ตัวย่อได้อย่างถูกต้อง แต่การมุ่งเน้นไปที่การท่องจำเกร็ดความรู้มากเกินไปกลับบดบังเนื้อหาทางคณิตศาสตร์ที่สำคัญ[ 13 ]การประยุกต์ใช้ขั้นตอนของตัวย่อไม่ตรงกับความเข้าใจโดยสัญชาตญาณของผู้เชี่ยวชาญเกี่ยวกับสัญลักษณ์ทางคณิตศาสตร์: สัญลักษณ์ทางคณิตศาสตร์ระบุการจัดกลุ่มในรูปแบบอื่นนอกเหนือจากวงเล็บหรือวงเล็บเหลี่ยม และนิพจน์ทางคณิตศาสตร์เป็นลำดับชั้นแบบต้นไม้มากกว่าโครงสร้างที่มี "ลำดับ" เชิงเส้น ยิ่งไปกว่านั้น ไม่มีลำดับเดียวที่ต้องใช้ในการทำให้การแสดงออกทางคณิตศาสตร์ง่ายขึ้นหรือประเมินค่า และไม่มีการทำให้ง่ายขึ้นตามหลักการสากลสำหรับการแสดงออกใดๆ โดยเฉพาะ และผู้เชี่ยวชาญสามารถใช้การแปลงและการแทนที่ที่ถูกต้องได้อย่างคล่องแคล่วในลำดับใดก็ได้ที่สะดวก ดังนั้นการเรียนรู้ขั้นตอนที่เข้มงวดอาจทำให้ผู้เรียนเข้าใจสัญลักษณ์ทางคณิตศาสตร์ผิดและจำกัด[ 36 ]

เครื่องคิดเลข

เครื่องคิดเลขแต่ละเครื่องมีลำดับการดำเนินการที่แตกต่างกัน[ 2 ]เครื่องคิดเลขแบบง่ายหลายเครื่องที่ไม่มีสแต็กจะ ใช้ การป้อนข้อมูลแบบลูกโซ่โดยทำงานตามลำดับการกดปุ่มโดยไม่มีการกำหนดลำดับความสำคัญให้กับการดำเนินการต่างๆ ทำให้ได้ผลลัพธ์ที่แตกต่างจากเครื่องคิดเลขที่ซับซ้อนกว่า ตัวอย่างเช่น ในเครื่องคิดเลขแบบง่าย การพิมพ์1 + 2 × 3 =จะได้ผลลัพธ์เป็น 9 ในขณะที่เครื่องคิดเลขที่ซับซ้อนกว่าจะใช้ลำดับความสำคัญมาตรฐาน ดังนั้นการพิมพ์1 + 2 × 3 =จะได้ผลลัพธ์เป็น 7

เครื่องคิดเลขบางรุ่นอาจจัดวางเลขยกกำลังไว้ทางซ้ายหรือทางขวา ตัวอย่างเช่น นิพจน์จะถูกตีความว่าเป็นa ( b c )บน เครื่องคิด เลข TI-92และTI-30XS MultiViewใน "โหมด Mathprint" ในขณะที่จะถูกตีความว่าเป็น ( a b ) cบน เครื่องคิด เลข TI-30XIIและ TI-30XS MultiView ใน "โหมด Classic" a^b^c

นิพจน์เช่นนี้จะถูกตีความว่าเป็น 1/(2 x ) โดยTI-82 [ 3 ]เช่นเดียวกับเครื่องคิดเลขCasio รุ่นใหม่หลายรุ่น [ 37 ] (สามารถกำหนดค่าได้ในบางรุ่น เช่นfx-9750GIII ) แต่จะถูกตีความว่าเป็น (1/2) xโดย TI -83และเครื่องคิดเลข TI รุ่นอื่นๆ ทุกรุ่นที่วางจำหน่ายตั้งแต่ปี 1996 [ 38 ] [ 3 ]เช่นเดียวกับ เครื่องคิดเลข Hewlett-Packard ทุกรุ่น ที่มีสัญลักษณ์พีชคณิต ในขณะที่การตีความแบบแรกอาจเป็นที่คาดหวังของผู้ใช้บางรายเนื่องจากลักษณะของการคูณโดยนัย [ 39 ] การ ตีความแบบหลังนั้นสอดคล้องกับกฎที่ว่าการคูณและการหารมีลำดับความสำคัญเท่ากันมากกว่า[ 3 ]1/2x

เมื่อผู้ใช้ไม่แน่ใจว่าเครื่องคิดเลขจะตีความนิพจน์อย่างไร สามารถใช้วงเล็บเพื่อขจัดความกำกวมได้[ 3 ]

ลำดับการดำเนินการเกิดขึ้นเนื่องจากการปรับใช้สัญกรณ์อินฟิกซ์ในสัญกรณ์คณิตศาสตร์มาตรฐานซึ่งอาจกำกวมในเชิงสัญกรณ์หากไม่มีข้อตกลงดังกล่าว ตรงกันข้ามกับสัญกรณ์โพสต์ฟิกซ์หรือสัญกรณ์พรีฟิกซ์ซึ่งไม่จำเป็นต้องมีลำดับการดำเนินการ[ 40 ] [ 41 ]ดังนั้น เครื่องคิดเลขที่ใช้สัญกรณ์โปแลนด์แบบย้อนกลับ (RPN) โดยใช้สแต็กเพื่อป้อนนิพจน์ตามลำดับความสำคัญที่ถูกต้อง จึงไม่จำเป็นต้องมีวงเล็บหรือลำดับการดำเนินการเฉพาะรุ่นใดๆ[ 26 ] [ 23 ]

ภาษาโปรแกรม

ภาษาโปรแกรมส่วนใหญ่ใช้ระดับความสำคัญที่สอดคล้องกับลำดับที่ใช้กันทั่วไปในคณิตศาสตร์[ 42 ]แม้ว่าภาษาอื่นๆ เช่นAPLและSmalltalkจะไม่มี กฎลำดับความสำคัญ ของตัวดำเนินการ (ใน APL การประเมินค่าจะเป็นไปจากขวาไปซ้ายอย่างเคร่งครัด ใน Smalltalk จะเป็นไปจากซ้ายไปขวาอย่างเคร่งครัด)

นอกจากนี้ เนื่องจากตัวดำเนินการหลายตัวไม่มีคุณสมบัติการสลับที่ ลำดับภายในระดับใดระดับหนึ่งจึงมักถูกกำหนดโดยการจัดกลุ่มจากซ้ายไปขวา16/4/4เช่น(16/4)/4 = 1แทนที่จะเป็น16/(4/4) = 16 ตัวดำเนินการดังกล่าวเรียกว่า "ตัวดำเนินการสลับที่ซ้าย" อย่างไรก็ตาม มีข้อยกเว้น เช่น ภาษาที่มีตัวดำเนินการที่สอดคล้องกับ การดำเนินการ consบนลิสต์ มักจะจัดกลุ่มจากขวาไปซ้าย ("ตัวดำเนินการสลับที่ขวา") เช่น ในภาษาHaskell1:2:3:4:[] == 1:(2:(3:(4:[]))) == [1,2,3,4]

เดนนิส ริตชีผู้สร้างภาษา Cกล่าวถึงลำดับความสำคัญในภาษา C (ซึ่งภาษาโปรแกรมที่ยืมกฎเหล่านั้นมาจาก C เช่นC++ , PerlและPHP ใช้ร่วมกัน ) ว่าจะเป็นที่ต้องการมากกว่าหากย้ายตัวดำเนินการบิตไวส์ไปอยู่เหนือตัวดำเนินการเปรียบเทียบ[ 43 ]โปรแกรมเมอร์หลายคนคุ้นเคยกับลำดับนี้ แต่ภาษาที่ได้รับความนิยมในปัจจุบัน เช่นPython [ 44 ]และRuby [ 45 ]กลับมีลำดับนี้กลับกัน ระดับความสำคัญสัมพัทธ์ของตัวดำเนินการที่พบในภาษาสไตล์ C หลายภาษามีดังนี้:

1()   []   ->   .   ::การเรียกฟังก์ชัน ขอบเขต การเข้าถึงอาร์เรย์/สมาชิก
2!   ~   -   +   *   &   sizeof   ประเภทการหล่อ   ++   --  ตัวดำเนินการเอกภาคส่วนใหญ่, ขนาดและการแปลงชนิดข้อมูล (จากขวาไปซ้าย)
3*   /   %MODการคูณ การหาร มอดูลัส
4+   -การบวกและการลบ
5<<   >>เลื่อนบิตไปทางซ้ายและขวา
6<   <=   >   >=การเปรียบเทียบ: น้อยกว่าและมากกว่า
7==   !=การเปรียบเทียบ: เท่ากันและไม่เท่ากัน
8&บิตไวส์ AND
9^เอกซ์คลูซีฟ OR (XOR) แบบบิตไวส์
10|OR แบบบิตไวส์รวม (ปกติ)
11&&ตรรกะ AND
12||ตรรกะ OR
13?:นิพจน์เงื่อนไข (แบบสามตัวแปร)
14=   +=   -=   *=   /=   %=   &=   |=   ^=   <<=   >>=ตัวดำเนินการกำหนดค่า (จากขวาไปซ้าย)
15,ตัวดำเนินการคอมมา
ไวยากรณ์แบบเป็นทางการที่เรียบง่ายสำหรับนิพจน์ทางคณิตศาสตร์ในภาษาโปรแกรม( ซ้าย) [ 46 ]และการสร้างนิพจน์ตัวอย่าง(a+b)^2/2(ขวา)ซึ่งสอดคล้องกับโครงสร้างลำดับชั้น (" ต้นไม้ไวยากรณ์ ") ซึ่งเป็นเอกลักษณ์สำหรับนิพจน์ที่กำหนดคอมไพเลอร์สร้างรหัสเครื่องจากต้นไม้ในลักษณะที่การดำเนินการที่มาจากระดับลำดับชั้นต่ำสุดจะถูกดำเนินการก่อน

ตัวอย่าง:

  • !A + !Bถูกตีความว่า(!A) + (!B)
  • ++A + !Bถูกตีความว่า(++A) + (!B)
  • A + B * Cถูกตีความว่าA + (B * C)
  • A || B && Cถูกตีความว่าA || (B && C)
  • A && B == Cถูกตีความว่าA && (B == C)
  • A & B == Cถูกตีความว่าA & (B == C)

(ใน Python และ Ruby A & B == Cจะถูกตีความว่าเป็น(A & B) == C.)

คอมไพเลอร์ที่แปลงโค้ดต้นฉบับเป็นหลายภาษาจำเป็นต้องจัดการกับปัญหาลำดับการดำเนินการที่แตกต่างกันในแต่ละภาษาอย่างชัดเจน ตัวอย่างเช่น Haxeจะกำหนดมาตรฐานลำดับการดำเนินการและบังคับใช้โดยการแทรกวงเล็บในตำแหน่งที่เหมาะสม

พบว่าความแม่นยำของความรู้ของนักพัฒนาซอฟต์แวร์เกี่ยวกับลำดับความสำคัญของตัวดำเนินการไบนารีนั้นสอดคล้องกับความถี่ในการปรากฏในซอร์สโค้ดอย่างใกล้ชิด[ 47 ]

ประวัติศาสตร์

ลำดับการดำเนินการเกิดขึ้นอย่างค่อยเป็นค่อยไปตลอดหลายศตวรรษ กฎที่ว่าการคูณมีลำดับความสำคัญเหนือกว่าการบวกถูกนำมาใช้ในการพัฒนาสัญลักษณ์พีชคณิตในช่วงทศวรรษที่ 1600 เนื่องจากคุณสมบัติการกระจายบ่งชี้ถึงลำดับชั้นตามธรรมชาติเช่นนี้ เมื่อไม่นานมานี้ในช่วงทศวรรษที่ 1920 นักประวัติศาสตร์คณิตศาสตร์Florian Cajoriได้ระบุถึงความไม่เห็นด้วยเกี่ยวกับว่าการคูณควรมีลำดับความสำคัญเหนือกว่าการหาร หรือควรได้รับการปฏิบัติอย่างเท่าเทียมกัน คำว่า "ลำดับการดำเนินการ" และตัวย่อ "PEMDAS/BEDMAS" ได้รับการกำหนดเป็นทางการเฉพาะในช่วงปลายศตวรรษที่ 19 หรือต้นศตวรรษที่ 20 เท่านั้น เนื่องจากความต้องการตำราเรียนมาตรฐานเพิ่มขึ้น ความคลุมเครือเกี่ยวกับประเด็นต่างๆ เช่น การคูณโดยนัยมีลำดับความสำคัญเหนือกว่าการคูณและการหารโดยชัดแจ้งในนิพจน์เช่นa /2 bซึ่งสามารถตีความได้ว่าเป็นa /(2 b ) หรือ ( a /2) ×  bบ่งชี้ว่าข้อตกลงยังไม่มั่นคงอย่างสมบูรณ์[ 48 ] [ 49 ]

ดูเพิ่มเติม

หมายเหตุ

  1. ^ a bผู้เขียนบางคนจงใจหลีกเลี่ยงการละเว้นวงเล็บเมื่อใช้ฟังก์ชัน แม้แต่ในกรณีที่มีตัวแปรเชิงตัวเลขหรือค่าคงที่เพียงตัวเดียว (เช่นOldham ในAtlas ) ในขณะที่ผู้เขียนคนอื่นๆ (เช่นNIST ) ใช้การลดความซับซ้อนของสัญลักษณ์นี้เฉพาะในกรณีที่มีชื่อฟังก์ชันหลายตัวอักษรที่เฉพาะเจาะจง (เช่นsin) แต่จะไม่ใช้กับชื่อฟังก์ชันทั่วไป (เช่นf)
  2. ^เพื่อหลีกเลี่ยงความกำกวม การลดรูปสัญลักษณ์สำหรับเอกนาม นี้ จึงถูกหลีกเลี่ยงโดยเจตนาในงานเขียนต่างๆ เช่น Atlas of Functionsของ OldhamหรือNIST Handbook of Mathematical Functions
  3. ^ตัวอย่างเช่น หนังสือกลศาสตร์ ฉบับที่สาม ของแลนเดาและลิฟชิตซ์มีนิพจน์เช่น hP z /2 π (หน้า 22) และหนังสือบรรยายของเฟย์นแมน เล่มแรก มีนิพจน์เช่น 1/2N (หน้า 6–7)ในหนังสือทั้งสองเล่ม นิพจน์เหล่านี้เขียนขึ้นโดยใช้ข้อตกลงว่าเส้นโซลิดัสจะถูกประเมินค่าเป็นลำดับสุดท้าย

อ่านเพิ่มเติม

  • โฟธ, ไมเคิล; วิลค์, โธมัส, สหพันธ์. (2558) Keller , Stack und automatisches Gedächtnis – eine Struktur mit Potenzial [ Cellar , stack and automatic memory – a Structure with Potential ] (PDF ) Kolloquium 14 พฤศจิกายน 2014 ในเมืองเยนา ประเทศเยอรมนี (เป็นภาษาเยอรมัน) บอนน์: Gesellschaft für Informatik. ไอเอสบีเอ็น 978-3-88579-426-4.
  • เบิร์กแมน, จอร์จ มาร์ค (2013). "ลำดับการดำเนินการทางคณิตศาสตร์ โดยเฉพาะอย่างยิ่งคำถาม 48/2(9+3)"ภาควิชาคณิตศาสตร์ มหาวิทยาลัยแคลิฟอร์เนียสืบค้นเมื่อ2020-07-22
  • Zachary, Joseph L. (1997) "ลำดับความสำคัญของตัวดำเนินการ" ภาคผนวกของหนังสือIntroduction to Scientific Programmingมหาวิทยาลัยยูทาห์แผ่นงาน Maple สมุด บันทึกMathematica
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=Order_of_operations&oldid=1359112408#Serial_exponentiation "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ ลำดับการดำเนินการ

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

ระเบียบแบบดั้งเดิม

ลำดับการดำเนินการ กล่าวคือ ลำดับการดำเนินการในนิพจน์มักจะดำเนินการตามข้อตกลงที่นำมาใช้ทั่วทั้งคณิตศาสตร์ วิทยาศาสตร์ เทคโนโลยี และ ภาษาการเขียนโปรแกรม คอมพิวเตอร์หลายภาษา โดยสรุปได้ดังนี้: [ 2 ] [ 5 ]

เครื่องหมายลบเอกภาค

มีธรรมเนียมปฏิบัติที่แตกต่างกันเกี่ยวกับ การดำเนินการเอกภาค '−' (โดยปกติจะออกเสียงว่า "ลบ") ในคณิตศาสตร์ที่เขียนหรือพิมพ์ นิพจน์ −3 2 จะถูกตีความว่าหมายถึง −(3 2 ) = −9 [ 2 ] [ 8 ]

การหารและการคูณแบบผสม

ไม่มีข้อตกลงสากลสำหรับการตีความนิพจน์ที่มีทั้งการหารซึ่งแทนด้วย '÷' และการคูณซึ่งแทนด้วย '×' ข้อตกลงที่เสนอ ได้แก่ การกำหนดลำดับความสำคัญเท่ากันให้กับการดำเนินการและประเมินจากซ้ายไปขวา...