Компютер, Нармафзор
RPN: алгоритми, усул ва мисолҳои
RPN як маротиба дар асоси як барномасоз компютерӣ дар ҷаҳон ташкил карда мешаванд. Имрӯз он аст, пас хуб маълум нест. Аз ин рӯ, мисоли хазли, тасвир шуда як "баръакс» Лаҳистон ҳасиб ҳайвонот берун, метавонад то ҳол аз ҷониби баъзе барномасозони донишманд намефаҳманд шавад. Не хеле хуб баён шӯхӣ, вале дар ин ҳолат он пурра асоснок.
infix
Ҳамаи барномасозони, ва аксари донишҷӯён бо истифодаи операторҳои шинос мебошанд. Барои мисол, арзишҳои баён х + summation барои тағйирёбандаҳои х ва Y аломати плюс истифодашаванда. Камтар хуб маълум аст, он аст, ки дар ин аст, ки аз қайди математика, даъват ѕайди infix ќарз, ки дар ҳақиқат, мушкилоти калон барои мошинҳои аст. Ин оператор мисли қабул вуруди ду арзишҳо оид ба чап ва рости навишта шудааст. Дар барномасозии ѕайди ихтиёрӣ бо амалиёти оёти истифода бурда мешавад. Барои мисол, х + Y метавон ҳамчун вазифаи оғил (х, Y), ки дар он compiler ва дар ниҳоят табдил ѕайди infix навишта шудааст. Бо вуҷуди ин, ҳама медонад, аз фанни математика хеле хуб аст, ки ба истифода изҳори арифметикӣ, ки як навъ дохилии мини-забони ташкил медиҳанд, дар қариб ҳар забони барномасозӣ нест.
тарҷумон формулаи
Дар аввал дар ҳақиқат муваффақ забони барномасозӣ Fortran табдил ёфтааст, то асосан ифодаи арифметикии (яъне формулаи ..) Ин дар коди табдил (пахши), бинобар ин номи он - Формула тарҷумаи. Қабл аз ин, онҳо буд, ки бинависам, барои мисол, яди дар шакли функсияҳои (ва афзояд (б, в)). Дар масъалаи COBOL татбиқи формулаи табдили автоматӣ хеле мушкил дониста шуд, зеро барномасозони буд, ки ба навиштани чиз монанди Илова ба B Mutliply Бо C.
Чӣ нодуруст бо infix аст?
Масъала дар он аст, ки ба операторон ва хусусияти ба монанди бартариӣ ва associativity. Бинобар ин, муайян кардани функсияи infix вазифаи ғайридавлатӣ андаке мегардад. Барои мисол, зарб гузаштани зиёда аз Илова бар ин, ё ҳисобкунӣ, ки маънои онро дорад, ки ба + 3 * 4 ифодаи 2 аст, ки ба маблағи 2 ва 3, зарб 4 баробар нестанд, чунон ки он дар иҷрои операторони бошад, аз чап ба рост. Дар асл, афзояд 3 4 ва илова 2. Ин намунаи нишон медиҳад, ки ҳисоб намудани ифодаи infix аксаран талаб тағйирот дар тартиби операторони ва operands. Илова бар ин, зарур аст, ки ба истифода мекунад Мисолҳои ба назар ѕайди равшан бештар. Барои мисол, (2 + 3) * (4 + 5) мумкин нест, бе қавс навишта шудааст, чунки 2 + 3 * 4 + 5 маънои онро дорад, ки шумо бояд ба афзояд 3 4 ва илова намудани 2 ва 5.
Тартиби ки дар он шумо мехоҳед, ки ба ҳисоб операторони талаб дароз дар хотир. Бинобар ин, донишҷӯ, ки оғоз ба ёд арифметикӣ, аксаран ба даст натиҷаҳои нодуруст, ҳатто агар ба амалиёти воқеии дуруст анҷом дода мешавад. Ин ба таълим тартиби ҳисоботи амали бо дили зарур аст. Аввал ин, ки амал бояд дар қавс буда, он гоҳ зарб ва тақсим ва дар охир илова даҳиҳо гузаронида мешавад. Аммо роҳи дигаре навиштани изҳори риёзӣ ҳамчун ѕайди infix аст, танҳо яке аз имкон »ба забонҳои хурд», ки мумкин аст ба беш аз илова кардан зарур аст.
Префикс ва postfix ѕайди
Ду алтернативаҳои бештари маъруф аст, ки ба сабт оператор пеш аз ё баъд аз он operands. Онҳо чун пешванд ва postfix ба ѕайди маълум аст. Logician Ян Lukasevich як муовини аввал, дар соли 1920 ба дурӯғ. Ӯ дар Полша зиндагӣ, то номаи номида Лаҳистон. нусхаи Postfix, мутаносибан, даъват Таьлили Лаҳистон Notation (ARF). Ягона фарқи байни ин ду усул самти ки дар он ба хондани нависед (аз чап ба рост ё рост ба чап) аст, то дар он кофист ба батафсил дида мебароем, танҳо яке аз онҳо. Оператори OPN аст, пас аз operands он навишта шудааст. Ҳамин тариқ, баён AB + тасвир намуна RPN барои A + Б.
шумораи бемаҳдуди operands
Бартарияти фаврии сабт аст, ки он ҷамъбаст оператори н-adic ва қайди infix аст, дар ҳақиқат танҳо бо ду operands кор, т. E. Оё моҳиятан муносиб танҳо барои амалиёти дуӣ. Барои мисол, ABC @ ифодаи баръакс Лаҳистон бо истифода аз тамғаи сегона аст, ки ҳадди аксари арзиши A, B ва C. Дар ин маврид оператори чап се operand худ амал мекунад ва мувофиқ ба вазифа занг @ аст (A, B, C). Агар шумо кӯшиш кунед, ки навиштани @ рамзи ҳамчун infix, ба монанди A @ аз милод ва ё чизе монанди, ки, он маълум мегардад, ки дар он танҳо ба кор намекунад.
Афзалияти дода тартибот
RPN дорад Бартарии дигар, ки дар аввалияти операторони метавонад бо тартиби намуди зоҳирии онҳо намояндагӣ мекунанд. Дар айни замон ҳеҷ гоҳ Мисолҳои лозим аст, ҳарчанд ки онҳо метавонанд дохил ҳамчун аломатҳои амалиёти мусоидат ба табдили аз қайди infix. Масалан, AB + C * - эквиваленти якмаъно (A + B) * C, то зарб нест, мумкин аст, то илова анҷом, ки ба медиҳад operand дуюм барои зарб ҳисоб карда мешавад. Яъне, агар ҳисобшуда AB + C * аз ҷониби як оператор дар як вақт, мо ба даст AB + C * -> (AB +) * C -> (A + B) * C.
алгоритми ҳисоб
Оператори OPN ҳамон тавре ки функсияи, ки ҳавасашро чун далелҳои ду арзишҳои чапи вай навишта шудааст назар. Илова бар ин, дар акт сабт воқеӣ барои истифодаи забонҳои барномасозӣ мебошад, ки ба таври њисоби онро мувофиқ ба амалиёти анбора ва зарурати барчасбҳо бартараф карда мешавад. Масалан, дар arrester дар ифодаи 5 + 6 * 7 ҳамчун 5, 6, 7 *, + пайдо мешавад, ва он метавонад танҳо бо бознигарии ҳисоб аз чап ба рост ва ба навиштани арзишҳои дар як анбора. Ҳар як аломати умумии фаъолият, интихоб аз тарафи унсури болоии 2 хотираи компютер, аз оператор аст, истифода бурда мешавад ва дар натиҷа баргаштанд ба хотираи. Вақте, ки дар натиҷаи охири ифодаи ҳисоб хоҳад дар болои анбора бошад.
Барои мисол:
- S = (), 5, 6, 7, *, + 5 ҷойгир оид ба анбора.
- S = (5) 6, 7, *, + 6 ҷойгир оид ба анбора.
- S = (5, 6), 7 *, 7 + ҷойгир анбора.
- S = (5, 6, 7), * 2 + интихоб арзишҳои аз анбора, истифодаи * ва ҷои натиҷа дар анбора.
- S = (5, 6 * 7) = (5, 42) + 2 арзишҳои интихобшуда аз анбора, ба кор бурдани + ва ба натиҷа дар анбора.
- S = (5 + 42) = (47) ҳисоб анҷом мешавад, дар натиҷаи аст, ки дар болои анбора нигоњ дошта мешавад.
Ин алгоритми мумкин месанҷад, RPN такроран, вале ҳар дафъа ба он кор хоҳад кард, новобаста аз чӣ гуна мураккаб ифодаи арифметикии.
OPN ва стеллажьо зич алоќаманд аст. Ин мисол нишон медиҳад, ки чӣ тавр истифода бурдани хотира ба ҳисоб арзиши ѕайди баръакс Лаҳистон. Камтар аён аст, ки шумо метавонед истифода баред анбора, табдил додани ифодаи infix стандартӣ дар нокомии шадиди гурда.
Намунаҳои забонҳои барномасозӣ
Паскал RPN дарк мисли ин (нишон қисми барномаи).
Барои хондани рақамҳо ва операторони дар давраи даъват тартиби, ки оё шумораи ё аломати амалиёти аломати муайян мекунад. Дар сурати аввал, ки арзиши захира дар анбора ва дуюми ду адад анбора болоии амали дахлдор аст, анҷом ва натиҷаи захира карда мешавад.
toktype: = Ад;
хонда (р);
Агар в дар [ '+', '-', '*', '/'] сипас сар
Пас агар боз eoln cn = '' дигаре хонда (cn);
Агар cn = '' сипас
сурати як
'+': Toktype: = илова; '-': toktype: = зерсохторњо;
'*': Toktype: = MUL; '/': Toktype: = Лиг
охир
боз сар
агар = '-', пас sgn: = -1 хатои дигаре = в <> '+';
бо: = cn
охир
охир;
Агар (гумроҳӣ нест) ва (toktype = Ад) пас getnumber;
Агар toktype <> Ад пас оғоз
Y = поп; х = поп;
Агар не, пас гумроҳӣ
сурати toktype аз
илова: Z = х + Y; зерсохторњо: Z = х-Y; MUL: Z = х * Y; Лиг: Z = х / Y
охир
тела (Z);
RPN C-амалӣ (қисми нишон барномаи):
барои (р = strtok (ҳо, W);) р = strtok (0, в; с) {
а = strtod (ҳо, & д);
Агар (д> р) кашидани (а);
#define rpnop (х) printf ( "% в:", * с), б = поп (), як = поп (), таҳвили (х)
дигаре, агар (* р == '+') rpnop (а + б);
дигаре, агар (* р == '-') rpnop (а - б);
дигаре, агар (* р == '*') rpnop (а * б);
дигаре, агар (* р == '/') rpnop (а / б);
rpnop #undef
}
амалї сахтафзор
Дар он айём, ки технологияи компютерӣ хеле гарон буд, ки ин ақида хуб фикр буд, маҷбур ба одамон барои истифодаи arresters якбора. Дар соли 1960-уми., Тавре ҳоло, мумкин ба харидани реЗрдВ, ки дар ѕайди баръакс Лаҳистон кор буд. Барои илова намудани 2 ва 3 аз онҳо бояд 2, аз 3 дохил шавед, ва тугмаи "плюс" пахш кунед. Дар назари аввал, operands вуруди ба оператори мураккаб ва мушкил ба ёд менамуд, вале баъд аз муддате чанд майл ба ин тарзи фикрронии ва фаҳмида наметавонистам, ки чаро дигарон infix беақл аст, ки то мураккаб ва маҳдуд аст боисрор.
Ширкати Burroughs ҳатто як mainframe буд, ки нест, хотираи дигар, ба истиснои анбора сохта. Ягона чизе, ки месозад мошини - алгоритме ва усулҳои RPN ба анбора марказии истифода бурда мешавад. Ҳамаи амалиёти он ба таври arresters операторони, ки нисбат ба арзишҳои м болоии баррасї карда шуданд. Масалан, дар дастаи Нишонӣ Бозгашти аз болои анбора гирифта, ва ғайра. Д. меъморӣ чунин як мошини оддӣ буд, вале рӯза кофӣ нест, ки ба рақобат бо architectures умумӣ бештар. Бисёриҳо, вале то ҳол аз он, ки чунин муносибати содда ва шево ба компютерӣ дар он ҳар барнома ифодаи OPN буд, пайдо идомаи он пушаймон.
Яке аз реЗрдВ вақт бо RPN машҳур буданд, ва баъзе ҳам ба онҳо афзалият дод. Илова бар ин, онҳо як забони-анбора нигаронидашуда, ба монанди берун тањия карда мешавад. Имрӯз аз он истифода кам, вале ба ҳар ҳол аз истифодабарандагони собиқи nostalgic аст.
Пас, он чиро, ки шӯхиҳои маънои бораи Таьлили Лаҳистон ҳасиб аст?
Агар мо дар њолате, ки оператори намудани ҳасиб, қайди infix, аз он бояд дар доираи рол дар саги гарм анъанавӣ бошад. Дар RPN аст, ҷойгир ҳуқуқ дар ду маѓзи даст therebetween тайёр пас аз њисоб карда мешавад. Акнун меояд қисми мушкил - хардал. Вай аллакай дар ҳасиб, т. E. Аллакай ҳамчун оператори unary њисоб карда мешавад. Гумон меравад, ки хардал ҳам бояд uncalculated нишон дода мешавад ва аз ин рӯ бояд ба ҳуқуқи ҳасиб кӯчонида ... Аммо он имконпазир аст, ба ин талаб анбора низ калон ...
Similar articles
Trending Now