KomputeranSoftware

RPN: Rêbaza, metodên û wergerandî

RPN carekê bingeha programevaneke komputerê di cîhanê de hatin avakirin. Îro ku pir baş nayê zanîn. Ji ber vê yekê, mesele comic, karîkatura a "berevajîkirina" Polish sosîsên lîsteyên derve, dikarin hîn jî ji aliyê hin bernamenûs, zana fêm kirin. Ne pir baş rave nukte, lê belê di vê rewşê de jî dê were bi temamî cih de ne.

infix

Hemû bernamenûs, û piraniya xwendekaran bi bikaranîna operatorên nas in. Ji bo nimûne, li nirx îfade x + kurtayîya ji bo guherbarên x û y nîşaneya zêdek bikaranîn. Jî kêm tên zanîn e ji ber ku ev yek ji Teşeya matematîkê de, bi navê Teşeya infix deyn, di rastiyê de, pirsgirêkeke mezin ji bo makîne e. Ev operator distîne wek input du nirxên bi li ser milê çepê û rastê de tên tomarkirin. Di bernameyên Teşeya bijarteye bi operasyonên nîşan bikaranîn. Ji bo nimûne, x + y dikarin wek function ji fold (x, y), li ku dendikên û di dawiyê de xwe diguherin û Teşeya infix nivîsîn. Lê belê, her kes dizane di fizîkê jî baş e ji bo bi kar tîne Dallas, ku cure navxweyî ye, mini-zimanê forma di hema hema li her zimanê bernameyên ne.

translator formula

Ya yekem, bi rastî jî serkeftî zimanê bernameyên Fortran bûye, da bi giranî ji ber ku îfadeya wan çêdibe (ango formula ..) Ev di qanûna bîya (Êrîvanê), vê yekê navê wê - formula werger. Berî ku, wan ji bo nivîsandinê, ji bo nimûne, pêçayî û di form of erkên (û zêde (b, c)). Di pirsgirêka COBOL bicihanîna formula converter otomatîk gelekî zehmet hate hesibandin ji ber ku bernamenûs bû bo nivîsandina tiştên mîna lê zêde bike A To B Mutliply By C.

Çi bi infix e?

Pirsgirêk ew e, ku operatorên milkên wek sertir û associativity. Ji ber vê, li pênase yên function infix karê non-weta dibe. Ji bo nimûne, multiplication sertir bilindtir e ji bilî an derxistin, tê wê wateyê ku di + 3 * 4 îfade 2 e ku bi qasî 2 û 3, zêde ji aliyê 4 wekhev ne, wek ku ew dê di performansa ya operatorên be, ji çepê ber bi rastê. Di rastiyê de, derdê 3 by 4 û zêde 2. Ev mînak bi awakî ku hesaba îfade infix de gelek caran pêwistî bi guhertina li gor pergala * operatorên û operands. Li gel vê, pêwist e ji bo bikaranîna BBCode tu ji binêrin Teşeya zelal more. Ji bo nimûne, (2 + 3) * * * (4 + 5) ne be, bê ku parantezê de hatine nivîsîn, ji ber ku 2 + 3 * 4 + 5 wateya ku tu bi hacetî qat bi qat 3 by 4 û lê zêde bike 2 û 5.

The da ku tu dixwazî hejmêrim operatorên pêwîstî bi dirêj bi bîr bînin. Ji ber vê, xwendekarên ku dest bi hîn Dallas, gelek caran get encamên şaş e, heta heke operasyonên rastî bi awayekî rast dikirin. Ev ji bo me hîn bike, da ji daxuyaniyên ji aliyê dil pêwîst e. Yekem, vê çalakiyê de, divê bê di nav parantezê de, paşê multiplication û dubendî, û di dawiyê de ji bilî û subtraction hatiye lidarxistin. Lê belê bi awayekî din ji nivîsandina têgînên matematîkê yên wek Teşeya infix e bi tenê yek ji gengaz "zimanên biçûk" ya ku dikare ji bo zêdetir added hene.

Pêşgira û postfix Teşeya

Du alternatîfên herî navdar e ji bo nîvîsandina operator berî an jî piştî operands xwe. Ew wek prefix û postfix li ser jimara zanîn. Logician Yan Lukasevich yê yekem di 1920 venebêjin. Ew li Polonya dijiya, da ku rekor di bi navê Polish. Versiyon ji Postfix, bi rêzê ve, navê Reverse Polish Notation (Ermenîstanęye). The tenê cudahiya di navbera van her du rêbazên ji alî li ku ji bo xwendina record (ji çepê ber bi rastê an jî maf heye ku ji çepê) de ye, da ku têra ji bo ku bi berfirehî bi tenê yek ji wan. The operator OPN piştî operands xwe nivîsîn. Bi vî awayî, îfadeya AB + nûneriya nimûne RPN ji bo A + B.

hejmareka bêsînor ya operands

Avantaja yekser ên Teşeya ew e ku, bi kurtayî operator n-adic û Teşeya infix e bi rastî jî bi tenê bi du operands dixebite, t. E. Ma mîratî minasib bi tenê ji bo operasyonên binary. Ji bo nimûne, ABC @ îfadeya berevajî Polish bikaranîna mark triadic e ku ji maximum value of A, B û C Di vê mijarê de operator li milê çepê li ser sê operand xwe tevbigere û beramberî function banga @ e (A, B, C). Eger tu hewl bo nivîsandina @ sembola wek infix, wekî A @ BC an tiştekî wek ku, xuya dibe ku ew tenê bi kêr nayê.

Mentiqê dayîn, bi fermana

RPN heye sûd din li ku pêşanî ya operatorên dikare bi fermana rûyê xwe temsîlkirin. Di heman demê de, tu caran jî deaktîv bike, divê, tevî ku ew dikarin bên de wek characters operasyonên ji bo hêsankirina zivirîna ji Teşeya infix. Ji bo nimûne, AB + C * - cezayeke pêbawer (A + B) * C, da ku multiplication ne dikarin heta ku gel çêkiriye, ku dide operand duyemîn ji bo multiplication hejmartin. e ku, eger hejmartin AB + C * bi yek operator di demekê de, em dest AB + C * -> (AB +) * C -> (A + B) * C.

Rêbaza qazenc

The operator OPN eynî weke fonksiyona ku digire, wek argumanên du nirxên li ser milê xwe bi nivîskî dinêre. Herwiha, ew Teşeya xwezayî ji bo bikaranîna zimanên bernameyên e, ji ber ku bi awayekî ji hesabekî ji xwe re lihevkirî ji bo operasyonên sergoyê û pêwîstî ji bo parsing holê ye. Ji bo nimûne, arrester li îfadeya 5 + 6 * 7 wekî 5, 6, 7, + wê xuya bibe, û ew dikare bi hêsanî bi sęyemîn hesabkirin, ji çepê ber bi rastê û nivîsandinê nirxên di sergoyê. Dema ku nîşana hevbeş yên operasyonê, ji aliyê hêmana jorîn 2 ji bîra kompîturê de, ji karmenda tê bikaranîn û di encamê de vegeriya bîra. Dema ku encama dawiyê ya derbirînê û hesaba ka dê li ser depika ser serê sergoyê be.

Ji bo nimûne:

  • S = () 5, 6, 7, *, + 5 danîn li ser sergoyê.
  • S = (5) 6, 7, *, + 6 danîn li ser sergoyê.
  • S = (5, 6), 7 *, 7 + cihê sergoyê.
  • S = (5, 6, 7), * 2 + hilbijêre nirxên ji sergoyê, bikaranîna * û di cihê ku di encama li sergoyê.
  • S = (5, 6 * 7) = (5, 42) + 2 nirxên hilbijartî ji sergoyê, serî li + û di encamê de li sergoyê.
  • S = (5 + 42) = (47) calculation bi dawî tê, di encama li jor li ser stack bi profîlek be.

Ev rêbazeke bê kontrol RPN caran, lê her carê ev kar wê, çawa aloz îfadeya çêdibe.

OPN û qat bi hev ve girêdayî ne. Ev mînak nîşan dide ka bi kar bîne bîra bo hesabê nirxê li ser jimara berevajî Polish. Less eşkere ye ku tu stack bi kar tînin, kolîlka îfade infix standard li têkçûna akût renal.

Wergerandî yên zimanan bernameyên

Pascal RPN fêm like this (nîşan dide ku beşeke ji programa).

Ji bo xwendina hejmarên û operatorên di dewra navê prosedûrê de, ku gelo hejmara an nîşana operasyona token grîng. Di bûyera pêşîn de, nirxa profîlek di sergoyê, û ya duyem jî, ku her du hejmarên sergoyê jorîn action beramberî dikê û bi encama tomarbûye.

toktype: = num;

xwendin (s);

eger c di [ '+', '-', '*', '/'] bi dest

eger wê eoln cn: = '' din xwendin: (cn);

eger cn = '' hingê

doza ji

'+': Toktype: = lê zêde bike; '-': toktype: = sub;

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

dawî

din dest pê

eger = '-' paşê Saigon: = -1 error din: = c <> '+';

bi: = cn

dawî

dawî;

Eger (error ne) û (toktype = num) paşê getnumber;

eger toktype <> num dest

y = pop; x: = pop;

eger ne xeletîya paşê

Doza toktype ji

lê zêde bike: z: = x + y; sub: z: = x-y; mul: z: = x * y; div: z: = x / y

dawî

push (z);

RPN C-tetbîqkirinê re (part banî yên programa):

ji bo (s = strtok (s, w);) s = strtok (0, w; s) {

a = strtod (s, & e);

eger (e> s) push (a);

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

din, eger (* s == '+') rpnop (a + b);

din, eger (* s == '-') rpnop (a - b);

din, eger (* s == '*') rpnop (a * b);

din, eger (* s == '/') rpnop (a / b);

rpnop #undef

}

pêkanînên hardware

Di wan rojan de, gava ku teknolojiya kompîturê, gelekî biha bû, fikreke baş e, bawer dikir ku bi zorê xelkê bi kar arresters bi seferberîyeke. Di sala 1960-î., Ji ber ku niha, gengaz e ku mirov bikire calculators, ku li Teşeya berevajî Polish kar bû. To lê zêde bike 2 û 3 ji wan jî divê 2, hingê 3 bikevinê, û li ser "plus" button. Di nihêrîna pêşîn de, li operands input ji operator tevlihev û dijwar bi bîr xuya bû, lê piştî demekê hin kê§ bi vî awayî ji aqil in û wê fam nekir ku çima din li ser infix ehmaq, e ku ewqasî tevlîhev û ewqas kêm e de israr dikin.

şîrketa Eugène heta warî de, ku ew êdî bîra din, ji bilî sergoyê avakirin. Tekane tiştekî ku jî makîneyeke - algorîtmayan û rêbazên RPN ji sergoyê navendî ya Bûrsayê dan. Hemû ji operasyonên xwe wek arresters operatorên, ku ji bo nirxên n jorîn didîtin, bûn. Ji bo nimûne, ji tîma Address Vegerîna ji jor li ser sergoyê girt, û hwd. D. The mîmarî yên weha re makîneyeke hêsan bû, lê bi lez bes ne ji bo pêşbirkê de bi mîmarî û zêdetir. Gelek, lê belê, dîsa jî ji ber ku van pêkanînên basît û kubarName bo computing ku her bernameya têgehek e ji bo OPN bû, dît ku berdewamiya xwe poşman.

Yek calculators dem bi RPN populer bûn, û hinek kesan hê jî wan bi tercîh bide. Li gel vê, ew a languages-sergoyê nêrîn, wek Forth pêşxistin. Îro ew bi kar anîn, lê belê hê jî ji bikarhênerên berê xwe nostaljîk e.

Îcar çi ji jokes wateya li ser Reverse Polish sosîsên e?

Heke em bawer dikin ku operator ya sosîsên, Teşeya infix de, divê ev yek di nava lîsteya ku li hot dog adetî be. The RPN is located rastê di du gwîzên dest therebetween amade piştî bihejmêrî. Niha tê beşa zehmet - xerdelê. Wê ji niha ve li ser sosîsên, t. E. Jixwe wek operator unary hejmartin. Tê bawerkirin ku ku xerdelê jî divê wek uncalculated bê nîşandan û ji ber vê yekê, divê ji bo mafê sosîsên meşî ... Lê ev mumkin e, ev nayê wê manê sergoyê pir mezin ji ...

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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