Редослед операција

Из Википедије, слободне енциклопедије
Иди на навигацију Иди на претрагу

У математици и програмирању, редослед операција (или предност оператера) је колекција правила која дефинишу које процедуре да се изврше прве како би се проценио дат математички израз.

На пример, у математици а и у већини рачунарских језика, множење претходи сабирању.[1] Тако, у изразу  2 + 3 × 4, решење је 14 (не 20). Заграде, ( и ), { и }, или [ и ] — које имају своја сопствена правила — могу указати алтернативни ред или појачати уобичајни ред да би избегли конфузију, тако предходни израз може бити промењен у (2 + 3) × 4 за добијање 20, или  2 + (3 × 4) за добијање 14 ( уобичајно ако нема заграда).

Од увођења модерног алгебарског записа, множење је преузело примат над сабирањем.[1][2] Tако 3 + 4 × 5 = 4 × 5 + 3 = 23. Када су експоненти први пут уведени у 16. и 17. веку, експоненти су преузели примат над сабирањем и множењем и могу се поставити само као "суперскрипт" са десне стране њихове базе.[1] Tако 3 + 52 = 28 и 3 × 52 = 75. Да би променили редослед операција, првобитно "црта" (надвучено или подвучено) је коришћена. Данас, заграде се користе за означавање експлицитне предности груписањем делова израза који би требало да буде први вреднован. Што резултира (2 + 3) × 4 = 20 тако је означено да сабирање претходи множењу или (3 + 5)2 = 64 где је означено да сабирање претходи експоненту.

Дефиниција[уреди]

Редослед операција коришћених током математике, науке, технологије и многих рачунарских програмских језика је изражен овде:[3]

Степеновање[1] и кореновање
Множење[1] и дељење[1]
Сабирање[1] и одузимање[1]

То значи да ако математички израз претходи једном бинарном оператеру а затим и следећем, виши оператор на листи би требало да се примени први.[1] Комутативни и асоцијативни закони сабирања и множења омогућавају додавање услова у било ком редоследу, и факторе множења додавајући их такође у било ком редоследу- али мешовите операције морају поштовати стандардна правила операција.

Корисно је за третирање дељења као реципрочно множење (множење инверзном) и одузимања као сабирање супротног броја. Тако 3/4 = 3 ÷ 4 = 3 • ¼; другим речима количник од 3 и 4 једнак је производу  3 и  ¼. Такође 3 − 4 = 3 + (−4); Другим речима разлика од 3 и 4 једнак је збиру позитивне тројке и негативне четворке. Тако, 1 − 3 + 7 може да се посматра као збир 1, негативна 3, и 7, и додавање у било ком редоследу: (1 − 3) + 7 = −2 + 7 = 5 и обрнутим редоследом (7 − 3) + 1 = 4 + 1 = 5, увек држећи негативан предзнак са 3.

Симбол корен, √, захтева симбол груписања. Уобичајен симбол груписања је бар (зове се "црта"). Остале функције користе заграде око улаза како би избегли двосмисленост. Заграде се понекад испуштају ако је улаз моном. Тако, sin x = sin(x), али sin x + y = sin(x) + y, јер x + y није моном.[1] Неки калкулатори и програмски језици захтевају заграде код функција улаза, неки не.

Нагомилани експоненти су примењени одозго на доле, с десна на лево.[1][4]

Симболи груписања могу се користити уместо уобичајеног редоследа операција. [1] Груписани симболи могу се третирати као један израз.[1] Симболи груписања могу се уклонити помоћу асоцијативног и дистрибутивног закона, такође могу бити уклоњени ако је израз унутар симбола груписања довољно поједностављен, тако да нема двосмислених резултата из њиховог уклањања.

Примери[уреди]

 Хоризонтална фракционална линија такође делује као симбол груписања:

За лакше читање, остали груписани симболи као што су заграде, понекад зване витичасте протезе { }, или заграде, понекад зване коцкасте заграде [ ], су често коришћене заједно са заградама ( ). На пример:

Изузеци[уреди]

Постоје супротстављене конвенције које се односе на унарни оператор - (обично читамо "минус"). У писаној или штампаној математици, израз −32 се тумачи да значи 0 − (32) = −9,[1][5] али у неким апликацијама и програмским језицима, посебно Мајкрософт Офис Ексел (и другим апликацијама табела) и програмски језик бц, унарни оператори имају већи приоритет од бинарних оператора, то јест, унарни минус (негација или +/-) има већи приоритет од степеновање, тако да у тим језицима −32 ће бити представљено као (−3)2 = 9.[6] Ово се не односи на бинарни оператор минус-; на пример док формула  =-2^2 и =0+-2^2 враћа 4 у Мајкрософт Екселу, формула =0-2^2 враћа −4. У случајевима када постоји могућност да би нотација била погрешно протумачена, бинарна операција недостатак може извршити експлицитно наводећи водећу 0 (као у 0-2^2 уместо само -2^2), или заграде које се могу користити да разјасне намењено значење.

Слично, може бити двосмислености у коришћењу косе црте ('/') симбол у изразу као што је 1/2x.[7] Ако неко препише овај израз као 1 ÷ 2 × x и онда тумачи знак дељења као назначено реципрочно множење, то постаје:

Са овом интерпретацијом 1/2x је једнака (1/2)x.[1][8] Међутим, у неким академским литературама, множење се тумачи као већи приоритет од дељења, тако да 1/2x једнако је 1/(2x), не (1/2)x. На пример, упутство рукописа за часопис Физички преглед наводи да је множење вишег приоритета од дељења са косом цртом,[9] а то је уједно и конвенција примећена у угледним уџбеницима физике, као што је Курс теоријске физике од стране Ландау и Лифхица и Фојманове лекције Физике.[nb 1] Волфрам алфа променио је почетком 2013. да се исто односе множење и експлицитно множење. Раније, се множење без загради претпостављало да везује снажније него експлицитно множење.  2x/2x, 2·x/2·x, и 2(x)/2(x) сада сви дају  x2.[10] Нови Тексашки калкулатори (ТИ-83 или каснији) такође дају x2 у сва три случаја.[11]

Мнемотехника[уреди]

Мнемотехника се често користи да помогне студентима да запамте правила, правила која се уче коришћењем акронима. У Америци, акроним ПЕМДАС је чест. Представља, Заграде (енг. П), Експоненте (енг. Е), Множење (енг. М), Дељење (енг. Д), Сабирање (енг. А), Одузимање (енг. С). ПЕМДАС је често проширен као "Please Excuse My Dear Aunt Sally", са првим словом од сваке речи.[7] Канада користи БЕДМАС, за поменуте операције. Врло често у Британији и Аустралији,[12] су БОДМАС и БИДМАС. У неким државама где се прича енглески, симболи инклузије и експоненти могу бити названи или индекси, овлашћења или налози, који имају исти приоритет као корени. Од како множење и дељење имају једнаку предност, М и Д се често смењују, што је довело до таквих скраћеница, као БОМДАС. Правилан редослед операција у већини држава је био БОДМАС, што је представљало Заграде, Правила, Дељење, Множење, Сабирање и Одузимање. Ова мнемотехника је била уобичајена све док нису експоненти додати у мнемотехнику.[13][14][15]

Ове мнемотехника може да завара када је написана на овај начин,[7] поготово ако корисник није свестан да множење и дељење имају једнаку предност, као што су сабирање и одузимање. Коришћењем било ког од наведених правила у циљу "сабирање прво, одузимање после" би такође дало погрешан одговор на проблем:[7]

Право решење је 9 (и не 5, као кад би се прво извршило сабирање и решење коришћено са одузимањем након тога). Најбољи начин да се разуме комбинација сабирања и одузимања је да се мисли на одузимање као сабирање негативног броја. У овом случају, проблем може бити сагледан као збир позитивне десетке, негативне тројке, и позитивне двојке:

Да би нагласило да сабирање и одузимање имају исту предност (и множење и дељење имају исту предност) мнемотехника је понекад писана  П E MД AС; или, једноставно као ПЕМА.

Сви ови акрономи спајају две различите идеје, операције на једну страну и симболе груписања на другу, које могу довести до конфузије.

Посебни случајеви[уреди]

Ако је степеновање назначено напакованим симболима, уобичајно правило је да се ради одозго на доле, јер степеновање је десно-асоцијативно у математици тако:

[1][4]

што је типично различито од . Међутим, неки компјутерски системи могу другачије решити двосмислени израз. На пример, Мајкрософт Ексел оцењује a^b^c as (a^b)^c, што је супротно нормално прихваћена конвенција од врха ка дну реда извршења за степеновање. 4^3^2 се процењује да је 4096 у Мајкрософт Екселу 2013, исто као (4^3)^2. Израз 4^(3^2), са друге стране, даје резултат 262144 користећи исти програм. Следећа разлика за исти програм је -a^b која даје резултат (−a)^b уместо −(a^b). За компатибилност, исто понашање посматрано је на ЛибреОфису

Калкулатори[уреди]

Различити калкулатори прате различите наредбе операција. Многи једноставни калкулатори без гомиле спроводе улазни ланац посла са лева на десно без давања икаквог приоритета различитим операторима, на пример: 

док ће префињенији калкулатор користити више уобичајни приоритет, на пример давајући:

Калкулатор Мајкрософт је користио старе у свом стандардном приказу а друге у свом научном и програмерском приказу.

Ланац улаза очекује два операнда и оператора. Када се притисне следећи оператер, израз се одмах процењују и одговор постаје лева рука следећег оператера. Напредни калкулатори дозвољавају улазак целог израза, груписаних по потреби, а процењују само када корисник користи знак једнакости. 

Калкулатори могу удружити експоненте на лево или на десно у зависности од модела. На пример, израз a ^ b ^ c на ТИ-92, ТИ-30XII и ТИ-30ХS (сви тексашки инструменти калкулатори) повезују два различита начина:

ТИ-92 и ТИ-30XS у "математички режим штампе"повезују са десне стране, и то:

a ^ b ^ c = a ^ (b ^ c) =

где, ТИ-30XII и ТИ-30XS у "Класичном режиму" повезује са леве стране, и то:

a ^ b ^ c = (a ^ b) ^ c =

Израз 1/2x се представља као 1/(2x) уз помоћ ТИ-82, али као (1/2)x уз помоћ ТИ-83 и свих других створених после 1996,[11] као што су сви од стране Хјулет Пекарда са алгебарском нотацијом. Док се прва интерпретација може очекивати од стране неких корисника, само ово друго је у складу са стандардним правилом да множење и дељење су једнаког приоритета,[16][16] тако да 1/2x се чита као дељење један са два и помножено са x.

Када корисник није сигуран како ће тумачити израз калкулатора, то је добра идеја да користи заграде тако да нема недоумица.

Калкулатори који користе Обрнуту пољску нотацију (ОПН), познату и као постфикс нотација, користе стек за улазак формула без потребе за заградом.[7]

Програмски језици [уреди]

Многи програмски језици користе нивое реда првенства који су усклађени са циљем који се уобичајено користи у математици, мада неки, као што су АПЛ, Smalltalk или Оскам, немају оператор реда првенства правила (у АПЛ, процена је строго десна на лево, у Smalltalk и Оскам, то је строго лева на десно) . 

Поред тога, јер многи оператери нису асоцијативни, редослед унутар било којег појединачног нивоа се обично дефинише групацијом лева на десно, тако да 16/4/4 = (16/4)/4 = 1 чесће него 16/(4/4) = 16.

Логички оператори у битовима у C (и сви програмски језици који користе главна правила из C, на пример, C++, Перл и PHP) има ниво предности који је креатор С језика сматрао незадовољавајућим.[17] Међутим, многи програмери су се навикли на ову наредбу. Релативне вредности првенства оператор који се налазе у многим језицима налик на С стил су: 

1 ()   []   ->   .   :: Позив функције, обим, низ/приступ члана
2 !   ~   -   +   *   &   сизеов тип одлива   ++   --   (већина) унарних оператора, сизеоф и тип одлива (са десна на лево) 
3 *   /   % MOD Множење, дељење, модуларна аритметика
4 +   - Сабирање и одузимање
5 <<   >> Помак лево и десно
6 <   <=   >   >= Поређење: мање-од, ...
7 ==   != Поређење: једнако и различито
8 & И
9 ^ Ексклузивно ИЛИ 
10 | Инклузивно (нормално) ИЛИ
11 && Логичко И
12 || Логичко ИЛИ
13 ? : Условни израз (тернарни)
14 =   +=   -=   *=   /=   %=   &=   |=   ^=   <<=   >>= Додељивање оператора (са десна на лево)
15 , Операција зарез

Примери:

  • !A + !B(!A) + (!B)
  • ++A + !B(++A) + (!B)
  • A + B * CA + (B * C)
  • A || B && CA || (B && C)
  • A && B == CA && (B == C)
  • A & B == CA & (B == C)

Компајлери извор-на-извор који састављају на више језика морају да се експлицитно баве питањем различитих редоследа операција широм језика. Хаксе на пример стандардизује редове и спроводи их постављањем заграда, где је прикладно.[18]

Тачност знања програмера о бинарном оператору првенствено је утврђено да помно прати њихову учесталост појављивања у изворном коду.[19] 

Види још[уреди]

Белешке[уреди]

  1. ^ For example, the third edition of Mechanics by Landau and Lifshitz contains expressions such as hPz/2π (p. 22), and the first volume of the Feynman Lectures contains expressions such as 1/2N (p. 6–8).

Референце[уреди]

  1. 1,00 1,01 1,02 1,03 1,04 1,05 1,06 1,07 1,08 1,09 1,10 1,11 1,12 1,13 1,14 1,15 Bronstein, Ilja Nikolaevič; Semendjajew, Konstantin Adolfovič (1987) [1929]. "2.4.1.1."
  2. ^ "Ask Dr. Math".
  3. ^ „Order of Operations Lessons”. Algebra.Help. Приступљено 5. 03. 2012. [мртва веза]
  4. 4,0 4,1 Olver, Frank W. J.; Lozier, Daniel W.; Boisvert, Ronald F.; Clark, Charles W., eds. (2010).
  5. ^ Allen R. Angel, Elementary Algebra for College Students 8/E; Chapter 1, Section 9, Objective 3
  6. ^ "Formula Returns Unexpected Positive Value".
  7. 7,0 7,1 7,2 7,3 7,4 Ball, John A. (1978).
  8. ^ "division and multiplication have the same priority", http://www.mathcentre.ac.uk/resources/uploaded/mc-ty-rules-2009-1.pdf
  9. ^ "Physical Review Style and Notation Guide" (PDF).
  10. ^ "2x/2x, 2*x/2*x, 2(x)/2(x) – Wolfram|Alpha".
  11. 11,0 11,1 "Implied Multiplication Versus Explicit Multiplication on TI Graphing Calculators".
  12. ^ http://syllabus.bos.nsw.edu.au/assets/global/files/maths_s3_sampleu1.doc
  13. ^ http://www.mathcentre.ac.uk/resources/uploaded/mc-ty-rules-2009-1.pdf
  14. ^ "Please Excuse My Dear Aunt Sally (PEMDAS)--Forever!"
  15. ^ "What is PEMDAS?
  16. 16,0 16,1 Zachary, Joseph L. (1997).
  17. ^ Dennis M. Ritchie: The Development of the C Language Archived 2015-01-10 at Archive.today.
  18. ^ 6÷2(1+2)=?
  19. ^ "Developer beliefs about binary operator precedence" Derek M. Jones, CVu 18(4):14–21

Спољашње везе[уреди]

  • Редослед операције на PlanetMath.org.