अपने शीर्षक प्रश्न का उत्तर देने के लिए "क्या कोई प्रोग्रामिंग भाषा गणित में वैरिएबल का उपयोग करती है?": C, C #, Java, C ++, और कोई भी अन्य C शैली भाषा, चर का उपयोग उस तरह से करती है जैसे वे गणित में करती हैं।
आपको बस = के बजाय == का उपयोग करने की आवश्यकता है।
अगर मैं आपका मूल ले लूं
root(square(x)) = abs(x)
तब मैं सिंटैक्स के अलावा किसी भी परिवर्तन के बिना सीधे सी # में अनुवाद कर सकता हूं।
Math.Sqrt(Math.Pow(x,2)) == Math.Abs(x)
यह x के किसी भी मान के लिए सही का मूल्यांकन करेगा जब तक कि आपके द्वारा उपयोग किए जा रहे डेटा प्रकार के लिए x वर्ग से अधिकतम से कम न हो।
(जावा सकल रूप से समान होगा, लेकिन मेरा मानना है कि मठ नाम स्थान थोड़ा अलग है)
यह अगला बिट C # में संकलित करने में विफल रहेगा क्योंकि संकलक यह जानने के लिए पर्याप्त स्मार्ट है कि मैं एक ऑपरेशन के रिटर्न को दूसरे ऑपरेशन में नहीं सौंप सकता।
Math.Sqrt(Math.Pow(x,2)) = Math.Abs(x)
अपरिवर्तनशीलता का इससे कोई लेना-देना नहीं है। आपको अभी भी एक अपरिवर्तनीय भाषा में मान निर्दिष्ट करने की आवश्यकता है और यह पूरी तरह से संभव है कि किसी दिए गए भाषा को ऑपरेटर के रूप में = का उपयोग करके ऐसा करने के लिए चुना जा सकता है।
इस बिंदु को और साबित करते हुए, यह लूप तब तक चलेगा जब तक आप x के कानूनी मूल्यों को समाप्त नहीं कर लेते हैं और एक अतिप्रवाह अपवाद प्राप्त करते हैं:
while (Math.Sqrt(Math.Pow(x, 2)) == Math.Abs(x))
{
++x;
System.Console.WriteLine(x);
}
यही कारण है कि गणितज्ञ असाइनमेंट के लिए = के उपयोग से नफरत करते हैं। यह उन्हें भ्रमित करता है। मुझे लगता है कि इससे आप खुद को भ्रमित कर रहे हैं। अपना उदाहरण लीजिए
y = (x**2)**.5
x *= 2
assert y == abs(x)
जब मैं इसे बीजगणित में बदल देता हूं, तो मुझे यह मिल जाता है:
abs (2x) = रूट (x ^ 2)
बेशक 0. के अलावा अन्य मूल्यों के लिए सही नहीं है। जब आप मूल समीकरण के बाएं हाथ की ओर और दाहिने हाथ की ओर का मूल्यांकन करने के बीच अतिरिक्त कदम जोड़ते हैं तो केवल अपरिवर्तनीयता आपको x के मूल्य को बदलने की त्रुटि से बचाती है। यह वास्तव में नहीं बदलता है कि आप अभिव्यक्ति का मूल्यांकन कैसे करते हैं।