Kwamfutocin, Software
RPN: algorithm, hanyoyin da misalai
RPN da zarar kafa tushen mai shirye-shiryen kwamfuta a duniya. Yau da shi ba don haka ne sanannu. Saboda haka, comic hoto, da suke nuna wani "baya" Polish tsiran Rolls waje, zai iya har yanzu a fahimci da wasu ilmi shirye-shirye. Ba sosai bayyana da wargi, amma a cikin wannan hali, zai kasance da cikakken wajaba a kansa.
infix
All shirye-shirye, da kuma mafi dalibai ne saba da yin amfani da aiki. Alal misali, magana x + summation dabi'u ga canji x da kuma y used da alama. Kadan da aka sani shi ne gaskiya cewa wannan an aro daga lissafi tsarin rubutu, da ake kira infix tsarin rubutu, a gaskiya, shi ne babban matsalar da inji. Wannan sadarwarka na'am da matsayin da shigar da biyu dabi'u, an rubuta su a kan hagu da kuma dama. A shirye-shirye tsarin rubutu amfani optionally da ãyõyi ayyukan. Alal misali, x + y za a iya rubuta a matsayin aiki na Musulunci (x, y), a cikin abin da tarawa da kuma ƙarshe sabobin tuba infix tsarin rubutu. Duk da haka, kowa ya san ilimin lissafi ne ma mai kyau ba don amfani da ilmin lissafi maganganu, wanda ya samar da wani irin ciki mini-harshe a kusan kowane shirye-shirye da harshen.
dabara fassara
A farko da gaske nasara Fortran shirye-shirye da harshen da ya zama haka sun fi mayar saboda ilmin lissafi magana (watau dabara ..) Yana tuba (watsa shirye-shirye) a cikin code, Saboda haka sunan shi - Formula fassara. Kafin cewa, suna da rubuta, misali, folded a cikin nau'i na ayyuka (kuma riɓaɓɓanya (b, c)). A COBOL matsalar da za'a aiwatar atomatik hira dabara aka dauke da wuya sosai, saboda da shirye-shirye da rubuta abubuwa kamar Add A Don B Mutliply By C.
Mene ne ba daidai ba tare da infix?
Matsalar shi ne, cewa aiki da irin wannan Properties kamar yadda precedence da associativity. Saboda wannan, da definition infix aiki zama ba maras muhimmanci aiki. Alal misali, multiplication yana da mafi girma precedence fiye da Bugu da kari ko subtraction, wanda ke nufin cewa magana 2 + 3 * 4 ba daidai yake da Naira Miliyan Xari da 2 da 3, ta tara da 4, kamar yadda zai zama a cikin wasan kwaikwayon na aiki daga hagu zuwa dama. A gaskiya, ninka 3 da 4 da kuma ƙara 2. Wannan misali misalta da cewa lissafin da infix magana sau da yawa na bukatar wani canji a cikin tsari na aiki da kuma operands. Bugu da kari, wajibi ne a yi amfani da Katakon to duba mafi bayyana tsarin rubutu. Alal misali, (2 + 3) * (4 + 5) ba za a iya rubuta ba tare da parentheses, saboda 2 + 3 * 4 + 5 nufin cewa kana bukatar ninka 3 da 4 da kuma ƙara 2 da 5.
The domin a cikin abin da za ka so ka yi lissafi da aiki na bukatar wani dogon tuna. Saboda wannan, daliban da suka fara zuwa koyi ilmin lissafi, sau da yawa samu ba daidai ba sakamakon, ko idan da ainihin ayyukan ake yi daidai. Wajibi ne a koyar da oda na mataki kalamai da zuciya. Na farko, da mataki dole ne a da za'ayi a cikin baka biyu, sa'an nan multiplication da division, kuma a karshe Bugu da kari kuma subtraction. Amma akwai wani hanya na rubutu ilmin lissafi maganganu kamar yadda infix tsarin rubutu ne kawai daya daga cikin yiwu "kananan harsuna" cewa za a iya kara zuwa more.
Prefix da postfix tsarin rubutu
Biyu daga cikin mafi yawan sanannun zabi ne don yin rikodin sadarwarka kafin ko bayan ta operands. Suna da aka sani da prefix da postfix tsarin rubutu. Logician Yan Lukasevich ƙirƙira na farko daya a 1920. Ya rayu a Poland, don haka da rikodin an kira Yaren mutanen Poland. Postfix version, bi da bi, ya kira Baya Polish tsarin rubutu (ARF). The kawai bambanci tsakanin wadannan hanyoyi guda biyu ne da shugabanci a cikinsa to karanta rikodin (daga hagu zuwa dama ko dama don hagu), don haka shi isa ga la'akari daki-daki daya kawai daga cikinsu. A OPN sadarwarka aka rubuta a bãyan operands. Saboda haka, magana AB + wakiltar wani misali RPN for A + B.
Unlimited yawan operands
Da nan da nan amfani da tsarin rubutu shi ne cewa shi ya takaita n-adic sadarwarka kuma infix tsarin rubutu ne da gaske na aiki ne kawai tare da biyu operands, t. E. Shin inherently dace kawai binary ayyukan. Alal misali, ABC @ ne kuma baya da Polish magana ta amfani da triadic lamba wadda ke da matsakaicin darajar A, B da kuma C. A wannan yanayin da sadarwarka abubuwa a kan hagu na uku operand kanta kuma yayi dace da wani aiki da kira @ (A, B, C). Idan ka yi kokarin rubuta @ alama ce kamar yadda infix, kamar A @ BC ko wani abu kamar cewa, ya bayyana cewa shi kawai ba ya aiki.
A fifiko da aka ba da oda
RPN yana da wani amfani a cewa fifiko da aiki za a iya wakilta umurnin bayyanar. A daidai wannan lokaci ba bukatar Katakon, ko da yake sun iya hada a matsayin haruffa ayyukan don tallafa a hira daga infix tsarin rubutu. Alal misali, AB + C * - unambiguous m (A + B) * C, don haka da multiplication ba za a iya lasafta har Bugu da kari yi, wanda ya ba da wani biyu operand for multiplication. Wannan shi ne, idan dabara AB + C * ta daya sadarwarka a lokaci, mun samu AB + C * -> (AB +) * C -> (A + B) * C.
lissafi algorithm
A OPN sadarwarka ya dubi guda a matsayin wani aiki da daukan kamar yadda muhawara biyu dabi'u rubuta a kan ta hagu. Bugu da kari, shi ne halitta tsarin rubutu don amfani a shirye-shirye da harsuna, kamar yadda al'adar ta lissafi yayi dace da tari ayyukan da kuma bukatar parsing aka shafe ta. Alal misali, arrester a cikin magana 5 + 6 * 7 za su bayyana a matsayin 5, 6, 7 *, +, da kuma shi za a iya lasafta kawai ta scanning daga hagu zuwa dama, kuma rubuta da dabi'u a cikin wani tari. A duk lokacin da na kowa alama na aiki, zaba ta hanyar da babba kashi 2 daga cikin kwamfuta ƙwaƙwalwar, cikin sadarwarka da ake amfani da sakamakon koma zuwa žwažwalwar ajiya. Lokacin da karshen sakamakon da lissafi magana zai kasance a saman tari.
Ga misali:
- S = () 5, 6, 7, *, + 5 sanya, a tari.
- S = (5) 6, 7, *, + 6 sanya, a tari.
- S = (5, 6), 7 *, 7 + sanya tari.
- S = (5, 6, 7), * 2 + zabi dabi'u daga tari, amfani * da kuma sanya sakamakon a cikin tari.
- S = (5, 6 * 7) = (5, 42) + 2 dabi'u zaba daga cikin tari, su yi amfani da + da kuma sa sakamakon a cikin tari.
- S = (5 + 42) = (47) lissafi ne kammala, sakamakon da aka adana a saman tari.
Wannan algorithm za a iya bari RPN akai-akai, amma a duk lokacin da za aiki, ko ta yaya hadaddun da ilmin lissafi magana.
OPN da stacks suna a hankali nasaba. Wannan misali nuna yadda za a amfani da memory yin lissafi da darajar da baya Polish tsarin rubutu. Kadan bayyananne ne cewa ba za ka iya amfani da tari, tana mayar da misali infix magana a cikin m na koda gazawar.
Misalai na shirye-shirye da harsuna
Pascal RPN gane kamar wannan (ya nuna wani ɓangare na shirin).
Don karanta lambobi da kuma aiki a sake zagayowar kira hanya, wanda kayyade ko da alama lambar ko alamar aiki. A farkon yanayin, da darajar adana a cikin tari, da kuma na biyu da biyu babba tari lambobin m mataki aka yi da kuma sakamakon da aka adana.
toktype: = NUM.
karanta (s).
idan c in [ '+', '-', '*', '/'] sa'an nan za a fara
idan eoln sa'an nan cn: = '' kuma karanta (cn).
idan cn = '' nan
idan akwai wani mai
'+': Toktype: = ƙara. '-': toktype: = sub.
'*': Toktype: = Mul. '/': Toktype: = rara
karshen
kuma za a fara
idan wani = '-' sa'an nan sgn: = -1 kuma kuskure: = c <> '+'.
tare da: = cn
karshen
ƙare.
idan (ba kuskure) da kuma (toktype = NUM) sa'an nan getnumber.
idan toktype <> NUM sa'an nan za a fara
y = pop. x: = pop.
idan ba cikin kuskure, sa'an nan
harka toktype na
ƙara: z: = x + y; sub: z: = x-y; Mul: z: = x * y; rara: z: = x / y
karshen
da tura (z).
C-aiwatar RPN (nuna wani ɓangare na shirin):
domin (s = strtok (s, w). s; s = strtok (0, w)) {
mai = strtod (s, & e).
idan (e> s) da tura (a).
#define rpnop (x) printf ( "% c:", * s), b = pop (), mai = pop (), da tura (x)
kuma idan (* s == '+') rpnop (a + b);
kuma idan (* s == '-') rpnop (a - b);
kuma idan (* s == '*') rpnop (a * b);
kuma idan (* s == '/') rpnop (a / b);
#undef rpnop
}
hardware implementations
A waɗannan kwanaki, idan fasahar kwamfuta da aka tsada sosai, an yi tunanin mai kyau ra'ayin domin tilasta mutane su yi amfani da karuwa arresters. A shekarar 1960-ies., As yanzu, shi yiwuwa a saya da calculators, wanda aiki a baya Polish tsarin rubutu. Don ƙara 2 da kuma 3 daga cikinsu dole ne shigar 2, sa'an nan 3, kuma latsa "da" button. A duban farko, da shigar da operands ga sadarwarka da jũna rikitarwa, kuma da wuya ya tuna, amma bayan wani lokaci da wasu masu kamu da wannan hanyar tunani da kuma ba zai iya fahimtar dalilin da ya sa wasu nace a kan wawa infix, wanda shi ne don haka rikitarwa, kuma haka yana da iyaka.
Burroughs kamfanin ko da gina wani mainframe, wanda ba shi da waɗansu memory, fãce tari. Abinda ya sa cikin na'ura - amfani da lissafi mai tsauri da kuma hanyoyin RPN zuwa tsakiyar tari. All na gudanar da ayyukanta da aka daukarsa arresters aiki, wanda ya shafi babba n dabi'u. Alal misali, cikin tawagar ya ɗauki koma Address daga saman tari, da sauransu. D. The gine na da irin wannan na'ura da aka sauki, amma ba azumi isa ya gasa tare da more kowa fannonin tsarin gine-gine. Mutane da yawa, duk da haka, har yanzu nadama da cewa irin wannan mai sauki da kuma m tsarin kula da sarrafa kwamfuta inda kowane shirin ya nuna OPN, same ta ci gaba.
Daya lokaci calculators da RPN sun m, da kuma wasu mutane har yanzu ba su son. Bugu da kari, sun ɓullo da wani tari-daidaitacce harsuna, kamar Forth. A yau shi ne kadan used, amma har yanzu nostalgic daga tsohon masu amfani.
To, abin da yake da ma'anar barkwanci game Baya Polish tsiran?
Idan muka ɗauka cewa sadarwarka na tsiran alade, da infix tsarin rubutu, shi ya kamata a cikin yi kamar yadda a al'ada zafi kare. A RPN aka located dama a biyu halves samun shirye therebetween bayan lissãfi. Yanzu ya zo da wuya part - mustard. Ta riga a kan tsiran, t. E. Tuni lasafta a matsayin unary sadarwarka. An yi imani da cewa mustard kamata kuma a nuna a matsayin uncalculated saboda haka ya kamata a mayar da su a dama da tsiran alade ... Amma yana yiwuwa, wannan zai bukaci ma manyan tari na ...
Similar articles
Trending Now