Kompjuters, Softwer
RPN: algoritmu, metodi u eżempji
RPN ladarba jkun iffurmat il-bażi ta 'programmer kompjuter fid-dinja. Illum mhuwiex hekk magħrufa sew. Għalhekk, illustrazzjoni komiks, juru ta ' "reverse" rollijiet zalzett Pollakk barra, xorta tista' tkun ħażin minn xi programmaturi infurmati. Mhux tajjeb ħafna jispjega l-ċajta, iżda f'dan il-każ se tkun iġġustifikata għal kollox.
Infix
programmaturi kollha, u l-istudenti aktar huma familjari mal-użu ta 'operaturi. Per eżempju, il-valuri espressjoni x + kalkolu totali għall-x varjabbli xuy sinjal flimkien użati. inqas magħrufa hija l-fatt li dan huwa mislufa mill-matematika notazzjoni, imsejħa notazzjoni Infix, fil-fatt, hija problema kbira għall-magni. Dan l-operatur jirċievi bħala input żewġ valuri huma rreġistrati fuq ix-xellug u lemin. Fl-ipprogrammar notazzjoni użata b'mod mhux obbligatorju ma 'operazzjonijiet sinjali. Per eżempju, x + y jista 'jinkiteb bħala funzjoni ta' darba (x, y), li fiha l kumpilatur u eventwalment tikkonverti notazzjoni Infix. Madankollu, kulħadd jaf l-matematika huwa wisq tajbin biex ma jużawx espressjonijiet aritmetika, li jiffurmaw tip ta 'mini-lingwa interna fi kważi kull lingwa ta' programmar.
formula traduttur
L-ewwel lingwa ta 'programmar FORTRAN verament ta' suċċess tant sar aktar minħabba l-espressjoni aritmetika (jiġifieri formula ..) Huwa konvertit (xandira) fil-kodiċi, għalhekk l-isem ta 'dan - traduzzjoni FORMULA. Qabel dan, huma kellhom jiktbu, per eżempju, mitwija fil-forma ta 'funzjonijiet (u jimmultiplikaw (b, c)). Fil problema COBOL tal-implimentazzjoni formola ta 'konverżjoni awtomatiku ġiet ikkunsidrata diffiċli ħafna minħabba li l-programmaturi kellu jikteb affarijiet simili Add A To B Mutliply Permezz C.
Dak li hu ħażin ma 'Infix?
Il-problema hija, li l-operaturi jkollhom proprjetajiet bħal dawn bħall-preċedenza u assoċjattività. Minħabba dan, id-definizzjoni tal-funzjoni Infix issir kompitu mhux trivjali. Per eżempju, multiplikazzjoni għandha preċedenza ogħla minn żieda jew bit-tnaqqis, li jfisser li l-espressjoni 2 + 3 * 4 mhijiex ugwali għas-somma tat-2 u 3, immultiplikat bi 4, kif ikun fil-prestazzjoni tal-operaturi mix-xellug għal-lemin. Fil-fatt, immoltiplika 3 minn 4 u żid 2. Dan l-eżempju juri li l-kalkolu tal-espressjoni Infix spiss teħtieġ bidla fl-ordni ta 'operaturi u operands. Barra minn hekk, huwa meħtieġ li tuża ċineg li tħares notazzjoni aktar ċara. Per eżempju, (2 + 3) * (4 + 5) ma jista 'jinkiteb mingħajr l-parentesi, minħabba 2 + 3 * 4 + 5 ifisser li inti jeħtieġ li jimmultiplikaw 3 minn 4 u żid 2 u 5.
L-ordni li fiha inti tixtieq li jikkalkulaw l-operaturi teħtieġ twil tiftakar. Minħabba dan, l-istudenti li jibdew jitgħallmu aritmetika, spiss tikseb ir-riżultati żbaljati, anki jekk l-operazzjonijiet attwali huma mwettqa b'mod korrett. Huwa meħtieġ li jgħallmu l-ordni tad-dikjarazzjonijiet ta 'azzjoni mill-qalb. L-ewwel, l-azzjoni għandha titwettaq fil-parentesi, allura multiplikazzjoni u diviżjoni, u finalment żieda u tnaqqis. Iżda hemm mod ieħor ta 'kitba espressjonijiet matematiċi bħala notazzjoni Infix hija biss waħda mill-possibbiltà ta' "lingwi żgħar" li jistgħu jiġu miżjuda għal aktar.
Prefiss u postfix notazzjoni
Tnejn mill-alternattivi l-aktar magħrufa sew huwa li tirreġistra l-operatur qabel jew wara operands tagħha. Dawn huma magħrufa bħala l-prefiss u postfix notazzjoni. Logician Yan Lukasevich vvinta l-ewwel wieħed fl-1920. Għex fil-Polonja, u għalhekk ir-rekord huwa msejjaħ Pollakk. Verżjoni Postfix, rispettivament, imsejħa reverse Pollakk Notazzjoni (ARF). L-unika differenza bejn dawn iż-żewġ metodi hija l-direzzjoni li fiha biex taqra r-rekord (mix-xellug għal-lemin jew xellug għal-xellug), u għalhekk biżżejjed li tiġi eżaminata fid-dettall biss wieħed minnhom. L-operatur OPN huwa miktub wara operands tagħha. Għalhekk, l-espressjoni AB + sservi ta 'xempju RPN għal A + B.
numru illimitat ta 'operands
Il-vantaġġ immedjat ta 'notazzjoni huwa li tiġbor fil-qosor l-operatur n adic u notazzjoni Infix huwa verament jaħdem biss ma' żewġ operands, t. E. Huma intrinsikament adattati biss għall-operazzjonijiet binarja. Per eżempju, ABC @ hija l-espressjoni Pollakk reverse tuża marka trijadiċi li huwa l-valur massimu ta 'A, B u C. F'dan il-każ l-operatur jaġixxi fuq ix-xellug tat-tliet operand innifsu u jikkorrispondi għal sejħa funzjoni @ (A, B, Ċ). Jekk inti tipprova tikteb is-simbolu @ bħala Infix, bħal A @ BC jew xi ħaġa bħal dik, isir ċar li sempliċement ma taħdimx.
Il-prijorità mogħtija mill-ordni
RPN għandha vantaġġ ieħor li l-prijorità ta 'l-operaturi jistgħu jkunu rappreżentati mill-ordni ta' dehra tagħhom. Fl-istess ħin qatt ma jeħtieġ ċingi, għalkemm dawn jistgħu jiġu inklużi bħala operazzjonijiet karattri biex tiffaċilita l-konverżjoni mill notazzjoni Infix. Per eżempju, AB + C * - mhux ambigwu ekwivalenti (A + B) * Ċ, sabiex il-multiplikazzjoni ma jistax jiġi kkalkolat sal-żieda mwettqa, li jagħti t-tieni operand għall multiplikazzjoni. Dan huwa, jekk il ikkalkulat AB + C * minn operatur wieħed fi żmien, irridu jiksbu AB + C * -> (AB +) * C -> (A + B) * Ċ
algoritmu kalkolu
L-operatur OPN jistenna l-istess bħala funzjoni li jieħu bħala argumenti żewġ valuri miktub fuq tax-xellug tagħha. Barra minn hekk, huwa notazzjoni naturali għall-użu fil-lingwi ta 'programmar, il-mod ta' kalkolu tagħha jikkorrispondi għall-operazzjonijiet munzell u l-ħtieġa għal parsing jiġi eliminat. Per eżempju, il-arrester fl-espressjoni 5 + 6 * 7 se jidhru bħala 5, 6, 7 *, +, u jista 'jiġi kkalkolat billi sempliċiment scanning mix-xellug għal-lemin u jiktbu l-valuri fil-munzell. Kull meta, l-operatur huwa użat sinjal komuni ta 'operazzjoni, magħżula mill-element ta' fuq 2 tal-memorja tal-kompjuter u r-riżultat lura għall-memorja. Meta r-riżultat aħħari ta 'l-espressjoni kalkolu se tkun fil-quċċata tal-munzell.
Per eżempju:
- S = () 5, 6, 7, *, + 5 mqiegħda fuq il-munzell.
- S = (5) 6, 7, *, + 6 mqiegħda fuq il-munzell.
- S = (5, 6), 7 *, 7 + poġġi l-munzell.
- S = (5, 6, 7), * 2 + jagħżlu valuri mill-munzell, l-użu * u poġġi l-riżultat fil-ċmieni.
- S = (5, 6 * 7) = (5, 42) + 2 Valuri magħżula mill-munzell, li tapplika l-+ u tpoġġi l-riżultat fil-ċmieni.
- S = (5 + 42) = (47) kalkolu huwa kompletat, ir-riżultat hija maħżuna fil-quċċata tal-munzell.
Dan algoritmu jistgħu jiġu kkontrollati RPN imma kull darba se taħdem, ma jimpurtax kemm kumplessi l-espressjoni aritmetika.
OPN u stacks huma marbuta mill-qrib. Dan l-eżempju juri kif tuża l-memorja biex tikkalkula l-valur tal-notazzjoni Pollakk reverse. Anqas ovvja hija li inti tista 'tuża l-munzell, li jikkonverti espressjoni Infix standard insuffiċjenza renali akuta.
Eżempji ta 'lingwi ta' programmar
Pascal RPN realizzati bħal dan (turi l-parti tal-programm).
Biex taqra n-numri u l-operaturi fiċ-ċiklu imsejħa proċedura, li jiddetermina jekk in-numru jew sinjal operazzjoni token. Fl-ewwel każ, il-valur maħżuna fil-munzell, u t-tieni ta 'l-żewġ numri munzell ta' fuq ta 'azzjoni korrispondenti hija mwettqa u r-riżultat huwa maħżun.
toktype: = num;
aqra (i);
jekk ć fi [ "+", "-", "*", "/"] mbagħad tibda
jekk eoln allura cn: = "" inkella jaqra (cn);
jekk cn = "" imbagħad
każ ta '
"+": Toktype: = żid; "-": toktype: = sotto;
"*": Toktype: = mul; "/": Toktype: = div
aħħar
inkella tibda
jekk = "-" imbagħad SGN: = -1 żball ieħor: = c <> "+";
ma ': = cn
aħħar
aħħarin;
jekk (mhux żball) u (toktype = num) imbagħad getnumber;
jekk toktype <> num mbagħad tibda
y = pop; x: = pop;
jekk mhux żball allura
każ toktype ta
żid: z: = x + y; sotto: z: = x-y; mul: z: = x * y; div: z: = x / y
aħħar
push (z);
RPN C-implimentazzjoni (parti muri mill-programm):
għal (i = strtok (i, w); s; i = strtok (0, w)) {
a = strtod (i, & e);
jekk (e> i) push (a);
#define rpnop (x) printf ( "% ċ:", * i), b = pop (), a = pop (), imbotta (x)
inkella jekk (* i == "+") rpnop (a + b);
inkella jekk (* i == "-") rpnop (a - b);
inkella jekk rpnop (* i == "*") (a * b);
inkella jekk rpnop (* i == "/") (a / b);
rpnop #undef
}
implimentazzjonijiet hardware
F'dawk il-jiem, meta teknoloġija tal-kompjuter kienet tiswa 'ħafna, kien maħsub idea tajba li jisfurzaw lin-nies biex jużaw surge arresters. Fil 1960-jiet., Kif issa, kien possibbli li jixtru l-kalkolaturi, li jaħdmu notazzjoni Pollakk reverse. Biex iżżid 2 u 3 minnhom għandu jidħol 2, imbagħad 3, u agħfas il- "plus" buttuna. Ewwel daqqa t'għajn, il-operands input lill-operatur deher kkumplikata u diffiċli biex tiftakar, iżda wara filwaqt li xi wħud huma dipendenti fuq l dan il-mod ta 'ħsieb u ma setgħux jifhmu għaliex l-oħrajn jinsistu fuq Infix stupid, li huwa tant ikkumplikat u għalhekk hija limitata.
kumpanija Burroughs anki bnew mainframe, li ma kellha ebda memorja ieħor, ħlief munzell. L-unika ħaġa li tagħmel il-magna - applika l-algoritmi u l-metodi RPN għall-munzell ċentrali. Kollha ta 'l-operazzjonijiet tagħha kienu meqjusa operaturi arresters, applikabbli għall-valuri n ta' fuq. Per eżempju, it-tim ħa l-Indirizz Ritorn mill-quċċata tal-munzell, u l-bqija. D. L-arkitettura ta 'tali magna kienet sempliċi, iżda mhux mgħaġġel biżżejjed biex jikkompetu mal-arkitetturi aktar komuni. Ħafna, madankollu, għadu turi dispjaċir għall-fatt li tali approċċ sempliċi u eleganti li computing fejn kull programm kien espressjoni ta 'OPN, sabet kontinwazzjoni tagħha.
Wieħed kalkolaturi ħin ma RPN kienu popolari, u xi nies li għadhom jagħtuhom preferenza. Barra minn hekk, huma żviluppaw orjentati munzell lingwi, bħall-Forth. Illum huwa ftit użat, iżda xorta nostalgic minn utenti preċedenti tiegħu.
Allura x'inhi l-ċajt tifsira dwar zalzett Reverse Pollakka?
Jekk nassumu li l-operatur ta 'l-zalzett, in-notazzjoni Infix, għandu jkun fi ħdan l-istruttura kif fil hot dog konvenzjonali. Il RPN jinsab id-dritt f'żewġ nofsijiet tikseb therebetween lesti wara kalkolu. Issa ġejja l-parti diffiċli - mustarda. Hija diġà fis-zalzett, t. E. Diġà kkalkulat bħala operatur unary. Huwa maħsub li mustarda għandhom ukoll jintwerew bħala uncalculated u għalhekk għandu jiġi mċaqlaq lejn il-lemin ta 'l-zalzett ... Iżda huwa possibbli, dan ikun jeħtieġ munzell kbir wisq ta' ...
Similar articles
Trending Now