TölvurHugbúnaður

RPN: reiknirit, aðferðir og dæmi

RPN myndast einu sinni grundvöll a tölva forritari í heiminum. Í dag er það ekki svona vel þekkt. Því grínisti dæmið, sem sýnir að "Snúa við" pólska pylsa rúlla út, getur samt verið misskilið af sumum fróður forritari. Ekki mjög vel útskýrt brandarann, en í þessu tilfelli verður það fullkomlega réttlætanleg.

infix

Allir forritarar og flestir nemendur eru kunnugir notkun rekstraraðila. Til dæmis, þá hugtakið x + samlagningu Gildin fyrir þessa breyturnar x og y notuðum plúsmerki. Minna vel þekkt er sú staðreynd að þetta er fengið að láni úr stærðfræði tákn, sem kallast infix merki, í raun, er stórt vandamál fyrir vélar. Þetta rekstraraðili fær sem inntak tvö gildi eru skráð á vinstri og hægri. Í forritun merki notuð mögulega með merki starfsemi. Til dæmis, x + y má setja fram sem fall af falt (X, Y), þar sem þýðanda og að lokum breytir infix tákn. Hins vegar allir vita að stærðfræði er of gott til að nota tölur tjáning, sem mynda eins konar innri mini-máli í nánast öllum forritunarmál.

formúla Þýðandi

Fyrsta raunverulega árangursrík Fortran forritunarmál hefur orðið svo miklu leyti vegna þess að reiknað tjáning (þ.e. formúla ..) Það umbreytt (útvarpsþáttur) í kóða, þess vegna the nafn af því - Formula Translation. Fram að því, þeir þurftu að skrifa, til dæmis, brotin í formi virka (og margfalda (b, c)). Í COBOL vandamál framkvæmdavalds sjálfvirka umbreytingu uppskrift var talin mjög erfitt vegna þess að forritarar þurfti að skrifa hlutina eins Bæta A til B Mutliply By C.

Hvað er athugavert við infix?

Vandinn er, að rekstraraðilar hafa slíka eiginleika og forgang og associativity. Vegna þessa skilgreiningu infix virka verður ekki léttvæg verkefni. Til dæmis, margföldun hefur hærri forgang en að auki eða frádráttur, sem þýðir að orðalagið 2 + 3 * 4 er ekki jafn summu 2 og 3, margfaldað með 4, eins og það væri í framkvæmd rekstraraðila frá vinstri til hægri. Í raun, margfalda 3 eftir 4 og bæta við 2. Þetta dæmi sýnir að við útreikning á infix tjáningu oft krefst breytinga af stærðargráðunni kringum rekstraraðila og þolendur. Þar að auki, það er nauðsynlegt að nota axlabönd til að leita skýrari tákn. Til dæmis, (2 + 3) * (4 + 5) er ekki hægt að skrifa án sviga, því 2 + 3 * 4 + 5 þýðir að þú þarft að margfalda 3 með 4 og bæta 2 og 5.

Í hvaða röð þú vilt að reikna rekstraraðila krefst lengi muna. Vegna þessa, nemendur sem byrja að læra stærðfræði, oft fá ranga niðurstöðu, jafnvel þótt raunveruleg aðgerðir eru framkvæmdar á réttan hátt. Það er nauðsynlegt að kenna röð yfirlýsingar aðgerð af hjarta. Í fyrsta lagi, aðgerð skal fara fram innan sviga, þá margföldun og deilingu, og loks viðbótar og frádráttur. En það er önnur leið til að skrifa stærðfræði tjáning eins infix merki er aðeins ein af mögulegum "litlu tungumálum" sem hægt er að bæta við fleiri.

Forskeyti og Postfix rithátturinn

Tveir af þekktustu val er að taka rekstraraðila fyrir eða eftir þolendur þess. Þau eru þekkt sem forskeytinu og Postfix merki. Logician Yan Lukasevich sér fyrsta einn í 1920. Hann bjó í Póllandi, þannig að færsla er kallað pólska. Postfix útgáfa, hver um sig, sem heitir Reverse pólska Ritháttur (ARF). Eini munurinn á milli þessara tveggja aðferða er sú átt sem að lesa upp (frá vinstri til hægri eða hægri til eftir), þannig að það nægir að íhuga í smáatriðum aðeins einn af þeim. The OPN Rekstraraðili er skrifað eftir þolendur þess. Þannig, þá hugtakið AB + getur verið dæmi RPN fyrir A + B.

Ótakmarkaður fjöldi þolendur

Strax Kosturinn við tákn er að það yfirlit sem N-ADIC rekstraraðila og infix merki er í raun aðeins vinnur með tveimur þolendur, t. E. eru í eðli sínu henta aðeins fyrir tveimur aðgerðum. Til dæmis, ABC @ er hið gagnstæða pólska hugtakið með því að nota triadic Merki sem er mælt hámarksgildi sem A, B og C. Í þessu tilviki er rekstraraðila virkar hér til vinstri á þriggja operand sig og svari til fall hringja @ (A, B, C). Ef þú ert að reyna að skrifa @ merkið á infix, ss A @ BC eða eitthvað svoleiðis, verður það ljóst að hún einfaldlega virkar ekki.

Forgang gefið röð

RPN hefur annar kostur í að forgangsverkefni rekstraraðila má koma fram með röð útliti þeirra. Á sama tíma aldrei þurft axlabönd, enda þótt þeir geta verið með sem stafir aðgerðir til að auðvelda viðskipti frá infix merki. Til dæmis, AB + C * - ótvíræð annarri sambærilegri merkingu (A + B) * C, þannig margföldun ekki hægt að reikna fyrr því að bæta framkvæmd, sem gefur annað operand til að margfalda. Það er að segja ef reiknaða AB + C * er einum notanda í einu, fáum við AB + C * -> (AB +) * C -> (A + b) * C.

Útreikningur reiknirit

The OPN Rekstraraðili lítur það sama og fall sem tekur sem rök tvö gildi skrifað á vinstri hennar. Þar að auki, er það eðlilegt merki til notkunar í forritunarmál, svo sem siður útreikninga sína samsvarar stafla starfsemi og þörf fyrir þáttun skilst. Til dæmis er arrester í tjáningu 5 + 6 * 7 mun birtast sem 5, 6, 7 *, +, og það er hægt að reikna með því einfaldlega að skönnun frá vinstri til hægri og skrifa gildin í stafla. Í hvert skipti sem sameiginlegur merki um rekstur, valið af efri þáttur 2 í tölvunni minni, rekstraraðili er notað og niðurstaðan aftur til minni. Þegar niðurstaðan af reiknireglu tjáningu verður efst í stafla.

Til dæmis:

  • S = () 5, 6, 7, *, + 5 sett á stafla.
  • S = (5) 6, 7, *, +6 sett á stafla.
  • S = (5 og 6), 7, * + 7 sett á mánudaginn.
  • S = (5, 6, 7), * 2 + velja gildin frá stafla, nota * og setja niðurstöðuna í stafla.
  • S = (5, 6 * 7) = (5, 42) + 2 gilda sem valin eru úr stafla, að beita + og setja niðurstöðuna í stafla.
  • S = (5 + 42) = (47) útreikningur er lokið, er niðurstaðan er geymt í toppur á stafla.

Þetta reiknirit er hægt að athuga RPN endurtekið, en í hvert skipti sem það mun virka, sama hversu flókin stærðfræði tjáningu.

OPN og stafla eru nátengd. Þetta dæmi sýnir hvernig á að nota minni til að reikna út verðmæti hinni pólsku merki. Minna augljóst er að þú getur notað stafla, breyta venjulegu infix tjáning í bráða nýrnabilun.

Dæmi um forritunarmál

Pascal RPN áttaði svona (sýnir hluta af áætluninni).

Til að lesa tölur og rekstraraðila í hringrás kallast aðferð, sem ákvarðar hvort teikn er tala eða tákn aðgerð. Í fyrra tilvikinu, gildi geymd í stafla, og annað af tveimur efri stafla tölum sem svarar aðgerð er framkvæmd og niðurstaðan er geymd.

toktype: = sem #

lesa (s);

ef C í [ '+', '-', '*', '/'] þá byrja

ef eoln þá CN: = '' annað að lesa (CN);

ef CN = '' þá

Ef um

'+': Toktype: = bæta; '-': toktype: = undir;

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

enda

annars byrja

ef a = "-" þá er SGN: = -1 annar error: = c <> '+';

með: = CN

enda

enda;

ef (ekki villa) og (toktype = NUM) þá getnumber;

ef toktype <> NUM þá byrja

y = pop; x: = pop;

ef ekki villa þá

ræða toktype af

bæta við: z: = x + y; Sub: z: = X-Y; mul: z: = x * y; div: z: = x / y

enda

ýta (z);

C-framkvæmd RPN (sést hluti af the program):

að (S = strtok (s, w); s; s = strtok (0, w)) {

a = strtod (S, e);

ef (E> s) ýta (a);

#define rpnop (x) printf ( "% c:", * s), b = pop (), a = pop (), ýta (x)

annars ef (* s == '+') rpnop (a + b);

annars ef (* s == '-') rpnop (a - b);

annars ef (* s == '*') rpnop (A * B);

annars ef (* s == '/') rpnop (A / B);

#undef rpnop

}

vélbúnaður gerð

Á þeim dögum, þegar tölvutækni var mjög dýrt, það var talið góð hugmynd að neyða fólk til að nota bylgja arresters. Árið 1960-félögunum., Eins og nú, að það var hægt að kaupa reiknivélar sem vinna í öfugri pólsku merki. Til að bæta 2. og 3. þá verður að slá 2, þá 3, og ýta á "plús" hnappur. Við fyrstu sýn, inntak þolendur til rekstraraðila virtist flókið og erfitt að muna, en á eftir smá stund sumir eru háður þessum hugsun og gat ekki skilið hvers vegna hinir heimta heimsku infix, sem er svo flókið og svo er takmörkuð.

Burroughs fyrirtækið byggði jafnvel mainframe, sem hafði ekkert annað minni, nema stafla. Það eina sem gerir vélina - beitt reiknirit og aðferðir RPN til Seðlabanka stafla. Alla starfsemi hennar voru talin arresters rekstraraðila, sem nær til efri n gildum. Til dæmis, liðið tók aftur heimilisfang frá the toppur af the stakkur, og svo framvegis. D. Arkitektúr svona vél var einföld, en ekki nógu hratt til að keppa við the fleiri sameiginlegur arkitektúr. Margir, þó enn sjá eftir því að svo einfalt og glæsilegur aðferð til að reikna þar sem hvert forrit var tjáning á OPN, fann framhald þess.

Eitt sinn reiknivélar með RPN voru vinsælar, og sumir enn að gefa þeim val. Þar að auki, þróað þau stafla stilla tungumál, ss fram. Í dag er lítið notað, en samt familíuna frá fyrrum notendum sínum.

Svo er það merkinguna brandara um Reverse pólsku pylsum?

Ef við gerum ráð fyrir að rekstraraðili pylsum, sem infix merki, það ætti að vera innan rúlla eins og í hefðbundnum pylsu. The RPN er staðsett í tvo helminga fá tilbúinn þar á eftir útreikning. Nú kemur það erfiða hluti - sinnep. Hún er þegar á pylsum, t. E. Þegar reiknað sem unary rekstraraðila. Það er talið að sinnep ætti einnig að vera eins og sýnt er uncalculated og því ætti að vera flutt til hægri pylsum ... En það er hægt, þetta myndi krefjast of stór stafla af ...

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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