RačunalnikiProgramska oprema

RPN: algoritem, metode in primeri

RPN, ko je bila podlaga za računalniški programer na svetu. Danes je tako tudi ni znano. Zato, strip ilustracija, ki prikazuje A "povratnih" poljske klobase zvitkih zunaj, lahko še vedno lahko napačno razumejo nekateri dobro programerjev. Ne preveč dobro razložiti šala, ampak v tem primeru bo to povsem upravičeno.

Vplivajo

Vse programerji in večina študentov so seznanjeni z uporabo operaterjev. Na primer, vrednosti izraz x + vsota za spremenljivki X in Y delovne znakom plus. Manj znano je dejstvo, da je ta sposojen iz matematike zapis, ki se imenuje Vplivajo zapis, v resnici, je velik problem za stroje. Ta operater prejme kot so vhodni dve vrednosti, zabeležene na levo in desno. Pri načrtovanju zapis uporablja v danem primeru z operacijami znaki. Na primer, lahko je x + y zapišemo kot funkcija krat (x, y), pri kateri prevajalnik in sčasoma pretvori Vplivajo zapis. Vendar pa vsi vedo, matematika je predobra, da ne uporabljajo aritmetičnih izrazov, ki tvorijo nekakšno notranje mini-jezik v skoraj vsakem programskem jeziku.

Formula prevajalnik

Prvi res uspešna Fortran programski jezik je postal tako v veliki meri zato, ker je aritmetično izraz (to je formula, ..) se pretvori (oddaja) v kodo, od tod tudi ime za to - Formula prevod. Pred tem so morali napisati, na primer, prepognjena v obliki funkcij (in razmnoževanje (b, c)). V COBOL problem izvedbenih samodejno formule konverzije je zdelo zelo težko, saj so programerji morali pisati stvari, kot so Dodaj A do B Mutliply Z C.

Kaj je narobe z Vplivajo?

Težava je v tem, da imajo operaterji take lastnosti kot prednostne in asociativnosti. Zaradi tega je opredelitev funkcije Vplivajo postane nepomembno nalogo. Na primer, množenje ima večjo prednost kot dodajanjem ali odvzemanjem, kar pomeni, da je z izrazom 2 + 3 * 4 ni enak vsoti 2 in 3, pomnoženo s 4, kot bi bilo pri opravljanju operaterjev od leve proti desni. Dejstvo je, pomnožite 3 za 4 in dodajte 2. Ta primer kaže, da je izračun izražanja Vplivajo pogosto zahteva spremembo vrstnega reda operaterjev in operandov. Poleg tega, da je treba uporabiti oklepaje, da so videti bolj jasen zapis. Na primer, (2 + 3) * (4 + 5), ne more biti napisana brez oklepajev, ker 2 + 3 * 4 + 5 pomeni, da boste morali pomnožiti 3 do 4. in dodamo 2 in 5.

Vrstni red, v katerem želite izračunati operaterjev zahteva dolgo zapomnili. Zaradi tega, študente, ki se začnejo, da se naučijo aritmetične, pogosto dobijo napačne rezultate, čeprav so dejansko opravljajo pravilno. Treba je naučiti vrstni red ukrepov izjav s srcem. Najprej je treba tožbo izvaja v oklepajih, nato množenja in deljenja, in na koncu seštevanje in odštevanje. Toda obstaja še en način za pisanje matematičnih izrazov, kot je Vplivajo zapis le ena od možnih "majhnih jezikov", ki se lahko dodajo še več.

Predpona in postfix zapis

Dva izmed najbolj znanih alternativ, je za snemanje operaterja pred ali po svojih operandov. Ti so znani kot predpono in Postfix zapisu. Logician Yan Lukasevich izumil prvo leta 1920. Živel je na Poljskem, tako da je zapis se imenuje Poljski. Postfix različica, oziroma, ki se imenuje obrnjeni poljski zapis (ARF). Edina razlika med tema dvema načinoma je smer, v katero se glasi zapis (od leve proti desni ali od desne proti levi), tako da je dovolj, da razmisli podrobno le ena od njih. Operater OPN je napisan po svojih operandov. Tako izraz AB + predstavlja primer RPN za A + B.

Neomejeno število operandov

Neposredna prednost zapisa je, da povzema n-adske operaterja in Vplivajo zapis je le res deluje z dvema operandov, t. E. so same po sebi primeren samo za binarne operacije. Na primer, ABC @ je obratno poljščina izraz uporablja triadni oznako, ki je največja vrednost A, B in C. V tem primeru operater deluje na levi treh operanda samega in ustreza funkciji klica @ (A, B, C). Če boste poskušali napisati simbol @ kot Vplivajo, kot je @ DP ali nekaj takega, postane jasno, da to preprosto ne deluje.

Prednost, ki jo je naročilo

RPN ima še eno prednost, da se da prednost operaterjev lahko predstavimo z namenom njihovega videza. Hkrati pa nikoli ne potrebujejo naramnice, čeprav se jih lahko vključi kot operacije znakov, da se olajša pretvorbo iz Vplivajo zapisu. Na primer, AB + C * - nedvoumna ekvivalent (A + B) * C, tako da množenje ni mogoče izračunati do dodatek izvedemo, ki daje drugi operand razmnoževanju. To pomeni, da če je izračunana AB + C * en operater v času, smo dobili AB + C * -> (AB +) * C -> (A + B) * C.

Izračun algoritem

Operater OPN izgleda enako kot funkcija, ki bo kot argumenti dve vrednosti napisano na svoji levi strani. Poleg tega, da je naravni zapis za uporabo v programskih jezikih, kot način njegovega izračuna ustreza poslovanju konzoli in potreba za razčlenjevanje se izloči. Na primer, bo odvodnik v izražanju 5 + 6 * 7 prikažejo kot 5, 6, 7 *, +, in ga je mogoče izračunati samo s skeniranjem od leve proti desni in pisati vrednosti na kupu. Kadarkoli pogost znak delovanja, ki ga je zgornji element 2 računalniškem pomnilniku izbrali, se upravljavec uporablja in rezultat vrne v spomin. Ko bo končni rezultat izraza izračun bo na vrhu kupa.

Na primer:

  • S = () 5, 6, 7, *, +5 dajo na kup.
  • S = (5) 6, 7, *, + 6 dajo na kup.
  • S = (5, 6), 7 * 7 + dodaj snop.
  • S = (5, 6, 7), * 2 + izbrati vrednostmi iz dimnika, uporaba * in dodaj rezultat v skladovnice.
  • S = (5, 6 * 7) = (5, 42) + 2 vrednosti, izbranih iz skladovnice, uporabijo + in dal rezultat v skladovnice.
  • S = (5 + 42) = (47) Izračun je končan, je rezultat shranjen na vrhu kupa.

Ta algoritem je mogoče preveriti RPN večkrat, vendar vsakič, ko bo to delo, ne glede na to, kako zapleteno aritmetično izražanja.

OPN in nizov sta tesno povezana. Ta primer kaže, kako uporabljati spomin za izračun vrednosti obratnem poljskem zapisu. Manj jasno je, da lahko uporabite kup, pretvori standardni Vplivajo izraz v akutno odpovedjo ledvic.

Primeri programskih jezikov

Pascal RPN realiziran takole (prikazuje del programa).

Če želite prebrati številke in operaterje v ciklu imenovanem postopku, ki določa, ali je simbolično številko ali znak delovanja. V prvem primeru je vrednost shranjena v plasteh, in drugi od dveh Gornja konzoli številu, ki ustreza delovanja izvede in rezultat je shranjena.

toktype: = num;

brati (y);

če cv [ "+", "-", "* ',' / '] nato začeli

če eoln potem cn: = '' še prebral (CN);

če cn = '' nato

primeru

"+": Toktype: = dodamo; "-": toktype: = sub;

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

konec

še začeli

če = '-' potem SGN: = -1 drugje napak: = C <> "+";

začeli = CN

konec

konec;

če (ni napaka) in (toktype = num) nato getnumber;

če toktype <> num nato začeli

y = pop; X: = pop;

Če ni napak, potem

Primer toktype od

dodaj: z: = x + y; bo: Z: = X-Y; mul: z: = x * y; div: Z: = X / Y

konec

Push (Z);

C-izvedba RPN (prikazano del programa):

za (S = strtok (y, m); S; y = strtok (0, m)) {

a = strtod (s, e);

če (e> y) potisnega (a);

#define rpnop (x) printf ( "% c:" * y), b = pop (), a = pop (), potisni (x)

drugje če (* s == "+") rpnop (a + b);

else if (* s == '-') rpnop (a - b);

else if (* s == "*") rpnop (a * b);

drugje če (* s == '/') rpnop (a / b);

#undef rpnop

}

strojne implementacije

V teh dneh, ko je računalniška tehnologija zelo draga, je mislil, da je dobra ideja, da prisilijo ljudi, da uporabljajo prenapetostni odvodniki. V 1960-ih letih., Kot je sedaj, je bilo mogoče kupiti kalkulatorje, ki delujejo v obratnem poljskem zapisu. Če želite dodati 2 in 3 od njih je treba vnesti 2, nato 3 in pritisnite gumb "plus". Na prvi pogled se vhodni operandi do operaterja zdelo zapleteno in težko zapomniti, ampak čez nekaj časa so nekateri zasvojeni s tem načinom razmišljanja in ni mogel razumeti, zakaj drugi vztrajajo pri neumno Vplivajo, ki je tako zapleten, zato je omejena.

Burroughs podjetje celo zgradili mainframe, ki je imela nobenega drugega spomina, razen dimnika. Edina stvar, ki naredi stroj - uporabila algoritmov in metod RPN na osrednji dimnika. Vse njene dejavnosti so se šteli za operaterje odvodniki, ki se uporablja za zgornje vrednosti n. Na primer, ekipa je na povratni naslov na vrhu kupa, in tako naprej. D. arhitektura takega stroja je enostavna, vendar ne dovolj hitro, da tekmujejo z bolj pogosti arhitekture. Mnogi pa še vedno obžalujem, da tako preprosto in elegantno pristop k računalništvu, kjer je vsak program, izraz OPN, našli njegovo nadaljevanje.

Enkrat kalkulatorji z RPN so bili popularni, in nekateri ljudje jim še vedno daje prednost. Poleg tega so razvili-žetonov usmerjenih jezikov, kot naprej. Danes je malo rabljeno, a še vedno nostalgično od njegovih nekdanjih uporabnikov.

Torej, kaj je pomen šale o Reverse poljski klobaso?

Če predpostavimo, da je Vplivajo zapis, mora biti upravljavec klobase v zvitku, kot v konvencionalnem hot dog. RPN se nahaja prav v dve polovici priti pripravljen vmes po izračunu. Zdaj prihaja težko del - gorčica. Bila je že na klobaso, t. E. Že izračunana kot unarnega operaterja. Menijo, da bi bilo gorčica se kaže tudi kot uncalculated, zato je treba premakniti v desno klobase ... Ampak to je možno, bi to zahtevalo preveč velik kup ...

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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