Declaration (computer programming)
کمپیوٹر پروگرامنگ میں، اعلامیہ ایک زبان کی تعمیر ہے جو شناخت کنندہ کی خصوصیات کی وضاحت کرتی ہے: یہ کسی لفظ (شناخت کنندہ) کے معنی کا اعلان کرتی ہے۔ اعلامیے عام طور پر افعال، متغیرات، مستقل اور کلاسوں کے لیے استعمال ہوتے ہیں، لیکن دیگر اداروں جیسے کہ گنتی اور قسم کی تعریفوں کے لیے بھی استعمال کیے جا سکتے ہیں۔ نام (خود شناخت کنندہ) اور وجود کی قسم (فنکشن، متغیر، وغیرہ) سے پرے۔ )، اعلامیے عام طور پر ڈیٹا کی قسم (متغیرات اور مستقل کے لیے)، یا قسم کے دستخط (افعال کے لیے) کی وضاحت کرتے ہیں۔ اقسام میں طول و عرض بھی شامل ہو سکتے ہیں، جیسے کہ صفوں کے لیے۔ مرتب کرنے والے کو وجود کے وجود کا اعلان کرنے کے لیے ایک اعلامیہ استعمال کیا جاتا ہے۔ یہ ان مضبوطی سے ٹائپ کی گئی زبانوں میں اہم ہے جن میں افعال، متغیرات، اور مستقل کی ضرورت ہوتی ہے، اور ان کی اقسام کو استعمال سے پہلے اعلامیے کے ساتھ متعین کیا جاتا ہے، اور آگے کے اعلامیے میں استعمال ہوتا ہے۔ "اعلامیہ" کی اصطلاح اکثر "تعریف" کی اصطلاح سے متصادم ہوتی ہے، لیکن معنی اور استعمال زبانوں کے درمیان نمایاں طور پر مختلف ہوتے ہیں۔ نیچے دیکھیں۔ اعلانات خاص طور پر ALGOL روایت کی زبانوں میں نمایاں ہیں، بشمول BCPL خاندان، خاص طور پر C اور C + +، اور پاسکل بھی۔ جاوا "ڈیکلریشن" کی اصطلاح استعمال کرتا ہے، حالانکہ جاوا کو علیحدہ اعلانات اور تعریفوں کی ضرورت نہیں ہے۔ اعلامیہ بمقابلہ تعریف ایک بنیادی ڈائکوٹومی یہ ہے کہ آیا اعلامیے میں کوئی تعریف شامل ہے یا نہیں: مثال کے طور پر، آیا کوئی متغیر یا مستقل اعلامیہ اس کی قیمت کی وضاحت کرتا ہے، یا صرف اس کی قسم ؛ اور اسی طرح آیا کسی فنکشن کا اعلامیہ فنکشن کے باڈی (نفاذ) کی وضاحت کرتا ہے، یا صرف اس کے قسم کے دستخط۔ تمام زبانیں یہ فرق نہیں کرتی ہیں: بہت سی زبانوں میں، اعلانات میں ہمیشہ ایک تعریف شامل ہوتی ہے، اور زبان کے لحاظ سے اسے "اعلانات" یا "تعریفیں" کہا جا سکتا ہے۔ تاہم، ان تصورات کو ان زبانوں میں ممتاز کیا جاتا ہے جن میں استعمال سے پہلے اعلامیے کی ضرورت ہوتی ہے (جس کے لیے آگے کے اعلامیے استعمال کیے جاتے ہیں)، اور ان زبانوں میں جہاں انٹرفیس اور نفاذ کو الگ کیا جاتا ہے: انٹرفیس میں اعلامیے ہوتے ہیں، نفاذ میں تعریفیں ہوتی ہیں۔ غیر رسمی استعمال میں، "اعلامیہ" سے مراد صرف ایک خالص اعلامیہ ہوتا ہے (صرف اقسام، کوئی قدر یا باڈی نہیں)، جبکہ "تعریف" سے مراد ایک اعلامیہ ہوتا ہے جس میں کوئی قدر یا باڈی شامل ہوتا ہے۔ تاہم، رسمی استعمال میں (زبان کی خصوصیات میں)، "اعلامیہ" میں یہ دونوں حواس شامل ہیں، زبان کے لحاظ سے باریک امتیازات کے ساتھ: C اور C + + میں، کسی فنکشن کا اعلامیہ جس میں باڈی شامل نہیں ہے اسے فنکشن پروٹو ٹائپ کہا جاتا ہے، جبکہ کسی فنکشن کا اعلامیہ جس میں باڈی شامل ہو اسے "فنکشن ڈیفینیشن" کہا جاتا ہے۔ جاوا میں اعلانات دو شکلوں میں ہوتے ہیں۔ عوامی طریقوں کے لیے انہیں انٹرفیس میں طریقہ دستخط کے طور پر پیش کیا جا سکتا ہے، جو طریقہ نام، ان پٹ کی اقسام اور آؤٹ پٹ کی قسم پر مشتمل ہوتا ہے۔ تجریدی طریقوں کی تعریف میں اسی طرح کے اشارے استعمال کیے جا سکتے ہیں، جن میں کوئی تعریف نہیں ہوتی ہے۔ منسلک کلاس کو فوری کیا جا سکتا ہے، بلکہ ایک نئی ماخوذ کلاس، جو طریقہ کار کی تعریف فراہم کرتی ہے، کو کلاس کی مثال بنانے کے لیے بنانے کی ضرورت ہوگی۔ جاوا 8 سے شروع کرتے ہوئے، لیمبڈا اظہار کو زبان میں شامل کیا گیا تھا، جسے فنکشن ڈیکلریشن کے طور پر دیکھا جا سکتا ہے۔ اعلانات اور تعریفیں پروگرامنگ زبانوں کے سی-فیملی میں، اعلانات اکثر ہیڈر فائلوں میں جمع کیے جاتے ہیں، جو دیگر ماخذ فائلوں میں شامل ہوتے ہیں جو ان اعلانات کا حوالہ دیتے ہیں اور استعمال کرتے ہیں، لیکن تعریف تک رسائی نہیں رکھتے ہیں۔ ہیڈر فائل میں موجود معلومات کوڈ کے درمیان انٹرفیس فراہم کرتی ہے جو اعلامیے کا استعمال کرتا ہے اور جو اس کی وضاحت کرتا ہے، معلومات کو چھپانے کی ایک شکل ہے۔ اعلامیہ اکثر مختلف ماخذ فائلوں، یا لائبریری میں بیان کردہ افعال یا متغیرات تک رسائی کے لیے استعمال ہوتا ہے۔ تعریف کی قسم اور اعلامیے کی قسم کے درمیان مماثلت مرتب کرنے میں غلطی پیدا کرتی ہے۔ متغیرات کے لیے، تعریفیں میموری کے ایک علاقے کو اقدار تفویض کرتی ہیں جو اعلانیہ مرحلے کے دوران محفوظ کی گئی تھیں۔ افعال کے لیے، تعریفیں فنکشن باڈی فراہم کرتی ہیں۔ اگرچہ کسی متغیر یا فنکشن کو کئی بار اعلان کیا جا سکتا ہے، لیکن اس کی وضاحت عام طور پر ایک بار کی جاتی ہے (C + + میں، اسے ون ڈیفینیشن رول یا ODR کے نام سے جانا جاتا ہے)۔ متحرک زبانیں جیسے جاوا اسکرپٹ یا ازگر عام طور پر افعال کو نئی شکل دینے کی اجازت دیتی ہیں، یعنی دوبارہ پابند ؛ ایک فنکشن کسی دوسرے کی طرح متغیر ہوتا ہے، جس میں نام اور قدر (تعریف) ہوتی ہے۔ یہاں اعلانات کی کچھ مثالیں ہیں جو تعریفیں نہیں ہیں، سی میں: بیرونی چار مثال 1 ؛ بیرونی انٹ مثال 2 ؛ کالعدم مثال 3 (کالعدم) ؛ یہاں اعلانات کی کچھ مثالیں ہیں جو تعریفیں ہیں، دوبارہ سی میں: چار مثال 1 ؛/* فنکشن کی تعریف سے باہر اسے صفر سے شروع کیا جائے گا۔ */int مثال 2 = 5 ؛ کالعدم مثال 3 (کالعدم) {/* بریسز کے درمیان تعریف */} غیر متعین متغیرات کچھ پروگرامنگ زبانوں میں، ایک مضمر اعلامیہ فراہم کیا جاتا ہے جب پہلی بار مرتب کرنے کے وقت اس طرح کے متغیر کا سامنا کرنا پڑتا ہے۔ دوسری زبانوں میں، اس طرح کے استعمال کو ایک غلطی سمجھا جاتا ہے، جس کے نتیجے میں تشخیصی پیغام ہوسکتا ہے۔ کچھ زبانوں نے مبہم اعلامیے کے رویے کے ساتھ شروعات کی ہے، لیکن جیسے جیسے وہ پختہ ہوتے گئے انہوں نے اسے غیر فعال کرنے کا اختیار فراہم کیا (جیسے۔ پرل کا "سخت استعمال کریں" یا بصری بنیادی کا "آپشن ایکسپلیسیٹ")۔ فنکشن پروٹو ٹائپ دائرہ کار (پروگرامنگ) نوٹ حوالہ جات بیرونی لنکس ڈیکلیئر بمقابلہ ڈیفائن C اور C + +، الیکس ایلین 8.2 میں بھی دیکھیں۔ اعلامیے، تعریفیں اور رسائی، سی بک، جی بی ڈائریکٹ ڈیکلیریشنز اینڈ ڈیفینیشنز (سی + +)، ایم ایس ڈی این اعلامیے مرتب کرنے والے کو بتاتے ہیں کہ پروگرام کا عنصر یا نام موجود ہے۔ تعریفیں اس بات کی وضاحت کرتی ہیں کہ نام کس کوڈ یا ڈیٹا کی وضاحت کرتا ہے۔ پروگرامنگ زبان کے تصورات مثال سی کوڈ والے مضامین