OrdenagailuakSoftware

RPN: bildu, metodoak eta adibideak

RPN behin ordenagailua munduko programatzaile baten oinarria osatzen dute. Gaur ez da hain ezaguna. Beraz, komiki ilustrazio bat "reverse" Poloniako txistorra erroiluak kanpo irudikatzeko, oraindik ere ezagutzaile programatzaile batzuek gaizki ulertu. Ez oso ondo azaldu txantxa, baina kasu honetan guztiz justifikatuta egon beharko da.

infix

programatzaileek guztiak, eta gehien ikasle operadore erabilera ezagutzen. Adibidez, adierazpen x + summation aldagaiak x eta y erabilitako plus zeinu balioak. Gutxiago ezaguna Izan ere, hau da, matematika idazkera, artizki notazioa izeneko maileguan, izan ere, makinak arazo handi bat da. operadore honek sarrerako bi balio daude ezkerreko eta eskuineko grabatu gisa jasotzen. programazioan aukeran erabilitako idazkera seinaleak eragiketak. Adibidez, x + y egon bider (x, y) funtzio bat, eta bertan konpilatzailea eta azkenean infix idazkera bihurtzen idatzi daiteke. Hala ere, denek daki matematika onegiak ez aritmetika esamoldeak, barne mini-hizkuntza mota bat osatzen duten ia programazio hizkuntza guztietan erabiltzeko.

formula itzultzailea

Lehenengo benetan arrakastatsua Fortran programazio hizkuntza bihurtu da, beraz, neurri handi batean, aritmetika adierazpen (hau formula ..) bihurtu zen (broadcast) kodea ere, hortik datorkio bere izena delako - Formula itzulpena. Aurretik, idazteko, adibidez, funtzio formularioa tolestuta izan zuten (eta biderkatu (b, c)). COBOL bihurtze automatikoak formula ezartzeko arazo oso zaila jotzen zen programatzaileek Gehitu A B Mutliply To C. By bezalako gauza idatzi behar izan ez delako

Zer da infix gaizki?

Arazoa da, operadore dela propietate esaterako, lehenak eta elkarkortasuna gisa. Horregatik, infix funtzioaren definizioa ez hutsala zeregin bihurtzen da. Adibidez, biderketa gain edo kenketa baino lehentasun handiagoa da, eta horrek esan nahi du adierazpen 2 + 3 * 4 ez da 2 eta 3 batura, biderkatu 4 berdina, operadore errendimendua litzateke ezkerretik eskuinera izan ditu. Izan ere, biderkatu 3 4 eta gehitu 2. Adibide honek erakusten infix adierazpena kalkulatzeko, maiz operadore eta eragigaiak ordena aldaketa bat eskatzen du. Horrez gain, beharrezkoa da giltza erabili argiagoa idazkera bilatzeko. Adibidez, (2 + 3) * (4 + 5) ezin dira parentesi gabe idatzita, 2 + 3 * 4 + 5 esan nahi duelako 3 biderkatu 4 eta gehitu 2 eta 5 behar duzula.

ordena horretan, operadore kalkulatu nahi duzula eskatzen luze gogoratzen. Horregatik, ikasle aritmetika ikasteko, askotan hasten duten okerreko emaitzak lortzeko, benetako eragiketak behar bezala egiten dira, nahiz eta. Beharrezkoa da, ekintza adierazpenak ordena irakasteko bihotza. Lehenik, ekintza burutu behar parentesi, gero biderketa eta zatiketa, eta, azkenik, batuketak eta kenketak ere. Baina bada espresio matematiko idaztea infix idazkera soilik ahalik eta "hizkuntzen txikia" dela gehiago gehitu dezakezu bat beste modu bat da.

Aurrizki eta atzizki notazioa

the ezagunena alternatiben Bi da operadorea grabatzeko aurretik edo bere eragigaiak ondoren. Dute aurrizki eta atzizki notazioa bezala ezagutzen dira. Logikaria Yan Lukasevich 1920an lehenengoa asmatu. bizi izan zen Polonian, beraz errekorra deritzo Poloniako. Postfix bertsioa, hurrenez hurren, deitu poloniar notazioa (ARF). bi metodo hauen arteko desberdintasun bakarra bertan erregistroa irakurtzeko (ezkerretik eskuinera edo eskuinetik ezkerrera) norabidea da, nahikoa da zehatz-mehatz kontuan hartu horietako bat bakarrik, beraz. OPN operadorea bere eragigaiak ondoren idatzita. Horrela, adierazpena AB + adibidea A + B for RPN adierazten

eragigai kopurua mugagabea

idazkera abantaila berehalako da n-adic operadorea laburbiltzen dela eta infix idazkera benetan bakarrik bi eragigaiak egiten du lan, t. E. berez egokia eragiketak binary bakarra da. Adibidez, ABC @ alderantzizko poloniar adierazpen triadikoekin marka horrek gehienez A, B eta C balioa Kasu honetan operadoreak hiru eragigai berez ezkerrean jarduten den eta dagokion funtzio deia @ bat erabiliz (A, B, C). @ Ikurra infix, eta idazteko esaterako @ K. A edo horrelako zerbait bezala saiatzen bazara, argi dago, besterik gabe, ez du funtzionatzen.

Ordena emandako lehentasuna

RPN beste abantaila bat dauka operadore lehentasuna dela bere itxura ordena daiteke irudikatzen. Aldi berean sekula giltza bat behar, nahiz eta sartu ahal izango dira pertsonaiak eragiketak infix idazkera bihurtzea errazteko. Adibidez, AB + C * - zalantzarik gabe baliokidea (A + B) * C, biderketak ezin da gauzatu gain, bertan ugaltzea bigarren eragigai bat ematen den arte kalkulatzen beraz. Hau da, kalkulatutako AB + C * aldi berean operadorea banan, lortuko dugu AB + C * bada -> (AB +) * C -> (A + B) * C.

Kalkulu algoritmoa

OPN eragileak argumentuak bi balio du bere ezker idatzita bezala eramango funtzio gisa itxura bera. Horrez gain, programazio hizkuntzak erabiltzeko idazkera naturala da, bere kalkuluaren eran pila eragiketak dagokio, eta analisia egin beharra kendu. Adibidez, adierazpena 5 + 6 * 7 Arrester izango a 5, 6, 7 *, + gisa agertzen da, eta besterik gabe, kalkulatu daiteke eskaneatze arabera ezkerretik eskuinera eta balioak idatzi pila bat. Bakoitzean eragiketa seinale komun bat, hautatutako goiko elementu 2 ordenagailu memoriaren arabera, operadoreak erabiltzen da eta emaitza memorian itzuli. Noiz azken emaitza kalkulua adierazpenaren egingo pila goian egon.

Adibidez:

  • S = () 5, 6, 7, *, + 5 pila gainean jarri.
  • S = (5) 6., 7., *, + 6 pila gainean jarri.
  • S = (5, 6), 7 *, 7 + jar pila.
  • S = (5, 6, 7), * 2 + aukeratu pila, erabili * balioak eta emaitza jar pila.
  • S = (5, 6 * 7) = (5, 42) + 2 balioak pila hautatu, + aplikatzeko eta emaitza jarri pila.
  • S = (5 + 42) = (47) kalkulua osatzen da, emaitza pila goialdean gordetzen dira.

Algoritmo hau hautatuta daiteke RPN behin eta berriz, baina aldi bakoitzean lan egingo du, ez du axola nola konplexua adierazpen aritmetika.

OPN eta pilak estuki lotuta daude. Adibide honek oroimena nola erabili alderantzizko poloniar notazioa balioa kalkulatzeko erakusten. bistako gutxiago da hori pila erabili ahal izango dituzu, standard infix espresio bihurtzeko giltzurrun hutsegite akutua ere.

programazio hizkuntza Adibideak

Pascal RPN konturatu hau bezalako (programaren barruan erakusten).

zenbakien eta eragile irakurtzeko prozedura izeneko zikloa, eta horrek era zenbaki edo zeinu-eragiketa ala ez zehazten du. Lehen kasuan, pila gordetako balioa, eta goiko bi pila zenbakiak dagokion ekintzaren bigarrena egin da eta emaitza gordetzen da.

toktype: = num;

irakurri (k);

bada ere c [ '+', '-', '*' '/'] ondoren hasiko

eoln gero cn: = '' beste irakurri (cn);

bada cn = '' ondoren

baten kasuan

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

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

end

bestela hasiko

a = bada '-' eta gero sgn: = -1 beste error: = c <> '+';

rekin: = cn

end

bukatzen;

bada (ez error) eta (toktype = num), ondoren getnumber;

toktype <> num bada orduan hasiko

y = pop; x: = pop;

hala ez bada akats gero

Kasu of toktype

gehitu: z: = x + y; sub: z: = x-y; mul: z: = x * y; div: z: = x / y

end

bultzada (z);

C-inplementazioa RPN (programaren barruan erakusten):

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

a = strtod (s, & e);

badu (e> s) bultzada (a);

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

Bestela bada (* s == '+') rpnop (a + b);

Bestela bada (* s == '-') rpnop (a - b);

Bestela bada (* s == '*') rpnop (* b a);

Bestela bada (* s == '/') rpnop (a / b);

#undef rpnop

}

hardware inplementazio

Egun horietan, ordenagailua teknologia oso garestia zen, pentsatu zen, ideia ona da jendea behartzeko areagotu arresters erabiltzeko. 1960-este., Orain bezala, posible izan da kalkulagailu du, alderantzizko poloniar notazioa ere lan bertan erosteko. 2 gehitzeko eta horietako 3 2, orduan 3 sartu behar, eta sakatu "plus" botoia. Lehen begiratuan, sarrerako operadorea eragigaien zirudien zaila eta korapilatsua gogoratzen, baina pixka bat egin ondoren, zenbait pentsaera honen adikzioa dira eta ezin izan du ulertzen zergatik besteek infix ergelak, eta hori da hain zaila eta hain mugatua da azpimarratzen.

Burroughs konpainia are mainframe, eta horrek ez du beste memoria izan, pila ezik eraiki. makina egiten duen gauza bakarra - aplikatu algoritmoak eta metodo RPN du erdiko pila bat. Bere eragiketak guztiak arresters operadoreak, zeinak n goiko balioen aplikatzen jotzen ziren. Adibidez, taldeak hartu Return Helbidea pila goitik, eta abar. D. hala nola makina bat arkitektura zen erraza, baina ez da azkar nahikoa arkitektura ohikoagoa lehian. Askok, ordea, oraindik damutuko Izan ere, informatika hurbilketa sinple eta dotorea, esaterako, non programa guztietan OPN adierazpen bat zela, bere jarraipena aurkitu.

One denbora RPN batera kalkulagailu popular ziren, eta pertsona batzuk oraindik emateko lehentasuna. Gainera, pila bideratutako a hizkuntzak, besteak beste, Forth gisa garatu dute. Gaur erabilitako gutxi, baina oraindik bere erabiltzaile ohia nostalgikoa da.

Beraz, zer da buruz baliogabetzea Poloniako txistorra esanahi txantxak?

Hori txistorra operadorea, infix idazkera, roll barruan egon beharko luke konbentzionalak beroa txakur gisa bere gain badugu. RPN dago egokian bi erdi lortzeko kalkulua ondoren prest therebetween. Orain zaila parte dator - ziapea. She dagoeneko txistorra oinarrituta, t. E. Dagoeneko eragile unario gisa kalkulatzen da. Uste da mostaza hori ere egin daiteke uncalculated gisa erakutsiko luke eta, beraz, txistorra eskuinean mugitu behar da ... Baina posible da, hau pila handiegia beharko luke ...

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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