सहकारिता क्या है (एक ऑपरेटर के लिए) और यह महत्वपूर्ण क्यों है?
अपडेट किया गया: ऑपरेटर संबद्धता
सहकारिता क्या है (एक ऑपरेटर के लिए) और यह महत्वपूर्ण क्यों है?
अपडेट किया गया: ऑपरेटर संबद्धता
जवाबों:
ऑपरेटरों के लिए, सहकारिता का अर्थ है कि जब एक ही ऑपरेटर एक पंक्ति में दिखाई देता है, तो हम किस ऑपरेटर को लागू करते हैं। निम्नलिखित में, Q
ऑपरेटर होने दें
a Q b Q c
यदि Q
सहयोगी छोड़ दिया जाता है, तो यह मूल्यांकन करता है
(a Q b) Q c
और अगर यह सही सहयोगी है, तो यह मूल्यांकन करता है
a Q (b Q c)
यह महत्वपूर्ण है, क्योंकि यह एक अभिव्यक्ति का अर्थ बदल देता है। पूर्णांक अंकगणित के साथ विभाजन ऑपरेटर पर विचार करें, जो कि सहयोगी है
4 / 2 / 3 <=> (4 / 2) / 3 <=> 2 / 3 = 0
यदि यह सही सहयोगी थे, तो यह एक अपरिभाषित अभिव्यक्ति का मूल्यांकन करेगा, क्योंकि आप शून्य से विभाजित होंगे
4 / 2 / 3 <=> 4 / (2 / 3) <=> 4 / 0 = undefined
expr -> expr + term;
, साहचर्य छोड़ दिया गया है और expr -> term + expr
सही सहयोगी है।
a * b / c
मूल्यांकन कैसे होगा यदि *
वाम-सहयोगी /
होगा लेकिन सही सहयोगी होगा? फिर विरोधाभास है। इसलिए मुझे लगता है कि जब एक से अधिक ऑपरेटरों को कवर करना चाहते हैं, तो "जब एक ही प्रक्रिया और सहानुभूति के साथ ऑपरेटर" कहने की आवश्यकता होती है।
तीन तरह की सहानुभूति होती है:
प्रोग्रामिंग भाषाओं में संचालन का क्रम
गणित में साहचर्य संपत्ति इसके अलावा (+) जैसे ऑपरेटरों की संपत्ति है। यह गुण आपको किसी स्टेटमेंट के मूल्य को बदले बिना कोष्ठक को पुनर्व्यवस्थित करने की अनुमति देता है, अर्थात:
(a + b) + c = a + (b + c)
प्रोग्रामिंग भाषाओं में, एक ऑपरेटर की सहानुभूति (या शुद्धता) एक संपत्ति है जो यह निर्धारित करती है कि अनुपस्थिति में एक ही वरीयता के ऑपरेटरों को कैसे वर्गीकृत किया जाता है को कोष्ठक है; प्रत्येक ऑपरेटर का मूल्यांकन किस क्रम में किया जाता है। यह प्रोग्रामिंग भाषाओं के बीच अंतर कर सकता है।
सीपीयू कैश में, अनुरूपता प्रदर्शन के अनुकूलन की एक विधि है।
सरल!!
Left Associative means we evaluate our expression from left to right
Right Associative means we evaluate our expression from right to left
हम जानते हैं *, /, और% में एक ही मिसाल है, लेकिन अनुरूपता के अनुसार, उत्तर बदल सकता है:
उदाहरण के लिए: हमारे पास अभिव्यक्ति है: 4 * 8/2% 5
Left associative: (4 * 8) / 2 % 5 ==> (32 / 2) % 5 ==> 16 % 5 ==> 1
Right associative: 4 * 8 /(2 % 5) ==> 4 * ( 8 / 2) ==> 4 * 4 ==> 16
2 % 5
मूल्यांकन करता है 2
, नहीं 0
।
यदि आप "ऑपरेटर संघात्मकता" का उल्लेख कर रहे हैं - तो यह है कि कैसे एक भाषा निर्धारित करती है कि एक ही वरीयता के ऑपरेटरों को कोष्ठक की अनुपस्थिति में कैसे वर्गीकृत किया जाता है।
उदाहरण के लिए, C- आधारित भाषाओं में + और - ऑपरेटरों की एक ही पूर्वता है। जब आप एक अभिव्यक्ति लिखते हैं जो उन दोनों (कोष्ठक के बिना) का उपयोग करता है, तो संकलक को यह निर्धारित करना होगा कि उन्हें किस क्रम में मूल्यांकन करना है।
यदि आप 12 - 5 + 3 लिखते हैं, तो संभावित मूल्यांकन में शामिल हैं:
जिस क्रम में आप अभिव्यक्ति का मूल्यांकन करते हैं, उसके आधार पर आप विभिन्न परिणाम प्राप्त कर सकते हैं। सी-आधारित भाषाओं में, + और - ने सहानुभूति छोड़ दी है, जिसका अर्थ है कि ऊपर की अभिव्यक्ति पहले मामले के रूप में मूल्यांकन करेगी।
सभी भाषा में पूर्वता और सहानुभूति दोनों के लिए दृढ़ता से परिभाषित नियम हैं। आप यहां C # के नियमों के बारे में अधिक जान सकते हैं । ऑपरेटर के सामान्य अवधारणाओं संबद्धता और पूर्वता विकिपीडिया पर अच्छी तरह से शामिल हैं।
यह उसी वरीयता के ऑपरेटरों के लिए मूल्यांकन का क्रम है। बाएँ या बाएँ आदेश मामलों के लिए सही है। के लिये
3 - 2 - 1
अगर यह सही करने के लिए बाएँ है, तो यह है
(3 - 2) - 1
और 0. अगर यह बाएँ करने के लिए सही है, तो यह है
3 - (2 - 1)
और यह 2. अधिकांश भाषाओं में, हम कहते हैं कि माइनस ऑपरेटर के पास LEIT TO RIGHT सहानुभूति है।
इस बारे में स्थिति 3 - 2 - 1
तुच्छ लग सकती है, यदि दावा है, "बेशक हम इसे बाएं से दाएं करते हैं"। लेकिन अन्य मामलों में, जैसे कि रूबी में या नोडजेएस में किया गया:
$ irb
2.6.3 :001 > 2 ** 3 ** 2
=> 512
**
ऑपरेटर "की शक्ति के लिए" है। समरूपता दाएं से बाएं है। और यह है
2 ** (3 ** 2)
जो है 2 ** 9
, अर्थात, 512
के बजाय
(2 ** 3) ** 2
जो है 8 ** 2
, अर्थात 64
।
मुझे लगता है कि आप ऑपरेटर की सहानुभूति का मतलब है ...
यह एक ऑपरेटर को ऑपरेटरों के बंधन का आदेश है। मूल रूप से:
ए - बी + सी
के रूप में मूल्यांकन किया जा सकता है (मान - और + एक ही पूर्वता है):
((a - b) + c) या,
(a - (b + c))
यदि ऑपरेटरों को सहयोगी (बाएं ऑपरेंड को तुरंत बाँध दिया जाता है) छोड़ दिया जाता है, तो इसका मूल्यांकन पहले के रूप में किया जाएगा। यदि वे सही सहयोगी हैं, तो इसका मूल्यांकन दूसरे के रूप में किया जाएगा।
हम सभी जानते हैं कि पूर्वगामीता महत्वपूर्ण है लेकिन एक अभिव्यक्ति के अर्थ की व्याख्या करने में सहयोगीता है। एक बहुत ही सरल परिचय के लिए ऑपरेटरों की शक्ति का प्रयास करें ।
प्रोग्रामिंग भाषा अवधारणाओं में संगणना कम्प्यूटेशन के क्रम में आती है। गणना का क्रम अभिव्यक्ति के अर्थ को निर्धारित करता है। इसके दो मुख्य नियम हैं,
- वरीयता नियम
- सहयोगीता नियम
पूर्ववर्ती नियम उस क्रम को परिभाषित करते हैं जिसमें विभिन्न प्रकार के "आसन्न" ऑपरेटरों का मूल्यांकन किया जाता है। हर प्रोग्रामिंग लैंग्वेज की अपने ऑपरेटर्स के संबंध में अपनी खुद की ऑपरेटर मिसाल है।
संघवाद पर वापस आते हुए,
यह उसी पूर्वता के साथ आसन्न संचालन के निष्पादन के आदेश को परिभाषित करता है। इसके 3 स्वाद हैं,
बाएं-संघात्यता
सम-समरूपता
गैर-संघातता
यदि एक ऑपरेटर बाएं-साहचर्य है तो यह बाएं से दाएं का मूल्यांकन करता है, यदि यह सही-सहयोगी है तो यह दाएं से बाएं से मूल्यांकन करता है।