ऑपरेटर (कंप्यूटर प्रोग्रामिंग): Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
Line 10: Line 10:
वाक्य-विन्यास रूप से ऑपरेटर आमतौर पर कार्यों के विपरीत होते हैं। अधिकांश भाषाओं में, कार्यों को संचालन स्तर और संबद्धता के निश्चित क्रम के साथ उपसर्ग ऑपरेटर के एक विशेष रूप के रूप में देखा जा सकता है, अक्सर अनिवार्य कोष्ठकों के साथ उदा। <code>Func(a)</code> (या <code>(Func a)</code> लिस्प में (प्रोग्रामिंग भाषा))। अधिकांश भाषाएँ  क्रमादेशक (प्रोग्रामर)-परिभाषित कार्यों का समर्थन करती हैं, लेकिन वास्तव में क्रमादेशक-परिभाषित ऑपरेटरों का समर्थन करने का दावा नहीं कर सकती हैं, जब तक कि उनके पास उपसर्ग संकेतन से अधिक और एक से अधिक पूर्ववर्ती स्तर न हों। शब्दार्थतः रूप से ऑपरेटरों को अलग-अलग उद्यम  संकेतन और सीमित संख्या में  प्राचल (पैरामीटर) (आमतौर पर 1 या 2) के साथ कार्य के विशेष रूप के रूप में देखा जा सकता है।
वाक्य-विन्यास रूप से ऑपरेटर आमतौर पर कार्यों के विपरीत होते हैं। अधिकांश भाषाओं में, कार्यों को संचालन स्तर और संबद्धता के निश्चित क्रम के साथ उपसर्ग ऑपरेटर के एक विशेष रूप के रूप में देखा जा सकता है, अक्सर अनिवार्य कोष्ठकों के साथ उदा। <code>Func(a)</code> (या <code>(Func a)</code> लिस्प में (प्रोग्रामिंग भाषा))। अधिकांश भाषाएँ  क्रमादेशक (प्रोग्रामर)-परिभाषित कार्यों का समर्थन करती हैं, लेकिन वास्तव में क्रमादेशक-परिभाषित ऑपरेटरों का समर्थन करने का दावा नहीं कर सकती हैं, जब तक कि उनके पास उपसर्ग संकेतन से अधिक और एक से अधिक पूर्ववर्ती स्तर न हों। शब्दार्थतः रूप से ऑपरेटरों को अलग-अलग उद्यम  संकेतन और सीमित संख्या में  प्राचल (पैरामीटर) (आमतौर पर 1 या 2) के साथ कार्य के विशेष रूप के रूप में देखा जा सकता है।


इसके संकार्य (ऑपरेंड) के संबंध में ऑपरेटर की स्थिति [[पोलिश संकेतन|उपसर्ग]], [[इंफिक्स नोटेशन|इंफिक्स]] या [[पोस्टफिक्स नोटेशन|पोस्टफिक्स]] हो सकती है, और एक ऑपरेटर को शामिल करने वाली अभिव्यक्ति (कंप्यूटर साइंस) का रचनाक्रम इसकी [[arity]] (संचालन की संख्या), पूर्वता, और (यदि लागू हो), सहयोगीता पर निर्भर करता है ।अधिकांश प्रोग्रामिंग भाषाएं [[बाइनरी ऑपरेशन|बाइनरी ऑपरेटरों]] और कुछ [[एकात्मक ऑपरेशन|एकात्मक ऑपरेटरों]] को सपोर्ट करती हैं, कुछ अधिक ऑपरेंड को सपोर्ट करती हैं, जैसे ?: C में ऑपरेटर, जो टर्नरी है। यूनरी माइनस जैसे उपसर्ग यूनरी ऑपरेटर हैं <code>-x</code>, और पोस्टफ़िक्स यूनरी ऑपरेटर्स, जैसे [[बाद वेतन वृद्धि]] <code>x++</code>; और बाइनरी ऑपरेशंस इंफिक्स हैं, जैसे <code>x + y</code> या <code>x = y</code>. उच्च एरिटी के इन्फिक्स संचालन के लिए अतिरिक्त प्रतीकों की आवश्यकता होती है, जैसे [[टर्नरी ऑपरेटर]] ?: सी में, के रूप में लिखा गया है <code>a ? b : c</code> - वास्तव में, चूंकि यह एकमात्र सामान्य उदाहरण है, इसे अक्सर टर्नरी ऑपरेटर के रूप में जाना जाता है। हालाँकि, उपसर्ग और पोस्टफ़िक्स संचालन किसी भी वांछित धर्मार्थ का समर्थन कर सकते हैं, जैसे कि <code>1 2 3 4 +</code>.
इसके संकार्य (ऑपरेंड) के संबंध में ऑपरेटर की स्थिति [[पोलिश संकेतन|उपसर्ग]], [[इंफिक्स नोटेशन|इंफिक्स]] या [[पोस्टफिक्स नोटेशन|पोस्टफिक्स]] हो सकती है, और एक ऑपरेटर को शामिल करने वाली अभिव्यक्ति (कंप्यूटर साइंस) का रचनाक्रम इसकी एरिटी (संचालन की संख्या), पूर्वता, और (यदि लागू हो), सहयोगीता पर निर्भर करता है ।अधिकांश प्रोग्रामिंग भाषाएं [[बाइनरी ऑपरेशन|बाइनरी ऑपरेटरों]] और कुछ [[एकात्मक ऑपरेशन|एकात्मक ऑपरेटरों]] का समर्थन करती हैं, कुछ अधिक संकार्य का समर्थन करती हैं, कुछ अधिक संकार्य का समर्थन करती हैं, जैसे ?: C में ऑपरेटर, जो त्रिगुट है। उपसर्ग एकाधारी (यूनरी) ऑपरेटर हैं, जैसे एकाधारी ऋण <code>-x</code>, और पोस्टफ़िक्स एकाधारी ऑपरेटर्स, जैसे [[बाद वेतन वृद्धि]] <code>x++</code>; और बाइनरी संचालन इंफिक्स हैं, जैसे <code>x + y</code> या <code>x = y</code>. उच्च एरिटी के इन्फिक्स संचालन के लिए अतिरिक्त प्रतीकों की आवश्यकता होती है, जैसे [[टर्नरी ऑपरेटर]] ?: सी में, के रूप में लिखा गया है <code>a ? b : c</code> - वास्तव में, चूंकि यह एकमात्र सामान्य उदाहरण है, इसे अक्सर टर्नरी ऑपरेटर के रूप में जाना जाता है। हालाँकि, उपसर्ग और पोस्टफ़िक्स संचालन किसी भी वांछित धर्मार्थ का समर्थन कर सकते हैं, जैसे कि <code>1 2 3 4 +</code>.


कभी-कभी<ref>{{Cite web|url=https://reference.wolfram.com/language/tutorial/OperatorInputForms.html.en|title=ऑपरेटर इनपुट फॉर्म-वोल्फ्राम लैंग्वेज डॉक्यूमेंटेशन|website=reference.wolfram.com}}</ref><ref>{{Cite web|url=http://maxima.sourceforge.net/docs/manual/maxima_7.html|title=मैक्सिमा 5.42.0 मैनुअल: 7. ऑपरेटर्स|website=maxima.sourceforge.net}}</ref> किसी भाषा के कुछ हिस्सों को मैचफिक्स या सिकमफिक्स के रूप में वर्णित किया जा सकता है<ref>{{Cite web|url=https://mythryl.org/my-Prefix__Postfix_and_Circumfix_Operators.html|title=उपसर्ग, पोस्टफिक्स और सर्कमफिक्स ऑपरेटर्स|website=mythryl.org}}</ref><ref>{{Cite web|url=http://doc.perl6.org/language/operators#___top|title=ऑपरेटर्स|website=doc.perl6.org}}</ref> ऑपरेटरों, या तो भाषा के विवरण या कार्यान्वयन को आसान बनाने के लिए। एक सिकमफ़िक्स ऑपरेटर में दो या दो से अधिक भाग होते हैं जो इसके ऑपरेंड को घेरते हैं। सर्कमफ़िक्स ऑपरेटरों की सर्वोच्च प्राथमिकता होती है, उनकी सामग्री का मूल्यांकन किया जाता है और परिणामी मूल्य आसपास की अभिव्यक्ति में उपयोग किया जाता है। सबसे परिचित सर्कमफ़िक्स ऑपरेटर ऊपर उल्लिखित कोष्ठक हैं, जो यह इंगित करने के लिए उपयोग किया जाता है कि किसी अभिव्यक्ति के किन हिस्सों का मूल्यांकन दूसरों से पहले किया जाना है। भौतिकी से एक अन्य उदाहरण डीरेक के ब्रा-केट संकेतन का [[आंतरिक उत्पाद स्थान]] संकेतन है। सर्कमफ़िक्स ऑपरेटर विशेष रूप से उन ऑपरेशनों को निरूपित करने के लिए उपयोगी होते हैं जिनमें कई या अलग-अलग संख्या में ऑपरेंड शामिल होते हैं।
कभी-कभी<ref>{{Cite web|url=https://reference.wolfram.com/language/tutorial/OperatorInputForms.html.en|title=ऑपरेटर इनपुट फॉर्म-वोल्फ्राम लैंग्वेज डॉक्यूमेंटेशन|website=reference.wolfram.com}}</ref><ref>{{Cite web|url=http://maxima.sourceforge.net/docs/manual/maxima_7.html|title=मैक्सिमा 5.42.0 मैनुअल: 7. ऑपरेटर्स|website=maxima.sourceforge.net}}</ref> किसी भाषा के कुछ हिस्सों को मैचफिक्स या सिकमफिक्स के रूप में वर्णित किया जा सकता है<ref>{{Cite web|url=https://mythryl.org/my-Prefix__Postfix_and_Circumfix_Operators.html|title=उपसर्ग, पोस्टफिक्स और सर्कमफिक्स ऑपरेटर्स|website=mythryl.org}}</ref><ref>{{Cite web|url=http://doc.perl6.org/language/operators#___top|title=ऑपरेटर्स|website=doc.perl6.org}}</ref> ऑपरेटरों, या तो भाषा के विवरण या कार्यान्वयन को आसान बनाने के लिए। एक सिकमफ़िक्स ऑपरेटर में दो या दो से अधिक भाग होते हैं जो इसके ऑपरेंड को घेरते हैं। सर्कमफ़िक्स ऑपरेटरों की सर्वोच्च प्राथमिकता होती है, उनकी सामग्री का मूल्यांकन किया जाता है और परिणामी मूल्य आसपास की अभिव्यक्ति में उपयोग किया जाता है। सबसे परिचित सर्कमफ़िक्स ऑपरेटर ऊपर उल्लिखित कोष्ठक हैं, जो यह इंगित करने के लिए उपयोग किया जाता है कि किसी अभिव्यक्ति के किन हिस्सों का मूल्यांकन दूसरों से पहले किया जाना है। भौतिकी से एक अन्य उदाहरण डीरेक के ब्रा-केट संकेतन का [[आंतरिक उत्पाद स्थान]] संकेतन है। सर्कमफ़िक्स ऑपरेटर विशेष रूप से उन ऑपरेशनों को निरूपित करने के लिए उपयोगी होते हैं जिनमें कई या अलग-अलग संख्या में ऑपरेंड शामिल होते हैं।

Revision as of 03:10, 10 December 2022

कंप्यूटर प्रोग्रामिंग में, ऑपरेटर प्रोग्रामिंग भाषाओं के भीतर परिभाषित निर्माण होते हैं जो आम तौर पर कार्यों की तरह व्यवहार करते हैं, लेकिन जो वाक्य-विन्यास (सिंटैक्स) या शब्दार्थ (सिमेंटिक्स) से भिन्न होते हैं।

सामान्य सरल उदाहरणों में अंकगणित (उदाहरण के साथ जोड़), तुलना (उदाहरण के लिए "से बड़ा" > के साथ), और तार्किक संचालन (जैसे AND, कुछ भाषाओं में && भी लिखा गया) शामिल हैं। अधिक शामिल उदाहरणों में प्रदत्त कार्य (आमतौर पर = या :=), अभिलेख या उद्देश्य में क्षेत्र अभिगम (आमतौर पर .), और विस्तार समाधान ऑपरेटर (अक्सर :: या .) शामिल हैं। भाषाएं आमतौर पर अंतर्निहित ऑपरेटरों के एक समूह को परिभाषित करती हैं, और कुछ मामलों में उपयोगकर्ताओं को मौजूदा ऑपरेटरों के लिए नए अर्थ जोड़ने या पूरी तरह से नए ऑपरेटरों को परिभाषित करने की अनुमति देती हैं।

रचनाक्रम

वाक्य-विन्यास रूप से ऑपरेटर आमतौर पर कार्यों के विपरीत होते हैं। अधिकांश भाषाओं में, कार्यों को संचालन स्तर और संबद्धता के निश्चित क्रम के साथ उपसर्ग ऑपरेटर के एक विशेष रूप के रूप में देखा जा सकता है, अक्सर अनिवार्य कोष्ठकों के साथ उदा। Func(a) (या (Func a) लिस्प में (प्रोग्रामिंग भाषा))। अधिकांश भाषाएँ क्रमादेशक (प्रोग्रामर)-परिभाषित कार्यों का समर्थन करती हैं, लेकिन वास्तव में क्रमादेशक-परिभाषित ऑपरेटरों का समर्थन करने का दावा नहीं कर सकती हैं, जब तक कि उनके पास उपसर्ग संकेतन से अधिक और एक से अधिक पूर्ववर्ती स्तर न हों। शब्दार्थतः रूप से ऑपरेटरों को अलग-अलग उद्यम संकेतन और सीमित संख्या में प्राचल (पैरामीटर) (आमतौर पर 1 या 2) के साथ कार्य के विशेष रूप के रूप में देखा जा सकता है।

इसके संकार्य (ऑपरेंड) के संबंध में ऑपरेटर की स्थिति उपसर्ग, इंफिक्स या पोस्टफिक्स हो सकती है, और एक ऑपरेटर को शामिल करने वाली अभिव्यक्ति (कंप्यूटर साइंस) का रचनाक्रम इसकी एरिटी (संचालन की संख्या), पूर्वता, और (यदि लागू हो), सहयोगीता पर निर्भर करता है ।अधिकांश प्रोग्रामिंग भाषाएं बाइनरी ऑपरेटरों और कुछ एकात्मक ऑपरेटरों का समर्थन करती हैं, कुछ अधिक संकार्य का समर्थन करती हैं, कुछ अधिक संकार्य का समर्थन करती हैं, जैसे ?: C में ऑपरेटर, जो त्रिगुट है। उपसर्ग एकाधारी (यूनरी) ऑपरेटर हैं, जैसे एकाधारी ऋण -x, और पोस्टफ़िक्स एकाधारी ऑपरेटर्स, जैसे बाद वेतन वृद्धि x++; और बाइनरी संचालन इंफिक्स हैं, जैसे x + y या x = y. उच्च एरिटी के इन्फिक्स संचालन के लिए अतिरिक्त प्रतीकों की आवश्यकता होती है, जैसे टर्नरी ऑपरेटर ?: सी में, के रूप में लिखा गया है a ? b : c - वास्तव में, चूंकि यह एकमात्र सामान्य उदाहरण है, इसे अक्सर टर्नरी ऑपरेटर के रूप में जाना जाता है। हालाँकि, उपसर्ग और पोस्टफ़िक्स संचालन किसी भी वांछित धर्मार्थ का समर्थन कर सकते हैं, जैसे कि 1 2 3 4 +.

कभी-कभी[1][2] किसी भाषा के कुछ हिस्सों को मैचफिक्स या सिकमफिक्स के रूप में वर्णित किया जा सकता है[3][4] ऑपरेटरों, या तो भाषा के विवरण या कार्यान्वयन को आसान बनाने के लिए। एक सिकमफ़िक्स ऑपरेटर में दो या दो से अधिक भाग होते हैं जो इसके ऑपरेंड को घेरते हैं। सर्कमफ़िक्स ऑपरेटरों की सर्वोच्च प्राथमिकता होती है, उनकी सामग्री का मूल्यांकन किया जाता है और परिणामी मूल्य आसपास की अभिव्यक्ति में उपयोग किया जाता है। सबसे परिचित सर्कमफ़िक्स ऑपरेटर ऊपर उल्लिखित कोष्ठक हैं, जो यह इंगित करने के लिए उपयोग किया जाता है कि किसी अभिव्यक्ति के किन हिस्सों का मूल्यांकन दूसरों से पहले किया जाना है। भौतिकी से एक अन्य उदाहरण डीरेक के ब्रा-केट संकेतन का आंतरिक उत्पाद स्थान संकेतन है। सर्कमफ़िक्स ऑपरेटर विशेष रूप से उन ऑपरेशनों को निरूपित करने के लिए उपयोगी होते हैं जिनमें कई या अलग-अलग संख्या में ऑपरेंड शामिल होते हैं।

एक भाषा का विनिर्देश उस सिंटैक्स को निर्दिष्ट करेगा जो ऑपरेटरों का समर्थन करता है, जबकि प्रोग्रामिंग-परिभाषित ऑपरेटरों का समर्थन करने वाली प्रोलॉग जैसी भाषाएं प्रोग्रामर द्वारा सिंटैक्स को परिभाषित करने की आवश्यकता होती हैं।

शब्दार्थ

ऑपरेटरों का शब्दार्थ विशेष रूप से मूल्य, मूल्यांकन रणनीति और तर्क पासिंग मोड (जैसे बूलियन शॉर्ट सर्किटिंग) पर निर्भर करता है। बस, एक अभिव्यक्ति (कंप्यूटर विज्ञान) जिसमें एक ऑपरेटर शामिल है, का मूल्यांकन किसी तरह से किया जाता है, और परिणामी मूल्य (कंप्यूटर विज्ञान) सिर्फ एक मूल्य (एक आर-मूल्य) हो सकता है, या असाइनमेंट की अनुमति देने वाली वस्तु हो सकती है (एक एल-मूल्य) .

साधारण मामलों में यह सामान्य फ़ंक्शन कॉल के समान होता है; उदाहरण के लिए, जोड़ x + y आम तौर पर फ़ंक्शन कॉल के बराबर होता है add(x, y) और तुलना से कम x < y प्रति lt(x, y), जिसका अर्थ है कि तर्कों का मूल्यांकन उनके सामान्य तरीके से किया जाता है, फिर कुछ फ़ंक्शन का मूल्यांकन किया जाता है और परिणाम मान के रूप में लौटाया जाता है। हालाँकि, शब्दार्थ काफी भिन्न हो सकते हैं। उदाहरण के लिए, असाइनमेंट में a = b लक्ष्य a मूल्यांकन नहीं किया जाता है, बल्कि इसके स्थान (पता) का उपयोग मूल्य को संग्रहीत करने के लिए किया जाता है b - कॉल-टू-संदर्भ द्वारा शब्दार्थ के अनुरूप। इसके अलावा, एक असाइनमेंट एक बयान (कोई मूल्य नहीं) हो सकता है, या एक अभिव्यक्ति (मान) हो सकता है, मूल्य के साथ या तो एक आर-वैल्यू (सिर्फ एक वैल्यू) या एक एल-वैल्यू (जिसे असाइन किया जा सकता है)। एक अन्य उदाहरण के रूप में, स्कोप रिज़ॉल्यूशन ऑपरेटर :: और एलिमेंट एक्सेस ऑपरेटर। (जैसे की Foo::Bar या a.b) मूल्यों पर नहीं, बल्कि नामों पर काम करते हैं, अनिवार्य रूप से कॉल-बाय-नाम सिमेंटिक्स, और उनका मूल्य एक नाम है।

ऑपरेटर ऑपरेंड के रूप में एल-वैल्यू का उपयोग विशेष रूप से यूनरी वृद्धि और कमी ऑपरेटरों में उल्लेखनीय है। सी में, उदाहरण के लिए, निम्नलिखित बयान कानूनी और अच्छी तरह से परिभाषित है, और इस तथ्य पर निर्भर करता है कि सरणी अनुक्रमण एक एल-वैल्यू देता है: <वाक्यविन्यास प्रकाश लैंग = सी> एक्स = ++ए [मैं]; </वाक्यविन्यास हाइलाइट>

एक महत्वपूर्ण उपयोग तब होता है जब एक बाएं-सहयोगी बाइनरी ऑपरेटर अपने बाएं तर्क को संशोधित करता है (या एक साइड इफेक्ट पैदा करता है) और फिर उस तर्क का एल-वैल्यू के रूप में मूल्यांकन करता है।[lower-alpha 1] यह ऑपरेटरों के अनुक्रम की अनुमति देता है जो सभी मूल तर्क को प्रभावित करते हैं, विधि कैस्केडिंग के समान धाराप्रवाह इंटरफ़ेस की अनुमति देते हैं। एक सामान्य उदाहरण है << सी ++ में ऑपरेटर iostream पुस्तकालय, जो धाराप्रवाह उत्पादन की अनुमति देता है, निम्नानुसार है: <वाक्यविन्यास लैंग = सीपीपी> cout << हैलो << << दुनिया! << एंडल; </वाक्यविन्यास हाइलाइट>

उपयोगकर्ता परिभाषित ऑपरेटरों

एक भाषा में बिल्ट-इन ऑपरेटरों की एक निश्चित संख्या हो सकती है (उदा। +, -, *, <, <=, !, =, आदि C और C++|C और C++, PHP में ऑपरेटरों में), या यह प्रोग्रामर-परिभाषित ऑपरेटरों के निर्माण की अनुमति दे सकता है (जैसे प्रोलॉग,[5] चिल्लाओ,[6] एफ शार्प (प्रोग्रामिंग लैंग्वेज) | एफ #, OCaml, हास्केल प्रोग्रामिंग भाषा)। कुछ प्रोग्रामिंग लैंग्वेज ऑपरेटर सिंबल को विशेष कैरेक्टर जैसे प्रतिबंधित करती हैं + या := जबकि अन्य नामों को भी अनुमति देते हैं div (जैसे पास्कल (प्रोग्रामिंग भाषा))।

अधिकांश भाषाओं में ऑपरेटरों का एक अंतर्निहित सेट होता है, लेकिन उपयोगकर्ता परिभाषित ऑपरेटरों को अनुमति नहीं देते, क्योंकि यह पार्सिंग को काफी जटिल करता है।[lower-alpha 2] कई भाषाएँ केवल ऑपरेटरों को बिल्ट-इन प्रकारों के लिए उपयोग करने की अनुमति देती हैं, लेकिन अन्य मौजूदा ऑपरेटरों को उपयोगकर्ता-परिभाषित प्रकारों के लिए उपयोग करने की अनुमति देती हैं; इसे ऑपरेटर ओवरलोडिंग के रूप में जाना जाता है। कुछ भाषाएँ नए ऑपरेटरों को परिभाषित करने की अनुमति देती हैं, हालाँकि, या तो संकलन समय पर या रन टाइम पर। इसमें मेटा-प्रोग्रामिंग (एक अलग भाषा में ऑपरेटरों को निर्दिष्ट करना) या भाषा के भीतर ही शामिल हो सकता है। नए ऑपरेटरों की परिभाषा, विशेष रूप से रनटाइम परिभाषा, अक्सर कार्यक्रमों के सही स्थैतिक विश्लेषण को असंभव बना देती है, क्योंकि भाषा का सिंटैक्स ट्यूरिंग-पूर्ण हो सकता है, इसलिए सिंटैक्स ट्री के निर्माण के लिए भी हॉल्टिंग समस्या को हल करने की आवश्यकता हो सकती है, जो असंभव है। यह पर्ल के लिए होता है, उदाहरण के लिए, और लिस्प (प्रोग्रामिंग भाषा) की कुछ बोलियाँ।

उदाहरण

सामान्य उदाहरण जो वाक्यात्मक रूप से भिन्न होते हैं, गणितीय अंकगणितीय संक्रियाएँ हैं, उदा। > असमानता (गणित) के लिए, अक्सर कार्यों के लिए पहचानकर्ता (कंप्यूटर विज्ञान) के भाषा के सेट के बाहर के नामों के साथ, और फ़ंक्शन को कॉल करने के लिए भाषा के सिंटैक्स से भिन्न सिंटैक्स के साथ बुलाया जाता है। एक समारोह के रूप में, आम तौर पर पहचानकर्ता द्वारा नामित किया जाएगा, जैसे कि gt या greater_than और एक समारोह के रूप में कहा जाता है, as gt(x, y). इसके बजाय, ऑपरेशन विशेष वर्ण का उपयोग करता है > (जो व्याख्यात्मक विश्लेषण के दौरान अलग से चिन्हित किया गया है), और इंफिक्स नोटेशन, जैसा x > y.

सामान्य उदाहरण जो शब्दार्थ से भिन्न होते हैं (तर्क पासिंग मोड द्वारा) बूलियन ऑपरेशन होते हैं, जो अक्सर शॉर्ट सर्किट मूल्यांकन की सुविधा देते हैं: उदा। एक शॉर्ट-सर्किटिंग कंजंक्शन (X AND Y) जो केवल बाद के तर्कों का मूल्यांकन करता है यदि पहले वाले गलत नहीं हैं, सख्त कॉल-बाय-वैल्यू फ़ंक्शंस वाली भाषा में। इसके बजाय यह if/then/else के समान व्यवहार करता है।

कम आम ऑपरेटरों में शामिल हैं:


संकलन

एक कंपाइलर ऑपरेटरों और कार्यों को सबरूटीन या इनलाइन विस्तार के साथ कार्यान्वित कर सकता है। भाषा द्वारा समर्थित कुछ बिल्ट-इन ऑपरेटरों के पास आमतौर पर केंद्रीय प्रसंस्करण इकाइयों पर पाए जाने वाले मशीन कोड की एक छोटी संख्या के लिए एक सीधा मानचित्रण होता है, हालांकि अन्य (जैसे '+' स्ट्रिंग संघनन को व्यक्त करने के लिए उपयोग किया जाता है) में जटिल कार्यान्वयन हो सकते हैं।

ऑपरेटर ओवरलोडिंग

कुछ प्रोग्रामिंग भाषाओं में एक ऑपरेटर तदर्थ बहुरूपी हो सकता है, अर्थात्, एक से अधिक प्रकार के डेटा के लिए परिभाषाएँ होती हैं, (जैसे कि जावा (प्रोग्रामिंग भाषा) में जहाँ + ऑपरेटर का उपयोग संख्याओं को जोड़ने और स्ट्रिंग्स के संयोजन के लिए दोनों के लिए किया जाता है)। ऐसे ऑपरेटर को ओवरलोडेड कहा जाता है। उन भाषाओं में जो प्रोग्रामर (जैसे सी ++) द्वारा ऑपरेटर ओवरलोडिंग का समर्थन करते हैं लेकिन ऑपरेटरों का एक सीमित सेट है, ऑपरेटर ओवरलोडिंग अक्सर ऑपरेटरों के लिए अनुकूलित उपयोगों को परिभाषित करने के लिए उपयोग किया जाता है।

उदाहरण में IF ORDER_DATE > "12/31/2011" AND ORDER_DATE < "01/01/2013" THEN CONTINUE ELSE STOP, ऑपरेटर हैं: > (इससे बड़ा), AND और < (इससे कम)।

संचालन जबरदस्ती

कुछ भाषाएं किसी ऑपरेटर के ऑपरेंड को पूरी तरह से परिवर्तित करने की अनुमति देती हैं, या ऑपरेशन होने के लिए उपयुक्त डेटा प्रकारों के लिए रूपांतरण # अंतर्निहित प्रकार रूपांतरण टाइप करें। उदाहरण के लिए, पर्ल में ज़बरदस्ती के नियम आगे बढ़ते हैं 12 + "3.14" का परिणाम उत्पन्न कर रहा है 15.14. टेक्स्ट "3.14" जोड़ने से पहले संख्या 3.14 में परिवर्तित हो जाती है। आगे, 12 एक पूर्णांक है और 3.14 या तो एक फ़्लोटिंग या फिक्स्ड-पॉइंट नंबर है (एक संख्या जिसमें दशमलव स्थान है) इसलिए पूर्णांक क्रमशः फ़्लोटिंग पॉइंट या फिक्स्ड-पॉइंट नंबर में परिवर्तित हो जाता है।

जावास्क्रिप्ट विपरीत नियमों का पालन करता है - ऊपर समान अभिव्यक्ति खोजने पर, यह पूर्णांक को रूपांतरित कर देगा 12 एक तार में "12", फिर बनाने के लिए दो ऑपरेंड को जोड़ें "123.14".

किसी भाषा में ज़बरदस्ती की उपस्थिति में, सूक्ष्म प्रोग्रामिंग गलतियों से बचने के लिए प्रोग्रामर को ऑपरेंड प्रकार और ऑपरेशन परिणाम प्रकार के बारे में विशिष्ट नियमों के बारे में पता होना चाहिए।

प्रोग्रामिंग भाषाओं में ऑपरेटर सुविधाएँ

निम्न तालिका कई प्रोग्रामिंग भाषाओं में ऑपरेटर सुविधाओं को दिखाती है:

Programming language Nonalphanumeric operator symbols Alphanumeric operator symbols Prefix Infix Postfix Precedence Associativity Overloading Programmer-defined overloading Programmer-defined operator symbols
ALGOL 68 +* ** * / % %* %× - + < <= >= > = /= & -:= +:= *:= /:= %:= %*:= +=: :=: :/=:

(All operators have bold Alphanumeric equivalents, c.f. next column. Some have non ASCII equivalents, c.f. below.) ¬ +× ⊥ ↑ ↓ ⌊ ⌈ × ÷ ÷× ÷* □ ≤ ≥ ≠ ∧ ∨ ×:= ÷:= ÷×:= ÷*:= %×:= :≠:

not abs arg bin entier leng level odd repr round shorten i shl shr up down lwb upb lt le ge gt eq ne and or over mod elem minusab plusab timesab divab overab modab plusto is isnt Yes Yes No Yes (prefix operators always have priority 10) Infix operators are left associative, prefix operators are right associative Yes Yes Yes
APL + - × ÷ ⌈ ⌊ * ⍟ | ! ○ ~ ∨ ∧ ⍱ ⍲ < ≤ = ≥ > ≠ . @ ≡ ≢ ⍴ , ⍪ ⍳ ↑ ↓ ? ⍒ ⍋ ⍉ ⌽ ⊖ ∊ ⊥ ⊤ ⍎ ⍕ ⌹ ⊂ ⊃ ∪ ∩ ⍷ ⌷ ∘ → ← / ⌿ \ ⍀ ¨ ⍣ & ⍨ ⌶ ⊆ ⊣ ⊢ ⍠ ⍤ ⌸ ⌺ ⍸ Alphanumeric symbols need a ⎕ before the keyword Yes (first-order functions only) Yes Yes (higher-order functions only) Higher-order functions precede first-order functions Higher-order functions are left associative, first-order functions are right associative Yes Yes Yes (alphanumeric only)
C () [] -> . ! ~ ++ -- + - * & / % << >> < <= > >= == != ^ | && || ?: = += -= *= /= %= &= ^= sizeof Yes Yes Yes Yes Yes Yes No No
C++ (more) sizeof typeid new delete throw decltype static_cast dynamic cast reinterpret_cast const_cast Yes Yes Yes Yes Yes Yes Yes No
C# (more) Same as C/C++, along with ?. ?[] ?? ??= sizeof nameof new stackalloc await throw checked unchecked is as delegate default true false
LINQ: from select where group...by group...by...into join...in...on...equals join...in...on...equals...into orderby orderby...descending
Roslyn-only: __makeref __refvalue __reftype
Yes Yes Yes Yes Yes Yes Yes No
Java Same as C/C++ new throw instanceof Yes Yes Yes Yes Yes Yes No No
Eiffel [] + - * / // = /= not and or implies "and then" "or else" Yes Yes No Yes Yes No Yes Yes
Haskell + - * / ^ ^^ ** == /= > < >= <= && || >>= >> $ $! . ++ !! : Many more in common libraries The function's name must be put into backticks Yes Yes No Yes Yes Yes, using Type classes Yes
Pascal * / + - = < > <> <= >= := not div mod and or in Yes Yes No Yes Yes Yes No No
Perl -> ++ -- ** ! ~ \ + - . =~ !~ * / % < > <= >= == != <=> ~~ & | ^ && || ' print sort chmod chdir rand and or not xor lt gt le ge eq ne cmp x Yes Yes Yes Yes Yes Yes Yes No
PHP [] ** ++ -- ~ @![7] * / % + - . << >> < <= > >= == != === !== <> <=> & ^ | && || ?? ?: = += -= *= **= /= .= %= &= |= ^= <<= >>= clone new unset print echo isset instanceof and or xor Yes Yes Yes Yes Yes No No No
PL/I ( ) -> + - * / ** > ¬> >= = ¬= <= < ¬< ¬ & | || Yes Yes No Yes Yes No No No
Prolog :- ?- ; , . =.. = \= < =< >= > == \== - + / * spy nospy not is mod Yes Yes Yes Yes Yes No No Yes
Raku ++ -- ** ! ~ ~~ * / + - . < > <= >= == != <=> & | ^ && || // [8] print sort chmod chdir rand and or not xor lt gt le ge eq ne leg cmp x xx Yes Yes Yes Yes Yes Yes Yes Yes[9]
Seed7 {} [] -> ** ! + - * / << >> & >< | = <> > >= < <= <& := +:= -:= *:= /:= <<:= >>:= &:= @:= conv varConv parse conj div rem mdiv mod times mult in not and or digits lpad rpad lpad0 Yes Yes Yes Yes Yes Yes Yes Yes
Smalltalk (yes - Up to two characters[10]) Alphanumeric symbols need a colon after the keyword No Yes Yes No No Yes Yes Yes
Swift Any Unicode symbol string except ., including ! ~ + - * / % =+ =- =* =/ =% &+ &- &* =&+ =&- =&* && || << >> & | ^ == != < <= > >= ?? ... ..< in standard library is as as? Yes Yes Yes Yes (defined as partial order in precedence groups) Yes (defined as part of precedence groups) Yes Yes Yes
Visual Basic .NET () . ! ?() ?. ?! + - * / \ & << >> < <= > >= ^ <> = += -= *= /= \= &= ^= <<= >>= New Await Mod Like Is IsNot Not And AndAlso Or OrElse Xor If(...,...) If(...,...,...) GetXmlNamespace(...) GetType(...) NameOf(...) TypeOf...Is TypeOf...IsNot DirectCast(...,...) TryCast(...,...) CType(...,...) CBool(...) CByte(...) CChar(...) CDate(...) CDec(...) CDbl(...) CInt(...) CLng(...) CObj(...) CSByte(...) CShort(...) CSng(...) CStr(...) CUInt(...) CULng(...) CUShort(...)
LINQ: From Aggregate...Into Select Distinct Where <Order By>...[Ascending|Descending] Take <Take While> Skip <Skip While> Let Group...By...Into Join...On <Group Join...On...Into>
Yes Yes Yes Yes Yes Yes Yes No


यह भी देखें

टिप्पणियाँ

  1. Conversely a right-associative operator with its right argument, though this is rarer.
  2. Introducing a new operator changes the lexical specification of the language, which changes the lexical analysis. The arity and precedence of the operator is then part of the phrase syntax of the language, which changes the phrase-level analysis. For example, adding an operator @ requires lexing and tokenizing this character, and the phrase structure (syntax tree) depends on the arity and precedence of this operator.


इस पेज में लापता आंतरिक लिंक की सूची

  • अधिक से अधिक चिह्न
  • प्रोग्रामिंग की भाषाएँ
  • सिंटेक्स (प्रोग्रामिंग भाषाएं)
  • वस्तु (कंप्यूटर विज्ञान)
  • क्षेत्र (कंप्यूटर विज्ञान)
  • कार्रवाई के आदेश
  • समारोह (कंप्यूटर विज्ञान)
  • अभिव्यक्ति (कंप्यूटर विज्ञान)
  • कैस्केडिंग विधि
  • सी और सी ++ में ऑपरेटर्स
  • सही
  • अंकगणितीय ऑपरेशन
  • शाब्दिक विश्लेषण
  • तीन तरह की तुलना
  • केंद्रीय प्रसंस्करण इकाइयां
  • स्ट्रिंग संयोजन

संदर्भ

  1. "ऑपरेटर इनपुट फॉर्म-वोल्फ्राम लैंग्वेज डॉक्यूमेंटेशन". reference.wolfram.com.
  2. "मैक्सिमा 5.42.0 मैनुअल: 7. ऑपरेटर्स". maxima.sourceforge.net.
  3. "उपसर्ग, पोस्टफिक्स और सर्कमफिक्स ऑपरेटर्स". mythryl.org.
  4. "ऑपरेटर्स". doc.perl6.org.
  5. "एसडब्ल्यूआई-प्रोलॉग -- ऑप/3". www.swi-prolog.org.
  6. "एक ऑपरेटर घोषित करें". seed7.sourceforge.net.
  7. "PHP: Error Control Operators - Manual". php.net.
  8. "Operators". docs.perl6.org.
  9. "Functions". docs.perl6.org.
  10. Goldberg, Adele. "Smalltalk-80: The Language and its Implementation, p. 27, ISBN 0-201-11371-6" (PDF).