Augmented assignment
آگمینٹڈ اسائنمنٹ (یا کمپاؤنڈ اسائنمنٹ) وہ نام ہے جو بعض پروگرامنگ زبانوں میں مخصوص اسائنمنٹ آپریٹرز کو دیا جاتا ہے (خاص طور پر وہ جو سی سے اخذ کیے گئے ہیں)۔ ایک آگمینٹڈ اسائنمنٹ عام طور پر ایک بیان کو تبدیل کرنے کے لیے استعمال کیا جاتا ہے جہاں ایک آپریٹر ایک متغیر کو اپنے دلائل میں سے ایک کے طور پر لیتا ہے اور پھر نتیجہ کو اسی متغیر کو واپس تفویض کرتا ہے۔ ایک سادہ سی مثال x + = 1 ہے جسے x = x + 1 تک بڑھایا جاتا ہے۔ اسی طرح کی تعمیرات اکثر مختلف بائنری آپریٹرز کے لیے دستیاب ہوتی ہیں۔ عام طور پر، اس خصوصیت کو پیش کرنے والی زبانوں میں، زیادہ تر آپریٹرز جو متغیر کو اپنے دلائل میں سے ایک کے طور پر لے سکتے ہیں اور اسی قسم کا نتیجہ واپس کر سکتے ہیں، ان کے پاس ایک بڑھا ہوا تفویض ہوتا ہے جو نتیجہ کو متغیر کو واپس تفویض کرتا ہے، بشمول ریاضی کے آپریٹرز، بٹ شفٹ آپریٹرز، اور بٹ وائز آپریٹرز۔ بحث مثال کے طور پر، مندرجہ ذیل بیان یا اس کی کچھ تغیرات بہت سے پروگراموں میں مل سکتی ہیں: x = x + 1 اس کا مطلب ہے "متغیر میں ذخیرہ شدہ نمبر تلاش کریں، اس میں 1 شامل کریں، اور اضافے کے نتیجے کو متغیر میں محفوظ کریں"۔ یہ جتنا آسان لگتا ہے، اس میں ایک نااہلی ہو سکتی ہے، اس میں متغیر کے مقام کو دو بار دیکھنا پڑتا ہے اگر مرتب کرنے والا یہ نہیں پہچانتا ہے کہ اظہار کے دو حصے ایک جیسے ہیں: یہ کسی صف عنصر یا دیگر پیچیدگی کا حوالہ ہو سکتا ہے۔ اس کے مقابلے میں، یہاں اگمینٹڈ اسائنمنٹ ورژن ہے: x + = 1 اس ورژن کے ساتھ، ایک مرتب کے لیے کوڈ تیار کرنے میں ناکام ہونے کا کوئی بہانہ نہیں ہے جو صرف ایک بار متغیر کے مقام کو دیکھتا ہے، اور اسے اپنی جگہ پر تبدیل کرتا ہے، اگر یقینا مشین کوڈ اس طرح کی ترتیب کی حمایت کرتا ہے۔ مثال کے طور پر، اگر x ایک سادہ متغیر ہے، تو مشین کوڈ کی ترتیب لوڈ x ایڈ 1 اسٹور x جیسی کچھ ہو سکتی ہے اور دونوں فارموں کے لیے ایک ہی کوڈ تیار کیا جائے گا۔ لیکن اگر کوئی خاص اوپی کوڈ ہے، تو یہ ایم ڈی ایم ایکس، 1 ہو سکتا ہے جس کا مطلب ہے 1 کو ایکس میں شامل کرکے "میموری میں ترمیم کریں"، اور ایک بہتر مرتب کرنے والا دونوں فارموں کے لیے ایک ہی کوڈ تیار کرے گا۔ کچھ مشین کوڈز آئی این سی اور ڈی ای سی آپریشنز پیش کرتے ہیں (ایک کو شامل کرنے یا گھٹانے کے لیے)، دوسرے ایک کے علاوہ دوسرے مستقلات کی اجازت دے سکتے ہیں۔ زیادہ عام طور پر، شکل x? = اظہار ہے جہاں کچھ آپریٹر کا مطلب ہے (ہمیشہ نہیں)، اور مدد کے لیے کوئی خاص آپ کوڈ نہیں ہو سکتے ہیں۔ اب بھی یہ امکان موجود ہے کہ اگر ایک پیچیدہ وجود ہے تو مرتب کرنے والے کو رسائی میں نقل سے بچنے کے لیے حوصلہ افزائی کی جائے گی، اور یقینا، اگر لمبا نام ہے، تو ٹائپنگ کی ضرورت کم ہوگی۔ یہ آخری ALGOL مرتب کرنے والوں میں اسی طرح کی خصوصیت کی بنیاد تھی جو بروس B6700 سسٹمز کے ذریعے پیش کی گئی تھی، جس میں ٹائلڈ علامت کا استعمال کرتے ہوئے متغیر کو تفویض کیا گیا تھا، تاکہ لانگ نام: = x + sqrt (لانگ نام) * 7 ؛ لانگ نام بن جائے: = x + sqrt (~) * 7 ؛ اور اسی طرح۔ یہ صرف x: = ~ + 1 سے زیادہ عام ہے ؛ زیادہ سے زیادہ کوڈ تیار کرنا مرتب کرنے والے کا صوبہ رہے گا۔ سیمنٹکس اظہار پر مبنی پروگرامنگ زبانوں جیسے سی، اسائنمنٹ اور آگمینٹڈ اسائنمنٹ میں تاثرات ہوتے ہیں، جن کی قدر ہوتی ہے۔ یہ پیچیدہ تاثرات میں ان کے استعمال کی اجازت دیتا ہے۔ تاہم، یہ علامتوں کے ایسے سلسلے پیدا کر سکتا ہے جنہیں پڑھنا یا سمجھنا مشکل ہے، اور اس سے بھی بدتر بات یہ ہے کہ ایک غلط ٹائپ آسانی سے گبریش کا ایک مختلف سلسلہ پیدا کر سکتا ہے جسے اگرچہ مرتب کرنے والا قبول کرتا ہے لیکن مطلوبہ نتائج نہیں دیتا ہے۔ دوسری زبانوں میں، جیسے ازگر، تفویض اور بڑھا ہوا تفویض بیانات ہیں، تاثرات نہیں، اور اس طرح پیچیدہ تاثرات میں استعمال نہیں کیا جا سکتا۔ مثال کے طور پر، درج ذیل درست C ہے، لیکن درست ازگر نہیں ہے: a + = b + = c اسائنمنٹ کے ساتھ، ان زبانوں میں آگمینٹڈ اسائنمنٹ رائٹ ایسوسی ایٹیو اسائنمنٹ کی ایک شکل ہے۔ سی کے برعکس، سی + + کے مرکب تفویض کے تاثرات کا اندازہ ایل ویلیو سے ہوتا ہے۔ ایل ویلیو ہونے کے ناطے اسے کسی دوسرے اسائنمنٹ سٹیٹمنٹ کے بائیں ہاتھ پر لکھنے کی اجازت دیتا ہے: int x = 11 ؛ (x * = 2) + = 3 ؛// 25 کمپیوٹڈ اسائنمنٹ مقامات پر x سیٹ کرتا ہے۔ C، C + + اور ازگر جیسی زبانوں میں، ایک آگمینٹڈ اسائنمنٹ جہاں اسائنمنٹ لوکیشن میں فنکشن کالز شامل ہیں، صرف ایک بار فنکشنز کو کال کرنے کا حکم دیا جاتا ہے۔ یعنی بیان میں: میرا _ صف [f1 ()] + = 1 فنکشن f1 کو صرف ایک بار کال کرنے کا حکم دیا گیا ہے۔ اگر کوئی زبان میکرو توسیع کے ذریعے بڑھا ہوا تفویض لاگو کرتی ہے: میرا _ صف [f1 ()] = میرا _ صف [f1 ()] + 1 تو f1 کو دو بار بلایا جاتا ہے۔ C، C + +، اور C #میں، اسائنمنٹ آپریٹر = ہے، جس میں مندرجہ ذیل اضافہ کیا گیا ہے: ان میں سے ہر ایک کو مذکورہ زبانوں میں کمپاؤنڈ اسائنمنٹ آپریٹر کہا جاتا ہے۔ معاون زبانیں مندرجہ ذیل فہرست، اگرچہ مکمل یا سبھی شامل نہیں ہے، کچھ بڑی پروگرامنگ زبانوں کی فہرست دیتی ہے جو آگمینٹڈ اسائنمنٹ آپریٹرز کی حمایت کرتی ہیں۔ اے پی ایل اے ڈبلیو کے سی سی + + سی #سی ایف ایم ایل ڈی فری پاسکل (ضرورت-ایس سی کمانڈ لائن سوئچ) جاوا اسکرپٹ کوٹلن آبجیکٹ-سی پرل پی ایچ پی ازگر روبی رسٹ اسکالا سسٹم ویریلگ سوئفٹ ویژول بیسک بھی دیکھیں کمپاؤنڈ آپریٹر فیوزڈ آپریشن انکریمنٹ اور ڈکریمنٹ آپریٹرز-آگمینٹڈ اسائنمنٹ کا خصوصی کیس، 1 آئی ای ای ای 754 آگمینٹڈ ریاضی آپریشن حوالہ جات آپریٹرز (پروگرامنگ) کمپیوٹر ریاضی تفویض آپریشن