Pořadí operací - Order of operations

V matematice a počítačovém programování je pořadí operací (nebo přednost operátorů ) souborem pravidel, která odrážejí konvence o tom, které postupy provést jako první, aby se vyhodnotil daný matematický výraz .

Například v matematice a většině počítačových jazyků má násobení vyšší prioritu než sčítání a je tomu tak od zavedení moderní algebraické notace . Výraz 1 + 2 × 3 je tedy interpretován tak, aby měl hodnotu 1 + (2 × 3) = 7 , a nikoli (1 + 2) × 3 = 9 . Když byli v 16. a 17. století představeni exponenti, dostali přednost před sčítáním i násobením a mohli být umístěni pouze jako horní index napravo od jejich základny. Tedy 3 + 5 2 = 28 a 3 × 5 2 = 75 .

Tyto konvence existují proto, aby eliminovaly nejednoznačnost notace a zároveň umožňovaly, aby zápis byl co nejkratší. Tam, kde je žádoucí přepsat konvence přednosti, nebo je dokonce jednoduše zdůraznit, lze použít závorky () k označení alternativního pořadí operací (nebo jednoduše posílit výchozí pořadí operací). Například, (2 + 3) x 4 = 20 síly doplňkem předcházet násobení, zatímco (3 + 5) 2 = 64 síly doplňkem předcházet umocňování . Pokud je v matematickém výrazu požadováno více párů závorek (jako v případě vnořených závorek), mohou být závorky nahrazeny závorkami nebo závorkami, aby se předešlo záměně, jako v [2 × (3 + 4)] - 5 = 9 .

Definice

Pořadí operací, které se používá v matematice, vědě, technice a mnoha jazycích počítačového programování , je vyjádřeno zde:

  1. umocňování a extrakce kořenů
  2. násobení a dělení
  3. sčítání a odčítání

To znamená, že pokud se v matematickém výrazu objeví podvýraz mezi dvěma operátory , měl by být jako první použit operátor, který je ve výše uvedeném seznamu vyšší.

K komutativní a asociativní zákony sčítání a násobení umožňují přidání výrazy v libovolném pořadí, a násobných faktorů, v libovolném pořadí, ale smíšený provoz musí odpovídat standardní pořadí operací.

V některých kontextech je užitečné nahradit dělení vynásobením vzájemným (multiplikativní inverzní) a odečtením přidáním opačného (aditivní inverzní). Například v počítačové algebře to umožňuje zvládnout méně binárních operací a usnadňuje použití komutativity a asociativity při zjednodušování velkých výrazů (více viz Počítačová algebra § Zjednodušení ). Tedy 3 ÷ 4 = 3 × 1/4; jinými slovy, podíl 3 a 4 se rovná součinu 3 a1/4. Také 3 - 4 = 3 + (-4) ; jinými slovy, rozdíl 3 a 4 se rovná součtu 3 a −4. Tak, 1-3 + 7 si lze představit jako součet 1 + (-3) + 7 a tři sčítanců mohou být přidány v libovolném pořadí, ve všech případech, za poskytnutí 5 jako výsledek.

Kořenový symbol √ je tradičně prodloužen pruhem (nazývaným vinculum ) nad radicandem (tím se vyhnete potřebě závorek kolem radicandu). Jiné funkce používají kolem vstupu závorky, aby se vyhnuly nejednoznačnosti. Závorky lze vynechat, pokud je vstupem jedna číselná proměnná nebo konstanta (jako v případě sin x = sin ( x ) a sin π = sin (π) . Další zkratková konvence, která se někdy používá, je, když je vstup monomiální ; tedy sin 3 x = sin (3 x ) spíše než (sin (3))  x , ale sin x + y = sin ( x ) + y , protože x + y není monomiální. To je však nejednoznačné a nejsou univerzálně chápány mimo konkrétní kontexty.Některé kalkulačky a programovací jazyky vyžadují závorky kolem vstupů funkcí, některé ne.

Symboly seskupení lze použít k přepsání obvyklého pořadí operací. Seskupené symboly lze považovat za jeden výraz. Symboly seskupování lze odstranit pomocí asociativních a distribučních zákonů, lze je také odstranit, pokud je výraz uvnitř symbolu seskupení dostatečně zjednodušen, takže z jejich odstranění nevyplývá žádná nejednoznačnost.

Příklady

Horizontální zlomková čára také funguje jako symbol seskupení:

Pro snazší čtení jsou společně se závorkami () často používány další symboly seskupování, jako jsou složené závorky { } nebo hranaté závorky [] . Například:

Mnemotechnika

Mnemotechnické pomůcky se často používají k tomu, aby studentům pomohly zapamatovat si pravidla, zahrnující první písmena slov představující různé operace. V různých zemích se používají různé mnemotechnické pomůcky.

  • Ve Spojených státech je zkratka PEMDAS běžná. To je zkratka pro P arentheses, E xponents, M ultiplication/ D ivision, A ddition / S ubtraction. PEMDAS je ve školách často rozšířen na mnemotechnické pomůcky „ Prosím, omluvte moji drahou tetu Sally “.
  • Kanada a Nový Zéland používají BEDMAS , což znamená rakety B , E xponents, D ivision/ M ultiplication, A ddition / S ubtraction.
  • Nejběžnější ve Velké Británii, Pákistánu, Indii, Bangladéši a Austrálii a některých dalších anglicky mluvících zemích je BODMAS, což znamená buď B rakety, O rder, D ivision/ M ultiplication, A ddition / S ubtraction nebo B rakety, O f/ D ivision / M ultiplikace, A dioda / S ubrakce. Nigérie a některé další západoafrické země také používají BODMAS. Podobně ve Velké Británii se používá také BIDMAS , což znamená rakety B , I ndices, D ivision/ M ultiplication, A ddition / S ubtraction.

Tyto mnemotechnické pomůcky mohou být při psaní tímto způsobem zavádějící. Například nesprávná interpretace některého z výše uvedených pravidel ve smyslu „nejprve sčítání, odčítání poté“ by nesprávně vyhodnotilo výraz

Při hodnocení výrazů, které obsahují pouze sčítání a odčítání, jako je výše uvedený výraz, lze sčítání a odčítání provádět postupně, pracující zleva doprava, ale ze šesti hlavních aritmetických operací je pouze sčítání a násobení komutativní a asociativní, a proto profesionálové obvykle zobrazit odčítání, zejména v algebře a ve vyšší matematice, jako sčítání záporného čísla. Správnou odpověď vytvoří buď práce zleva doprava, nebo zpracování odčítání jako přidání podepsaného čísla ; provedení odčítání ve špatném pořadí bude mít za následek nesprávnou odpověď. Mnemotechnika neodráží seskupení sčítání/odčítání nebo násobení/dělení, takže jejich použití může vést k tomuto nedorozumění.

Podobná nejednoznačnost existuje v případě sériového dělení, například výraz a ÷ b ÷ c × d lze číst několika způsoby, ale nemusí vždy dojít ke stejné odpovědi. Například 3 ÷ 1/2 vyhodnocené zleva doprava by byly tři děleno jednou se rovná třem, děleno dvěma se rovná třem polovinám, ale při použití dělení jako násobení vzájemnou hodnotou tři dělíme jednou polovinou se rovná tři vynásobíme dvěma se rovná šesti . Jsou tři možnosti, žádná univerzálně odsouhlasená. Buď každému z několika různých divizních symbolů musí být dána komplikovaná pravidla přednosti, nebo napodobování pravidla pro odčítání jako sčítání opaku, dělení může být definováno jako násobení reciproční, nebo lze použít závorky, aby se předešlo nejasnostem.

Protože je to kontroverzní, shrnujeme výše uvedené:

První pravidlo je, že pokud existuje více dělení za sebou, pořadí výpočtu může jít zleva doprava:

To však není všeobecně přijímáno.

Druhé pravidlo, považující dělení za násobení reciproční, výrazně snižuje frekvenci nejednoznačného dělení.

Jediným jistým způsobem, jak se vyhnout nejasnostem, je použít závorky.

Speciální případy

Sériové umocňování

Pokud je umocnění indikováno skládanými symboly pomocí zápisu horního indexu, obvyklým pravidlem je pracovat shora dolů:

a b c = a ( b c )

která se obvykle nerovná ( a b ) c . Tato konvence je užitečná, protože existuje vlastnost umocnění, která ( a b ) c = a bc , takže není nutné k tomu používat sériové umocňování.

Při použití notace operátora s stříškou (^) nebo šipkou (↑) však neexistuje žádný společný standard. Například Microsoft Excel a výpočetní programovací jazyk MATLAB hodnotíme jako ( a b ) c , ale Google Search a Wolfram Alpha jako a ( b c ) . Vyhodnocuje se tedy na 4 096 v prvním případě a na 262 144 ve druhém případě. a^b^c4^3^2

Unární znaménko mínus

Existují různé konvence týkající se unárního operátoru - (obvykle čteno „mínus“). V písemné nebo tištěné matematice je výraz −3 2 interpretován ve smyslu - (3 2 ) = - 9 .

V některých aplikacích a programovacích jazycích, zejména v Microsoft Excelu , PlanMakeru (a dalších tabulkových aplikacích) a v programovacím jazyce bc , mají unární operátoři vyšší prioritu než binární operátory, to znamená, že unární minus má vyšší prioritu než umocňování, takže v těchto jazycích −3 2 bude interpretováno jako (−3) 2 = 9 . To neplatí pro binární operátor mínus -; například v aplikaci Microsoft Excel, zatímco vzorce =−2^2, =-(2)^2a =0+−2^2vrátit 4, vzorec =0−2^2a =−(2^2)vrátit −4.

Smíšené dělení a násobení

Podobně může dojít k nejednoznačnosti při použití symbolu lomítka / ve výrazech, jako je 1/2 n . Pokud někdo přepíše tento výraz jako 1 ÷ 2 n a poté interpretuje symbol rozdělení jako indikaci násobení recipročně, stane se to:

1 ÷ 2 × n = 1 ×1/2× n =1/2× n .

Při této interpretaci 1 ÷ 2 n se rovná (1 ÷ 2) n . V některé akademické literatuře je však multiplikace označovaná juxtapozicí (také známá jako implikované multiplikace ) interpretována jako mající vyšší prioritu než dělení, takže 1 ÷ 2 n se rovná 1 ÷ (2 n ) , nikoli (1 ÷ 2) n . Například pokyny k předkládání rukopisů pro časopisy Physical Review uvádějí, že násobení má vyšší prioritu než dělení lomítkem, a toto je také konvence dodržovaná v prominentních učebnicích fyziky, jako je Kurz teoretické fyziky od Landaua a Lifshitze a Feynmana Přednášky z fyziky .

Kalkulačky

Různé kalkulačky sledují různé pořadí operací. Mnoho jednoduchých kalkulaček bez zásobníku řetězového vstupu pracuje zleva doprava, aniž by byla dána přednost různým operátorům, například psaní

1 + 2 × 3 výnosy 9,

zatímco sofistikovanější kalkulačky budou používat standardnější prioritu, například psaní

1 + 2 × 3 výnosy 7.

Program Microsoft Calculator používá první ve svém standardním zobrazení a druhý ve svých vědeckých a programátorských pohledech.

Řetězový vstup očekává dva operandy a operátor. Po stisknutí dalšího operátoru se výraz okamžitě vyhodnotí a odpověď se stane levou rukou dalšího operátoru. Pokročilé kalkulačky umožňují zadání celého výrazu, seskupeného podle potřeby, a vyhodnocují, pouze pokud uživatel používá znaménko rovnosti.

Kalkulačky mohou přidružovat exponenty zleva doprava. Například výraz je interpretován jako a ( b c ) na TI-92 a TI-30XS MultiView v „režimu Mathprint“, zatímco je interpretován jako ( a b ) c na TI-30XII a TI-30XS MultiView v „klasickém režimu“. a^b^c

Výraz, jako je interpretována jako 1 / (2 x ), které TI-82 , stejně jako mnoho moderních Casio kalkulačky, ale jako (1/2) x u TI-83 a každý jiný TI kalkulačky uvolněné od roku 1996, jakož i všechny kalkulačky Hewlett-Packard s algebraickým zápisem. Zatímco první interpretaci mohou někteří uživatelé očekávat kvůli povaze implikovaného násobení , ta druhá je více v souladu se standardním pravidlem, že multiplikace a dělení mají stejnou přednost, kde 1/2 x se čte jedna děleno dvěma a odpověď vynásobená x . 1/2x

Pokud si uživatel není jistý, jak bude kalkulačka interpretovat výraz, je vhodné použít závorky, aby nedošlo k nejednoznačnosti.

Kalkulačky, které používají reverzní polskou notaci (RPN), také známou jako postfixová notace, používají zásobník pro zadávání výrazů ve správném pořadí priority bez nutnosti použití závorek nebo jakéhokoli pořadí provedení specifického pro model.

Programovací jazyky

Některé programovací jazyky používají úrovně priority, které odpovídají pořadí běžně používanému v matematice, zatímco jiné, jako například APL , Smalltalk , Occam a Mary , nemají žádná pravidla přednosti operátorů (v APL je hodnocení striktně zprava doleva; v Smalltalku je přísně zleva doprava).

Kromě toho, protože mnoho operátorů není asociativních, je pořadí v rámci každé jednotlivé úrovně obvykle definováno seskupením zleva doprava, takže 16/4/4je interpretováno jako (16/4)/4 = 1 spíše než 16/(4/4) = 16 ; tito operátoři jsou možná mylně označováni jako „levá asociativní“. Existují výjimky; Například jazyky s operátory, které odpovídají zápory operace na seznamech obvykle dělají jim správné skupiny doleva ( „správné asociativní“), například v Haskell , 1:2:3:4:[] == 1:(2:(3:(4:[]))) == [1,2,3,4].

Tvůrce z jazyka C již řekl o přednosti v C (sdílené programovací jazyky, které si půjčují těchto pravidel z C, například C ++ , Perl a PHP ), které by bylo vhodnější posunout operátory bitové nad operátory porovnání . Mnoho programátorů si však na tuto objednávku zvyklo. Relativní úrovně priority operátorů nalezených v mnoha jazycích ve stylu C jsou následující:

1 () [] ->. :: Volání funkcí, rozsah, přístup k poli/členu
2 ! ~ - + * a   velikost   typu obsazení   ++ -   (většina) unárních operátorů, velikost a typ vrhání (zprava doleva)
3 * / % MOD Násobení, dělení, modulo
4 + - Sčítání a odčítání
5 << >> Bitový posun doleva a doprava
6 <<=>> = Srovnání: méně než a více než
7 ==! = Srovnání: stejná a nerovná se
8 & Bitově AND
9 ^ Bitově exkluzivní NEBO (XOR)
10 | Bitově zahrnující (normální) NEBO
11 && Logické AND
12 || Logické NEBO
13 ? : Podmíněný výraz (ternární)
14 = += -= *= /= %= & = | = ^= << = >> = Operátoři přiřazení (zprava doleva)
15 , Operátor čárky

Příklady: (Poznámka: v níže uvedených příkladech výraz „≡“ znamená „je ekvivalentní“ a nelze jej interpretovat jako skutečný operátor přiřazení používaný jako součást výrazu příkladu.)

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

Kompilátory typu source-to-source, které se kompilují do více jazyků, se musí výslovně zabývat problémem různého pořadí operací napříč jazyky. Haxe například standardizuje objednávku a vynucuje ji vložením závorek tam, kde je to vhodné.

Bylo zjištěno, že přesnost znalostí vývojářů softwaru o prioritě binárních operátorů pozorně sleduje jejich frekvenci výskytu ve zdrojovém kódu.

Viz také

Poznámky

Reference

Další čtení