MakombiyutaSoftware

RPN: algorithm, nzira uye mienzaniso

RPN kamwe akaumba Achishandisa kombiyuta programmer munyika. Nhasi hazvina kudaro tichizikamwa. Naizvozvo, munhu anofadza mufananidzo, unoratidza "harungashandurwi" Polish soseji mabhanzi kunze, vanongogona kusanzwisiswa nevamwe ruzivo programmers. Kwete chaizvo zvakanaka kutsanangura sedambe, asi muchiitiko chino ichava kwakakodzera.

infix

programmers All, uye vadzidzi vakawanda vanoziva nokushandiswa dzaishandisa. Somuenzaniso, mashoko okuti X + summation tsika nokuti variables X uye Y kushandiswa ndinoiitawo chiratidzo. Hainyanyi kuzivikanwa ndechokuti izvi akakweretwa kubva masvomhu notation, inonzi infix notation Chokwadi, idambudziko guru kuti michina. opareta ichi anogamuchira sezvo chiyamuro tsika mbiri yakanyorwa kuruboshwe uye zvakarurama. In mapurogiramu notation rinoshandiswa optionally nezviratidzo kushandiswa. Somuenzaniso, X + and anogona kunyorwa somunhu Zvaiitwa mudanga (x, y), umo compiler uye pakupedzisira vatendeuki infix notation. Zvisinei, munhu wose anoziva masvomhu wakanyanya kunaka kwete kushandisa svomhu mashoko, izvo zvinoumba yomunyika Mini-mutauro mumwe mhando iri dzinenge mutauro ose zvirongwa.

fomura muturikiri

Wokutanga here kubudirira Fortran zvirongwa mutauro akava zvikurukuru nokuti svomhu okuti (kureva nzira ..) It anotendeuka (nhepfenyuro) ari code, saka zita - fomura rokushandura. Vasati kuti, vaifanira kunyora, somuenzaniso, akapeta ari muchimiro mashandiro (uye muwande (b, c)). In dambudziko COBOL kuti pakutevedzera otomatiki kutendeuka payakavakirwa kwainzi kwakaoma chaizvo nokuti programmers vaifanira kunyora zvinhu zvakafanana Wedzerai A To B Mutliply By C.

Chii chakakanganisika infix?

Chinetso ndechokuti, kuti dzaishandisa vane ehupfumi akadai yokutanga uye associativity. Nokuda kwaizvozvi, tsanangudzo infix basa anova non-duku basa. Somuenzaniso, chokuwanziridza ane yepamusoro yokutanga pane kuwedzera kana kubvisa, izvo zvinoreva kuti mashoko 2 + 3 * 4 haana kuenzana Verengai 2 3, kane 4, sezvo zvingava zviri kuita pakati dzaishandisa kubva kuruboshwe kuenda kurudyi. Kutaura zvazviri, muwande 3 ne 4 uye kuwedzera 2. Muenzaniso uyu unoratidza kuti kuverenga pamusoro infix okuti kazhinji zvinoda kuchinja sezvakarayirwa dzaishandisa uye operands. Uyezve, zvinokosha kushandisa kufamba ndakaisa simbi mumakumbo kutarisa zvakawanda zvakajeka notation. Somuenzaniso, (2 + 3) * (4 + 5) zvisingagone kunyorwa pasina muzvikomberedzo, nekuti 2 + 3 4 + 5 zvinoreva kuti unofanira muwande 3 ne 4 uye wedzera 2 uye 5.

The uchitanga uchida kuverenga dzaishandisa rinoda refu kurangarira. Nokuda kwaizvozvi, vadzidzi vanotanga kudzidza svomhu, kazhinji kuwana zvakaipa zvabuda, kunyange kana kushanda chaiko anoteererwa nemazvo. Zvakakodzera kudzidzisa hurongwa hwezvekuita mashoko nomusoro. Chokutanga, chiito kunofanira kuitwa muzvikomberedzo, ipapo chokuwanziridza uye kupesana, uye pakupedzisira Kuwedzera uye kubvisa. Asi pane imwe nzira yokunyora kwemasvomhu sokuti infix notation ndiyo chete mumwe "mitauro diki" zvichiita kuti inogona kuwedzerwa mamwe.

Chivakashure uye postfix notation

Maviri inozivikanwa zvikuru inotsiva ndiyo kunyora opareta asati kana pashure operands ayo. Vari kunzi chivakashure uye postfix notation. Logician Yan Lukasevich akazogadzira yokutanga muna 1920. Akararama kuPoland, saka zvinyorwa anonzi Polish. Postfix shanduro ukuwo, rinonzi Reverse Polish Notation (ARF). Musiyano chete pakati nzira idzi mbiri riri nhungamiro iri kuverenga zvinyorwa (kubva kuruboshwe kuenda kurudyi kana kodzero kuruboshwe), saka zvakatikwanira kuti kukurukura nezvayo chete mumwe wavo. The OPN opareta zvakanyorwa pashure operands ayo. Saka, mashoko okuti AB + rinomiririra muenzaniso RPN nokuda A + B.

Unlimited Nhamba operands

The pakarepo kunakisa notation ndechokuti ipfupiso N-adic opareta uye infix notation ndiyo chete inoshanda operands maviri chaizvoizvo, t. E. akangosikwa vakakodzera chete binary kushandiswa. Somuenzaniso, ABC @ ndiye neizvi Polish mashoko uchishandisa triadic chiratidzo inova kunonyanyisa kukosha A, B uye C. Panyaya iyi opareta anoita kuruboshwe matatu operand pacharo uye unoenderana mashandiro runhare @ (A, B, C). Kana ukaedza nyora @ chiratidzo sezvo infix, akadai A @ BC kana chinhu chakadaro, zvinova pachena kuti haushande.

The chokutanga inopiwa hurongwa

RPN ane mumwe mukana pakuti Zvinokosha dzaishandisa zvinogona anomiririrwa murayiro chitarisiko chavo. Panguva iyoyowo haumbofaniri kufamba ndakaisa simbi mumakumbo, kunyange ivo zvaisanganisira sezvo vatambi akavhiyiwa kuti zviite kutendeuka kubva infix notation. Somuenzaniso, AB + C * - inonzwisisika nerokuti (A + B) * C, saka chokuwanziridza hazvigoni dzaona kusvikira kuwedzera mabasa, izvo zvinopa yechipiri operand nokuda chokuwanziridza. Ndiko, kana akaverenga AB + C * nomumwe opareta panguva, tinowana AB + C * -> (AB +) * C -> (A + B) * C.

kukarukureta algorithm

The OPN opareta anotarira yakafanana ine basa kuti zvinoda sezvo nenharo maviri tsika akanyorwa kuruboshwe wake. Uyezve, chinhu dzinongoitika notation zvokushandisa mapurogiramu mumitauro, setsika ayo kukarukureta rinoenderana wemagazini akavhiyiwa uye kudiwa parsing panobviswa. Somuenzaniso, arrester ari okuti 5 + 6 7 achaonekwa ari 5, 6, 7 *, + uye kunogona dzaona nokuda kushanda pakuvheneka nyore kubva kuruboshwe kuenda kurudyi uye nyora tsika vari murwi wemagazini. Pose chiratidzo zvinowanzovapo kushanda, akasarudzwa rokumusoro vanzwe 2 kombiyuta ndangariro, kuti opareta inoshandiswa uye mugumisiro akadzokera ndangariro. Kana tuso dzemaitirwe okuti achava pamusoro wemagazini.

Somuenzaniso:

  • S = () 5, 6, 7,, + 5 akaisa pamusoro wemagazini.
  • S = (5) 6, 7,, + 6 akaisa pamusoro wemagazini.
  • S = (5, 6), 7 *, 7 + isa pamurwi.
  • S = (5, 6, 7), + 2 + kusarudza tsika kubva wemagazini, kushandiswa uye woisa mugumisiro iri wemagazini.
  • S = (5, 6 * 7) = (5, 42) + 2 tsika vakasarudzwa kubva wemagazini, kushandisa + uye akaisa kunounza pamurwi.
  • S = (5 + 42) = (47) kukarukureta kwapera, mugumisiro anochengeterwa pamusoro wemagazini.

algorithm Izvi zvinogona kuongororwa RPN kakawanda, asi nguva imwe neimwe kushanda, pasinei kuoma svomhu okuti.

OPN uye muzvikochikari zviri pedyo nepedyo. Muenzaniso uyu unoratidza sei kuti kushandisa ndangariro kuverenga kukosha neizvi Polish notation. Zvishoma pachena ndechokuti unogona kushandisa wemagazini, vachichinja mureza infix okuti mune chakasimba renal kukundikana.

Mienzaniso mapurogiramu mitauro

Pascal RPN akaziva saizvozvi (chinoratidza chikamu chepurogiramu).

Kuti kuverenga nhamba uye dzaishandisa vari kutenderera inonzi nzira, iyo kunotema kana chiratidzo nhamba kana chiratidzo oparesheni. Muchiitiko chokutanga, mutengo mumabhatiri pamurwi, uye wechipiri maviri yokumusoro wemagazini nhamba zvinoenderana matanho rinoitwa uye mugumisiro inochengeterwa.

toktype: = Num;

verenga (s);

kana c [ '+', '-', '', '/'] ipapo uchatanga

kana eoln zvino cn: = '' mumwe kuverenga (cn);

kana cn = '' ipapo

Kana munhu

'+': Toktype: = wedzera; '-': toktype: = dzesub;

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

magumo

mumwe anotanga

kana munhu = '-' ipapo sgn: = -1 mumwe kukanganisa: = C <> '+';

pamwe: = cn

magumo

agumise;

kana (kwete kukanganisa) uye (toktype = Num) Saka getnumber;

kana toktype <> Num ipapo uchatanga

Y = Pop; X: = Pop;

kana asina kukutadza ipapo

nyaya toktype pamusoro

wedzera: Z: = X + Y; dzesub: Z: = X-Y; mul: Z: = X *, y; div: Z: = X / Y

magumo

kusunda (Z);

C-Implementation RPN (akaratidzwa chikamu chepurogiramu):

nokuti (s = strtok (s, w); S; S = strtok (0, w)) {

mumwe = strtod (s, & e);

kana (e> s) kusunda (a);

#define rpnop (x) printf ( "% c:", * s), b = Pop (), mumwe = Pop (), kusunda (x)

mumwe kana (* S == '+') rpnop (a + b);

mumwe kana (* no == '-') rpnop (a - b);

mumwe kana (* S == '*') rpnop (a * b);

mumwe kana (* S == '/') rpnop (a / b);

#undef rpnop

}

Hardware implementations

Mumazuva iwayo, kana Michina kombiyuta kwaidhura chaizvo, zvaifungwa pfungwa yakanaka kumanikidza vanhu kuti vashandise pakaitika arresters. Muna 1960-ies., Sezvo zvino, zvaigoneka kutenga macalculator, izvo vashande neizvi muchiPolish notation. Kuwedzera 2 uye 3 vavo vanofanira kupinda 2, ipapo 3, achizviendesa "ndinoiitawo" bhatani. Pakutanga, mazano operands kusvika opareta sokuti yakaoma uye zvakaoma kuti vayeuke, asi pashure penguva yakati, vamwe vari muropa nzira iyi mafungiro uye vasingagoni kunzwisisa nei vamwe chandagwinyira benzi infix, iyo yakaoma chakadeno ipfupi.

Burroughs kambani kunyange akavaka mainframe, wakange asina mumwe ndangariro, kunze wemagazini. Chinhu bedzi inoita muchina - aishandisa algorithms uye nzira RPN kuti nechepakati wemagazini. All remapazi ayo kwainzi arresters dzaishandisa, hunoreva rokumusoro N tsika. Somuenzaniso, chikwata akatora Return Address kubva pamusoro wemagazini, uye zvichingodaro. D. The mavakirwo muchina akadaro aiva nyore, asi vasingatsanyi zvakakwana kukwikwidzana zvikuru zvinozivikanwa architectures. Zvisinei, zhinji, achiri kuzvidemba kuti nyore uye kwezvokufuka zvakadaro nzira imwe kuti kadambari apo chirongwa ose kwairatidza OPN, akawana kuenderera kwayo.

Imwe nguva macalculator pamwe RPN vaiva akakurumbira, uye vamwe vanhu vachiri kuvapa aanoda. Mukuwedzera, vakava noushamwari mitauro wemagazini vaifarira, akadai Izvozvi. Nhasi Rinoshandiswa zvishoma, asi achiri nostalgic kubva ake ekare vanoshandisa.

Saka zvinorevei majee pamusoro Reverse Polish soseji?

Kana taifunga kuti opareta yacho soseji, kuti infix notation, chinofanira kuva mukati rwakapetwa sezvinoitwa kwakajairika inopisa imbwa. The RPN iri chaipo sezvikamu zviviri chigadzirirai therebetween pashure kukarukureta. Zvino anouya yakaoma chikamu - masitadhi. Iye kare pamusoro soseji, t. E. Nechekare dzaona somunhu unary opareta. Zvinofungidzirwa kuti netsanga anofanirawo kuratidzwa sezvo uncalculated uye saka kunofanira vakatamira kurudyi soseji ... Asi zvinokwanisika, uyu zvaida wo guru wemagazini ...

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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