فہرست کا خانہ
- C++ کیا ہے؟
- C++ کیوں استعمال کریں۔
- خصوصیات
- مقامی ماحولیات کا سیٹ اپ
- C++ بنیادی ان پٹ/آؤٹ پٹ
- معیاری آؤٹ پٹ سٹریم (cout)
- معیاری ان پٹ سٹریم (cin)
- معیاری اختتامی لائن (endl)
- C++ متغیرات
- C++ شناخت کنندگان
- C++ ڈیٹا کی اقسام
- C++ مستقل/لیٹرلز
- C++ اسٹوریج کلاسز
- C++ موڈیفائر کی اقسام
- C++ میں آپریٹرز
- C++ لوپس
- فیصلہ سازی کے بیانات
- C++ فنکشنز
- C++ نمبرز
- C++ Arrays
- C++ سٹرنگز
- C++ پوائنٹرز
- C++ حوالہ جات
- C++ تاریخ اور وقت
- C++ ڈیٹا سٹرکچرز
- C++ کلاسز اور آبجیکٹ
- C++ وراثت
- C++ ایکسیس موڈیفائر
- C++ اوور لوڈنگ
- C++ پولیمورفزم
- C++ ڈیٹا خلاصہ
- C++ ڈیٹا انکیپسولیشن
- C++ خلاصہ کلاسز
- C++ استثنیٰ ہینڈلنگ
- C++ ڈائنامک میموری
- C++ ٹیمپلیٹس
- C++ پری پروسیسرز
- C++ سگنل ہینڈلنگ
- C++ ویب پروگرامنگ
- نتیجہ
- تجویز کردہ مضامین
C++ کیا ہے؟
C++ ایک کراس پلیٹ فارم لینگویج ہے جو اعلیٰ کارکردگی کی ایپلی کیشنز بنانے کے لیے استعمال ہوتی ہے۔ Bjarne Stroustrup نے اسے C زبان میں توسیع کے طور پر تیار کیا۔ C++ پروگرامرز کو سسٹم کے وسائل اور میموری پر کنٹرول دیتا ہے۔ زبان کو 2011، 2014 اور 2017 میں تین اہم بار C++11، C++14، اور C++17 میں اپ ڈیٹ کیا گیا۔
C++ کیوں استعمال کریں۔
- C++ پروگرامنگ کے لیے مقبول ترین زبانوں میں سے ایک ہے۔
- C++ آپریٹنگ سسٹمز، GUIs اور ایمبیڈڈ سسٹمز میں پایا جا سکتا ہے۔
- یہ ایک آبجیکٹ پر مبنی پروگرامنگ لینگویج ہے جو پروگراموں کو ایک واضح ڈھانچہ دیتی ہے اور کوڈ کو دوبارہ استعمال کرنے کی اجازت دیتی ہے، جس سے ترقیاتی اخراجات کم ہوتے ہیں۔
- یہ پورٹیبل ہے اور ایسی ایپلی کیشنز کو تیار کرنے کے لیے استعمال کیا جا سکتا ہے جنہیں متعدد پلیٹ فارمز میں ڈھال لیا جا سکتا ہے۔
- چونکہ C++ C# کے قریب ہے اور جاوا ، یہ پروگرامرز کے لیے C++ یا اس کے برعکس تبدیل کرنا آسان بناتا ہے۔
خصوصیات
- اس کے لیے ایک ہیڈر کی ضرورت ہے۔
- نام کی جگہ استعمال کریں std؛ کمپائلر کو نام کی جگہ استعمال کرنے کے لیے متنبہ کرنے کے لیے std۔
- لائن int main() وہ اہم خصوصیت ہے جہاں پروگرام کا عمل شروع ہوتا ہے۔
- اگلی لائن کٹ جاتی ہے۔<< Hello World; the word Hello World is reflected on the keyboard.
- اگلی لائن 0 لوٹاتی ہے۔ مین () فنکشن ختم ہوجاتا ہے۔
- int a;
- int _ab;
- int a30;
- int 4;
- intxy
- int ڈبل؛
- سچ کی نمائندگی کرنے والی سچائی کی قدر۔
- غلط کی ایک قدر جو غلط کی نمائندگی کرتی ہے۔
- دستخط شدہ
- غیر دستخط شدہ
- طویل
- مختصر
- ریاضی کا آپریٹر
- منطقی آپریٹر
- بٹ وائز آپریٹر
- اسائنمنٹ آپریٹر
- رشتہ دار آپریٹر
- متفرق آپریٹر
- اگر بیان
- اگر ..اور بیانات
- نیسٹڈ اگر بیانات
- اگر-اور-اگر سیڑھی
- جمپ بیانات:
- توڑنا
- جاری رہے
- کے پاس جاؤ
- واپسی
- int - ایک قسم کا عنصر جسے ذخیرہ کرنا ہے۔
- y - صف کا نام
- 4 - صف کا سائز
- سٹرنگز جو سٹرنگ کلاس کی آبجیکٹ ہیں۔
- سی ڈور
- پہلے، ایک پوائنٹر متغیر کی وضاحت کریں۔
- اب متغیر کا پتہ (&) کا استعمال کرتے ہوئے ایک پوائنٹر کو تفویض کریں جو اس متغیر کا پتہ لوٹاتا ہے۔
- (*) کا استعمال کرتے ہوئے ایڈریس میں ذخیرہ شدہ اقدار تک رسائی حاصل کرنا جو اس کے آپرینڈ کے ذریعہ متعین ایڈریس پر واقع متغیر کی قدر لوٹاتا ہے۔
- میں کثیر راستہ وراثت، ایک اخذ شدہ کلاس ایک اور اخذ شدہ کلاس سے بنائی جاتی ہے اور دوسری اخذ شدہ کلاس کی اسی بیس کلاس سے۔ یہ وراثت کی طرف سے تعاون یافتہ نہیں ہے۔ نیٹ زبانیں جیسے C#، F#، وغیرہ۔
- عوام
- نجی
- محفوظ
- کلاس میں عوامی قرار دیے گئے اراکین تک پروگرام میں کہیں سے بھی رسائی حاصل کی جا سکتی ہے۔
- کسی کلاس میں پرائیویٹ قرار دیے گئے ممبران تک صرف کلاس کے اندر سے ہی رسائی حاصل کی جا سکتی ہے۔ کلاس کے باہر کوڈ کے کسی بھی حصے سے ان تک رسائی کی اجازت نہیں ہے۔
- تمام ڈیٹا ممبرز کو نجی بنائیں۔
- ہر ڈیٹا ممبر کے لیے پبلک سیٹر اور گیٹر فنکشنز اس طرح بنائیں کہ سیٹ فنکشن ڈیٹا ممبر کی ویلیو سیٹ کرے اور گیٹ فنکشن ڈیٹا ممبر کی ویلیو حاصل کرے۔
- میموری میں متحرک جگہ بنانا
- اس کا پتہ ایک پوائنٹر میں محفوظ کرنا
- فنکشن ٹیمپلیٹس
- کلاس ٹیمپلیٹس
- وسیع
- فائل کی شمولیت
- مشروط تالیف
- دیگر ہدایات
مقامی ماحولیات کا سیٹ اپ
اگر آپ کے کمپیوٹر پر درج ذیل سافٹ ویئر موجود ہوں تو اچھا ہوگا۔
یہ ایک حقیقی C++ کمپائلر ہے، جو آپ کے سورس کوڈ کو حتمی قابل عمل پروگرام میں مرتب کرنے کے لیے استعمال کیا جائے گا۔ زیادہ تر C++ مرتب کرنے والوں کو اس بات کی پرواہ نہیں ہے کہ آپ اپنے سورس کوڈ کو کیا توسیع دیتے ہیں۔ سب سے زیادہ استعمال ہونے والا کمپائلر GNU C/C++ کمپائلر ہے۔
اسے سافٹ ویئر ٹائپ کرنے کے لیے استعمال کرتا ہے۔ مثالوں میں Windows Notepad، OS Edit، Short، Epsilon، EMACS، اور Vim یا VI کمانڈز شامل ہیں۔ آپ ایڈیٹر کے ساتھ جو فائلیں تیار کرتے ہیں انہیں سورس فائلز کہا جاتا ہے، اور C++ فائلوں کو .cpp، .cp، یا .c کہا جاتا ہے۔ اپنی C++ پروگرامنگ شروع کرنے کے لیے، ایک ٹیکسٹ ایڈیٹر موجود ہونا چاہیے۔
آئیے اب دیکھتے ہیں کہ کلاس، آبجیکٹ، طریقوں اور مثال کے متغیر کا کیا مطلب ہے۔
مثال
|_+_|آؤٹ پٹ
|_+_|آئیے اوپر مذکور پروگرام کے مختلف حصوں کو دیکھتے ہیں۔
C++ بنیادی ان پٹ/آؤٹ پٹ
C++ I/O آپریشن سٹریم کا تصور استعمال کر رہا ہے۔ سٹریم بائٹس یا ڈیٹا کے بہاؤ کی ترتیب ہے۔ یہ کارکردگی کو تیز کرتا ہے۔
اگر بائٹس مین میموری سے کسی ڈیوائس جیسے پرنٹر، ڈسپلے اسکرین، یا نیٹ ورک کنکشن وغیرہ میں بہہ جائیں تو اسے کہا جاتا ہے۔ آؤٹ پٹ آپریشن.
اگر بائٹس کسی ڈیوائس جیسے پرنٹر، ڈسپلے اسکرین، نیٹ ورک کنکشن وغیرہ سے مین میموری میں بہتے ہیں تو اسے کہتے ہیں۔ ایک ان پٹ آپریشن۔
معیاری آؤٹ پٹ سٹریم (cout)
دی لاگت کی ایک پہلے سے طے شدہ چیز ہے۔ ندی کلاس یہ آؤٹ پٹ ڈیوائس کے ساتھ جڑا ہوا ہے، جو عام طور پر ایک ڈسپلے اسکرین ہوتی ہے۔ cout کا استعمال کنسول پر آؤٹ پٹ کو ظاہر کرنے کے لیے اسٹریم انسرشن آپریٹر کے ساتھ شامل ہونے کے لیے کیا جاتا ہے۔
مثال
|_+_|آؤٹ پٹ
|_+_|معیاری ان پٹ سٹریم (cin)
دی جن ایک پہلے سے طے شدہ شے ہے۔ یہ ان پٹ ڈیوائس سے منسلک ہوتا ہے، جو کہ عام طور پر کی بورڈ ہوتا ہے۔ کنسول ان پٹ کو پڑھنے کے لیے سٹریم ایکسٹرکشن آپریٹر (>>) میں شامل ہونے کے لیے cin کا استعمال کیا جاتا ہے۔
مثال
|_+_|آؤٹ پٹ
|_+_|معیاری اختتامی لائن (endl)
دی endl کلاس کا ایک پہلے سے طے شدہ آبجیکٹ ہے۔ یہ نئے لائن حروف داخل کرنے اور ندی کو فلش کرنے کے لیے استعمال ہوتا ہے۔
مثال
|_+_|آؤٹ پٹ
|_+_|C++ متغیرات
ایک متغیر میموری کی جگہ کا نام ہے۔ یہ ڈیٹا ذخیرہ کرنے کے لیے استعمال ہوتا ہے۔ قدر کو تبدیل کیا جا سکتا ہے، اور اسے کئی بار دوبارہ استعمال کیا جاتا ہے۔ یہ آسانی سے شناخت کرنے کے لیے ایک علامت کے ذریعے میموری کی جگہ کی نمائندگی کرنے کا ایک طریقہ ہے۔ ایک متغیر میں حروف تہجی، انڈر سکور اور ہندسے ہو سکتے ہیں۔ ایک متغیر نام صرف حروف تہجی اور انڈر سکور سے شروع ہو سکتا ہے۔ یہ ہندسے سے شروع نہیں ہو سکتا۔
متغیر نام کے اندر کسی سفید جگہ کی اجازت نہیں ہے۔
متغیر نام کا کوئی مخصوص لفظ یا مطلوبہ لفظ نہیں ہونا چاہیے، جیسے، char، float، وغیرہ۔
درست متغیر نام:
غلط متغیر نام:
C++ شناخت کنندگان
ایک C++ شناخت کنندہ کسی متغیر، فنکشن، کلاس، ماڈیول، یا کسی دوسرے صارف کی طرف سے متعین آئٹم کی شناخت کے لیے استعمال ہوتا ہے۔ یہ A سے Z یا a سے z یا ایک انڈر سکور (_) سے شروع ہوتا ہے، جس کے بعد صفر یا زیادہ حروف اور 0 سے 9 ہوتے ہیں۔ C++ شناخت کنندگان میں @، $، اور % جیسے اوقاف کی اجازت نہیں دیتا ہے۔ یہ ایک کیس حساس پروگرامنگ زبان ہے۔ اس طرح، افرادی قوت اور افرادی قوت C++ میں دو مختلف شناخت کنندہ ہیں۔
C++ ڈیٹا کی اقسام
قسم | مطلوبہ الفاظ |
---|---|
کردار | چار |
بولین | bool |
فلوٹنگ پوائنٹ | تیرنا |
ڈبل فلوٹنگ پوائنٹ | دگنا |
انٹیجر | int |
بے قدر | باطل |
وسیع کردار | wchar_t |
قسم | عام بٹ چوڑائی | عام رینج |
چار | 1 بائٹ | -127 سے 127 یا 0 سے 255 |
غیر دستخط شدہ چار | 1 بائٹ | 0 سے 255 |
دستخط شدہ چار | 1 بائٹ | -127 سے 127 |
wchar_t | 2 یا 4 بائٹس | 1 وسیع کردار |
int | 4 بائٹس | -2147483648 سے 2147483647 |
غیر دستخط شدہ int | 4 بائٹس | 0 سے 4294967295 |
دستخط شدہ int | 4 بائٹس | -2147483648 سے 2147483647 |
مختصر int | 2 بائٹس | -32768 سے 32767 |
تیرنا | 4 بائٹس | |
غیر دستخط شدہ مختصر int | 2 بائٹس | 0 سے 65,535 تک |
مختصر int پر دستخط کئے | 2 بائٹس | -32768 سے 32767 |
طویل int | 8 بائٹس | -2,147,483,648 سے 2,147,483,647 |
طویل int پر دستخط کئے | 8 بائٹس | طویل int کے طور پر ایک ہی |
غیر دستخط شدہ طویل int | 8 بائٹس | 0 سے 4,294,967,295 تک |
طویل طویل int | 8 بائٹس | -(2^63) سے (2^63)-1 |
غیر دستخط شدہ طویل طویل int | 8 بائٹس | 0 سے 18,446,744,073,709,551,615 |
دگنا | 8 بائٹس | |
طویل ڈبل | 12 بائٹس |
C++ مستقل/لیٹرلز
Constants سے مراد وہ مقررہ اقدار ہیں جنہیں پروگرام تبدیل کر سکتا ہے اور انہیں لٹریلز کہا جاتا ہے۔
مستقل اعداد و شمار خام ڈیٹا کی کسی بھی قسم میں سے ہو سکتے ہیں اور انٹیجر نمبرز، کریکٹرز، فلوٹنگ پوائنٹ نمبرز، سٹرنگز اور بولین ویلیوز میں تقسیم ہوتے ہیں۔
انٹیجر لٹریلز
عددی لغوی ایک اعشاریہ، آکٹل، یا ہیکساڈیسیمل مستقل ہے۔
ایک عددی لغوی میں ایک لاحقہ ہوتا ہے جو بالترتیب طویل اور غیر دستخط شدہ کے لیے L اور U کا مجموعہ ہوتا ہے۔ لاحقہ چھوٹے یا بڑے ہو سکتا ہے اور کسی بھی ترتیب میں ہو سکتا ہے۔
مثلاً: 212, 215u, 0xFeeL, 078, 032UU
فلوٹنگ پوائنٹ لٹریلز
فلوٹنگ پوائنٹ لٹریل میں ایک عددی حصہ، ایک جزوی حصہ، ایک اعشاریہ نقطہ، اور ایک ظاہری حصہ ہوتا ہے۔ آپ فلوٹنگ پوائنٹ لٹریلز کو یا تو اعشاریہ کی شکل میں یا ایکسپونینشل شکل میں پیش کر سکتے ہیں۔
اعشاریہ کی شکل کا استعمال کرتے ہوئے نمائندگی کرتے وقت، آپ کو اعشاریہ پوائنٹ، ایکسپوننٹ، یا دونوں کو شامل کرنا چاہیے۔ ایکسپونینشل فارم کا استعمال کرتے وقت، آپ کے پاس جزوی حصہ، عددی حصہ، یا دونوں ہونا ضروری ہے۔ دستخط شدہ ایکسپوننٹ E یا e کے ذریعے متعارف کرایا جاتا ہے۔
بولین لٹریلز
دو بولین لٹریلز ہیں۔
کریکٹر لٹریلز
حروف کے لغوی الفاظ واحد اقتباسات میں بند ہیں۔ اگر لغوی L کے ساتھ شروع ہوتا ہے، تو یہ ایک وسیع حرفی لفظی ہے اور اسے wchar_t قسم کے متغیر میں محفوظ کیا جانا چاہیے۔ بصورت دیگر، یہ ایک تنگ حرف لغوی ہے اور چار قسم کے سادہ متغیر میں محفوظ ہے۔
فرار کی ترتیب | مطلب |
\ | کردار |
' | ' کردار |
کردار | |
؟ | ? کردار |
o | الرٹ یا گھنٹی |
بیک اسپیس | |
f | فارم فیڈ |
نئی لائن | |
گاڑی کی واپسی۔ | |
افقی ٹیب | |
v | عمودی ٹیب |
ooo | ایک سے تین ہندسوں کا آکٹل نمبر |
xhh . . | ایک یا زیادہ ہندسوں کا ہیکساڈیسیمل نمبر |
C++ اسٹوریج کلاسز
آٹو سٹوریج کلاس
یہ تمام مقامی متغیرات کے لیے ڈیفالٹ اسٹوریج کلاس ہے۔
SYNTAX
|_+_|رجسٹر سٹوریج کلاس
ان کا استعمال مقامی متغیرات کی وضاحت کے لیے کیا جاتا ہے جو RAM کے بجائے رجسٹر میں محفوظ ہوتے ہیں۔ اس کا مطلب ہے کہ متغیر کا زیادہ سے زیادہ سائز رجسٹر سائز کے برابر ہے اور اس پر '&' آپریٹر کا اطلاق نہیں ہو سکتا۔
SYNTAX
|_+_|جامد اسٹوریج کلاس
یہ کمپائلر سے کہتا ہے کہ پروگرام کے دوران مقامی متغیر کو تخلیق اور تباہ کرنے کے بجائے اسے موجود رکھیں۔ لہذا مقامی متغیرات کو جامد بنانا انہیں فنکشن کالز کے درمیان اپنی اقدار کو برقرار رکھنے کی پیشکش کرتا ہے۔
بیرونی اسٹوریج کلاس
یہ ایک عالمی متغیر کا حوالہ دینے کے لیے استعمال کیا جاتا ہے جو ہر پروگرام فائل کو نظر آتا ہے۔ جب آپ 'بیرونی' استعمال کرتے ہیں تو متغیر کو شروع نہیں کیا جا سکتا۔
تغیر پذیر اسٹوریج کلاس
تغیر پذیر وضاحت کنندہ کلاس آبجیکٹ پر لاگو ہوتا ہے۔ یہ کانسٹ ممبر فنکشن کو اوور رائیڈ کرنے کے لیے کسی شے کے ممبر کو پیش کرتا ہے۔ یعنی ایک mutable ممبر کو const ممبر فنکشن کے ذریعے تبدیل کیا جا سکتا ہے۔
C++ موڈیفائر کی اقسام
C++ چار، انٹ، اور ڈبل ڈیٹا کی اقسام پیش کرتا ہے تاکہ ان سے پہلے ترمیم کرنے والے ہوں۔ ایک موڈیفائر کا استعمال بنیادی قسم کے معنی کو تبدیل کرنے کے لیے کیا جاتا ہے تاکہ یہ مختلف حالات کی ضروریات کو زیادہ درست طریقے سے پورا کر سکے۔
ڈیٹا ٹائپ موڈیفائرز کا ذکر ذیل میں کیا گیا ہے۔
ترمیم کنندگان پر دستخط شدہ، غیر دستخط شدہ، لمبے اور مختصر کا اطلاق انٹیجر بیس اقسام پر ہوتا ہے۔ اس کے علاوہ، دستخط شدہ اور غیر دستخط شدہ کو چار پر لاگو کیا جاتا ہے، اور طویل کو دوگنا پر لاگو کیا جاتا ہے۔
دستخط شدہ اور غیر دستخط شدہ ترمیم کنندگان کو طویل یا مختصر ترمیم کنندگان کے سابقہ کے طور پر استعمال کیا جاتا ہے۔
کوالیفائر کی اقسام
مثال
|_+_|آؤٹ پٹ
|_+_|C++ میں آپریٹرز
آپریٹر ایک علامت ہے جو مرتب کرنے والے کو مخصوص ریاضیاتی یا منطقی ہیرا پھیری کرنے میں مدد کرتا ہے۔ C++ میں مختلف بلٹ ان آپریٹرز ہیں اور مندرجہ ذیل قسم کے آپریٹرز پیش کرتے ہیں۔
ریاضی کا آپریٹر
ریاضی کے آپریٹرز کچھ نہیں ہیں مگر وہ آپریٹرز جو متغیرات یا دو قدروں کے درمیان ریاضی کے عمل کو انجام دینے کے لیے استعمال ہوتے ہیں۔
آپریٹرز | تفصیل | نحو |
+ | دو آپرینڈز جوڑتا ہے۔ | a+b |
* | دو آپرینڈز کو ضرب دیتا ہے۔ | a*b |
- | دو آپرینڈز کو کم کرتا ہے۔ | a-b |
/ | پہلے آپرینڈ کو دوسرے سے تقسیم کرتا ہے۔ | a/b |
% | جب پہلی آپرینڈ کو دوسرے سے تقسیم کیا جاتا ہے تو بقیہ کو لوٹاتا ہے۔ | a%b |
++ | یہ انٹیجر ویلیو کو ایک سے بڑھاتا ہے۔ | a++ |
- | یہ انٹیجر ویلیو کو ایک سے کم کرتا ہے۔ | کو- |
منطقی آپریٹر
C++ میں منطقی آپریٹرز متغیرات کی صحیح یا غلط اقدار کو یکجا کرتے ہیں تاکہ آپ ان کے نتیجے میں سچائی کی قدر کا پتہ لگا سکیں۔
آپریٹرز | تفصیل | نحو |
یا (||) | درست ہے اگر آپرینڈز میں سے کوئی بھی سچ ہے۔ | (A || B) سچ ہے۔ |
اور (&&) | درست ہے اگر دونوں کام صحیح ہیں۔ | (A&&B) غلط ہے۔ |
نہیں (!) | اگر کوئی شرط صحیح ہے، تو Logical NOT آپریٹر غلط بنائے گا۔ | !(A&&B) سچ ہے۔ |
بٹ وائز آپریٹر
C++ میں بٹ وائز آپریٹرز انٹیجرز پر بٹ وائز کیلکولیشن کرتے ہیں۔ بٹ وائز آپریٹر: 1 لوٹاتا ہے اگر دونوں بٹس 1 اور 0 ہیں۔ مثال: a = 10 = 1010 (Binary) b = 4 = 0100 (Binary a & b = 1010 & 0100 = 0000 = 0 (decimal) Bitwise or operator: 1 اگر بٹ میں سے کوئی ایک 1 اور 0 ہے۔
آپریٹرز | تفصیل | نحو |
>> | بائنری رائٹ شفٹ x>> | x>> |
<< | بائنری بائیں شفٹ | ایکس<< |
^ | بائنری XOR | x^y |
اور | بائنری اور | x اور y |
| | بائنری یا | x | Y |
~ | بائنری نہیں | ~x |
اسائنمنٹ آپریٹر
اسائنمنٹ آپریٹرز متغیرات کو قدریں تفویض کرتے ہیں۔ a = 5 ایک اسائنمنٹ آپریٹر ہے جو قیمت 5 کو دائیں طرف متغیر an کے بائیں طرف سیٹ کرتا ہے۔
آپریٹرز | تفصیل | نحو |
= | دائیں جانب کے اظہار کی قدریں بائیں جانب کے اوپرینڈ کو تفویض کرنا۔ | a=b+c |
+= | بائیں طرف کے اوپرینڈ کے ساتھ دائیں طرف کا اوپرینڈ شامل کریں اور پھر بائیں اوپرینڈ کو تفویض کریں۔ | a+=b a=a+b |
-= | بائیں کے اوپرینڈ سے دائیں کے اوپرینڈ کو گھٹائیں اور پھر اسے بائیں اوپرینڈ کو تفویض کریں۔ | a-=b a=a-b |
/= | بائیں کے اوپرینڈ کو دائیں کے اوپرینڈ سے تقسیم کریں اور پھر بائیں آپرینڈ کو تفویض کریں۔ | a/=b a=a/b |
%= | بائیں اور دائیں اوپرینڈ کا استعمال کرتے ہوئے ماڈیولس لیں اور نتیجہ بائیں اوپرینڈ کو تفویض کریں۔ | a%=b a=a%b |
*= | آپرینڈز کا استعمال کرتے ہوئے ایکسپوننٹ ویلیو کا حساب لگائیں اور بائیں آپرینڈ کو ویلیو تفویض کریں۔ | a*=b a=a*b |
&= | بٹ وائز اور اوپرینڈ پر کارکردگی کا مظاہرہ کرتا ہے اور بائیں اوپرینڈ کو قدر تفویض کرتا ہے۔ | a&=b a=a&b |
|= | Bitwise OR کو آپرینڈ پر انجام دیتا ہے اور بائیں آپرینڈ کو قدر تفویض کرتا ہے۔ | a|=b a=a|b |
^= | Bitwise OR کو آپرینڈ پر انجام دیتا ہے اور بائیں آپرینڈ کو قدر تفویض کرتا ہے۔ | a^=b a=a^b |
>>= | آپرینڈ پر بٹ وائز رائٹ شفٹ کریں اور بائیں آپرینڈ کو ویلیو تفویض کریں۔ | a>>=b a=a>>b |
<<= | آپرینڈ پر Bitwise بائیں شفٹ انجام دیتا ہے اور بائیں آپرینڈ کو قدر تفویض کرتا ہے۔ | کو<<= b a= a << b |
رشتہ دار آپریٹر
رشتہ دار آپریٹرز وہ آپریٹرز ہیں جو دو قدروں یا اشیاء کا موازنہ کرنے کے لیے استعمال ہوتے ہیں۔
آپریٹرز | تفصیل | نحو |
> | اس سے بڑا | x > y |
< | سے کم | ایکس |
== | برابر | x == y |
!= | برابر نہیں | x != y |
>= | سے بڑا یا اس کے برابر | x >= y |
<= | سے کم یا اس کے برابر | ایکس<= y |
متفرق آپریٹرز
آپریٹر | تفصیل |
حالت؟ X: Y | اگر شرط درست ہے، تو یہ X کی قدر لوٹاتا ہے ورنہ Y کی قدر لوٹاتا ہے۔ |
, | اس کی وجہ سے کارروائیوں کی ایک ترتیب ہوتی ہے۔ کوما کی قدر کوما سے الگ کی گئی فہرست کے آخری اظہار کی قدر ہے۔ |
کا سائز | یہ ایک متغیر کا سائز لوٹاتا ہے۔ مثال کے طور پر، sizeof(a)، جہاں 'a' ایک عدد عدد ہے اور 4 لوٹائے گا۔ |
* | یہ متغیر کی طرف اشارہ ہے۔ مثال کے طور پر *var; متغیر var کی طرف اشارہ کرے گا۔ |
کاسٹ | یہ ایک ڈیٹا کی قسم کو دوسرے میں تبدیل کرتا ہے۔ |
. (ڈاٹ) اور -> (تیر) | ان کا استعمال کلاسز، ڈھانچے اور یونینوں کے انفرادی ممبران کا حوالہ دینے کے لیے کیا جاتا ہے۔ |
اور | یہ متغیر کا پتہ لوٹاتا ہے۔ |
C++ لوپس
لوپ کے لئے
لوپ کے لیے C++ پروگرام کے ایک حصے کو کئی بار اعادہ کرنے کے لیے استعمال کیا جاتا ہے۔ اگر تکرار کی تعداد مقرر ہے، تو یہ تجویز کی جاتی ہے کہ لوپ کے لیے while یا do-while loops کے مقابلے میں استعمال کریں۔
لوپ کے لیے C++ C/C# جیسا ہی ہے۔ ہم متغیرات کو شروع کر سکتے ہیں، حالت کی جانچ کر سکتے ہیں، اور قیمت میں اضافہ/کمی کر سکتے ہیں۔
SYNTAX
|_+_|مثال
|_+_|آؤٹ پٹ
|_+_|نیسٹڈ فار لوپ
C++ میں، آپ لوپ کے لیے دوسرے کے اندر لوپ کے لیے استعمال کر سکتے ہیں۔ اسے لوپ کے لیے نیسٹڈ کہا جاتا ہے۔ اندرونی لوپ مکمل طور پر عمل میں لایا جاتا ہے جب بیرونی لوپ کو ایک بار انجام دیا جاتا ہے۔ لہذا اگر بیرونی لوپ اور اندرونی لوپ کو چار بار عمل میں لایا جاتا ہے، تو اندرونی لوپ کو ہر بیرونی لوپ کے لیے چار بار، یعنی کل 16 بار عمل میں لایا جائے گا۔
مثال
|_+_|آؤٹ پٹ
|_+_|جبکہ لوپ
C++ میں، جبکہ لوپ پروگرام کے کسی حصے کو کئی بار اعادہ کرنے کے لیے استعمال ہوتا ہے۔ اگر تکرار کی تعداد مقرر نہیں ہے، تو یہ سفارش کی جاتی ہے کہ لوپ کے بجائے تھوڑی دیر کا لوپ استعمال کریں۔
SYNTAX
|_+_|مثال
|_+_|آؤٹ پٹ
|_+_|Nested while Loop
C++ میں، آپ دوسرے while loop کے اندر ایک while loop استعمال کر سکتے ہیں۔ اسے نیسٹڈ جبکہ لوپ کے نام سے جانا جاتا ہے۔ جب بیرونی لوپ کو ایک بار عمل میں لایا جاتا ہے تو نیسٹڈ وائل لوپ پر عمل درآمد ہوتا ہے۔
مثال
|_+_|آؤٹ پٹ
|_+_|ڈو-وائل لوپ
C++ do-while لوپ پروگرام کے کسی حصے کو کئی بار دہرانے کے لیے استعمال ہوتا ہے۔ اگر تکرار کی تعداد طے نہیں ہے اور آپ کو کم از کم ایک بار لوپ کو عمل میں لانا ہوگا، تو یہ تجویز کیا جاتا ہے کہ ڈو-وائل لوپ استعمال کریں۔
C++ do-while لوپ کو کم از کم ایک بار عمل میں لایا جاتا ہے کیونکہ کنڈیشن کو لوپ باڈی کے بعد چیک کیا جاتا ہے۔
SYNTAX
|_+_|مثال
|_+_|آؤٹ پٹ
|_+_|نیسٹڈ ڈو-وائل لوپ
C++ میں، اگر آپ کسی دوسرے do-while لوپ کے اندر do-while لوپ استعمال کرتے ہیں، تو اسے نیسٹڈ do-while لوپ کے نام سے جانا جاتا ہے۔ نیسٹڈ ڈو-وائل لوپ کو ہر بیرونی ڈو-وائل لوپ کے لیے مکمل طور پر عمل میں لایا جاتا ہے۔
مثال
|_+_|آؤٹ پٹ
|_+_|فیصلہ سازی کے بیانات
حقیقی زندگی میں ایسے حالات ہوتے ہیں جب آپ کو کچھ فیصلے کرنے کی ضرورت ہوتی ہے، اور ان فیصلوں کی بنیاد پر، آپ فیصلہ کرتے ہیں کہ آپ کو آگے کیا کرنا چاہیے۔ اسی طرح کے مسائل پروگرامنگ میں بھی پیدا ہوتے ہیں جہاں آپ کو کچھ فیصلے کرنے کی ضرورت ہوتی ہے، اور ان فیصلوں کی بنیاد پر، آپ کوڈ کے اگلے بلاک پر عمل درآمد کریں گے۔
پروگرامنگ زبانوں میں فیصلہ سازی کے بیانات پروگرام کے عمل کے بہاؤ کی سمت کا تعین کرتے ہیں۔ فیصلہ سازی کے بیانات C++ میں دستیاب ہیں:
اگر بیان
اگر بیان ایک سادہ فیصلہ سازی کا بیان ہے۔ یہ فیصلہ کرنے کے لیے استعمال کیا جاتا ہے کہ آیا بیانات کے بلاک پر عمل کیا جائے گا یا نہیں۔ اگر شرط درست ہے تو بیان کا ایک بلاک عمل میں آتا ہے ورنہ نہیں۔
SYNTAX
|_+_|یہاں، حالات تشخیص کے بعد صحیح یا غلط ہو جائے گا. اگر بیان بولین اقدار کو قبول کرتا ہے۔
مثال
|_+_|آؤٹ پٹ
|_+_|اگر کوئی اور بیان
if بیان بتاتا ہے کہ اگر کوئی شرط صحیح ہے تو یہ بیانات کے بلاک کو عمل میں لائے گی اور اگر شرط غلط ہے تو یہ عمل نہیں کرے گی۔ حالت غلط ہونے پر آپ کوڈ کے بلاک کو چلانے کے لیے if اسٹیٹمنٹ کے ساتھ else اسٹیٹمنٹ استعمال کرسکتے ہیں۔
SYNTAX
|_+_|مثال
|_+_|آؤٹ پٹ
|_+_|نیسٹڈ اگر بیانات
ایک نیسٹڈ if in C++ ایک if اسٹیٹمنٹ ہے جو دوسرے if اسٹیٹمنٹ کو نشانہ بناتا ہے۔ Nested if سٹیٹمنٹس کا مطلب ہے کہ ایک if سٹیٹمنٹ دوسرے if سٹیٹمنٹ کے اندر۔ ہاں، C اور C++ دونوں ہمیں nested if اسٹیٹمنٹس کے اندر if اسٹیٹمنٹس پیش کرتے ہیں، یعنی آپ if اسٹیٹمنٹ کو دوسرے if اسٹیٹمنٹ کے اندر رکھ سکتے ہیں۔
SYNTAX
|_+_|مثال
|_+_|آؤٹ پٹ
|_+_|اگر-اور-اگر سیڑھی
صارف مختلف اختیارات میں سے فیصلہ کر سکتا ہے۔ اگر بیانات اوپر سے نیچے سے کیے جاتے ہیں۔ جیسے ہی حالات if true کو کنٹرول کر لیتے ہیں، تو اس سے منسلک بیان پر عمل درآمد ہو جاتا ہے، اور باقی دوسری صورت میں اگر سیڑھی ختم ہو جاتی ہے۔ اگر شرائط صحیح نہ ہوں تو آخری اور آخری بیان کیا جائے گا۔
SYNTAX
|_+_|مثال
|_+_|آؤٹ پٹ
|_+_|جمپ اسٹیٹمنٹس
توڑنا
یہ بیان لوپ کو ختم کرنے کے لیے استعمال ہوتا ہے۔ جیسے ہی ایک لوپ کے اندر سے بریک اسٹیٹمنٹ کا سامنا ہوتا ہے، لوپ کی تکرار وہیں رک جاتی ہے اور کنٹرول لوپ کے بعد پہلی اسٹیٹمنٹ پر فوراً واپس آجاتا ہے۔
SYNTAX
توڑنا؛
بریک اسٹیٹمنٹ ان حالات میں استعمال کیے جاتے ہیں جب ہمیں لوپ کے لیے تکرار کی اصل تعداد کے بارے میں یقین نہیں ہوتا ہے یا کسی شرط کی بنیاد پر لوپ کو ختم کرتے ہیں۔
مثال
|_+_|آؤٹ پٹ
|_+_|جاری رہے
جاری بیان بریک بیان کے برعکس ہے۔ لوپ کو ختم کرنے کے بجائے، یہ لوپ کی اگلی تکرار پر مجبور کرتا ہے۔
جاری بیان لوپ کو اگلی تکرار پر عمل کرنے پر مجبور کرتا ہے۔ جاری بیان پر عمل درآمد ہونے پر، کنٹینٹ سٹیٹمنٹ کے بعد لوپ کے اندر موجود کوڈ کو چھوڑ دیا جاتا ہے، اور اگلی تکرار شروع ہو جائے گی۔
SYNTAX
|_+_|مثال
|_+_|آؤٹ پٹ
|_+_|کے پاس جاؤ
C++ میں گوٹو اسٹیٹمنٹ سے مراد غیر مشروط جمپ اسٹیٹمنٹ ہے جو کسی فنکشن کے اندر ایک پوائنٹ سے دوسرے پوائنٹ پر جانے کے لیے استعمال ہوتا ہے۔
SYNTAX
|_+_|مثال
|_+_|آؤٹ پٹ
|_+_|واپسی
C++ میں واپسی فنکشن پر عمل درآمد کے بہاؤ کو لوٹاتا ہے۔ یہ بیان کسی مشروط بیان کی ضرورت نہیں ہے۔ ایک بار بیان پر عمل درآمد ہونے کے بعد، پروگرام کا بہاؤ فوراً رک جاتا ہے اور وہ کنٹرول واپس کر دیتا ہے جہاں سے اسے بلایا گیا تھا۔ واپسی کا بیان باطل فنکشن کے لیے کچھ بھی واپس کر سکتا ہے یا نہیں، لیکن غیر باطل فنکشن کے لیے واپسی کی قدر واپس کرنی چاہیے۔
SYNTAX
|_+_|مثال
|_+_|آؤٹ پٹ
|_+_|C++ فنکشنز
فنکشن سے مراد بیانات کا ایک گروپ ہے جو ان پٹ لیتا ہے، اس پر کارروائی کرتا ہے اور آؤٹ پٹ واپس کرتا ہے۔ فنکشن کا مقصد ان کاموں کو یکجا کرنا ہے جو بار بار کیے جاتے ہیں۔ اگر آپ کے پاس مختلف ان پٹ ہیں، تو آپ کو دوبارہ وہی کوڈ لکھنے کی ضرورت نہیں ہے۔ آپ فنکشن کو ڈیٹا کے مختلف سیٹ کے ساتھ کال کر سکتے ہیں جسے پیرامیٹرز کہتے ہیں۔
C++ پروگرام میں کم از کم ایک فنکشن ہوتا ہے، مین() فنکشن۔
فنکشن کی تعریف کرنا
C++ میں فنکشن کی تعریف فنکشن ہیڈر اور باڈی پر مشتمل ہوتی ہے۔
مثال
|_+_|فنکشن کا اعلان کرنا
C++ میں، فنکشنز کو استعمال کرنے سے پہلے ان کا اعلان کرنا ضروری ہے۔ آپ کسی فنکشن کو اس کی واپسی کی قیمت، نام اور اس کے دلائل کی اقسام فراہم کر کے اعلان کر سکتے ہیں۔ دلائل کی شرائط اختیاری ہیں۔ فنکشن کی تعریف فنکشن ڈیکلریشن کے طور پر شمار ہوتی ہے۔
مثال
|_+_|ایک فنکشن کال کرنا
جب آپ C++ فنکشن بناتے ہیں، تو آپ وضاحت کرتے ہیں کہ فنکشن کو کیا کرنا ہے۔ کسی فنکشن کو استعمال کرنے کے لیے، آپ کو اس فنکشن کو کال کرنے یا ان کو شروع کرنے کی ضرورت ہے۔
جب پروگرام کسی فنکشن کو کال کرتا ہے تو پروگرام کا کنٹرول کالڈ فنکشن میں منتقل ہو جاتا ہے۔ ایک کہا جاتا فنکشن ایک متعین کام انجام دیتا ہے، اور جب اس کے ریٹرن اسٹیٹمنٹ کو عمل میں لایا جاتا ہے یا جب اس کے فنکشن کے اختتامی اختتامی تسمہ پر پہنچ جاتا ہے، تو یہ پروگرام کنٹرول کو مرکزی پروگرام میں لوٹاتا ہے۔
مثال
|_+_|فنکشن دلائل
اگر کوئی فنکشن دلائل کا استعمال کرتا ہے، تو اسے متغیرات کا اعلان کرنا چاہیے جو دلائل کی قدروں کو قبول کرتے ہیں۔ یہ متغیرات کے طور پر جانا جاتا ہے فنکشن کے رسمی پیرامیٹرز۔
C++ نمبرز
عام طور پر، جب ہم نمبرز کے ساتھ کام کرتے ہیں، تو ہم قدیم ڈیٹا کی قسمیں استعمال کرتے ہیں جیسے کہ int، short، long، float، double، وغیرہ۔ ڈیٹا کی اقسام کی تعداد، ان کی ممکنہ قدروں، اور نمبروں کی حدود کو C++ ڈیٹا کی اقسام پر بحث کرتے ہوئے بیان کیا گیا ہے۔
مثال
|_+_|آؤٹ پٹ
|_+_|C++ میں ریاضی کے آپریٹرز
ہاں نہیں | افعال | مقصد |
ایک | دوہرا گناہ (دوگنا)؛ | یہ ایک زاویہ لیتا ہے (ایک ڈبل کے طور پر) اور سائن واپس کرتا ہے۔ |
دو | ڈبل cos (ڈبل)؛ | یہ ایک زاویہ لیتا ہے (ایک ڈبل کے طور پر) اور کوزائن لوٹاتا ہے۔ |
3 | ڈبل ٹین (ڈبل)؛ | یہ ایک زاویہ لیتا ہے (ایک ڈبل کے طور پر) اور مماس لوٹاتا ہے۔ |
4 | ڈبل پاؤ (ڈبل، ڈبل)؛ | پہلا وہ نمبر ہے جسے آپ بڑھانا چاہتے ہیں اور دوسرا وہ طاقت ہے جسے آپ بڑھانا چاہتے ہیں۔ |
5 | ڈبل لاگ (ڈبل)؛ | یہ ایک نمبر لیتا ہے اور اس نمبر کا قدرتی لاگ لوٹاتا ہے۔ |
6 | ڈبل ہائپوٹ (ڈبل، ڈبل)؛ | اگر آپ اسے دائیں مثلث کے دو اطراف کی لمبائی سے گزرتے ہیں، تو یہ آپ کو فرضی کی لمبائی لوٹائے گا۔ |
7 | ڈبل sqrt (ڈبل)؛ | آپ فنکشن کو ایک نمبر پاس کرتے ہیں اور یہ آپ کو مربع جڑ دیتا ہے۔ |
8 | int abs(int)؛ | یہ ایک انٹیجر کی مطلق قدر لوٹاتا ہے جو اسے پاس کیا جاتا ہے۔ |
9 | ڈبل منزل (ڈبل)؛ | انٹیجر کو تلاش کرتا ہے جو اس کو دی گئی دلیل سے کم یا برابر ہے۔ |
10 | ڈبل فیبس (ڈبل)؛ | یہ اسے پاس کیے گئے کسی بھی اعشاریہ نمبر کی مطلق قدر لوٹاتا ہے۔ |
مثال
|_+_|آؤٹ پٹ
|_+_|C++ Arrays
C++ میں ایک صف مربوط میموری والے مقامات پر ذخیرہ شدہ آئٹمز کا ایک مجموعہ ہے، اور عناصر تک تصادفی طور پر کسی صف کے اشاریوں کا استعمال کرتے ہوئے رسائی حاصل کی جا سکتی ہے۔ وہ ملتے جلتے عناصر کو ذخیرہ کرنے کے لیے استعمال ہوتے ہیں کیونکہ ڈیٹا کی قسم تمام عناصر کے لیے ایک جیسی ہونی چاہیے۔ وہ ابتدائی ڈیٹا کی اقسام جیسے کہ چار، انٹ، فلوٹ، ڈبل وغیرہ کو ذخیرہ کر سکتے ہیں۔ اس میں اضافہ کرنے کے لیے، C++ میں ایک سرنی اخذ کردہ ڈیٹا کی اقسام کو ذخیرہ کر سکتی ہے جیسے کہ ڈھانچے، پوائنٹرز وغیرہ۔ نیچے دی گئی ایک صف کی خوبصورت نمائندگی ہے۔ .
صف کا اعلان
SYNTAX
|_+_|مثال
|_+_|یہاں،
صف میں عناصر تک رسائی حاصل کریں۔
ایک صف میں ہر عنصر ایک نمبر کے ساتھ جڑا ہوا ہے۔ نمبر کو ایک صف انڈیکس کہا جاتا ہے۔ آپ انڈیکس کا استعمال کرکے ایک صف کے عناصر تک رسائی حاصل کرسکتے ہیں۔
SYNTAX
|_+_|مثال
|_+_|یہاں C++ arrays کے چند اہم تصورات ہیں۔
C++ سٹرنگز
یہ کرداروں کا مجموعہ ہے۔ C++ پروگرامنگ زبان میں دو قسم کے تار استعمال ہوتے ہیں:
سٹرنگ کلاس
C++ لائبریری فراہم کرتی ہے۔ تار کلاس کی قسم جو اوپر بیان کردہ تمام کارروائیوں کی حمایت کرتی ہے، اس کے علاوہ بہت زیادہ فعالیت۔
مثال
|_+_|آؤٹ پٹ
|_+_|سی تار
اس سٹرنگ کی ابتدا C زبان میں ہوئی ہے اور C++ کے اندر سپورٹ کی جاتی ہے۔ یہ سٹرنگ حروف کی ایک جہتی صف ہے جسے ایک null کریکٹر ' ' کے ذریعے ختم کیا جاتا ہے۔ اس طرح null ختم شدہ اسٹرنگ میں وہ حروف شامل ہوتے ہیں جو سٹرنگ پر مشتمل ہوتے ہیں جس کے بعد null ہوتا ہے۔
مثال
|_+_|آؤٹ پٹ
|_+_|کچھ فنکشنز جو نال ختم شدہ تاروں کو جوڑتے ہیں۔
یہ سٹرنگ s2 کو سٹرنگ s1 میں کاپی کرتا ہے۔
یہ سٹرنگ s2 کو سٹرنگ s1 کے آخر میں جوڑتا ہے۔
یہ سٹرنگ s1 میں سٹرنگ s2 کی موجودگی کی طرف ایک پوائنٹر لوٹاتا ہے۔
یہ سٹرنگ s1 کی لمبائی لوٹاتا ہے۔
اگر s1 اور s2 ایک جیسے ہوں تو یہ 0 لوٹاتا ہے۔ 0 سے کم اگر s1s2۔
یہ سٹرنگ s1 میں کریکٹر ch کی موجودگی پر پوائنٹر کو لوٹاتا ہے۔
C++ پوائنٹرز
پوائنٹر پتوں کی نمائندگی کرتے ہیں۔ وہ پروگراموں کو کال بہ حوالہ نقل کرنے اور متحرک ڈیٹا ڈھانچے کو تخلیق اور جوڑ توڑ کرنے کے قابل بناتے ہیں۔
SYNTAX
|_+_|پوائنٹر کا استعمال کیسے کریں؟
پوائنٹرز کے چند تصورات
مثال
|_+_|آؤٹ پٹ
|_+_|C++ حوالہ جات
حوالہ متغیر پہلے سے موجود متغیر کا نام ہے۔ ایک بار حوالہ شروع ہونے کے بعد متغیر کا نام یا حوالہ کا نام متغیر کا حوالہ دینے کے لیے استعمال کیا جا سکتا ہے۔
مثال
|_+_|آؤٹ پٹ
|_+_|C++ تاریخ اور وقت
C++ لائبریری مناسب تاریخ کی قسم فراہم نہیں کرتی ہے۔ یہ C سے تاریخ اور وقت کی ہیرا پھیری کے لیے ڈھانچے اور افعال وراثت میں حاصل کرتا ہے۔ تاریخ اور وقت سے متعلقہ افعال اور ڈھانچے تک رسائی کے لیے، آپ کو اپنے C++ پروگرام میں ہیڈر فائل شامل کرنے کی ضرورت ہوگی۔
وقت سے متعلق چار اقسام ہیں: clock_t، time_t، size_t، اور tm۔ قسمیں - clock_t، size_t، اور time_t نظام کے وقت اور تاریخ کو کچھ عدد کے طور پر ظاہر کرنے کے قابل ہیں۔
مثال
|_+_|کچھ اہم افعال
یہ 1 جنوری 1970 سے گزرے ہوئے کئی سیکنڈز میں موجودہ کیلنڈر کا وقت لوٹاتا ہے۔ اگر سسٹم کے پاس کوئی وقت نہیں ہے، تو .1 واپس کر دیا جاتا ہے۔
یہ فارم کی ایک تار کی طرف ایک پوائنٹر لوٹاتا ہے۔ دن مہینہ سال گھنٹے: منٹ: سیکنڈ۔
یہ ایک پوائنٹر واپس کرتا ہے tm ڈھانچہ جو مقامی وقت کی نمائندگی کرتا ہے۔
یہ ایک قدر واپس کرتا ہے جو کالنگ پروگرام کے چلنے کے وقت کا تخمینہ لگاتا ہے۔ اگر وقت دستیاب نہ ہو تو .1 کی قدر لوٹائی جاتی ہے۔
یہ اسٹرنگ پر ایک پوائنٹر لوٹاتا ہے جس میں فارم میں تبدیل ہونے والے وقت کی طرف اشارہ کردہ ڈھانچے میں ذخیرہ شدہ معلومات ہوتی ہے: دن مہینہ تاریخ گھنٹے: منٹ: سیکنڈ
یہ ٹی ایم ڈھانچے کی شکل میں وقت کی طرف ایک پوائنٹر لوٹاتا ہے۔
یہ وقت کی طرف اشارہ کردہ ڈھانچے میں پائے جانے والے کیلنڈر کا وقت لوٹاتا ہے۔
یہ ٹائم 1 اور ٹائم 2 کے درمیان سیکنڈ میں فرق کا حساب لگاتا ہے۔
اسے تاریخ اور وقت کو مخصوص شکل میں فارمیٹ کرنے کے لیے استعمال کیا جا سکتا ہے۔
C++ ڈیٹا سٹرکچرز
C++ arrays آپ کو متغیرات کی وضاحت کرنے کی پیشکش کرتے ہیں جو ایک ہی قسم کے متعدد ڈیٹا آئٹمز کو یکجا کرتے ہیں۔ پھر بھی، کی ساخت ایک اور صارف کی وضاحت کردہ ڈیٹا کی قسم ہے جو آپ کو مختلف قسم کے ڈیٹا آئٹمز کو یکجا کرنے کے قابل بنائے گی۔ ڈھانچے کو ریکارڈ کی نمائندگی کرنے کے لیے استعمال کیا جاتا ہے۔
ایک ساخت کی تعریف
کسی ڈھانچے کی وضاحت کرنے کے لیے، آپ کو ساخت کا بیان استعمال کرنا چاہیے۔ ڈھانچہ بیان پروگرام کے لیے ایک سے زیادہ اراکین کے ساتھ ڈیٹا کی قسم کی وضاحت کرتا ہے۔
|_+_|دی ساخت ٹیگ اختیاری ہے. تعریف کے آخر میں، فائنل سیمیکولن سے پہلے، آپ کو ایک یا زیادہ ساخت کے متغیرات کی وضاحت کرنی چاہیے۔
ساخت کے ارکان تک رسائی
ڈھانچے کے کسی بھی رکن تک رسائی حاصل کرنے کے لیے، آپ استعمال کر سکتے ہیں۔ ممبر رسائی آپریٹر (.) . ممبر ایکسیس آپریٹر کو ڈھانچے کے متغیر نام اور ڈھانچے کے ممبر کے درمیان مدت کے طور پر کوڈ کیا جاتا ہے جس تک ہم رسائی حاصل کرنا چاہتے ہیں۔ آپ استعمال کریں گے۔ ایک ڈھانچہ ساخت کی قسم کے متغیرات کی وضاحت کے لیے کلیدی لفظ۔
فنکشن دلائل کے طور پر ڈھانچے
آپ ساخت کو فنکشن آرگومنٹ کے طور پر اسی طرح پاس کر سکتے ہیں جس طرح آپ کسی دوسرے متغیر یا پوائنٹر کو پاس کرتے ہیں۔
مثال
|_+_|آؤٹ پٹ
|_+_|C++ کلاسز اور آبجیکٹ
C++ میں موجود ہر چیز کا تعلق کلاسز اور اشیاء کے ساتھ ساتھ ان کی صفات اور طریقوں سے ہے۔ مثال کے طور پر: حقیقی زندگی میں، بس ایک ہے۔ چیز . بس کے پاس ہے۔ صفات ، جیسے وزن اور رنگ، اور طریقے ، جیسے ڈرائیو اور بریک۔
صفات اور طریقے ہیں۔ متغیرات اور افعال جس کا تعلق کلاس سے ہے۔ انہیں کلاس ممبرز کے نام سے جانا جاتا ہے۔ کلاس ایک صارف کی وضاحت کردہ ڈیٹا کی قسم ہے جسے آپ کسی پروگرام میں استعمال کر سکتے ہیں، اور یہ آبجیکٹ کنسٹرکٹر یا آبجیکٹ بنانے کے لیے بلیو پرنٹ کے طور پر کام کرتا ہے۔
ایک کلاس بنائیں
اگر آپ کلاس بنانا چاہتے ہیں تو آپ کو استعمال کرنا ہوگا۔ کلاس مطلوبہ لفظ:
مثال
|_+_|ایک آبجیکٹ بنائیں
C++ میں، کلاس سے ایک آبجیکٹ بنایا جاتا ہے۔
ایک آبجیکٹ بنانے کے لیے آپ کو کلاس کا نام بتانا ہوگا، اس کے بعد آبجیکٹ کا نام۔ کلاس کے اوصاف تک رسائی کے لیے، اعتراض پر ڈاٹ نحو (.) استعمال کریں:
مثال
|_+_|تفصیل سے چند تصورات
C++ وراثت
وراثت ایک ایسا عمل ہے جس میں کوئی شے اپنے بنیادی آبجیکٹ کی تمام خصوصیات اور طرز عمل خود بخود حاصل کر لیتی ہے۔ آپ ان صفات اور اعمال میں ترمیم کر سکتے ہیں جن کی تعریف دوسری کلاسوں میں کی گئی ہے۔
وہ طبقہ جو کسی دوسرے طبقے کے ارکان کو وراثت میں ملاتا ہے اسے اخذ شدہ کلاس کہا جاتا ہے، اور جس طبقے کے ارکان کو وراثت میں ملا ہے اسے بیس کلاس کہا جاتا ہے۔ اخذ شدہ کلاس بیس کلاس کے لیے مخصوص کلاس ہے۔
وراثت کی اقسام
'A' بیس کلاس ہے،
'B' ایک اخذ شدہ کلاس ہے۔



کلاس D کلاس C اور کلاس B کے ساتھ ساتھ کلاس A. کلاس C کی خصوصیات اور رویے کا وارث ہے، اور کلاس B کلاس A کا وارث ہے۔ کلاس A کلاس B اور کلاس C اور کلاس D کے والدین ہیں۔


C++ ایکسیس موڈیفائر
ایکسیس موڈیفائرز کا استعمال آبجیکٹ اورینٹڈ پروگرامنگ کے ایک لازمی پہلو کو لاگو کرنے کے لیے کیا جاتا ہے جسے ڈیٹا ہائیڈنگ کہا جاتا ہے۔ کلاس میں ایکسیس موڈیفائرز کا استعمال کلاس ممبران تک رسائی تفویض کرنے کے لیے کیا جاتا ہے۔ یہ کلاس کے اراکین پر کچھ پابندیاں لگاتا ہے کہ وہ باہر کے افعال سے براہ راست رسائی حاصل نہ کریں۔
رسائی میں ترمیم کرنے والوں کی تین اقسام ہیں جو C++ میں دستیاب ہیں:
آئیے ان پر تفصیل سے بات کریں:
عوام
تمام کلاس ممبران جن کا اعلان پبلک سپیفائیر کے تحت کیا گیا ہے ہر کسی کے لیے دستیاب ہے۔ پبلک کے طور پر اعلان کردہ ممبر فنکشنز تک دیگر کلاسز اور فنکشنز کے ذریعے بھی رسائی حاصل کی جا سکتی ہے۔ کلاس کے عوامی اراکین تک رسائی آپریٹر (.) کا استعمال کرتے ہوئے اس کلاس کے آبجیکٹ کے ساتھ پروگرام میں کہیں سے بھی رسائی حاصل کی جا سکتی ہے۔
مثال
|_+_|آؤٹ پٹ
|_+_|نجی
کلاس کے اندر ممبر فنکشنز صرف کلاس ممبران تک رسائی حاصل کر سکتے ہیں جنہیں پرائیویٹ قرار دیا گیا ہے۔ کلاس سے باہر کسی بھی شے یا فنکشن کے ذریعے ان تک براہ راست رسائی حاصل نہیں کی جا سکتی۔ صرف فرینڈ فنکشنز کو کلاس کے ممبران کے پرائیویٹ ڈیٹا تک رسائی کی اجازت ہے۔
مثال
|_+_|آؤٹ پٹ
|_+_|محفوظ
ایک پروٹیکٹڈ ایکسیس موڈیفائر ایک پرائیویٹ ایکسیس موڈیفائر جیسا ہی ہوتا ہے کیونکہ اس تک اس کی کلاس سے باہر رسائی حاصل نہیں کی جا سکتی جب تک کہ فرینڈ کلاس کی مدد سے، فرق یہ ہے کہ کلاس ممبران جنہیں پروٹیکٹڈ قرار دیا جاتا ہے کسی بھی اخذ شدہ کلاس کے ذریعے رسائی حاصل کی جا سکتی ہے۔ اس کلاس کا بھی۔
مثال
|_+_|آؤٹ پٹ
|_+_|C++ اوور لوڈنگ
C++ پروگرامنگ زبان آپ کو a کے لیے ایک سے زیادہ تعریفیں بتانے کی اجازت دیتی ہے۔ فنکشن نام یا ایک آپریٹر اسی دائرہ کار میں کہا جاتا ہے۔ فنکشن اوورلوڈنگ اور آپریٹر اوورلوڈنگ بالترتیب
ایک اوورلوڈ ڈیکلریشن کا اعلان اسی نام کے ساتھ کیا جاتا ہے جیسا کہ ایک ہی دائرہ کار میں پہلے سے اعلان کردہ اعلامیہ کے ساتھ، سوائے اس کے کہ دونوں ڈیکلریشن کے مختلف دلائل اور مختلف تعریفیں ہوں۔
فنکشن اوورلوڈنگ
فنکشن اوورلوڈنگ ایک ایسی خصوصیت ہے جو آپ کو ایک سے زیادہ فنکشنز کی پیشکش کرتی ہے جس کا نام ایک ہی ہے لیکن پیرامیٹر کی فہرست مختلف ہے۔
مثال
|_+_|آؤٹ پٹ
|_+_|C++ پولیمورفزم
آپریٹر اوور لوڈنگ
آپ آپریٹرز کو صارف کی وضاحت شدہ کلاسوں کے لیے کام کر سکتے ہیں۔ اس کا مطلب ہے کہ C++ آپریٹرز کو ڈیٹا کی قسم کے لیے ایک خاص معنی فراہم کر سکتا ہے۔ اسے آپریٹر اوور لوڈنگ کے نام سے جانا جاتا ہے۔
مثال
|_+_|آؤٹ پٹ
|_+_|یہ آبجیکٹ پر مبنی پروگرامنگ کا ایک اہم تصور ہے۔ اس کا مطلب ایک سے زیادہ شکلیں ہیں۔ یعنی ایک ہی ہستی مختلف منظرناموں میں مختلف انداز میں برتاؤ کرتی ہے۔
فنکشن اوور رائیڈنگ
آپ بیس کلاس کے ساتھ ساتھ اخذ شدہ کلاسوں میں بھی ایک ہی فنکشن رکھ سکتے ہیں۔ جب آپ اخذ شدہ کلاس کے کسی شے کا استعمال کرتے ہوئے فنکشن کو کال کرتے ہیں، تو اخذ شدہ کلاس کا فنکشن بیس کلاس کے بجائے عمل میں آتا ہے۔
لہذا، فنکشن کو کال کرنے والی آبجیکٹ کے لحاظ سے مختلف فنکشنز کو انجام دیا جاتا ہے۔ اسے فنکشن اوور رائیڈنگ کہتے ہیں۔
مثال
|_+_|آؤٹ پٹ
|_+_|C++ ورچوئل فنکشنز
C++ میں، ہو سکتا ہے کہ آپ فنکشنز کو اوور رائڈ نہ کر سکیں اگر ہم ماخوذ کلاس کی کسی چیز کی طرف اشارہ کرنے کے لیے بیس کلاس پوائنٹر استعمال کریں۔
بیس کلاس میں ورچوئل فنکشنز کا استعمال یقینی بناتا ہے کہ ان کیسز میں فنکشن کو اوور رائیڈ کیا جا سکتا ہے۔ اس طرح، ورچوئل فنکشنز فنکشن اوور رائیڈنگ کے تحت آتے ہیں۔
خالص ورچوئل فنکشنز
یہ ممکن ہے کہ آپ بیس کلاس میں ورچوئل فنکشن کو شامل کرنا چاہتے ہیں تاکہ اس کلاس کی اشیاء کے مطابق اخذ کردہ کلاس میں اس کی دوبارہ تعریف کی جائے، لیکن یہ کہ کوئی معنی خیز تعریف نہیں ہے جو آپ بیس کلاس میں فنکشن کے لیے دے سکتے ہیں۔ .
مثال
|_+_|C++ ڈیٹا خلاصہ
ڈیٹا خلاصہ C++ میں آبجیکٹ اورینٹڈ پروگرامنگ کی ضروری خصوصیات میں سے ایک ہے۔ خلاصہ کا مطلب صرف متعلقہ معلومات کو ظاہر کرنا اور تفصیلات کو چھپانا ہے۔ ڈیٹا خلاصہ سے مراد بیرونی دنیا کے ڈیٹا کے بارے میں صرف ضروری معلومات فراہم کرنا، پس منظر کی تفصیلات کو چھپانا یا عمل درآمد کرنا ہے۔
کلاسز کا استعمال کرتے ہوئے تجرید
آپ کلاسز کی مدد سے C++ میں Abstraction کو نافذ کر سکتے ہیں۔ کلاس آپ کو دستیاب رسائی کے تصریح کاروں کا استعمال کرتے ہوئے ڈیٹا ممبرز اور ممبر کے فنکشنز کو گروپ کرنے میں مدد کرتی ہے۔ کلاس یہ فیصلہ کر سکتی ہے کہ کون سا ڈیٹا ممبر بیرونی دنیا کو نظر آئے گا اور کون سا نہیں۔
رسائی کی وضاحت کرنے والوں کا استعمال کرتے ہوئے خلاصہ
رسائی کی وضاحت کرنے والے C++ میں تجرید کو نافذ کرنے میں اہم کردار ادا کرتے ہیں۔ آپ کلاس کے اراکین پر پابندیاں نافذ کرنے کے لیے رسائی کے تصریحات کا استعمال کر سکتے ہیں۔ مثال کے طور پر:
مثال
|_+_|آؤٹ پٹ
|_+_|C++ ڈیٹا انکیپسولیشن
یہ ایک اکائی میں فنکشنز اور ڈیٹا ممبرز کو ملانے کا عمل ہے جسے کلاس کہتے ہیں۔ یہ براہ راست ڈیٹا تک رسائی کو روکنے کے لیے ہے۔ ان تک رسائی کلاس کے افعال کے ذریعے فراہم کی جاتی ہے۔ یہ آبجیکٹ اورینٹڈ پروگرامنگ کی مقبول خصوصیات میں سے ایک ہے جو ڈیٹا کو چھپانے میں مدد کرتا ہے۔
اس کو نافذ کرنے کے لیے
مثال
|_+_|آؤٹ پٹ
|_+_|C++ خلاصہ کلاسز
C++ کلاس کو اس کے ایک فنکشن کو vital> خالص ورچوئل فنکشن قرار دے کر خلاصہ بنایا جاتا ہے۔ ایک خالص ورچوئل فنکشن کا ذکر اس کے ڈیکلریشن میں = 0 رکھ کر کیا گیا ہے۔ اخذ شدہ کلاسوں کو اپنا نفاذ فراہم کرنا چاہیے۔
مثال
|_+_|آؤٹ پٹ
|_+_|C++ فائلیں اور اسٹریمز
ہاں نہیں | ڈیٹا کی قسم | تفصیل |
ایک | آف اسٹریم | یہ آؤٹ پٹ فائل اسٹریم کی نمائندگی کرتا ہے اور اسے فائلیں بنانے اور فائلوں میں معلومات لکھنے کے لیے استعمال کیا جاتا ہے۔ |
دو | ifstream | یہ ان پٹ فائل اسٹریم کی نمائندگی کرتا ہے اور اسے فائلوں سے معلومات پڑھنے کے لیے استعمال کیا جاتا ہے۔ |
3 | fstream | یہ عام طور پر فائل اسٹریم کی نمائندگی کرتا ہے اور اس میں آف اسٹریم اور ifstream دونوں کی صلاحیت ہے۔ |
ایک فائل کھولنا
اس سے پہلے کہ آپ اسے پڑھ سکیں یا لکھ سکیں فائل کو کھولنا چاہیے۔ تحریر کے لیے فائل کھولنے کے لیے یا تو fstream یا ofstream آبجیکٹ کا استعمال کیا جا سکتا ہے۔ ایک ifstream آبجیکٹ فائل کو صرف پڑھنے کے مقاصد کے لیے کھولنے کے لیے استعمال کیا جاتا ہے۔
ہاں نہیں | موڈ پرچم | تفصیل |
ایک | ios::ate | فائل کے تمام آؤٹ پٹ کو آخر میں شامل کرنا ہے۔ |
دو | ios::app | یہ آؤٹ پٹ کے لیے ایک فائل کھولتا ہے اور پڑھنے یا لکھنے کے کنٹرول کو فائل کے آخر تک لے جاتا ہے۔ |
3 | ios::trunc | اگر فائل پہلے سے موجود ہے، تو فائل کھولنے سے پہلے مواد کو چھوٹا کر دیا جائے گا۔ |
4 | ios::out | یہ لکھنے کے لیے ایک فائل کھولتا ہے۔ |
5 | ios::in | یہ پڑھنے کے لیے ایک فائل کھولتا ہے۔ |
SYNTAX
|_+_|ایک فائل کو بند کرنا
جب ایک C++ پروگرام ختم ہو جاتا ہے تو یہ خود بخود تمام اسٹریمز کو فلش کر دیتا ہے، تمام مختص میموری کو چھوڑ دیتا ہے اور کھولی گئی تمام فائلوں کو بند کر دیتا ہے۔
SYNTAX
|_+_|فائل سے پڑھنا
آپ اسٹریم ایکسٹرکشن آپریٹر (>>) کا استعمال کرکے اپنے پروگرام میں فائل سے معلومات پڑھ سکتے ہیں۔ فرق صرف یہ ہے کہ آپ cin آبجیکٹ کے بجائے fstream یا ifstream آبجیکٹ استعمال کرتے ہیں۔
مثال پڑھیں اور لکھیں۔
|_+_|آؤٹ پٹ
|_+_|فائل پوزیشن پوائنٹرز
اوسٹریم اور آئسٹریم دونوں فائل پوزیشن پوائنٹر کو دوبارہ جگہ دینے کے لیے ممبر فنکشن فراہم کرتے ہیں۔ یہ ممبر فنکشنز اوسٹریم کے لیے سیکپ اور آئی اسٹریم کے لیے سیکگ ہیں۔ تلاش اور تلاش کی دلیل ایک لمبا عدد ہے۔ تلاش کی سمت کی نشاندہی کرنے کے لیے دوسری دلیل کا ذکر کیا جا سکتا ہے۔
C++ استثنیٰ ہینڈلنگ
C++ میں استثنیٰ ہینڈلنگ رن ٹائم کی غلطیوں کو ہینڈل کرنے کا عمل ہے۔ آپ مستثنیٰ ہینڈلنگ انجام دیتے ہیں تاکہ رن ٹائم کی غلطیوں کے بعد بھی ایپلیکیشن کا معمول کا بہاؤ برقرار رکھا جا سکے۔
C++ میں، ایک استثنائی واقعہ یا شے ہے جو رن ٹائم پر پھینکی جاتی ہے۔ تمام مستثنیات std::exception class سے ماخوذ ہیں۔ اگر ہم استثنیٰ کو نہیں سنبھالتے ہیں، تو یہ استثنائی پیغام کو پرنٹ کرتا ہے اور پروگرام کو ختم کر دیتا ہے۔
مستثنیات | تفصیل |
std::bad_exception | یہ غیر متوقع استثناء کو سنبھالنے کے لیے استعمال ہوتا ہے۔ |
std::logic_failure | کوڈ پڑھ کر اس کا پتہ لگایا جا سکتا ہے۔ |
std::bad_typeid | یہ عام طور پر ٹائپڈ کے ذریعہ پھینکا جاتا ہے۔ |
std::runtime_error | کوڈ پڑھ کر اس کا پتہ نہیں لگایا جا سکتا۔ |
std:: استثناء | یہ تمام معیاری C++ مستثنیات کی ایک استثناء اور پیرنٹ کلاس ہے۔ |
std::bad_cast | یہ عام طور پر dynamic_cast کے ذریعے پھینکا جاتا ہے۔ |
std::bad_alloc | یہ عام طور پر نئے کی طرف سے پھینک دیا جاتا ہے. |
C++ استثنیٰ ہینڈلنگ تین کلیدی الفاظ پر مبنی ہے: پکڑنے کی کوشش، اور پھینکنا .
مثال
|_+_|C++ ڈائنامک میموری
یادداشت کو دو حصوں میں تقسیم کیا گیا ہے۔
پروگرامر سٹوریج کی جگہ کو متحرک طور پر مختص کر سکتے ہیں جب پروگرام چل رہا ہو۔ پھر بھی، پروگرامرز نئے متغیر نام نہیں بنا سکتے، اور اس وجہ سے، متحرک مختص کے لیے دو معیارات درکار ہیں:
میموری ڈی ایلوکیشن بھی اس تصور کا ایک حصہ ہے جہاں دیگر ڈیٹا اسٹوریج کے لیے جگہ کی صفائی کی جاتی ہے۔ متحرک میموری کو غیر مختص کرنے کے لیے، آپ ڈیلیٹ آپریٹر استعمال کر سکتے ہیں۔ لہٰذا، ڈائنامک میموری ایلوکیشن سے مراد دستی طور پر ڈائنامک میموری ایلوکیشن کے لیے میموری مینجمنٹ کو انجام دینا ہے۔
نئے اور ڈیلیٹ آپریٹرز
یہاں، ڈیٹا ٹائپ کوئی بھی بلٹ ان ڈیٹا ٹائپ ہو سکتا ہے جس میں ایک صف شامل ہو، یا صارف کی وضاحت کردہ ڈیٹا کی اقسام میں کلاس یا ڈھانچہ ہو۔ آئیے بلٹ ان ڈیٹا کی اقسام کے ساتھ شروع کریں۔
SYNTAX
|_+_|جب آپ ایک متغیر محسوس کرتے ہیں جو متحرک طور پر مختص نہیں ہے اور اب اس کی ضرورت نہیں ہے، تو آپ مفت اسٹور میں میموری کو اس کے ساتھ خالی کر سکتے ہیں۔ 'حذف کریں' آپریٹر
SYNTAX
|_+_|مثال
|_+_|صفوں کی متحرک میموری مختص
اگر آپ بطور پروگرامر؛ اسی نحو کی مدد سے حروف کی ایک صف کے لیے میموری مختص کرنا چاہتے ہیں جو آپ کر سکتے ہیں۔
مثال
|_+_|نام کی جگہیں آپ کو گروپ نامی اداروں کی پیشکش کرتی ہیں جن کے پاس ہے۔ عالمی دائرہ کار تنگ دائروں میں، ان کو دے کر نام کی جگہ کی گنجائش . یہ پروگراموں کے عناصر کو مختلف منطقی دائروں میں ترتیب دینے کی بھی اجازت دیتا ہے جن کا حوالہ ناموں سے ہوتا ہے۔ نام کی جگہ ایک خصوصیت ہے جو C++ میں موجود ہے اور C میں موجود نہیں ہے۔ ایک ہی نام کے ساتھ متعدد نام کی جگہ بلاکس کی اجازت ہے۔ بلاکس کے اندر تمام اعلانات نامزد دائرہ کار میں اعلان کیے جاتے ہیں۔
SYNTAX
|_+_|مثال
|_+_|آؤٹ پٹ
|_+_|متضاد نام کی جگہیں۔
نام کی جگہ کو کئی حصوں میں بیان کیا جاتا ہے اور نام کی جگہ اس کے متعین حصوں کے مجموعہ سے بنتی ہے۔ نام کی جگہ کے الگ الگ حصے متعدد فائلوں پر پھیلے ہوئے ہیں۔
SYNTAX
|_+_|نیسٹڈ نیم اسپیسز
یہاں آپ دوسرے نام کی جگہ کے اندر ایک نام کی جگہ کی وضاحت کر سکتے ہیں۔
SYNTAX
|_+_|مثال
|_+_|C++ ٹیمپلیٹس
ٹیمپلیٹ C++ کی ایک خصوصیت ہے جو آپ کو عام پروگرام لکھنے کی پیشکش کرتی ہے۔ دوسری شرائط میں، آپ ٹیمپلیٹس کا استعمال کرتے ہوئے مختلف ڈیٹا کی اقسام کے ساتھ کام کرنے کے لیے ایک فنکشن یا کلاس بنا سکتے ہیں۔ ٹیمپلیٹس کو کوڈ کی لچک اور پروگراموں کے دوبارہ استعمال کے لیے بڑے کوڈ بیس میں استعمال کیا جاتا ہے۔
یہ تصورات دو طریقوں سے استعمال ہوتے ہیں:
فنکشن ٹیمپلیٹس
ایک فنکشن ٹیمپلیٹ ایک کلیدی فرق کے ساتھ، ایک عام فنکشن کی طرح کام کرتا ہے۔
ایک فنکشن ٹیمپلیٹ مختلف ڈیٹا کی اقسام کے ساتھ کام کر سکتا ہے، لیکن، ایک عام فنکشن ڈیٹا کی اقسام کے ایک سیٹ کے ساتھ کام کر سکتا ہے۔
عام طور پر، اگر آپ متعدد قسم کے ڈیٹا پر یکساں آپریشن کرنا چاہتے ہیں، تو آپ فنکشن ڈیکلریشن کے ساتھ فنکشنز بنانے کے لیے فنکشن اوورلوڈنگ کا استعمال کر سکتے ہیں۔
اگرچہ، فنکشن ٹیمپلیٹس کا استعمال کرنا ایک بہتر طریقہ ہوگا کیونکہ آپ وہی کام انجام دے سکتے ہیں جو کم اور برقرار رکھنے کے قابل کوڈ لکھتے ہیں۔
مثال
|_+_|آؤٹ پٹ
|_+_|کلاس ٹیمپلیٹس
فنکشن ٹیمپلیٹس کی طرح، آپ کلاس آپریشنز کے لیے کلاس ٹیمپلیٹس بنا سکتے ہیں۔ عام طور پر، آپ کو ہر ڈیٹا ٹائپ کے لیے ایک مختلف کلاس بنانے کی ضرورت ہوگی یا سنگل کلاس کے اندر دوسرے ممبر متغیرات اور فنکشنز بنانا ہوں گے۔
یہ غیر ضروری طور پر آپ کے کوڈ بیس کو پھول دے گا اور اسے برقرار رکھنا مشکل ہو جائے گا، کیونکہ ایک کلاس/فنکشن میں تبدیلی تمام کلاسز/فنکشنز پر ہونی چاہیے۔ اگرچہ کلاس ٹیمپلیٹس تمام ڈیٹا کی اقسام کے لیے ایک ہی کوڈ کو دوبارہ استعمال کرنا آسان بناتے ہیں۔
مثال
|_+_|آؤٹ پٹ
|_+_|C++ پری پروسیسرز
پری پروسیسر کی ہدایات وہ لائنیں ہیں جو پروگرام کے کوڈ میں شامل ہیں جن سے پہلے ہیش سائن (#) ہوتا ہے۔ یہ لائنیں پروگرام شدہ بیانات نہیں ہیں بلکہ پری پروسیسر کے لیے ہدایات ہیں۔ پری پروسیسر کوڈ کی تالیف شروع ہونے سے پہلے کوڈ کی جانچ کرتا ہے اور باقاعدہ بیانات سے کوئی کوڈ تیار کرنے سے پہلے تمام ہدایات کو حل کرتا ہے۔
پری پروسیسر کی ہدایات کوڈ کی ایک لائن میں پھیلی ہوئی ہیں۔ جیسے ہی نئی لائن کیریکٹر مل جاتا ہے، پری پروسیسر کی ہدایت ختم ہو جاتی ہے۔
پری پروسیسر ہدایات کی 4 اہم اقسام ہیں:
وسیع
میکرو کوڈ کا ایک ٹکڑا ہے جسے کچھ نام دیا گیا ہے۔ جب بھی کمپائلر کا اس نام کا سامنا ہوتا ہے، تو یہ نام کو کوڈ کے اصل ٹکڑے سے بدل دیتا ہے۔ میکرو کی وضاحت کے لیے '#define' ہدایت کا استعمال کیا جاتا ہے۔
مثال
|_+_|آؤٹ پٹ
|_+_|پہلے سے طے شدہ C++ میکرو
اس میں پروگرام کا لائن نمبر ہوتا ہے جب پروگرام مرتب کیا جاتا ہے۔
اس میں پروگرام کا موجودہ فائل نام ہوتا ہے جب اسے مرتب کیا جا رہا ہو۔
اس میں وہ سٹرنگ ہے جو ماخذ فائل کے آبجیکٹ کوڈ میں ترجمہ کرنے کی تاریخ ہے۔
اس میں گھنٹہ: منٹ: سیکنڈ کی ایک تار ہوتی ہے جو وہ وقت ہے جس میں پروگرام مرتب کیا گیا تھا۔
فائل کی شمولیت
یہ پری پروسیسر ہدایت کمپائلر کو پروگرام میں فائل شامل کرنے کے لیے کہتی ہے۔ دو قسم کی فائلیں ہیں جو پروگرام میں صارف کے ذریعہ رکھی جاتی ہیں:
مشروط تالیف
یہ پروگرام کے ایک مخصوص حصے کو مرتب کرنے یا کچھ شرائط کی بنیاد پر پروگرام کے کسی خاص حصے کی تالیف کو چھوڑنے میں مدد کرتا ہے۔
SYNTAX
|_+_|دیگر ہدایات
مذکورہ بالا ہدایات کے علاوہ یہاں دو اور ہدایتیں ہیں جو عام طور پر استعمال نہیں ہوتیں۔ یہ ہیں:
C++ سگنل ہینڈلنگ
سگنل وہ رکاوٹیں ہیں جو آپریٹنگ سسٹم کسی ایسے عمل کو فراہم کرتا ہے جو پروگرام کو وقت سے پہلے ختم کر دیتا ہے۔ UNIX پر Ctrl+C دبانے سے، لینکس ، Mac OS X یا Windows مشین، آپ رکاوٹیں بنا سکتے ہیں۔
ایسے سگنلز ہیں جن کا سافٹ ویئر پتہ نہیں لگا سکتا، لیکن سگنلز کی ایک فہرست موجود ہے جسے آپ اپنے پروگرام میں پکڑ سکتے ہیں اور سگنل پر مبنی قابل قبول کارروائیاں کر سکتے ہیں۔ C++ ہیڈر فائل ان سگنلز کو بیان کرتی ہے۔
ہاں نہیں | سگنل | تفصیل |
ایک | SIGFPE | ایک غلط ریاضی کا آپریشن، جیسے صفر بریک یا اوور فلو آپریشن۔ |
دو | SIGABRT | غیر معمولی پروگرام کا خاتمہ، جیسے کہ اسقاط کے لیے کال۔ |
3 | سائنٹ | انٹرایکٹو فوکس کے سگنل کی رسید |
4 | سیل | ایک ناجائز ہدایت کی دریافت۔ |
5 | SIGTERM | پروگرام کو ختم کرنے کی درخواست جمع کرائی۔ |
6 | SIGSEGV | غلط ڈسک رسائی۔ |
سگنل () فنکشن
C++ سگنل ہینڈلنگ لائبریری میں غیر متوقع واقعات کو پھنسانے کے لیے سگنل کی خصوصیت شامل ہے۔
SYNTAX
|_+_|مثال
|_+_|آؤٹ پٹ
|_+_|raise() فنکشن
raise() فنکشن کے ساتھ، جو دلیل کے طور پر ایک عدد سگنل نمبر لیتا ہے، آپ سگنل تیار کر سکتے ہیں۔
SYNTAX
|_+_|مثال
|_+_|آؤٹ پٹ
|_+_|ملٹی تھریڈنگ ایک خاص قسم کی ملٹی ٹاسکنگ ہے اور وہ فنکشن جو آپ کی مشین کو دو یا زیادہ پروگراموں کو بیک وقت چلانے کے قابل بناتا ہے ایک ملٹی ٹاسکنگ فنکشن ہے۔ عام طور پر ملٹی ٹاسکنگ کی دو قسمیں ہیں: عمل پر مبنی اور تھریڈ پر مبنی۔ پروگراموں کے متوازی عمل کو عمل پر مبنی ملٹی ٹاسکنگ کے ذریعے سنبھالا جاتا ہے۔ دھاگوں پر مبنی ملٹی ٹاسکنگ ایک ہی پروگرام کے حصوں کے متوازی عمل سے متعلق ہے۔ ملٹی تھریڈ پروگرام کے دو یا تین اجزاء ہیں جو بیک وقت چلیں گے۔
SYNTAX
|_+_|ہاں نہیں | پیرامیٹر | تفصیل |
ایک | ناراض | ایک واحد بیان جسے معمول کے آغاز پر بھیجا جا سکتا ہے۔ موازنہ کے لحاظ سے اسے ٹائپ ویوائیڈ کے پوائنٹر کاسٹ کے طور پر منتقل کیا جانا چاہیے۔ NULL استعمال کیا جا سکتا ہے جب منتقل کرنے کے لئے کوئی دلیل نہیں ہے. |
دو | دھاگہ | موجودہ دھاگے کے لیے ایک مبہم، خصوصی شناخت کنندہ جو سب روٹین لوٹتا ہے۔ |
3 | attr | ایک غیر مرئی آبجیکٹ انتساب جو دھاگے کی خصوصیات کو ترتیب دینے کے لیے استعمال کیا جا سکتا ہے۔ آپ دھاگے کی خصوصیات کے ساتھ کسی چیز کی وضاحت کر سکتے ہیں، یا پہلے سے طے شدہ اقدار کے ساتھ NULL۔ |
4 | شروع_روٹین | C++ روٹین جو ایک بار قائم ہو جائے گی، دھاگہ عمل میں آئے گا۔ |
تھریڈز ختم ہو رہے ہیں۔
POSIX تھریڈ کو ختم کرنے کے لیے ہم درج ذیل روٹین کا استعمال کرتے ہیں:
|_+_|یہاں، pthread exit کا استعمال براہ راست تھریڈ سے باہر نکلنے کے لیے کیا جاتا ہے۔ عام طور پر، ایک بار جب تھریڈ اپنا کام مکمل کر لیتا ہے اور اسے کام کرنے کی ضرورت نہیں رہتی ہے، تو pthread exit() روٹین کا نام دیا جاتا ہے۔
اگر main() ختم ہو جاتا ہے اور pthread exit() کے ساتھ نکلتا ہے اس سے پہلے کہ یہ تھریڈز تیار کرتا ہے، تو دوسرے تھریڈز چلنا شروع کر سکتے ہیں۔ بصورت دیگر main() ختم ہونے پر، وہ فوری طور پر ختم ہو جاتے ہیں۔
تھریڈز داخل ہونا اور الگ کرنا
دو معمولات جو ہم تھریڈز کو داخل کرنے یا ہٹانے کے لیے استعمال کر سکتے ہیں۔
|_+_|سب روٹین pthread join() کالنگ تھریڈ کو بلاک کرتا ہے جب تک کہ 'threadid' تھریڈ ختم نہیں ہو جاتا۔ اس کی خصوصیات میں سے ایک اس بات کا تعین کرتی ہے کہ آیا یہ جوڑنے کے قابل ہے یا جب دھاگہ بنتا ہے تو الگ ہوجاتا ہے۔ اسے صرف ان تھریڈز کے ذریعے جوڑا جا سکتا ہے جو جوائن ایبل کے طور پر تیار ہوتے ہیں۔ اگر کوئی دھاگہ علیحدہ ہو کر بنتا ہے تو یہ کبھی بھی شامل نہیں ہو سکتا۔
C++ ویب پروگرامنگ
اور CGI کیا ہے؟
رہنما خطوط کا ایک مجموعہ جو اس بات کی وضاحت کرتا ہے کہ ویب سرور اور ایک حسب ضرورت اسکرپٹ کے درمیان معلومات کا اشتراک کس طرح کیا جاتا ہے Typical Gateway Interface یا CGI ہے۔ بیرونی گیٹ وے سسٹمز کے لیے، جنرک گیٹ وے انٹرفیس، یا CGI، HTTP سرورز جیسے معلوماتی سرورز کے ساتھ انٹرفیس کرنے کا ایک معیار ہے۔ CGI/1.1 تازہ ترین ورژن ہے، اور CGI/1.2 ترقی میں ہے۔
انٹرنیٹ پر براؤزنگ
آئیے دیکھتے ہیں کہ جب ہم سی جی آئی کے تصور کو سمجھنے کے لیے کسی مخصوص ویب صفحہ یا یو آر ایل کو براؤز کرنے کے لیے ہائپر لنک کو دباتے ہیں تو کیا ہوتا ہے۔ HTTP ویب سرور سے آپ کے براؤزر سے رابطہ ہوتا ہے اور URL کا مطالبہ کرتا ہے، یعنی فائل نام کے ذریعے فائل کا نام۔ ویب سرور URL کو پارس کرتا ہے اور فائل کا نام تلاش کرتا ہے۔ اگر درخواست کی گئی فائل موجود ہے تو، ویب سرور فائل کو واپس براؤزر میں منتقل کر دے گا، بصورت دیگر، یہ ایک غلطی کا پیغام بھیجے گا کہ آپ نے غلط فائل کی درخواست کی ہے۔
پاپولر گیٹ وے انٹرفیس (CGI) ایک بنیادی پروٹوکول ہے جو ایپلیکیشنز کو ویب سرورز اور کلائنٹس کے ساتھ بات چیت کرنے کی اجازت دیتا ہے۔ ان CGI پروگراموں کو Python، PERL، Shell، C یا C++ وغیرہ میں لکھنا ممکن ہے۔
مثال
|_+_|ویب سرور کنفیگریشن
اس بات کو یقینی بنائیں کہ ویب سرور CGI پروگرامنگ کو جاری رکھنے سے پہلے CGI کو قبول کرتا ہے اور اسے CGI پروگراموں کو ایڈجسٹ کرنے کے لیے ڈیزائن کیا گیا ہے۔ بہت سے CGI پروگرام جو HTTP سرور چلاتا ہے پہلے سے تشکیل شدہ ڈائرکٹری میں واقع ہیں۔ اس ڈائرکٹری کو CGI ڈائریکٹری کہا جاتا ہے اور اسے کنونشن کے ذریعہ /var/www/cgi-bin کا نام دیا گیا ہے۔ CGI فائلوں میں کنونشن کے مطابق .cgi کے بطور ایکسٹینشن ہوں گے، حالانکہ وہ C++ کے ساتھ قابل عمل ہیں۔
HTTP ہیڈر
کوکی کو ترتیب دیں جو سٹرنگ سے گزرتی ہے۔
وسائل کی آخری تازہ کاری کی تاریخ۔
واپس کیے گئے ڈیٹا کی لمبائی، بائٹس میں۔ کسی فائل کے لیے لگ بھگ لوڈنگ وقت کی اطلاع دینے کے لیے، براؤزر اس قدر کا استعمال کرتا ہے۔
ایک MIME سٹرنگ جو سٹرنگ کی شکل بتاتی ہے۔
وہ URL جسے واپس کیا جانا چاہیے، بجائے کہ درخواست کردہ URL۔ یہ فائل کسی درخواست کو دوسری فائل پر بھیجنے کے لیے استعمال کی جائے گی۔
جس دن ڈیٹا بیکار ہو گیا۔ براؤزر کو یہ فیصلہ کرنے کے لیے استعمال کرنا چاہیے کہ آیا کسی ویب سائٹ کو ریفریش کرنا ہے۔
ماحولیاتی تغیرات
حاصل کرنے اور پوسٹ کرنے کے طریقے
جب آپ کسی بھی تفصیلات کو اپنے براؤزر سے ویب سرور اور آخر کار اپنی CGI ایپلیکیشن میں منتقل کرنے کی کوشش کرتے ہیں، تو آپ کو کچھ مخصوص منظرناموں سے گزرنے کی ضرورت ہوتی ہے۔ اس معلومات کو ویب سرور پر منتقل کرنے کے لیے براؤزر کے ذریعہ دو طریقوں کو عام طور پر استعمال کیا جاتا ہے۔ وہ طریقے GET طریقہ اور POST طریقہ ہیں۔
URL کی مثال حاصل کرنے کا طریقہ
|_+_|کوکیز کا استعمال
HTTP پروٹوکول ایک پروٹوکول ہے جو بے وطن ہے۔ لیکن تجارتی ویب سائٹ کے لیے مختلف سائٹس کے درمیان سیشن ڈیٹا کو برقرار رکھنا ضروری ہے۔ ایک صارف کی رجسٹریشن، مثال کے طور پر، کئی صفحات مکمل ہونے کے بعد ختم ہو جاتی ہے۔ لیکن تمام ویب سائٹس پر صارف کے لیے سیشن کی تفصیلات کیسے رکھیں۔ دلچسپیوں، سیلز، کمیشنز، اور دیگر تفصیلات کو یاد رکھنے اور ان کی نگرانی کرنے کا سب سے قابل اعتماد طریقہ یہ ہے کہ وزیٹر کے تجربے یا سائٹ کے اعدادوشمار کو بہتر بنانے کے لیے کچھ معاملات میں کوکیز کا استعمال کیا جائے۔
کوکی کی شکل میں، آپ کا سرور کچھ ڈیٹا کو وزیٹر کی ونڈو میں منتقل کرتا ہے۔ کوکی کو براؤزر سے منظور کیا جائے گا۔ اگر ایسا ہوتا ہے، تو اسے وزیٹر کی ہارڈ ڈرائیو پر سادہ ٹیکسٹ آرکائیو کے طور پر محفوظ کیا جاتا ہے۔ اب جب صارف آپ کے ویب پر کسی دوسرے صفحہ کو ٹکرائے گا تو کوکی بازیابی کے لیے تیار ہے۔ بازیافت ہونے پر، جو ذخیرہ کیا گیا تھا وہ سرور کے ذریعہ معلوم/یاد رکھا جاتا ہے۔
فائل اپ لوڈ کی مثال
|_+_|نتیجہ
اس کے ساتھ ہم اس C++ ٹیوٹوریل کے اختتام پر آتے ہیں۔ امید ہے کہ اس سے آپ کو C++ پروگرامنگ کے بارے میں بنیادی باتوں کو سمجھنے میں مدد ملی۔