TelefoniaPrugrammu

RPN: algutitimu, i metudi è li siquenti sunnu asempî

RPN vota furmaru la basa di un editore urdinatore in u mondu sanu. Oghje ùn hè tantu bè cunnisciutu. Per quessa, più comicu, raffigurante un "pone" Crosta salsiccia, polacco, dehors, pò sempre esse pi sbagghiu da qualchi programmers astuti. Micca assai bè a spiegari u mali, ma in stu casu, si vi sarà rinviatu assai.

infix

All programmers, è più studianti sò pràticu cù l 'usu di uperatori. Per esempiu, i valori sprissioni X + summation | per i variàbili X è Y usate più segnu. Menu bè cunnisciutu hè u fattu chì issu hè pigliatu in prestu da a matematica decimal, chiamatu infix decimal, in infatti, hè una grande prublema di a pulizia. Stu operatore riceve cum'è messu dui valori sò arrigistrati nant'à u manca è diritta. In prugrammazione decimal usatu optionally cun opérations miràculi. Per esempiu, X + Y ponu esse scritti cum'è una funzione di volte (x, y), in u quali l 'compiler e jeru converts decimal infix. Tuttavia, ugnunu sà u maths hè troppu bè micca à aduprà sprissioni Aritmetica, ca formanu un tipu di Logo-lingua internu in guasi tutti i lingua di prugrammazione.

fòrmula traduttore

A prima lingua di prugrammazione Fortran veru successu hè divintatu cusì largamente perchè i sprissioni nnumari (vale à dì fòrmula ..) Hè cunverta (diffusione) in u còdice, da quì u nome di u - fòrmula traduzzione. Anna a chi, avianu à scrive, per esempiu, calata in a forma di e funzioni (è multiplicate (b, c)). In prublema COBOL di rispettendu fòrmula cunversione automatica statu cunzidiratu assai difficiule perchè u programmers appi a scrìviri cosi, comu Carta A To B Mutliply By C.

Cosa hè tortu cu infix?

U prublema hè, chì l 'uperatori sò tali proprietà cum'è prevalenza è associativity. A causa di chistu, la definizione di funzione infix diventa compitu non-Trivia. Per esempiu, municipal hà prevalenza supiriuri agghiunta, o subtraction, chi significa ca li sprissioni 2 + 3 * 4 Ùn hè uguali à a summa di 2 è 3, multiplicate da 4, comu si fussi in u funziunamentu di l'uperatori da manca à dritta. In fatti, multiplica 3 da 4 è aghjunghje 2. Sta esempiu è chì u calculu di i sprissioni infix abbisogna à spessu un cambiamentu in lu modu di uperatori è operands. In più, ci vole à aduprà aculate à circà decimal più chjaru. Per esempiu, (2 + 3) * (4 + 5) ùn ponu esse scritti senza la parèntesi, perchè 2 + 3 * 4 + 5 significa chi vi tuccherà à multiplica 3 da 4 è aggiungere 2 e 5.

L'ordini in u quali vo vulete di calculari lu uperatori abbisogna una longa sapere. A causa di chistu, i studienti chì cumincianu à amparà li, à spessu arrivare i risultati è sbagghiatu, ancu s'è u funziunamentu attuale sò tutu currettamente. Hè necessaria a 'nzignari la ordine di dichiarazzioni azzione da lu cori. Prima, u azzione deve esse purtatu fora a parèntesi, puis municipal e cauciu francisi, è infini aghjunta è subtraction. Ma ci hè un antru modu di scriviri sprissioni matimatica cum'è infix decimal hè solu una di i pussibili "picculu lingue" chì si pò aghjunghje di più.

Prefissu è postfix decimal

Dui di l'altirnativa più bè cunnisciutu-hè a nutari li operatore nanzu o dopu à u so operands. Iddi sunnu canusciuti comu lu prifissu è postfix decimal. Logician Yan Lukasevich nvintò la prima unu in u 1920. Campava nta a Pulonia, cusì la fiche veni chiamatu polacco. versione Postfix, rispittivamenti, chiamatu Reverse Polacco Nu (Arf). A sola sfarenza trà sti dui mètudi hè a direzzione in cui à leghje la casa discugràfica (da manca à dritta o di dritta a manca), accussì lu suffices à guardà in tecnica solu unu d 'iddi. L'operatore OPN hè scritta dopu à u so operands. Cusì, i sprissioni AB + rapprisenta un esempiu RPN per A + B.

numaru Unlimited di operands

U vantaggiu immediata di decimal hè chì si riassumi l 'operatore Traduction-Blanc è infix decimal hè veru solu travaglia incù dui operands, t. E. Are inherently prupizia solu per opérations binariu. Per esempiu, ABC @ hè a sprissioni Polacco riversu cù Marque triadic chì hè lu valuri massimu di A, B e C. In stu casu di l 'operatore pesa nant'à a manca di i trè operand stessa è currisponde à una funzione d' @ (A, B, C). Sè vo pruvate a scrive u simbulu @ com'è infix, cum'è A @ BC, o quarchi cosa comu chi, addiventa chiaru ca nun solu à ùn travaglià.

A priurità data da u modu

RPN hà un altru dispone à chì u priurità di l'uperatori pò esse figurata da l 'ordine di l' aspettu. À u listessu tempu mai bisognu di aculate, puru siddu si pò esse stata cum'è funziunamentu di i caratteri di facilità ne a cunversione da decimal infix. Per esempiu, AB + C * - equivalenti giudicatu (A + B) * C, accussì lu municipal ùn pò ssiri calculata nzinu a l 'agghiunta svorgi, chi dà una seconda operand di municipal. Chì hè, s'è u calculateur AB + C * da una operatore à un tempu, niàutri pigghiamu AB + C * -> (AB +) * C -> (A + B) * C.

algutitimu calculu

L'operatore OPN pari u listessu cum'è una funzione chi pigghia comu argumenti dui valori scritti nantu à a so manca. In più, hè un decimal naturale di usu in lingue di prugrammazione, cum'è i primi tempi di u so calculu currisponde à u funziunamentu di pila e lu bisognu di immisu hè micca squassata. Per esempiu, u arrester in i sprissioni 5 + 6 * 7 Cumpariscerà cum'è un 5, 6, 7 *, +, è si pò ssiri calculata solu da circular da manca à dritta è scrive i valori in un pila. Pasquale un segnu cumuna di funziunamentu, sceltu da l 'elementu alta 2 di u ricordu urdinatore, l' operatore veni usatu è lu risultatu turnau a memoria. Quandu u risultatu fine di i sprissioni càlculu serà in cima di u pila.

Per esempiu:

  • S = () 5, 6, 7, *, + 5 posti nantu à i pila.
  • S = (5) 6, 7, *, + 6 misa supra i pila.
  • S = (5, 6), 7 * 7 + locu i pila.
  • S = (5, 6, 7), * 2 + sceglie valori di a pila, usu * è postu u risultatu in a pila.
  • S = (5, 6 * 7) = (5, 42) + 2 valori sceltu da i pila, di dumandà i + e mette u risultatu in a pila.
  • S = (5 + 42) = (47) calculu hè compiu, u risultatu hè piazzatu in cima di a pila.

Stu algutitimu pò esse verificatu RPN curputu, ma ogni volta ch'ella vi u travagliu, senza mpurtanza comu cumplessu i sprissioni Aritmetica.

OPN è accatastare sò vicinu à ellu assuciatu. Stu esempiu indiatu quantu à aduprà u ricordu di calculari lu valuri di la decimal Polacco riversu. Menu chiaru hè chì vi pò aduprà a pila, rinforza sprissioni infix mudellu in fallimentu rénaux fini.

Esempii di linguagi di prugrammazione

Pascal RPN avvisti like this (mostra a parte di u prugrammu).

À leghje i numari è uperatori in u routes chjamata a prucedura, chì definisce s'ellu u numaru, o signu operatu signu. In u primu casu, i valori posti in la pila, e lu secunnu di l 'azzioni currispundenza dui numari pila supranu si svorgi è u risultatu hè cullucatu.

toktype: = NUM;

leghje (s);

siddu c 'in [' + ',' - ',' * ',' / '] po cumincià

se eoln tandu CN: = '' àutru leghje (CN);

se CN = '' tandu

casu di un

'+': Toktype: = cresce; '-': toktype: = S sub;

'*': Toktype: = M mu; '/': Toktype: = francese div

fine

n'àutru comincia

se un = '-' poi Sgn: = -1 errore altru: = c '<>' + ';

cù: = CN

fine

fini;

se (micca errore) è (toktype = NUM) puis getnumber;

se toktype <> NUM poi cumincià

Y = canzoni; ex: = canzoni;

s'ellu ùn Design tandu

casu toktype di

aghjunghje: z: = X + Y; S sub: z: = X-y; mu: z: = X * Y; francese div: z: = X / Y

fine

totta (g);

RPN C-matematiche (parti scritta di u programma):

di (s = strtok (s, w); d; l = strtok (0, w)) {

un = strtod (s, & e);

se (e> s) totta (a);

#define rpnop (x) printf ( "% c ':", * s), b = canzoni (), un = canzoni (), totta' (x)

altru se (* d == '+') rpnop (a + b);

altru se (* d == '-') rpnop (a - b);

altru se (* d == '*') rpnop (a * b);

altru se (* d == '/') rpnop (una / b);

rpnop #undef

}

stia vulcanizing

In quelli tempi, quandu a tecnulugia urdinatore era assai cchiù cari, hè statu parsi 'na bona idea di lancià pòpulu à aduprà arresters fiatu. In 1960-IES., As avà, ùn hè pussibule à cumprà u calculator, chì u travagliu in decimal Polacco riversu. À aghjunghje 2 è 3 di li tocca à entre 2, allura 3, è appughjà u buttone «plus". At primu sguardu, u operands entrée à l 'operatore paria cumplessa è difficiule di sapere, ma dopu à una stonda qualchì sò live à stu modu di pinzari e ùn pò capisce perchè l' altri, insistia su pazzi infix, chi hè cusì cumplicatu, è cusì hè limitata.

cumpagnia Burroughs ancu custruitu un mainframe, chì avia micca altre memoria, francu pila. A sola cosa chì face la macchina - appricamu la alguritmi e mètudi RPN à i pila cintrali. Tutti di u so funziunamentu sò cunsidarati com'è arresters uperatori, chì vali à i valori Traduction suprana. Per esempiu, a squadra pigghiò lu Address U campanile di a cima di a pila, è cetara è cetara. D. L'architittura di un tali di machine hè sèmplice, ma ùn basta à dighjunu di cumpetiri ccu lu architetture più cumuna. Parechje persone, però, sempri lamintarisi di lu fattu ca un accostu com'è simplici è distintu a informatica induve tutti i prugrammu era un 'esprissioni di OPN, trova u so mantinimentu.

Unu calculator tempu cù RPN era pupulare, è qualchi pòpulu sempre dà li rinumata. In più, si sviluppò una pila-orientatu lingue, cum'è Taillon. Oghje hè pocu usate, ma sempre ricordu da a so ex utilizatori.

So what is a cunfruntu significatu circa salsiccia Reverse Polacco?

Sè noi dinò chì l 'operatore di a salsiccia, u decimal infix, si deve esse ind'a bread, cum'è in hot cunvinziunali. U RPN hè situatu dirittu in dui metà arrivare therebetween pronti, dopu calculu. Avà vene lu parti difficiule - mustarda. Ci hè digià in u salsiccia, t. E. Già calculata comu un operatore unari. Hè cridutu chì a mustarda deve dinù esse mustrati cum'è uncalculated e dunca avissi a ssiri spustatu a lu dirittu di l 'salsiccia, ... Ma hè pussibule, sta s'avissi troppu grande pila di ...

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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