C++ میں یونری آپریٹر

C My Ywnry Apry R



C++ میں، unary آپریٹر ایک آپریٹر ہے جو صرف ایک آپرینڈ پر کام کرتا ہے۔ یونری آپریٹرز ایک واحد متغیر یا اظہار کے ساتھ منسلک قدر کی ہیرا پھیری کو فعال کرکے C++ میں اہم کردار ادا کرتے ہیں۔ ان ورسٹائل آپریٹرز کو مختلف سیاق و سباق میں استعمال کیا جا سکتا ہے جیسے متغیر کو بڑھانا یا کم کرنا، عددی قدر کے نشان کو تبدیل کرنا، یا منطقی نفی کرنا۔ یہ مضمون C++ میں یونری آپریٹرز کو ان کی اقسام اور ایپلیکیشنز کا احاطہ کرکے اور بہتر تفہیم کے لیے متعدد مثالیں فراہم کرتا ہے۔

C++ متعدد یونری آپریٹرز کو سپورٹ کرتا ہے، ہر ایک متغیر کو جوڑ توڑ میں ایک منفرد مقصد فراہم کرتا ہے۔ آئیے انکریمنٹ اور ڈیکریمنٹ آپریٹرز کے ساتھ شروع کریں جو عام طور پر لوپس اور مختلف الگورتھم میں استعمال ہوتے ہیں۔

مثال 1: اضافہ (++) اور کمی (-) آپریٹرز

انکریمنٹ (++) اور ڈیکریمنٹ (–) یونری آپریٹرز C++ میں ایک متغیر کی قدر کو بالترتیب 1 تک بڑھا یا گھٹا کر تبدیل کرنے کے بنیادی ٹولز ہیں۔ انکریمنٹ آپریٹر (++) متغیر کی قدر میں 1 کا اضافہ کرتا ہے، جبکہ ڈیکریمنٹ آپریٹر (–) 1 کو گھٹاتا ہے۔ ان آپریٹرز کو انٹیجر، فلوٹنگ پوائنٹ، اور پوائنٹر متغیرات پر لاگو کیا جا سکتا ہے، جو ان کے استعمال میں لچک فراہم کرتے ہیں۔







آئیے ایک عملی مثال کے ذریعے ان آپریٹرز کو دریافت کریں:



# شامل کریں
استعمال کرتے ہوئے نام کی جگہ std ;

int مرکزی ( )
{

int کاؤنٹر = 0 ;

// انکریمنٹ آپریٹر
cout << 'ابتدائی قیمت: ' << کاؤنٹر << endl ;

کاؤنٹر ++ ;
cout << 'اضافہ کے بعد قدر:' << کاؤنٹر << endl ;

// ڈیکریمنٹ آپریٹر
کاؤنٹر -- ;
cout << 'کمی کے بعد قدر:' << کاؤنٹر << endl ;

واپسی 0 ;
}

اس سادہ C++ پروگرام میں '#include ' کے ساتھ ضروری ان پٹ/آؤٹ پٹ اسٹریم لائبریری شامل ہے۔ 'main()' فنکشن کے اندر، ہم 'counter' نامی ایک عدد متغیر کو انسٹینٹیٹ کرتے ہیں اور اسے 0 کی ابتدائی ویلیو کے ساتھ تفویض کرتے ہیں۔ 'cout' سٹیٹمنٹ کا استعمال کرتے ہوئے، ہم 'counter' کی ابتدائی قدر کو کنسول پر پرنٹ کرتے ہیں، فراہم کرتے ہیں۔ ہمارے مظاہرے کے لیے ایک بنیادی خط۔ آگے بڑھتے ہوئے، انکریمنٹ آپریٹر (کاؤنٹر++) کا استعمال 'کاؤنٹر' متغیر کی قدر کو 1 تک بڑھانے کے لیے کیا جاتا ہے۔



اس آپریشن کے بعد، 'کاؤنٹر' کی تازہ ترین قیمت ایک اور 'cout' بیان کا استعمال کرتے ہوئے ظاہر ہوتی ہے۔ اس کے بعد، ہم 'کاؤنٹر' کی قدر کو 1 تک کم کرنے کے لیے ڈیکریمنٹ آپریٹر (کاؤنٹر—) کا استعمال کرتے ہیں۔ نتیجہ بعد میں کنسول پر ظاہر ہوتا ہے۔ آخر کار، پروگرام 'واپسی 0؛' کے ساتھ ختم ہوتا ہے۔ بیان جو کامیاب عمل درآمد کی نشاندہی کرتا ہے۔





آؤٹ پٹ امیج ابتدائی قدر، انکریمنٹ کے بعد کی قدر، اور گھٹی ہوئی قدر دکھاتی ہے۔



مثال 2: مثبت (+) اور منفی (-) آپریٹرز

جب کہ مثبت یونری آپریٹر شاذ و نادر ہی استعمال ہوتا ہے، منفی آپریٹر متغیر کے نشان کو تبدیل کرنے کے لیے بنیادی حیثیت رکھتا ہے۔

# شامل کریں
استعمال کرنا نام کی جگہ std ;

int مرکزی ( ) {
int مثبت قدر = 10 ;
int منفی قدر = - مثبت قدر ;

cout << 'مثبت قدر:' << مثبت قدر << endl ;
cout << 'منفی قدر:' << منفی قدر << endl ;

واپسی 0 ;
}

ہم اس مثال کے کوڈ کے لیے دو عدد متغیرات شروع کرتے ہیں جو کہ 'مثبت ویلیو' اور 'منفی قدر' ہیں۔ 'مثبت ویلیو' کو 10 کی قدر کے ساتھ تفویض کیا گیا ہے۔ اس کے بعد، ہم 'منفی قدر' کا اعلان کرتے ہیں اور یونری مائنس آپریٹر کا استعمال کرتے ہوئے 'مثبت ویلیو' کی نفی کے ساتھ تفویض کرتے ہیں۔ یہ آپریٹر اصل قدر کے نشان کو مؤثر طریقے سے تبدیل کرتا ہے۔ اس کے بعد ہم کنسول پر مثبت اور منفی دونوں آؤٹ پٹ کو ظاہر کرنے کے لیے 'cout' بیان کا استعمال کرتے ہیں۔ آخر میں، پروگرام 0 لوٹاتا ہے جو مین فنکشن کی کامیاب تکمیل کی نشاندہی کرتا ہے۔

جب عملدرآمد کیا جاتا ہے، تو یہ پروگرام مثبت اور منفی اقدار کو آؤٹ پٹ کرتا ہے۔

مثال 3: منطقی نہیں (!) آپریٹر

C++ میں یونری آپریٹر، '!' سے ظاہر ہوتا ہے۔ علامت، منطقی نہیں آپریٹر کے طور پر جانا جاتا ہے۔ یہ ایک دیئے گئے اظہار کی سچائی قدر کو الٹنے کے لیے ڈیزائن کیا گیا ہے۔ یہ ایک واحد آپرینڈ پر کام کرتا ہے جو عام طور پر ایک منطقی اظہار یا شرط ہے۔ منطقی NOT آپریشن ایک 'سچ' نتیجہ برآمد کرتا ہے جب آپرینڈ 'غلط' ہوتا ہے اور جب آپرینڈ 'سچ' ہوتا ہے تو 'غلط' نتیجہ برآمد ہوتا ہے۔

یہاں ایک سادہ سی مثال ہے جو منطقی نہیں آپریٹر کے استعمال کو ظاہر کرتی ہے:

# شامل کریں
استعمال کرتے ہوئے نام کی جگہ std ;

int مرکزی ( ) {
bool سچ ہے = سچ ;
bool غلط ہے = جھوٹا ;

bool نتیجہ نہیں سچ = ! سچ ہے ;
bool نتیجہ نہیں غلط = ! غلط ہے ;

cout << 'اصل قدر:' << سچ ہے << '، نہیں کے بعد:' << نتیجہ نہیں سچ << endl ;
cout << 'اصل قدر:' << غلط ہے << '، نہیں کے بعد:' << نتیجہ نہیں غلط << endl ;

واپسی 0 ;
}

اس مثال میں، ہم دو بولین متغیرات کا اعلان کرتے ہیں، 'isTrue' اور 'isFalse'۔ پھر ہم ہر متغیر پر منطقی NOT آپریٹر کا اطلاق کرتے ہیں، نتائج کو بالترتیب 'resultNotTrue' اور 'resultNotFalse' میں محفوظ کرتے ہیں۔ پروگرام بعد میں اصل قدروں کو پرنٹ کرتا ہے اور دونوں متغیرات کے لیے منطقی NOT آپریشن کے نتائج۔

اس پروگرام کو انجام دینے پر، ہم دیکھیں گے کہ منطقی NOT آپریٹر 'isTrue' (ابتدائی طور پر سچ پر سیٹ) کی سچائی قدر کو ریورس کرتا ہے، اسے غلط بناتا ہے۔ اسی طرح، یہ 'isFalse' (اصلی طور پر غلط) کی سچائی قدر کو الٹ دیتا ہے، جو سچ نکلتا ہے۔

آؤٹ پٹ واضح طور پر سچائی اقدار کے الٹ کو واضح کرتا ہے جو منطقی نہیں آپریٹر کے ذریعہ حاصل کیا جاتا ہے۔

مثال 4: Bitwise NOT (~) آپریٹر

C++ میں bitwise NOT آپریٹر (~) unary آپریٹر ہے جو اپنے آپرینڈ کے ہر بٹ کی bitwise negation کرتا ہے۔ یہ بنیادی ڈیٹا کی اقسام کے ساتھ کام کرتا ہے، خاص طور پر انٹیگرل، جیسے انٹیجرز۔ نتیجہ آپرینڈ میں ہر انفرادی بٹ کو الٹ کر، 0s کو 1s اور 1s کو 0s میں تبدیل کر کے حاصل کیا جاتا ہے۔

اس کے استعمال کو واضح کرنے کے لیے، درج ذیل کوڈ کے ٹکڑوں پر غور کریں:

# شامل کریں
استعمال کرتے ہوئے نام کی جگہ std ;

int مرکزی ( ) {
int اصل قدر = 5 ;

int نتیجہ BitwiseNot = ~ اصل قدر ;

cout << 'اصل قدر:' << اصل قدر << '، Bitwise NOT کے بعد:' << نتیجہ BitwiseNot << endl ;

واپسی 0 ;
}

اس مثال میں، ہم '5' کی قدر کے ساتھ ایک 'originalValue' انٹیجر متغیر کا اعلان کرتے ہیں۔ اگلا، ہم اس متغیر پر bitwise NOT آپریٹر (~) استعمال کرتے ہیں۔ اس متغیر کا نتیجہ 'resultBitwiseNot' میں محفوظ ہے۔ پروگرام پھر 'cout' بیان کو استعمال کرکے bitwise NOT آپریشن کے بعد اصل قدر اور نتیجہ پرنٹ کرتا ہے۔

جب ہم اس پروگرام کو چلاتے ہیں، تو ہم دیکھیں گے کہ bitwise NOT آپریٹر 'originalValue' کی بائنری نمائندگی کے ہر بٹ کو الٹ دیتا ہے، جس کے نتیجے میں ایک نئی قدر پیدا ہوتی ہے۔

مثال 5: ایڈریس اور انڈائریکشن آپریٹرز

آپریٹر کا پتہ، '&' علامت سے ظاہر ہوتا ہے، متغیر کی میموری کی جگہ کو بازیافت کرنے کا مقصد پورا کرتا ہے۔ یہ متغیر کی طرف ایک پوائنٹر لوٹاتا ہے جو اس کی قدر تک بالواسطہ رسائی کے قابل بناتا ہے۔ indirection یا dereference operator (*) وہ قدر حاصل کرتا ہے جو میموری کے مقام پر ذخیرہ کیا جاتا ہے جو ایک پوائنٹر کے ذریعہ بیان کیا جاتا ہے۔ یہ بالواسطہ طور پر ایک پوائنٹر کے ذریعے اصل ڈیٹا کے ساتھ کام کرنے کا ایک طریقہ فراہم کرتا ہے۔

آئیے ایک مثال کے ساتھ تصور کو سمجھتے ہیں:

# شامل کریں
استعمال کرتے ہوئے نام کی جگہ std ;

int مرکزی ( ) {
int قدر = 99 ;

cout << 'اصل قدر:' << قدر << endl ;

int * ptr = اور قدر ;
cout << 'میموری ایڈریس:' << ptr << endl ;

int retrievedValue = * ptr ;
cout << 'حاصل شدہ قدر:' << retrievedValue << endl ;

واپسی 0 ;
}

یہ کوڈ ایڈریس اور انڈائریکشن آپریٹرز کے استعمال کی مثال دیتا ہے۔ سب سے پہلے، 'ویلیو' نامی ایک انٹیجر ویری ایبل 99 کی ویلیو کے ساتھ شروع کیا جاتا ہے۔ 'ویلیو' کی اصل قیمت پھر کنسول میں آؤٹ پٹ ہوتی ہے۔ اس کے بعد، ایک 'ptr' پوائنٹر متغیر کا اعلان کیا جاتا ہے، اور ایڈریس آف آپریٹر (&) کو 'value' کا میموری ایڈریس 'ptr' کو تفویض کرنے کے لیے لگایا جاتا ہے۔ پروگرام پھر اس میموری ایڈریس کو آؤٹ پٹ کرتا ہے، 'ایڈریس' آپریٹر کے بنیادی آپریشن کو ظاہر کرتا ہے۔

اس کے بعد، ایک نیا انٹیجر متغیر جو 'retrievedValue' ہے کا اعلان کیا جاتا ہے، اور indirection operator (*) کو اس قدر کو بازیافت کرنے کے لیے استعمال کیا جاتا ہے جو 'ptr' کی طرف اشارہ کردہ میموری ایڈریس پر محفوظ ہوتی ہے۔ بازیافت شدہ قیمت کو پھر کنسول میں آؤٹ پٹ کیا جاتا ہے۔

نتیجہ

اس مضمون نے C++ میں unary آپریٹرز کی ایک جامع تلاش فراہم کی ہے۔ ہم نے یونری آپریٹرز کو مختلف اقسام میں درجہ بندی کرکے شروع کیا جس میں ریاضی، منطقی، بٹ وائز، اور ایڈریس اور ڈائریکشن سے متعلق ہیں۔ ان آپریٹرز کے مفید اطلاق کو ظاہر کرنے کے لیے حقیقی دنیا کے حالات کی مثال دی گئی۔ یہ آپریٹرز C++ پروگرامنگ میں اہم کردار ادا کرتے ہیں جو ڈویلپرز کو پوائنٹرز کے ساتھ موثر طریقے سے کام کرنے اور میموری کو منظم کرنے کی اجازت دیتا ہے۔