ComputerSoftware

RPN: algorithm, mga pamaagi ug mga panig-ingnan

RPN sa makausa nag-umol sa basehan sa usa ka computer programmer sa kalibutan. Karon kini dili mao nga maayo ang nailhan. Busa, komik ilustrasyon, nga naghulagway sa usa ka "makausab" Polish nga sausage rolyo sa gawas, mahimo gihapon nga pagsabot sa pipila kahibalo programmers. Dili kaayo maayo ang pagpatin-aw sa mga joke, apan sa niini nga kaso kini nga bug-os nga gipakamatarung.

infix

Ang tanan nga mga programmers, ug kadaghanan sa mga estudyante mao ang mga pamilyar sa paggamit sa mga operators. Kay sa panig-ingnan, ang mga prinsipyo nga ekspresyon x + kinatibuk-an alang sa mga baryable x ug y migamit plus ilhanan. Dili kaayo inila mao ang kamatuoran nga kini mao ang nanghulam gikan sa matematika nota, nga gitawag infix nota, sa pagkatinuod, mao ang usa ka dako nga problema alang sa mga makina. operator Kini nga magadawat ingon input sa duha ka mga prinsipyo nga natala diha sa wala ug sa tuo. Sa programa nota nga gigamit optionally uban sa mga ilhanan nga operasyon. Pananglitan, x + y mahimong gisulat ingon nga usa ka function sa pilo (x, y), diin ang tighipos ug sa katapusan kinabig infix nota. Apan, ang tanan nasayud nga ang matematika mao ang kaayo maayo nga dili sa paggamit sa aritmetik mga ekspresyon, nga sa usa ka matang sa internal nga mini-pinulongan sa halos sa tanan nga programming pinulongan.

pormula maghuhubad

Ang unang tinuod nga malampuson Fortran programming pinulongan nahimong ingon kadaghanan tungod kay ang aritmetik ekspresyon (ie pormula ..) Kini nakabig (sibya) sa code, busa ang ngalan niini - pormula sa paghubad. Sa wala pa nga, sila sa pagsulat, alang sa panig-ingnan, nipilo sa sa dagway sa mga gimbuhaton (ug dumaghan kamo (b, c)). Sa COBOL problema sa pagpatuman sa automatic pormula pagkakabig giisip nga lisud kaayo tungod kay ang mga programmers nga sa pagsulat sa mga butang sama sa Idugang sa usa ka Sa B Mutliply By C.

Unsa ang sayop uban sa infix?

Ang problema mao, nga ang mga operators sa maong mga kabtangan sama sa precedence ug associativity. Tungod niini, ang kahulogan sa infix function mahimong dili-importante nga tahas. Kay sa panig-ingnan, multiplication adunay mas taas nga unahon kay sa dugang o pagkuha, nga nagpasabot nga ang ekspresyon nga 2 + 3 * 4 dili sama sa kantidad sa 2 ug 3, gipadaghan sa 4, ingon nga kini diha sa performance sa mga operators gikan sa wala ngadto sa tuo. Sa pagkatinuod, pagapadaghanon 3 sa 4 ug makadugang 2. panig-ingnan Kini naghulagway nga ang kalkulasyon sa infix ekspresyon sa kasagaran nagkinahanglan og usa ka kausaban sa han-ay sa mga operators ug mga operands. Dugang pa, kini mao ang gikinahanglan nga sa paggamit sa mga tukod sa pagtan-aw nga mas tin-aw nga nota. Kay sa panig-ingnan, (2 + 3) * (4 + 5) dili ikasulat sa gawas sa mga parentesis, tungod kay 2 + 3 * 4 + 5 nagpasabot nga kinahanglan kamo nga sa pagdaghan sa 3 sa 4 ug makadugang 2 ug 5.

Ang han-ay sa imong gusto sa pagkalkulo sa mga operators nagkinahanglan sa usa ka taas nga mahinumdom. Tungod niini, ang mga estudyante nga magsugod sa pagkat-on aritmetik, sa kasagaran sa pagkuha sa mga sayop nga mga resulta, bisan kon ang aktuwal nga operasyon gihimo sa husto. Kini mao ang gikinahanglan aron sa pagtudlo sa aron sa paglihok mga pahayag pinaagi sa kasingkasing. Una, kinahanglan nga gidala sa gawas sa aksyon diha sa parentesis, nan multiplication ug division, ug sa katapusan Dugang pa ug pagkuha. Apan adunay laing paagi sa pagsulat sa matematika nga mga ekspresyon sama sa infix nota mao ang usa sa mga posible nga "gagmay nga mga pinulongan" nga mahimong dugang pa sa mas lamang.

Prefix ug postfix nota

Duha sa mga labing iladong mga alternatibo mao ang sa pagrekord sa operator sa dili pa o human sa iyang mga operands. Sila nailhan nga ang prefix ug postfix nota. Logician Yan Lukasevich-imbento sa unang usa sa 1920. Siya nagpuyo sa Poland, mao nga ang mga rekord mao ang gitawag nga Polish nga. Postfix version, sa tinagsa, nga gitawag Reverse Polish nga notasyon (ARF). Ang bugtong kalainan tali niining duha ka mga pamaagi mao ang direksyon sa nga sa pagbasa sa rekord (gikan sa wala ngadto sa tuo o sa tuo ngadto sa wala), mao nga kini igo na sa paghunahuna sa sa detalye sa usa ka lamang kanila. Ang OPN operator nahisulat human sa iyang operands. Busa, ang ekspresyon nga AB + nagrepresentar sa usa ka panig-ingnan RPN alang sa A + B.

Unlimited gidaghanon sa mga operands

Ang diha-diha nga pagpahimulos sa mga nota sa mao nga kini summarize ang n-adic operator ug infix nota mao ang tinuod nga lamang sa mga buhat sa duha ka operands, t. E. ba tiunay angay lamang alang sa duha operasyon. Pananglitan, ABC @ mao ang mga Reverse Polish nga ekspresyon sa paggamit sa triadic marka nga mao ang maximum bili sa A, B ug C. Sa kini nga kaso ang operator molihok diha sa wala sa tulo ka operand sa iyang kaugalingon ug katumbas sa usa ka function tawag @ (A, B, C). Kon ikaw mosulay sa pagsulat sa @ simbolo sama sa infix, sama sa usa ka @ BC o sa usa ka butang nga sama niana, kini mahimong tin-aw nga kini lamang nga wala sa trabaho.

Ang prayoridad nga gihatag sa order

RPN adunay laing bentaha sa nga ang prayoridad sa mga operators mahimong girepresentahan sa han-ay sa ilang mga panagway. Sa samang higayon dili kinahanglan tukod, bisan sila mahimo nga naglakip sa ingon nga mga karakter operasyon sa pagpahigayon sa pagkakabig gikan sa infix nota. Pananglitan, AB + P * - tin-awng katumbas (A + B) * C, mao nga ang mga multiplication dili kalkulado hangtud sa Dugang pa nga gihimo, nga naghatag sa usa ka ikaduha nga operand alang sa pagpadaghan. Nga mao, kon ang tinuyo nga AB + C * pinaagi sa usa ka operator sa usa ka panahon, kita AB + C * -> (AB +) * C -> (A + B) * C.

kalkulasyon algorithm

Ang OPN operator motan-aw sa mao usab nga ingon sa usa ka function nga nagkinahanglan sama sa mga argumento sa duha ka mga prinsipyo nga gisulat sa iyang wala. Dugang pa, kini mao ang usa ka natural nga nota alang sa paggamit sa programa pinulongan, sumala sa batasan sa iyang mga pagkalkulo katumbas sa operasyon hapnig ug ang panginahanglan alang sa parsing ang giwagtang. Kay sa panig-ingnan, ang arrester sa ekspresyon 5 + 6 * 7 makita nga ingon sa usa ka 5, 6, 7 *, +, ug kini mahimong kalkulado pinaagi lamang sa gi-scan gikan sa wala ngadto sa tuo ug isulat ang mga mithi sa usa ka hapnig. Sa matag higayon nga ang usa ka komon nga ilhanan sa operasyon, mga pinili nga sa ibabaw nga elemento 2 sa computer sa panumduman, ang operator gigamit ug ang resulta mibalik sa handumanan. Sa diha nga ang katapusan nga resulta sa mga ekspresyon pagtantiya, pagbanabana mahimong diha sa ibabaw sa binugkos.

Kay sa panig-ingnan:

  • S = () 5, 6, 7, *, + 5 gibutang sa pundok.
  • S = (5) 6, 7, *, + 6 gibutang sa pundok.
  • S = (5, 6), 7 *, 7 + ibutang ang pundok.
  • S = (5, 6, 7), 2 + pagpili mga hiyas nga gikan sa pundok, paggamit ug ibutang ang resulta sa pundok.
  • S = (5, 6 * 7) = (5, 42) + 2 mga prinsipyo pinili nga gikan sa pundok, sa paggamit sa mga + ug gibutang ang resulta sa pundok.
  • S = (5 + 42) = (47) kalkulasyon matapos, ang resulta mao ang gitipigan sa ibabaw sa binugkos.

algorithm Kini nga gitan-aw RPN balik-balik, apan ang matag panahon kini sa trabaho, bisan sa unsa nga paagi komplikado ang aritmetik ekspresyon.

OPN ug mga hapnig sa mga pag-ayo nga nalambigit. nga panig-ingnan Kini nga nagpakita kon sa unsang paagi sa paggamit sa handumanan sa pagkalkulo sa bili sa mga Reverse Polish nga nota. Dili kaayo klaro mao nga kamo makahimo sa paggamit sa pundok, o sumbanan infix ekspresyon sa mahait pantog kapakyasan.

Ehemplo sa programming mga pinulongan

Pascal RPN nakaamgo nga sama niini (nagpakita sa bahin sa programa).

Sa pagbasa sa mga numero ug operators sa siklo nga gitawag nga pamaagi, nga magtino kon ang timaan nga gidaghanon o ilhanan nga operasyon. Sa unang kaso, ang bili nga gitipigan sa binugkos, ug ang ikaduha sa duha ka ibabaw nga pundok sa mga numero katugbang nga aksyon ang gihimo ug ang resulta mao ang gitipigan.

toktype: = gidaghanon;

(S) sa pagbasa;

kon c sa [ '+', '-', '*', '/'] unya magsugod

kon eoln unya cn: = '' pa mabasa (cn);

kon cn = '' unya

kaso sa usa ka

'+': Toktype: = makadugang; '-': toktype: = sub;

'*': Toktype: = mul; '/': Toktype: = div

katapusan

laing magsugod

kon ang usa ka = '-' unya sgn: = -1 lain sayop: = c <> '+';

uban sa: = cn

katapusan

matapos;

kon (dili sayop) ug (toktype = gidaghanon) unya getnumber;

kon toktype <> gidaghanon unya magsugod

y = pop; x: = pop;

kon dili sayop unya

kaso toktype sa

makadugang: z: = x + y; sub: z: = x-y; mul: z: = x * y; div: z: = x / y

katapusan

pagduso (z);

C-pagpatuman RPN (gipakita bahin sa programa):

alang sa (mga = strtok (s, w); s; ni = strtok (0, w)) {

sa usa ka = strtod (s, & e);

kon (e> s) pagduso (sa usa ka);

#define rpnop (x) printf ( "% c:", * s), b = pop (), usa ka = pop (), pagduso (x)

laing kon (* s == '+') rpnop (sa usa ka + b);

laing kon (* s == '-') rpnop (sa usa ka - b);

laing kon (* s == '*') rpnop (sa usa ka * b);

laing kon (* s == '/') rpnop (usa ka / b);

#undef rpnop

}

hardware implementar

Niadtong mga adlawa, sa diha nga computer teknolohiya kaayo mahal, gituohan nga usa ka maayo nga ideya sa pagpugos sa katawhan sa paggamit sa pagdagsang arresters. Sa 1960-dad., Ingon sa karon, kini mao ang posible nga sa pagpalit sa calculator, nga sa pagbuhat sa reverse Polish nga nota. Aron sa pagdugang 2 ug 3 kanila nga kinahanglan mosulod 2, dayon 3, ug mopadayon sa "plus" button. Sa unang tan-aw, ang input operands sa operator daw komplikado ug lisud nga sa paghinumdom, apan human sa usa ka samtang ang uban mao ang mga naadik sa niini nga paagi sa panghunahuna ug dili makasabut ngano nga ang uban pag sa hungog infix, nga mao ang sa ingon komplikado ug sa ingon mao ang limitado.

Burroughs kompaniya sa bisan nagtukod ug usa ka mainframe, nga walay lain nga mga handumanan, gawas hapnig. Ang bugtong nga butang nga naghimo sa makina - apply sa mga algorithms ug mga pamaagi sa RPN sa sentral nga pundok. Ang tanan nga sa operasyon niini giisip nga arresters operators, nga magamit sa sa ibabaw nga mga prinsipyo n. Kay sa panig-ingnan, ang team mikuha sa Bumalik Address gikan sa kinatumyan sa mga pundok, ug sa ingon sa. D. Ang arkitektura sa maong usa ka makina mao ang yano, apan dili sa pagpuasa nga igo sa makigkompetensiya sa mas komon architectures. Daghan, bisan pa niana, sa gihapon magbasol ang kamatuoran nga ang maong usa ka yano ug elegante nga pamaagi sa Computing diin ang matag programa mao ang usa ka pagpahayag sa OPN, nakaplagan sa iyang pagpadayon.

Usa ka higayon calculator uban sa RPN mga popular, ug ang ubang mga tawo sa gihapon mohatag kanila pagpalabi. Dugang pa, sila og usa ka pundok-oriented nga mga pinulongan, sama sa Forth. Karon kini mao ang gamay nga gigamit, apan sa gihapon nostalgic gikan sa iyang kanhi tiggamit.

Busa unsa ang kahulogan komedya mahitungod sa Reverse Polish nga sausage?

Kon kita maghunahuna nga ang operator sa sausage, ang infix nota, kini kinahanglan nga sa sulod sa linukot sama sa conventional mainit nga iro. Ang RPN nahimutang sa matarung diha sa duha ka halves-andam therebetween human sa pagkalkulo. Karon moabut ang lisud nga bahin - mustard. Siya mao na sa sausage, t. E. na kalkulado ingon nga usa ka unary operator. Kini mao ang nagtuo nga mustard kinahanglan usab nga gipakita ingon nga uncalculated ug busa kinahanglan nga mibalhin sa sa katungod sa sa sausage ... Apan kini mao ang posible nga, nga gikinahanglan niini kaayo dako nga pundok sa ...

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 ceb.atomiyme.com. Theme powered by WordPress.