संगणक, सॉफ्टवेअर
आर.पी.एन.: अल्गोरिदम, पद्धती आणि उदाहरणे
आर.पी.एन. एकदा जगातील एक संगणक 'प्रोग्रामर' आधारावर स्थापना केली. आज चांगले ज्ञात नाही आहे. म्हणून, कॉमिक स्पष्टीकरण, बाहेर एक "उलटा" पोलिश चटकदार मांसाचे खाद्य कबाब रोल्स चित्रण, अजूनही काही हुषार प्रोग्रामर गैरसमज जाऊ शकते. खूप चांगले नाही विनोद स्पष्ट, पण या प्रकरणात तो पूर्णपणे न्याय्य होईल.
infix
सर्व प्रोग्रामर, आणि सर्वात विद्यार्थ्यांना ऑपरेटर वापर परिचित आहेत. उदाहरणार्थ, चल X आणि Y वापरले अधिक चिन्ह अभिव्यक्ती x + बेरीज मूल्ये. कमी सुप्रसिद्ध या, गणित नोटेशन, infix नोटेशन म्हणतात मिलाप आहे की, खरं तर, मशीन मोठी समस्या आहे खरं आहे. इनपुट दोन मूल्ये डाव्या आणि उजव्या वर रेकॉर्ड आहेत म्हणून हे ऑपरेटर प्राप्त. प्रोग्रामिंग मध्ये नोटेशन चिन्हे ऑपरेशन वैकल्पिकरित्या वापरले. उदाहरणार्थ, x + y पट (x, y) फंक्शन, कंपायलर आणि अखेरीस infix नोटेशन रुपांतरीत जे लिहिले जाऊ शकते. तथापि, प्रत्येक गणित जवळजवळ प्रत्येक प्रोग्रामिंग भाषेत अंतर्गत मिनी भाषा एक प्रकारचा तयार ज्या अंकगणित सूत्रांचे, वापर न खूप चांगला आहे माहीत आहे.
सूत्र भाषांतर
प्रथम खरोखर यशस्वी फोर्ट्रान प्रोग्रामिंग भाषा बनली आहे अंकगणितीय अभिव्यक्ती (म्हणजे सूत्र ..) तो कोड मध्ये (प्रसारण) रूपांतरित, तो म्हणून नाव, कारण त्यामुळे मुख्यत्वे - सूत्र भाषांतर. आधी त्या, ते उदाहरणार्थ, लेखन, कार्ये स्वरूपात दुमडलेला होते (आणि गुणाकार (ब, क)). प्रोग्रामर ब Mutliply एक जोडा क करून यासारख्या गोष्टी लिहायला होते कारण आपोआप रुपांतरण सूत्र अंमलबजावणी कोबोल समस्या फार कठीण मानले होते
काय infix काय चूक आहे?
समस्या ऑपरेटर प्राधान्य आणि associativity अशा गुणधर्म आहे की, आहे. कारण या, infix कार्य व्याख्या नॉन-क्षुल्लक कार्य होते. उदाहरणार्थ, गुणाकार व्यतिरिक्त किंवा वजाबाकी जास्त प्राधान्य आहे, जे अभिव्यक्ती 2 + 3 * 4 ते डावीकडून उजवीकडे ऑपरेटर कामगिरी होईल म्हणून, 4 गुणाकार 2 आणि 3 बेरीज, समान नाही याचा अर्थ असा की आहे. खरं तर, 4 गुणाकार 3 आणि 2 जोडण्यासाठी हे उदाहरण infix अभिव्यक्ती गणना अनेकदा ऑपरेटर आणि operands क्रम बदलणे आवश्यक आहे की स्पष्ट होते. याच्या व्यतिरीक्त, हे अधिक स्पष्ट नोटेशन पाहणे चौकटी कंस वापर करणे आवश्यक आहे. उदाहरणार्थ, (2 + 3) * (4 + 5), कंस न लिहिले जाऊ शकत नाही कारण 2 + 3 * 4 + 5 4 ने गुणावे 3 आणि 2 व 5 जोडण्यासाठी गरज याचा अर्थ असा की.
आपण ऑपरेटर गणना करू इच्छित कोणत्या क्रमाने एक लांब लक्षात आवश्यक आहे. कारण या, अंकगणित जाणून घेण्यासाठी अनेकदा प्रारंभ विद्यार्थी, चुकीचे परिणाम प्राप्त प्रत्यक्ष ऑपरेशन योग्य सादर केले असले, तरीही. हे हृदय क्रिया स्टेटमेन्ट क्रम शिकवण्यासाठी आवश्यक आहे. प्रथम, क्रिया कंस, नंतर गुणाकार, भागाकार, आणि शेवटी बेरीज व वजाबाकी चालते करणे आवश्यक आहे. पण infix नोटेशन केवळ अधिक जोडले जाऊ शकते की शक्य "लहान भाषा" एक आहे म्हणून गणितातील सूत्रांचे लेखन हा एक मार्ग आहे.
उपसर्ग आणि प्रत्यय नोटेशन
सर्वात सुप्रसिद्ध विकल्प दोन आधी किंवा त्याच्या operands नंतर ऑपरेटर रेकॉर्ड आहे. ते उपसर्ग आणि प्रत्यय नोटेशन म्हणून ओळखले जातात. तर्कशास्त्रपारंगत यान Lukasevich 1920 मध्ये प्रथम एक शोध लावला. तो पोलंड राहत, त्यामुळे रेकॉर्ड पोलिश म्हणतात. प्रत्यय लावणे आवृत्ती, अनुक्रमे, उलट पोलिश नोटेशन (ARF) म्हणतात. त्यामुळे सविस्तर त्यापैकी फक्त एक विचार करण्यास पुरेशी या दोन पद्धती एकच फरक, रेकॉर्ड वाचण्यासाठी (उजवीकडे किंवा डावीकडे उजवीकडे डावीकडून) जे दिशा आहे. OPN ऑपरेटर त्याच्या operands नंतर लिहिले आहे. त्यामुळे, अभिव्यक्ती अब्राहम + एक + ब उदाहरण आर.पी.एन. प्रतिनिधित्व
operands अमर्यादित संख्या
नोटेशन तातडीने फायदा एन-adic ऑपरेटर सारांश आहे आणि infix नोटेशन खरोखर फक्त दोन operands कार्य करते आहे, टी. ई फक्त बायनरी ऑपरेशन साठी अंतर्निहित योग्य आहेत. उदाहरणार्थ, ABC चे @ जे या प्रकरणात अ, ब आणि क जास्तीत जास्त मूल्य ऑपरेटर तीन संख्या स्वतः डाव्या कृती आहे आणि एक फंक्शन कॉल @ परस्पर triadic चिन्ह वापरून उलट पोलिश अभिव्यक्ती आहे (अ, ब, क). आपण अशा @ BC अथवा BC या असे काहीतरी म्हणून infix, म्हणून @ प्रतीक लिहू प्रयत्न केला, तर तो फक्त कार्य करत नाही हे स्पष्ट होते.
ऑर्डर दिलेल्या प्राधान्य
आर.पी.एन. की ऑपरेटर प्राधान्य त्यांचे स्वरूप आदेशाद्वारे प्रतिनिधित्व केले जाऊ शकते अजून एक फायदा आहे. वर्ण ऑपरेशन infix नोटेशन पासून रूपांतरण सुविधा म्हणून ते समाविष्ट होऊ शकतो जरी त्याच वेळी, चौकटी कंस गरज नाही. उदाहरणार्थ, अब्राहम + C * - थेट समतुल्य (अ + ब) * क, गुणाकार सादर व्यतिरिक्त, गुणाकार दुसरा संख्या देते पर्यंत गणना केली जाऊ शकत नाही. > (AB +) * क - -> (अ + ब) * क हिशोब अब्राहम + C * एका वेळी एक ऑपरेटर करून, आम्ही अब्राहम + C * तर, आहे
गणना अल्गोरिदम
OPN ऑपरेटर तिच्या डाव्या लिहिले वितर्क दोन मूल्ये म्हणून लागतात कार्य सारखेच दिसते. शिवाय, त्याच्या गणना रीतीने स्टॅक ऑपरेशन परस्पर आणि विश्लेषित गरज काढली आहे म्हणून, प्रोग्रामिंग भाषांमधील वापरासाठी एक नैसर्गिक नोटेशन आहे. उदाहरणार्थ, अभिव्यक्ती 5 + 6 * 7 मध्ये arrester म्हणून 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) गणना पूर्ण, परिणाम स्टॅक वरच्या मध्ये साठवली जाते.
हे अल्गोरिदम वारंवार आर.पी.एन. तपासले जाऊ शकते, परंतु प्रत्येक वेळी तो, कार्य करेल कसे नाही जटिल अंकगणितीय अभिव्यक्ती.
OPN आणि स्टॅक लक्षपूर्वक जोडलेले आहेत. हे उदाहरण उलट पोलिश नोटेशन मूल्य गणना स्मृती कसे वापरावे दिसून येते. कमी स्पष्ट आपण स्टॅक वापरू शकता तीव्र मूत्रपिंडासंबंधीचा अपयश मानक infix अभिव्यक्ती रुपांतर आहे.
प्रोग्रामिंग भाषा उदाहरणे
या (कार्यक्रमाचा भाग दर्शविते) सारखे पास्कल आर.पी.एन. लक्षात आले.
संख्या आणि ऑपरेटर प्रक्रिया म्हणतात सायकल, टोकन नंबर किंवा चिन्ह ऑपरेशन की नाही हे ठरवते ज्या वाचण्यासाठी. पहिल्या प्रकरणात, स्टॅक साठवलेले मूल्य आणि दोन वरच्या स्टॅक क्रमांक संबंधित क्रिया दुसऱ्या सादर आहे आणि परिणाम साठवले आहे.
toktype: = num;
वाचा (s);
मध्ये क [ '+', '-', '*', '/'] तर सुरू
नंतर eoln तर CN: = '' else वाचा (CN);
तर CN = '' नंतर
एक बाबतीत
'+': Toktype: =; सामील '-': toktype: = उप;
'*': Toktype: = मूल; '/': Toktype: = div
शेवटी
आणखी सुरू
तर = '-' नंतर SGN: = -1 आणखी त्रुटी: = क <> '+';
सह: = CN
शेवटी
समाप्त;
तर (नाही त्रुटी) आणि (toktype = NUM) नंतर getnumber;
toktype <> num नंतर होईल, तर
y = पॉप; नाम: = पॉप;
नाही तर त्रुटी
या प्रकरणी toktype
जोडा: z: = x + y; उप: z: = x-y; मूल: z: = x * y; div: z: = x / y
शेवटी
पुश (झेड);
सी-अंमलबजावणी आर.पी.एन. (कार्यक्रम दर्शवित भाग):
{(; च्या s = strtok (0, w) s = strtok (चे, w)) साठी
एक = strtod (चे, आणि ई);
तर (ई> चे) पुश (एक);
#define rpnop (x) printf ( "% c:" * चे), b = पॉप (), एक = पॉप (), पुश (नाम)
आणखी असेल तर (* च्या == '+') rpnop (एक + b);
आणखी असेल तर (* च्या == '-') rpnop (एक - ब);
आणखी असेल तर (* च्या == '*') rpnop (एक * ब);
आणखी असेल तर (* च्या == '/') rpnop (अ / ब);
#undef rpnop
}
हार्डवेअर लागूकरण
त्या काळात, संगणक तंत्रज्ञान फार महाग होते तेव्हा, तो एक चांगली कल्पना लाट arresters वापर भाग पाडू करण्यात आला होता. 1960-ies मध्ये., आता म्हणून, तो शक्य कॅलक्युलेटर्स, उलट पोलिश चिन्हांकनामधील काम विकत होते. जोडण्यासाठी 2 आणि त्यांना 3 2, नंतर 3 प्रविष्ट करणे आवश्यक आहे आणि "अधिक" बटण दाबा. पहिल्या दृष्टीक्षेपात, ऑपरेटर इनपुट operands क्लिष्ट आणि लक्षात ठेवणे अवघड होती, पण एक तर नंतर काही विचार हा मार्ग व्यसन आहेत आणि इतर मूर्ख infix, म्हणून क्लिष्ट आहे आणि त्यामुळे मर्यादित आहे आग्रह का समजू शकले नाही.
Burroughs कंपनी स्टॅक वगळता, इतर स्मृती होते जे एक मेनफ्रेम, बांधले. मशीन होतो की केवळ गोष्ट - केंद्रीय गठ्ठा अल्गोरिदम आणि पद्धती आर.पी.एन. लागू. त्याचे कार्य सर्व arresters ऑपरेटर, वरच्या n मूल्ये लागू आहे, म्हणून ओळखले होते. उदाहरणार्थ, संघ परत पत्ता स्टॅक सुरवातीला पासून जलद पुरेसे अधिक सामान्य आर्किटेक्चर स्पर्धा घेतली, आणि त्यामुळे वर. डी अशा मशीन आर्किटेक्चर सोपे होते, पण. अनेक, तरीही, अशा साध्या आणि मोहक प्रत्येक कार्यक्रम OPN एक अभिव्यक्ती होते जेथे संगणकीय दृष्टिकोन, त्याच्या सुरू आढळले की दु: ख.
आर.पी.एन. एका वेळी कॅल्क्युलेटर लोकप्रिय होते, आणि काही लोक अजूनही त्यांना प्राधान्य द्या. शिवाय, ते अशा पुढे म्हणून एक स्टॅक-देणारं भाषा, विकसित केले आहे. आज थोडे वापरले, पण तरीही त्याच्या माजी वापरकर्त्यांकडून ओढ उत्पन्न करणारा आहे.
त्यामुळे उलट पोलिश चटकदार मांसाचे खाद्य कबाब बद्दल अर्थ विनोद काय आहे?
आम्ही चटकदार मांसाचे खाद्य कबाब ऑपरेटर, infix नोटेशन, तो रोल आत परंपरागत गरम कुत्रा म्हणून असावे असे गृहीत धरते, तर. आर.पी.एन. दोन भागांना गोळाबेरीज केल्यानंतर तयार therebetween करा उजव्या बाजूला आहे. आता कठीण भाग येतो - मोहरी. ती टी चटकदार मांसाचे खाद्य कबाब आधीच आहे. ई आधीच एक एकच घटक असलेला ऑपरेटर म्हणून गणना केली. ते मोहरीच्या देखील uncalculated म्हणून दाखवली जाईल आणि म्हणून चटकदार मांसाचे खाद्य कबाब उजव्या हलविले पाहिजे, असे म्हटले जाते ... पण ते शक्य आहे, हे खूप मोठे स्टॅक आवश्यक आहे ...
Similar articles
Trending Now