Redosled operacija

S Vikipedije, slobodne enciklopedije

U matematici i programiranju, redosled operacija (ili prednost operatera) je kolekcija pravila koja definišu koje procedure da se izvrše prve kako bi se procenio dat matematički izraz.

Na primer, u matematici a i u većini računarskih jezika, množenje prethodi sabiranju.[1] Tako, u izrazu 2 + 3 × 4, rešenje je 14 (ne 20). Zagrade, ( i ), { i }, ili [ i ] — koje imaju svoja sopstvena pravila — mogu ukazati alternativni red ili pojačati uobičajeni red da bi izbegli konfuziju, tako prethodni izraz može biti promenjen u (2 + 3) × 4 za dobijanje 20, ili 2 + (3 × 4) za dobijanje 14 ( uobičajeno ako nema zagrada).

Od uvođenja modernog algebarskog zapisa, množenje je preuzelo primat nad sabiranjem.[1][2] Tako 3 + 4 × 5 = 4 × 5 + 3 = 23. Kada su eksponenti prvi put uvedeni u 16. i 17. veku, eksponenti su preuzeli primat nad sabiranjem i množenjem i mogu se postaviti samo kao "superskript" sa desne strane njihove baze.[1] Tako 3 + 52 = 28 i 3 × 52 = 75. Da bi promenili redosled operacija, prvobitno "crta" (nadvučeno ili podvučeno) je korišćena. Danas, zagrade se koriste za označavanje eksplicitne prednosti grupisanjem delova izraza koji bi trebalo da bude prvi vrednovan. Što rezultira (2 + 3) × 4 = 20 tako je označeno da sabiranje prethodi množenju ili (3 + 5)2 = 64 gde je označeno da sabiranje prethodi eksponentu.

Definicija[uredi | uredi izvor]

Redosled operacija korišćenih tokom matematike, nauke, tehnologije i mnogih računarskih programskih jezika je izražen ovde:[3]

Stepenovanje[1] i korenovanje
Množenje[1] i deljenje[1]
Sabiranje[1] i oduzimanje[1]

To znači da ako matematički izraz prethodi jednom binarnom operateru a zatim i sledećem, viši operator na listi bi trebalo da se primeni prvi.[1] Komutativni i asocijativni zakoni sabiranja i množenja omogućavaju dodavanje uslova u bilo kom redosledu, i faktore množenja dodajući ih takođe u bilo kom redosledu- ali mešovite operacije moraju poštovati standardna pravila operacija.

Korisno je za tretiranje deljenja kao recipročno množenje (množenje inverznom) i oduzimanja kao sabiranje suprotnog broja. Tako 3/4 = 3 ÷ 4 = 3 • ¼; drugim rečima količnik od 3 i 4 jednak je proizvodu 3 i  ¼. Takođe 3 − 4 = 3 + (−4); Drugim rečima razlika od 3 i 4 jednak je zbiru pozitivne trojke i negativne četvorke. Tako, 1 − 3 + 7 može da se posmatra kao zbir 1, negativna 3, i 7, i dodavanje u bilo kom redosledu: (1 − 3) + 7 = −2 + 7 = 5 i obrnutim redosledom (7 − 3) + 1 = 4 + 1 = 5, uvek držeći negativan predznak sa 3.

Simbol koren, √, zahteva simbol grupisanja. Uobičajen simbol grupisanja je bar (zove se "crta"). Ostale funkcije koriste zagrade oko ulaza kako bi izbegli dvosmislenost. Zagrade se ponekad ispuštaju ako je ulaz monom. Tako, sin x = sin(x), ali sin x + y = sin(x) + y, jer x + y nije monom.[1] Neki kalkulatori i programski jezici zahtevaju zagrade kod funkcija ulaza, neki ne.

Nagomilani eksponenti su primenjeni odozgo nadole, zdesna nalevo.[1][4]

Simboli grupisanja mogu se koristiti umesto uobičajenog redosleda operacija. [1] Grupisani simboli mogu se tretirati kao jedan izraz.[1] Simboli grupisanja mogu se ukloniti pomoću asocijativnog i distributivnog zakona, takođe mogu biti uklonjeni ako je izraz unutar simbola grupisanja dovoljno pojednostavljen, tako da nema dvosmislenih rezultata iz njihovog uklanjanja.

Primeri[uredi | uredi izvor]

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

Za lakše čitanje, ostali grupisani simboli kao što su zagrade, ponekad zvane vitičaste proteze { }, ili zagrade, ponekad zvane kockaste zagrade [ ], su često korišćene zajedno sa zagradama ( ). Na primer:

Izuzeci[uredi | uredi izvor]

Postoje suprotstavljene konvencije koje se odnose na unarni operator - (obično čitamo "minus"). U pisanoj ili štampanoj matematici, izraz −32 se tumači da znači 0 − (32) = −9,[1][5] ali u nekim aplikacijama i programskim jezicima, posebno Majkrosoft Ofis Eksel (i drugim aplikacijama tabela) i programski jezik bc, unarni operatori imaju veći prioritet od binarnih operatora, to jest, unarni minus (negacija ili +/-) ima veći prioritet od stepenovanje, tako da u tim jezicima −32 će biti predstavljeno kao (−3)2 = 9.[6] Ovo se ne odnosi na binarni operator minus-; na primer dok formula =-2^2 i =0+-2^2 vraća 4 u Majkrosoft Ekselu, formula =0-2^2 vraća −4. U slučajevima kada postoji mogućnost da bi notacija bila pogrešno protumačena, binarna operacija nedostatak može izvršiti eksplicitno navodeći vodeću 0 (kao u 0-2^2 umesto samo -2^2), ili zagrade koje se mogu koristiti da razjasne namenjeno značenje.

Slično, može biti dvosmislenosti u korišćenju kose crte ('/') simbol u izrazu kao što je 1/2x.[7] Ako neko prepiše ovaj izraz kao 1 ÷ 2 × x i onda tumači znak deljenja kao naznačeno recipročno množenje, to postaje:

Sa ovom interpretacijom 1/2x je jednaka (1/2)x.[1][8] Međutim, u nekim akademskim literaturama, množenje se tumači kao veći prioritet od deljenja, tako da 1/2x jednako je 1/(2x), ne (1/2)x. Na primer, uputstvo rukopisa za časopis Fizički pregled navodi da je množenje višeg prioriteta od deljenja sa kosom crtom,[9] a to je ujedno i konvencija primećena u uglednim udžbenicima fizike, kao što je Kurs teorijske fizike od strane Landau i Lifhica i Fojmanove lekcije Fizike.[nb 1] Volfram alfa promenio je početkom 2013. da se isto odnose množenje i eksplicitno množenje. Ranije, se množenje bez zagradi pretpostavljalo da vezuje snažnije nego eksplicitno množenje. 2x/2x, 2·x/2·x, i 2(x)/2(x) sada svi daju x2.[10] Novi Teksaški kalkulatori (TI-83 ili kasniji) takođe daju x2 u sva tri slučaja.[11]

Mnemotehnika[uredi | uredi izvor]

Mnemotehnika se često koristi da pomogne studentima da zapamte pravila, pravila koja se uče korišćenjem akronima. U Americi, akronim PEMDAS je čest. Predstavlja, Zagrade (eng. P), Eksponente (eng. E), Množenje (eng. M), Deljenje (eng. D), Sabiranje (eng. A), Oduzimanje (eng. S). PEMDAS je često proširen kao "Please Excuse My Dear Aunt Sally", sa prvim slovom od svake reči.[7] Kanada koristi BEDMAS, za pomenute operacije. Vrlo često u Britaniji i Australiji,[12] su BODMAS i BIDMAS. U nekim državama gde se priča engleski, simboli inkluzije i eksponenti mogu biti nazvani ili indeksi, ovlašćenja ili nalozi, koji imaju isti prioritet kao koreni. Otkako množenje i deljenje imaju jednaku prednost, M i D se često smenjuju, što je dovelo do takvih skraćenica, kao BOMDAS. Pravilan redosled operacija u većini država je bio BODMAS, što je predstavljalo Zagrade, Pravila, Deljenje, Množenje, Sabiranje i Oduzimanje. Ova mnemotehnika je bila uobičajena sve dok nisu eksponenti dodati u mnemotehniku.[13][14][15]

Ove mnemotehnika može da zavara kada je napisana na ovaj način,[7] pogotovo ako korisnik nije svestan da množenje i deljenje imaju jednaku prednost, kao što su sabiranje i oduzimanje. Korišćenjem bilo kog od navedenih pravila u cilju "sabiranje prvo, oduzimanje posle" bi takođe dalo pogrešan odgovor na problem:[7]

Pravo rešenje je 9 (i ne 5, kao kad bi se prvo izvršilo sabiranje i rešenje korišćeno sa oduzimanjem nakon toga). Najbolji način da se razume kombinacija sabiranja i oduzimanja je da se misli na oduzimanje kao sabiranje negativnog broja. U ovom slučaju, problem može biti sagledan kao zbir pozitivne desetke, negativne trojke, i pozitivne dvojke:

Da bi naglasilo da sabiranje i oduzimanje imaju istu prednost (i množenje i deljenje imaju istu prednost) mnemotehnika je ponekad pisana P E MD AS; ili, jednostavno kao PEMA.

Svi ovi akronimi spajaju dve različite ideje, operacije na jednu stranu i simbole grupisanja na drugu, koje mogu dovesti do konfuzije.

Posebni slučajevi[uredi | uredi izvor]

Ako je stepenovanje naznačeno napakovanim simbolima, uobičajeno pravilo je da se radi odozgo nadole, jer stepenovanje je desno-asocijativno u matematici tako:

[1][4]

što je tipično različito od . Međutim, neki kompjuterski sistemi mogu drugačije rešiti dvosmisleni izraz. Na primer, Majkrosoft Eksel ocenjuje a^b^c as (a^b)^c, što je suprotno normalno prihvaćena konvencija od vrha ka dnu reda izvršenja za stepenovanje. 4^3^2 se procenjuje da je 4096 u Majkrosoft Ekselu 2013, isto kao (4^3)^2. Izraz 4^(3^2), sa druge strane, daje rezultat 262144 koristeći isti program. Sledeća razlika za isti program je -a^b koja daje rezultat (−a)^b umesto −(a^b). Za kompatibilnost, isto ponašanje posmatrano je na LibreOfisu.

Kalkulatori[uredi | uredi izvor]

Različiti kalkulatori prate različite naredbe operacija. Mnogi jednostavni kalkulatori bez gomile sprovode ulazni lanac posla sleva nadesno bez davanja ikakvog prioriteta različitim operatorima, na primer:

dok će prefinjeniji kalkulator koristiti više uobičajeni prioritet, na primer davajući:

Kalkulator Majkrosoft je koristio stare u svom standardnom prikazu a druge u svom naučnom i programerskom prikazu.

Lanac ulaza očekuje dva operanda i operatora. Kada se pritisne sledeći operater, izraz se odmah procenjuju i odgovor postaje leva ruka sledećeg operatera. Napredni kalkulatori dozvoljavaju ulazak celog izraza, grupisanih po potrebi, a procenjuju samo kada korisnik koristi znak jednakosti.

Kalkulatori mogu udružiti eksponente nalevo ili nadesno u zavisnosti od modela. Na primer, izraz a ^ b ^ c na TI-92, TI-30XII i TI-30HS (svi teksaški instrumenti kalkulatori) povezuju dva različita načina:

TI-92 i TI-30XS u "matematički režim štampe"povezuju sa desne strane, i to:

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

gde, TI-30XII i TI-30XS u "Klasičnom režimu" povezuje sa leve strane, i to:

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

Izraz 1/2x se predstavlja kao 1/(2x) uz pomoć TI-82, ali kao (1/2)x uz pomoć TI-83 i svih drugih stvorenih posle 1996,[11] kao što su svi od strane Hjulet Pekarda sa algebarskom notacijom. Dok se prva interpretacija može očekivati od strane nekih korisnika, samo ovo drugo je u skladu sa standardnim pravilom da množenje i deljenje su jednakog prioriteta,[16][16] tako da 1/2x se čita kao deljenje jedan sa dva i pomnoženo sa x.

Kada korisnik nije siguran kako će tumačiti izraz kalkulatora, to je dobra ideja da koristi zagrade tako da nema nedoumica.

Kalkulatori koji koriste Obrnutu poljsku notaciju (OPN), poznatu i kao postfiks notacija, koriste stek za ulazak formula bez potrebe za zagradom.[7]

Programski jezici[uredi | uredi izvor]

Mnogi programski jezici koriste nivoe reda prvenstva koji su usklađeni sa ciljem koji se uobičajeno koristi u matematici, mada neki, kao što su APL, Smalltalk ili Oskam, nemaju operator reda prvenstva pravila (u APL, procena je strogo desna nalevo, u Smalltalk i Oskam, to je strogo leva nadesno) .

Pored toga, jer mnogi operateri nisu asocijativni, redosled unutar bilo kojeg pojedinačnog nivoa se obično definiše grupacijom leva nadesno, tako da 16/4/4 = (16/4)/4 = 1 češće nego 16/(4/4) = 16.

Logički operatori u bitovima u C (i svi programski jezici koji koriste glavna pravila iz C, na primer, C++, Perl i PHP) ima nivo prednosti koji je kreator S jezika smatrao nezadovoljavajućim.[17] Međutim, mnogi programeri su se navikli na ovu naredbu. Relativne vrednosti prvenstva operator koji se nalaze u mnogim jezicima nalik na S stil su:

1 ()   []   ->   .   :: Poziv funkcije, obim, niz/pristup člana
2 !   ~   -   +   *   &   sizeov tip odliva   ++   --   (većina) unarnih operatora, sizeof i tip odliva (zdesna nalevo)
3 *   /   % MOD Množenje, deljenje, modularna aritmetika
4 +   - Sabiranje i oduzimanje
5 <<   >> Pomak levo i desno
6 <   <=   >   >= Poređenje: manje-od, ...
7 ==   != Poređenje: jednako i različito
8 & I
9 ^ Ekskluzivno ILI
10 | Inkluzivno (normalno) ILI
11 && Logičko I
12 || Logičko ILI
13 ? : Uslovni izraz (ternarni)
14 =   +=   -=   *=   /=   %=   &=   |=   ^=   <<=   >>= Dodeljivanje operatora (zdesna nalevo)
15 , Operacija zarez

Primeri:

  • !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)

Kompajleri izvor-na-izvor koji sastavljaju na više jezika moraju da se eksplicitno bave pitanjem različitih redosleda operacija širom jezika. Hakse na primer standardizuje redove i sprovodi ih postavljanjem zagrada, gde je prikladno.[18]

Tačnost znanja programera o binarnom operatoru prvenstveno je utvrđeno da pomno prati njihovu učestalost pojavljivanja u izvornom kodu.[19]

Vidi još[uredi | uredi izvor]

Beleške[uredi | uredi izvor]

  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).

Reference[uredi | uredi izvor]

  1. ^ a b v g d đ e ž z i j k l lj m n Bronstein, Ilja Nikolaevič; Semendjajew, Konstantin Adolfovič (1987) [1929]. "2.4.1.1."
  2. ^ "Ask Dr. Math".
  3. ^ „Order of Operations Lessons”. Algebra.Help. Arhivirano iz originala 02. 11. 2012. g. Pristupljeno 5. 03. 2012. 
  4. ^ a b 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. ^ a b v g d 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. ^ a b "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. ^ a b Zachary, Joseph L. (1997).
  17. ^ Dennis M. Ritchie: The Development of the C Language Arhivirano 2015-01-10 na sajtu Archive.today.
  18. ^ 6÷2(1+2)=?
  19. ^ "Developer beliefs about binary operator precedence" Derek M. Jones, CVu 18(4):14–21

Spoljašnje veze[uredi | uredi izvor]

  • Redosled operacije na PlanetMath.org.