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

ความกำกวมนี้เป็นหัวข้อของมีมบนอินเทอร์เน็ตเช่น " 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
เทคนิคช่วยจำ

คำย่อช่วยจำมักถูกสอนในโรงเรียนประถมเพื่อช่วยให้นักเรียนจำลำดับการดำเนินการได้[ 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 | , | ตัวดำเนินการคอมมา |

(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 ]
ดูเพิ่มเติม
- สัญกรณ์ตัวดำเนินการทั่วไป (สำหรับคำอธิบายที่เป็นทางการมากขึ้น)
- การผ่าตัดเกินขนาด
- ตัวเชื่อมตรรกะ #ลำดับความสำคัญ
- ความสัมพันธ์ของตัวดำเนินการ
- การโอเวอร์โหลดผู้ปฏิบัติงาน
- ลำดับความสำคัญของตัวดำเนินการในภาษา C และ C++
- สัญกรณ์โปแลนด์
- สัญกรณ์โปแลนด์กลับด้าน
หมายเหตุ
- ^ a bผู้เขียนบางคนจงใจหลีกเลี่ยงการละเว้นวงเล็บเมื่อใช้ฟังก์ชัน แม้แต่ในกรณีที่มีตัวแปรเชิงตัวเลขหรือค่าคงที่เพียงตัวเดียว (เช่นOldham ในAtlas ) ในขณะที่ผู้เขียนคนอื่นๆ (เช่นNIST ) ใช้การลดความซับซ้อนของสัญลักษณ์นี้เฉพาะในกรณีที่มีชื่อฟังก์ชันหลายตัวอักษรที่เฉพาะเจาะจง (เช่น
sin) แต่จะไม่ใช้กับชื่อฟังก์ชันทั่วไป (เช่นf) - ^เพื่อหลีกเลี่ยงความกำกวม การลดรูปสัญลักษณ์สำหรับเอกนาม นี้ จึงถูกหลีกเลี่ยงโดยเจตนาในงานเขียนต่างๆ เช่น Atlas of Functionsของ OldhamหรือNIST Handbook of Mathematical Functions
- ^ตัวอย่างเช่น หนังสือกลศาสตร์ ฉบับที่สาม ของแลนเดาและลิฟชิตซ์มีนิพจน์เช่น hP z /2 π (หน้า 22) และหนังสือบรรยายของเฟย์นแมน เล่มแรก มีนิพจน์เช่น 1/2 √ N (หน้า 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
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ ลำดับการดำเนินการ
ใน คณิตศาสตร์ และ การเขียนโปรแกรมคอมพิวเตอร์ ลำดับ การดำเนินการ คือชุดของข้อตกลงเกี่ยวกับ การดำเนินการทางคณิตศาสตร์ ที่จะต้องดำเนินการก่อนเพื่อให้ได้ค่า ของนิพจน์ทางคณิตศาสตร์...
ระเบียบแบบดั้งเดิม
ลำดับการดำเนินการ กล่าวคือ ลำดับการดำเนินการในนิพจน์มักจะดำเนินการตามข้อตกลงที่นำมาใช้ทั่วทั้งคณิตศาสตร์ วิทยาศาสตร์ เทคโนโลยี และ ภาษาการเขียนโปรแกรม คอมพิวเตอร์หลายภาษา โดยสรุปได้ดังนี้: [ 2 ] [ 5 ]
เครื่องหมายลบเอกภาค
มีธรรมเนียมปฏิบัติที่แตกต่างกันเกี่ยวกับ การดำเนินการเอกภาค '−' (โดยปกติจะออกเสียงว่า "ลบ") ในคณิตศาสตร์ที่เขียนหรือพิมพ์ นิพจน์ −3 2 จะถูกตีความว่าหมายถึง −(3 2 ) = −9 [ 2 ] [ 8 ]
การหารและการคูณแบบผสม
ไม่มีข้อตกลงสากลสำหรับการตีความนิพจน์ที่มีทั้งการหารซึ่งแทนด้วย '÷' และการคูณซึ่งแทนด้วย '×' ข้อตกลงที่เสนอ ได้แก่ การกำหนดลำดับความสำคัญเท่ากันให้กับการดำเนินการและประเมินจากซ้ายไปขวา...