ComputerSoftware

RPN: algorithm, iindlela kunye nemizekelo

RPN kanye yenza isiseko wenkqubo computer ehlabathini. Namhlanje, akwaziwa kakuhle. Ngoko ke, umfanekiso ohlekisayo, obonisa "reverse" imiqulu sausage Polish ngaphandle, kusengenziwa abaqondi ezithile badwelisi benkqubo abanolwazi. ukuchaza Not kakuhle kakhulu le joke, kodwa kulo mzekelo iya kuba ngokupheleleyo zizizathu.

infix

Zonke program, kwaye uninzi abafundi uyalazi usebenziso lwabasebenzisi. Umzekelo, iinqobo ibinzana x + summation kuba yezahlukileyo ux no y uphawu plus ezisetyenziswayo. yaziwa kangako kukuba oku abolekwe ngokwe kwimathematika, ekuthiwa infix notation, enyanisweni, i ingxaki enkulu ukuba koomatshini. Le umqhubi amamkela igalelo amaxabiso amabini ibhalwe ekhohlo nasekunene. Xa senkqubo notation esetyenziswa optionally ngemiqondiso imisebenzi. Umzekelo, x + y angabhalwa njengomsebenzi kwedlelo (x, y), apho compiler yaye ekugqibeleni iguqula infix notation. Noko ke, wonke umntu uyayazi ukuba izibalo kuhle kakhulu ukuba ukusebenzisa amabinzana arithmetic, nto leyo ibe uhlobo lwangaphakathi mini-ngolwimi phantse yonke ulwimi lokuprograma.

umguquleli ifomula

Ulwimi lokuqala oluphemeleleyo ngokwenene iinkqubo Fortran iye kangaka ubukhulu becala ngenxa yokuba ibinzana yokalo emileyo (okt ifomula ..) Oko aguqulwa (broadcast) kwi khowudi, ke igama layo - Formula Translation. Ngaphambi koko, kwafuneka ukuba ndinibhalele, umzekelo, agobe ngohlobo imisebenzi (nande (b, c)). Xa ingxaki COBOL ukuliphumeza formula ukuguqulwa oluzenzekelayo yayigqalwa kunzima kakhulu kuba badwelisi benkqubo kwafuneka ukuba babhale izinto ezifana Yongeza A To B Mutliply By C.

Yintoni ephosakeleyo infix?

Ingxaki kukuba, ukuba abanini babe iipropati ezifana okuphambili kunye associativity. Ngenxa yoko, inkcazelo umsebenzi infix uba umsebenzi non-ezingenamsebenzi. Umzekelo, ukuphinda-phinda uye kuqala ngaphezu ukudibanisa okanye ukuthabatha, nto leyo ethetha ukuba ibinzana 2 + 3 * 4 akalingani isixa-2 no-3, xa iphinda phindiweyo ngo-4, njengoko kuya kuba nokwenziwa yabaqhubi ukusuka ekhohlo ukuya ekunene. Enyanisweni, phinda-3 ngo-4 kwaye dibanisa 2. Lo mzekelo ubonisa ukuba ekubaleni ibinzana infix rhoqo kufuna utshintsho umyalelo kwabasebenzisi operands. Ukongeza, ukuba kuyimfuneko ukusebenzisa braces ukukhangela ngobhalo kucace gca. Umzekelo, (2 + 3) * (4 + 5) ayikwazi kubhalwa ngaphandle parentheses, ngenxa yokuba 2 + 3 + 4 + 5 kuthetha ukuba kufuneka phinda 3 4 dibanisa 2 no-5.

Umyalelo ofuna ukuba abale abasebenzi lufuna ubude yikhumbule. Ngenxa yoko, abafundi baqala ukufunda izibalo, badla ukufumana iziphumo ephosakeleyo, enoba loo msebenzi yenziwa ngokuchanekileyo. Kuyimfuneko ukuba ukufundisa indlela iingxelo amanyathelo ngentloko. Okokuqala, lo intshukumo kufuneka lwenziwe kwindawo yegama, ngoko phinda nokwahlula-hlula, yaye ekugqibeleni ukudibanisa nokuthabatha. Kodwa ke kukho enye indlela yokubhala amagama zezibalo njengoko infix notation yenye "iilwimi ezincinane" kunokwenzeka ezinokuthi zifakwe ngaphezulu kuphela.

Isimaphambili postfix notation

Ababini ezizezinye ezininzi ezaziwayo-kakuhle ukuba kurekhodwe nomsebenzisi ngaphambili okanye emva operands zayo. Aziwa njengoku isimaphambili postfix notation. Logician Yan Lukasevich wasungula lowo yokuqala ngo-1920. Wayehlala ePoland, ngoko ingxelo kuthiwa Polish. Postfix version, ngokulandelelana, ebizwa Ebuyiselwayo Polish Ubhalo (ARF). Umahluko kuphela phakathi kwezi ndlela zimbini indlela apho ukufunda irekhodi (ukusuka ekhohlo ukuya ekunene okanye ekunene ukuya ekhohlo), ngoko lwanele siqwalasele ngokweenkcukacha mnye kuphela kubo. Umsebenzisi OPN ibhalwe emva operands yayo. Ngenxa yoko, ibinzana elithi AB + umele umzekelo RPN for A + B

inani Unlimited of operands

Le uncedo olukhawulezileyo ngokwe kukuba ishwankathela umsebenzisi n-adic kunye infix notation ngenene kuphela isebenza kunye operands ezimbini, t. E. Ingaba akuboni efanelekileyo kuphela imisebenzi yokubini. Umzekelo, ABC @ nguye ibinzana umva Polish usebenzisa uphawu triadic leyo xabiso liphezulu A, B no-C Kulo mzekelo umqhubi enza izinto ekhohlo we- ezintathu ngokwayo, ekwafanekisa umsebenzi umnxeba @ (A, B, C). Ukuba uzama ukubhala isimboli @ njengoko infix, ezifana A @ BC okanye into elolo hlobo, kuye kucace ukuba nje oko ayisebenzi.

Le kuqala yi ngokomyalelo

RPN inomnye iadvanteji ukuba ephambili yabaqhubi angamelwa ngokomyalelo inkangeleko yazo. Ngelo xesha akazange kufuneka braces, nangona ukuze kufakwa amagama imisebenzi ukuze kube lula ukuguqula ukusuka infix notation. Umzekelo, AB + C * - alingana ocacile (A + B) * C, ngoko ke uphinda-phindo ayibaleki de Ukongeza lwenziwa, enika we- yesibini ukuphinda-phinda. Oko kukuthi, ukuba abaliweyo AB + C * ngu umqhubi omnye ngexesha, sifumana AB + C * -> (AB +) * C -> (A + B) * C.

yokubala algorithm

Umsebenzisi OPN ukhangela enye umsebenzi elithatha njengoko iimpikiswano amaxabiso amabini ebhalwe ngasekhohlo kwakhe. Ukongeza, kuba ubhalo wemvelo ukuze ukusetyenziswa kweelwimi udweliso, njengoko kulisiko izibalo zalo ekwafanekisa imisebenzi mfumba kunye nemfuneko lokuguqula iyapheliswa. Umzekelo, kuya kuvela arrester yebinzana 5 + 6 * 7 ibe 5, 6, 7, +, kwaye ibalwe nje ukufunda ngokukhawuleza ukusuka ekhohlo ukuya ekunene kwaye ubhale namanani a ntshunxekile. Nanini uphawu eqhelekileyo yokusebenza, ezikhethiweyo isiqalelo eliphezulu 2 kwinkumbulo yekhomputha, umqhubi isetyenziswa kwaye isiphumo wabuyela kwinkumbulo. Xa isiphelo ngenxa ibinzana yokubala iza kuba Emphezulwini mfumba.

Umzekelo:

  • S = () 5, 6, 7, *, + 5 kubekwa phezu kwawo.
  • S = (5) 6, 7, *, + 6 kubekwa phezu kwawo.
  • S = (5, 6), 7 *, 7 + ukubeka mfumba.
  • S = (5, 6, 7), + 2 + khetha amanani asuka mfumba, ukusetyenziswa yaye ubeke isiphumo kule mfumba.
  • S = (5, 6 * 7) = (5, 42) + 2 amaxabiso ezikhethwe mfumba, ukuba ukusebenzisa + waza wabeka isiphumo kule mfumba.
  • S = (5 + 42) = (47) ukubala lugqityiwe, isiphumo igcinwa kwi phezulu mfumba.

Le algorithm kungaba ihlolwe RPN ngokuphindaphindiweyo, kodwa sihlandlo ngasinye liya kusebenza, kungakhathaliseki ukuba esimbaxa ethi arithmetic.

OPN iimfumba zihlobene. Lo mzekelo ubonisa indlela yokusebenzisa imemori ukubala ixabiso le notation reverse Polish. Kucacile Ngaphantsi kukuba ungasebenzisa le mfumba, iguqulela ibinzana infix umgangatho ukusilela oyingozi kwezintso.

Imizekelo iilwimi iinkqubo

Pascal RPN waqonda njengalo (ibonisa inxalenye yenkqubo).

Ukuze ufunde amanani kunye nabasebenzi kumjikelo ekuthiwa nkqubo, nto leyo ebonisa ukuba inani okanye uphawu ukusebenza umqondiso. Kwimeko yokuqala, ixabiso zigcinwa mfumba, kwaye yesibini amanani amabini mfumba eliphezulu isenzo ehambelana isebenza kwaye isiphumo igcinwe.

toktype: = NUM;

funda (s);

ukuba c kwi [ '+', '-', '/' '*'] kuqale ke

ukuba eoln ngoko cn: = '' enye ukufunda (cn);

ukuba cn = '' ke

kwimeko

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

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

ekupheleni

enye baqale

ukuba = '-' ngoko sgn: = -1 Impazamo enye into: = c <> '+';

nge: = elvis

ekupheleni

iphele;

ukuba (hayi imposiso) kunye (toktype = NUM) ngoko getnumber;

ukuba ke uqale toktype <> num

y = pop; x: = pop;

ukuba akunjalo iphutha ke

kwenzeka toktype of

add: z: = x + y; sub: z: = x-y; uku: z: = x * y; div: z: = x / y

ekupheleni

yokutyhiliza (z);

C-ukuphunyezwa RPN (eboniswe yinxalenye yenkqubo):

ngokuba (s = strtok (s, w); s; s = strtok (0, w)) {

a = strtod (s, & e);

ukuba (e> s) yokutyhiliza (a);

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

enye xa (* s == '+') rpnop (a + b);

enye xa (* s == '-') rpnop (a - b);

enye xa (* s == '*') rpnop (a * b);

enye xa (* s == '/') rpnop (a / b);

rpnop #undef

}

Ukusetyenziswa hardware

Ngaloo mihla, xa ubuchwepheshe bee-computer eninzi kunene, oko kwakucingwa iyingcamango elungileyo ukunyanzela abantu ukuba basebenzise arresters kwakhula. Xa nenani-1960., Njengokuba ngoku, kwenzeka ukuthenga iikhalityhuleyitha, okuyinto basebenza ubhalo reverse Polish. Ukudibanisa-2 no-3 kuzo kufuneka angene-2, ngoko 3, kwaye ucinezele i "dibanisa" iqhosha. Xa uqala kuqala, igalelo operands yomqhubi kwakubonakala inzima kwaye kunzima ukukhumbula, kodwa emva kwexesha abanye bezinikela kule ndlela yokucinga, ababa ukuqonda isizathu sokuba abanye nimane infix osisiyatha, nto inzima kakhulu kwaye ngokunjalo anqongophele.

inkampani Burroughs wazakhela a mainframe, apho kungekho enye imemori, ngaphandle ntshunxekile. Inye kuphela eyenza lo matshini - basebenzisa ubuchule kunye neendlela RPN imfumba engundoqo. Yonke imisebenzi yayo bezithathwa ngokuba abasebenzisi arresters, nobhaliweyo amaxabiso n eliphezulu. Umzekelo, eli qela wathabatha Idilesi Return ukusuka phezulu mfumba, njalo njalo. D. sesakhiwo womatshini enjalo elula, kodwa hayi ngokukhawuleza ngokwaneleyo ukuze akhuphisane le lwazi bolwakhiwo lwempahla eqhelekileyo ngakumbi. Noko ke, sekunjalo uzisole into yokuba indlela elula yaye inomkhitha ukuba computing apho yonke inkqubo kwakubonisa OPN, wafumana phambili yayo.

ixesha elinye calculators kunye RPN baba ezithandwayo, kwaye abanye abantu ubanike kukhetha. Ukongeza, baba iilwimi neentango ebomini, ezifana Wabathuma. Namhlanje ke esetyenziswa kancinane, kodwa nostalgic evela kubasebenzisi bakhe bangaphambili.

Ngoko ke yintoni na iziqhulo intsingiselo malunga Ebuyiselwayo Polish nesoseji?

Xa sicingela ukuba nomsebenzisi sausage, le notation infix, kufuneka ibe ngaphakathi incwadi esongwayo njengoko dog eqhelekileyo ashushu. I RPN ise ilungelo iziqingatha ezibini ukufumana therebetween ulungele emva ukubala. Ngoku kuza inxalenye nzima - lwemostade. Yena sele sausage, t. E. Sele kubalwa ngumqhubi unary. Kukholelwa ukuba lwemostade kufuneka ikhonjiswe uncalculated kwaye ke ngoko kufuneka safudukela lasekunene unqiyoyo ... Kodwa kunokwenzeka, oku kuya kufuna neentango enkulu kakhulu ...

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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