ÒdinatèLojisyèl

RPN: algorithm, metòd ak egzanp

RPN yon fwa ki te fòme baz la nan yon pwogramè konpitè nan mond lan. Jodi a li pa se konsa byen li te ye. Se poutèt sa, komik ilistrasyon, ki dekri yon "ranvèse" woulo sosis Polish deyò, ka toujou konpwann pa kèk pwogramasyon konesans. Pa trè byen eksplike blag la, men nan ka sa a li yo pral konplètman jistifye.

inséré

Tout pwogramasyon, ak pi elèv yo yo abitye avèk itilize nan operatè yo. Pou egzanp, valè yo ekspresyon x + somasyon pou varyab x yo ak y itilize siy plis. Mwens byen li te ye se lefèt ke sa a se prete nan men matematik notasyon, ki rele inséré notasyon, an reyalite, se yon gwo pwoblèm pou machin yo. operatè Sa a resevwa kòm opinyon de valè nou jwenn sa ekri sou bò gòch la ak dwa. Nan pwogram notasyon itilize opsyonèlman ak siy operasyon yo. Pou egzanp, ka x + y dwe ekri kòm yon fonksyon nan pliye (x, y), nan ki du a ak evantyèlman konvèti inséré notasyon. Sepandan, tout moun konnen matematik la se twò bon pa sèvi ak ekspresyon aritmetik, ki fòme yon kalite mini-ak lang entèn nan prèske chak lang programmation.

tradiktè fòmil

te premye lang nan Fortran pwogram reyèlman siksè vin tèlman lajman paske ekspresyon ki aritmetik (sa vle di fòmil ..) Li konvèti (emisyon) nan kòd la, kon sa non an nan li - fòmil tradiksyon. Anvan yo fè sa, yo te gen yo ekri, pou egzanp, ki plwaye nan fòm lan nan fonksyon (ak anpil anpil pitit (b, c)). Nan pwoblèm COBOL nan mete ann aplikasyon otomatik fòmil konvèsyon te konsidere kòm trè difisil paske pwogramasyon yo te gen yo ekri bagay sa yo tankou Ajoute yon Pou B Mutliply Pa C.

Ki sa ki se mal ak inséré?

Pwoblèm lan se, ki operatè yo gen pwopriyete tankou priyorite ak asosyativite. Poutèt sa, definisyon an nan fonksyon inséré vin ki pa trivial travay. Pou egzanp, miltiplikasyon gen pi wo priyorite pase de sa oswa soustraksyon, ki vle di ke ekspresyon 2 + 3 * 4 la se pa egal a sòm total la nan 2 ak 3, miltipliye pa 4, kòm li ta dwe nan pèfòmans lan nan operatè yo de gòch a dwat. An reyalite, anpil anpil pitit 3 pa 4 epi ajoute 2. Egzanp sa a montre ki kalkil la nan ekspresyon an inséré souvan egzije pou yon chanjman nan lòd la operatè yo ak opérandes. Anplis de sa, li nesesè yo sèvi ak aparèy òtopedik yo gade pi klè notasyon. Pou egzanp, (2 + 3) * (4 + 5) pa kapab ekri san yo pa parantèz yo, paske 2 + 3 * 4 + 5 vle di ke ou bezwen anpil anpil pitit 3 pa 4 epi ajoute 2 ak 5.

Lòd la nan kote ou vle yo kalkile operatè yo mande pou yon long sonje. Poutèt sa, elèv ki kòmanse aprann aritmetik, souvan jwenn rezilta yo sa ki mal, menm si operasyon yo reyèl yo fèt kòrèkteman. Li nesesè yo anseye lòd nan deklarasyon aksyon pa kè. Premyèman, dwe aksyon an dwe te pote soti nan parantèz, lè sa a miltiplikasyon ak divizyon, epi finalman adisyon ak soustraksyon. Men, gen se yon lòt fason nan ekri ekspresyon matematik kòm inséré notasyon se sèlman youn nan posib "lang yo ti" ki ka dwe ajoute nan plis ankò.

Prefiks ak Sifiks notasyon

De nan altènativ yo pi byen li te ye-a se nan dosye operatè a anvan oswa apre opérandes li yo. Yo li te ye tankou prefiks ak Sifiks notasyon an. Lojisyen Yan Lukasevich envante yon sèl la an premye nan 1920. Li te viv nan Polòy, se konsa dosye a rele Polish. Sifiks vèsyon, respektivman, ki rele Fèy Polish Notasyon (ARF). Sèl diferans ki genyen ant de metòd sa yo se direksyon an nan ki li dosye a (ki soti nan gòch a dwat oswa dwa nan bò gòch), se konsa li sifizan yo konsidere an detay se sèlman youn nan yo. se Operatè a OPN ekri apre opérandes li yo. Kidonk, ekspresyon ki AB + reprezante yon egzanp RPN pou A + B.

Unlimited kantite opérandes

Avantaj nan imedya de moun ki notasyon se ke li rezime operatè a n-adik ak inséré notasyon se reyèlman sèlman travay ak de opérandes, t. E. Èske natirèlman apwopriye sèlman pou operasyon binè. Pou egzanp, ABC @ se do ekspresyon an Polonè lè l sèvi avèk triyadik make ki se valè a maksimòm de A B, ak C. Nan ka sa a operatè a aji sou bò gòch la nan twa opérande nan tèt li ak koresponn ak yon @ fonksyon rele (A, B, C). Si ou eseye ekri senbòl la @ kòm inséré, tankou yon BC @ oswa yon bagay tankou sa yo, li vin klè ke li tou senpleman pa travay.

Priyorite a yo bay nan lòd nan

RPN gen yon lòt avantaj nan ki ka priyorite a nan operatè yo dwe reprezante pa lòd nan aparans yo. An menm tan an pa janm bezwen aparèy òtopedik, byenke yo te ka dwe enkli kòm karaktè operasyon fasilite konvèsyon an soti nan inséré notasyon. Pou egzanp, AB + C * - ékivok ekivalan (A + B) * C, se konsa miltiplikasyon an pa ka ap kalkile jouk adisyon a fè, ki bay yon opérande dezyèm pou miltiplikasyon. Sa se, si kalkile AB + C a * pa youn operatè nan yon moman, nou jwenn AB + C * -> (AB +) * C -> (A + B) * C.

kalkil algorithm

Operatè a OPN sanble menm bagay la kòm yon fonksyon ki pran kòm agiman de valè ekri sou bò gòch li. Anplis de sa, li se yon notasyon natirèl pou itilize nan lang programmation, kòm fason ki nan kalkil li yo koresponn ak operasyon yo chemine epi li se bezwen an pou analyzes elimine. Pou egzanp, par la nan ekspresyon an 5 + 6 * 7 ap parèt kòm yon 5, 6, 7 *, +, epi li ka ap kalkile tou senpleman pa optik de gòch a dwat ak ekri valè yo nan yon chemine. Chak fwa yon siy ki pi kouran pou operasyon an, chwazi pa eleman la anwo 2 nan memwa nan òdinatè, se operatè a itilize ak rezilta a tounen nan memwa. Lè rezilta nan fen nan ekspresyon an kalkil yo pral nan tèt la nan chemine a.

Pou egzanp:

  • S = () 5, 6, 7, *, + 5 mete sou pil la.
  • S = (5) 6, 7, *, + 6 mete sou pil la.
  • S = (5, 6), 7 *, 7 + mete chemine a.
  • S = (5, 6, 7), * 2 + chwazi valè soti nan chemine, itilize a * epi mete rezilta a nan chemine a.
  • S = (5, 6 * 7) = (5, 42) + 2 valè chwazi nan chemine a, pou aplike pou + an, li mete rezilta a nan chemine a.
  • S = (5 + 42) = se (47) kalkil fini, se rezilta a ki estoke nan tèt la nan chemine a.

ka sa a algorithm dwe tcheke RPN repete, men chak fwa li pral travay, pa gen pwoblèm konbyen konplèks ekspresyon ki aritmetik.

OPN ak pil yo lye. Egzanp sa a montre kouman yo sèvi ak memwa nan yo kalkile valè a nan ranvèse notasyon a Polish. Mwens evidan se ke ou ka itilize chemine a, konvèti estanda ekspresyon inséré nan egi malfonksyònman ren.

Men kèk egzanp sou lang programmation

Pascal RPN reyalize tankou sa a (montre pati nan pwogram nan).

Pou li nimewo yo ak operatè nan sik la te rele pwosedi, ki detèmine si wi ou non nimewo oswa siy operasyon an siy. Nan pwemye ka a, se valè a ki estoke nan chemine a, ak dezyèm a nan de nonb chemine anwo korespondan aksyon an fèt epi li se rezilta a ki estoke.

toktype: = NUM;

li (yo);

si c nan [ '+', '-', '*', '/'] Lè sa a, kòmanse

si eoln Lè sa a, cn: = '' lòt moun li (cn);

si cn = '' Lè sa a,

ka ta gen yon

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

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

fen

lòt kòmanse

si yon = '-' Lè sa a, SGN: = -1 lòt erè: = c <> '+';

ak: = cn

fen

fini;

si (pa erè) ak (toktype = NUM) Lè sa a getnumber;

si toktype <> NUM Lè sa a, kòmanse

y = pòp; x: = pòp;

si se pa Lè sa a, erè

ka toktype a

ajoute: z: = x + y; sub: z: = x-y; MUL: z: = x * y; div: z: = x / y

fen

pouse (z);

C-aplikasyon RPN (yo montre yon pati nan pwogram nan):

pou (yo = strtok (yo, w); a; s = strtok (0, w)) {

yon = strtod (yo, & e);

si (e> yo) pouse (yon);

# defini rpnop (x) printf ( "% c:", * yo), b = pòp (), yon = pòp (), pouse (x)

lòt si (== * s '+') rpnop (yon + b);

lòt si (== * a '-') rpnop (yon - b);

lòt si ( '*' * a ==) rpnop (yon * b);

lòt si (== * a '/') rpnop (yon / b);

#undef rpnop

}

en pyès ki nan konpitè

Nan jou sa yo, lè teknoloji konpitè te trè chè, li te panse yon bon lide yo fòse moun yo sèvi ak parafoudr vag. Nan ane 1960-IES., Tankou koulye a, li te posib yo achte kalkilatris yo, ki travay nan ranvèse notasyon Polish. Pou ajoute 2 ak 3 nan yo dwe antre nan 2, Lè sa a, 3, ak laprès "plis" bouton an. Nan premye gade, opérandes yo opinyon nan operatè a te sanble konplike ak difisil yo sonje, men apre yon ti tan gen kèk ki dejwe nan fason sa a nan panse ak pa t 'kapab konprann pou ki sa lòt moun yo ensiste sou inséré estipid, ki se konsa konplike e konsa se limite.

Burroughs konpayi menm bati yon mainframe, ki te gen pa gen okenn lòt memwa, eksepte chemine. Bagay la sèlman ki fè machin lan - aplike algoritm ak metòd RPN nan chemine santral la. Tout moun nan operasyon li yo te konsidere kòm parafoudr operatè yo, ki aplike nan valè yo n anwo kay la. Pou egzanp, ekip la te pran adrès la Retounen nan tèt la nan chemine a, ak sou sa. D. Achitekti nan tout moun ki tankou machin yon te senp, men se pa vit ase fè konpetisyon ak architectures yo ki pi plis komen. Anpil, sepandan, toujou regrèt lefèt ke tankou yon apwòch senp ak elegant informatique kote chak pwogram te yon ekspresyon de OPN, yo te jwenn kontinyasyon li yo.

Youn kalkilatris tan ak RPN te popilè, ak kèk moun ki toujou ba yo preferans. Anplis de sa, yo te devlope yon pil-oryante lang, tankou Forth. Jodi a li se ti kras itilize, men yo toujou Nostalgic soti nan itilizatè ansyen l 'yo.

Se konsa, sa se blag yo siyifikasyon sou Ranvèse Polish sosis?

Si nou asime ke operatè a nan sosis lan, notasyon an inséré, li ta dwe nan woulo liv la tankou nan konvansyonèl chen cho. RPN an ki sitiye dwa nan de mwatye jwenn therebetween pare apre kalkil. Koulye a, vini pati nan difisil - moutad. Li se deja sou sosis lan, t. E. Deja kalkile kòm yon operatè unèr. Yo kwè ke moutad ta dwe tou ap montre kòm uncalculated ak Se poutèt sa yo ta dwe demenaje ale rete nan dwat a sosis lan ... Men, li se posib, sa a ta ka mande twò gwo pil nan ...

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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