[Powered by Google Translate] [5 ہفتہ] [ڈیوڈ J. Malan، ہارورڈ یونیورسٹی] [یہ CS50 ہے.] [CS50.TV] [عورت] وہ جھوٹ بول رہا ہے، کے بارے میں کیا، مجھے پتہ نہیں ہے. [انسان] تو ہم کیا جانتے ہیں؟ [عورت] کہ 9:15 بجے، رے Santoya ATM پر تھا. [انسان] تو سوال کیا گیا ہے وہ 9:16 بجے کیا کر رہے ہو؟ [عورت] کچھ میں 9 ملی میٹر شوٹنگ. شاید وہ سپنر کو دیکھا. [انسان] یا پھر وہ ان کے ساتھ کام کر رہا تھا. [عورت] انتظار کریں. واپس ایک جاؤ. [انسان] آپ کیا دیکھتے ہیں؟ [♫ Suspenseful موسیقی ♫] [عورت] ان کے چہرے کو لے آو. فل سکرین. [انسان] ان کے شیشے. >> ایک عکس ہے. [♫ Suspenseful موسیقی ♫] [مان] یہ Nuevita کی بیس بال کی ٹیم ہے. کہ ان کی علامت (لوگو) ہے. [عورت] اور وہ جس نے اس جیکٹ پہنے ہے سے بات کر رہا ہے. [ڈیوڈ Malan] تو، اس CS50 5 ہفتے ہے، اور آج ہم آپ کے لئے ٹیلی ویژن اور فلم کے تھوڑا سا خراب ہے. تو، جب بھی تم اس طرح ایک شو دیکھ رہے ہیں اور پولیس کا کہنا ہے کہ "کہ تم نے صاف کر سکتا ہے؟" یا "افزوں،" حقیقی دنیا میں کوئی بڑھانے ہے. اصل میں، کیا آپ واقعی لے اس طرح ایک چھوٹی سی چیز ہے. میں ھنچائی کے صفحے سے عملے تصاویر میں سے ایک ہے. یہ کہا جاتا فوٹوشاپ پروگرام ہے. یہ 1 2 Bowdens کی ہے، 1 3 اصل Bowdens، آج، کیونکہ ہم مسز Bowden ہے ساتھ ساتھ یہاں روب اور پال کے ساتھ. لیکن یہاں کی سکرین پر روب ہے، اور اگر اس چمکنا پر ہم زوم وہ ہمیشہ اس کی آنکھوں میں دیکھا گیا ہے، کیا آپ اصل میں دیکھنا یہ ہے کہ جو تم دیکھتے ہو کیا تمہیں حاصل ہے. یہ ہے "بہتر" تو "CSI" یہ تھوڑا سا غلط ہے. ایک دوسرے کلپ ہے، اگر ہم "CSI" اب صرف تھوڑا سا پر منتخب کر سکتے ہیں. یہ ایک اچھا آج کے بعد اگر آپ چاہتے ہیں تو بولنا جملہ ہے اپنے دوستوں کے ساتھ تکنیکی آواز جب، سچ، تم بالکل کچھ بھی نہیں کہہ رہے ہو. [انسان] میں ہفتے گیا ہے کوچوان قاتل قتل کی تحقیقات ایک خاص مریض توجہ کے ساتھ. [عورت # 1] یہ حقیقی وقت میں ہے. [عورت # 2] میں گيا بنیادی کا استعمال کرتے ہوئے ایک GUI انٹرفیس کو تشکیل دیتے ہیں، اگر میں ایک IP ایڈریس کو ٹریک کر سکتے ہیں نظر آئے گا. [Malan] ایک طرف ہم آہنگی کی تو باہر آڈیو، بصری بنیادی کا استعمال کرتے ہوئے ایک GUI انٹرفیس کی تخلیق ایک IP ایڈریس پر نظر رکھنے کے مکمل بکواس ہے. ان دنوں آپ گيا بنیادی استعمال نہیں کریں گے، ایک GUI کے لئے کوئی ضرورت نہیں ہے، اور IP ایڈریس ایک تکنیکی طور پر درست اصطلاح ہے. تو ان کے لئے ایک آنکھ باہر رکھنے، اور میرے پسندیدہ میں سے ایک: یہ تھوڑا arcane ہے، کیونکہ آپ کو ایک مختلف قسم کی زبان کو جاننے کی ضرورت ہے. مقصد C-نامی ایک زبان، جو سی کے ایک superset ہے جو اس C کے علاوہ کچھ اضافی خصوصیات ان پر مبنی پروگرامنگ شئی کو درمیان، اس کا مطلب ہے. اور یہ زبان ہے کہ ایپل iOS پروگرامنگ کے لئے عام کیا ہے. اور اس طرح یہاں ایک مختلف شو سے مکمل طور پر ایک کلپ، سے "نمبر" کہ، اگر آپ اپنے کو روکنے اور TiVo پر اصل میں صحیح وقت پر قریبی نظر تمہیں دیکھ گے کہ جو کچھ وہ دیکھ رہے ہیں بہت نہیں کیا ہے بیان کیا جا رہا ہے ہے. اور مجھے ایک مختلف آڈیو کنیکٹر یہاں کوشش کرتے ہیں اور اگر ہم نہیں کر سکتے دیکھ مطابقت پذیری میں آڈیو اس وقت رکھیں. میں نے آپ کو "نمبر." [انسان # 1] یہ ایک 32 بٹ IPv4 ایڈریس ہے. [انسان # 2] IP، کہ انٹرنیٹ. >> ذاتی نیٹ ورک. یہ انیتا کے ذاتی نیٹ ورک ہے. [Malan] ٹھیک ہے. اس مقصد C-ہے، اور یہ کسی بچے کو رنگنے کے پروگرام کے لئے ہے، آپ وہاں متغیر کے نام سے شاید اندازہ کر سکتے ہیں. کہ تو تو تھا "نمبر." ہم نے تو آج اور اس ہفتے متعارف کرانے لہذا مسائل میں عدالتی اور سیاق و سباق کے دنیا کے تھوڑا سا ہے. آج ایک مختصر لیکچر کیونکہ یہاں ایک خصوصی تقریب کے بعد، تو ہم ایک جھانکنا لے، اور چڑھانا طلباء اور دونوں یکساں والدین آج کریں گے چیزوں ہے کہ افق پر ہیں میں سے کچھ کے ساتھ. ان میں، آپ کو پیر کے طور پر کچھ زیادہ ہم جماعتوں پڑے گا. EdX ہارورڈ، اور کھلے نصاب کے لئے MITs نئی آن لائن پہل اور زیادہ، پیر کو ہارورڈ یونیورسٹی کے کیمپس پر شروع کر رہا ہے. آخری شمار کے طور پر، - جو آئے پیر کا مطلب ہے کہ آپ کو کرنا پڑے گا 86.000 اضافی ہم جماعتوں کے ساتھ CS50 لیکچر کے ساتھ کے بعد رکھا جائے گا حصے اور walkthroughs اور مسئلہ کے سیٹ. اور، آپ کو اس کے حصے کے طور پر کی افتتاحی طبقے کی رکن بن جائے گا CS50 اور اب CS50x. اس کے حصہ کے طور پر، اب احساس ہوتا ہے کہ کچھ upsides ساتھ ساتھ. طالب علموں کے بڑے پیمانے پر کی تعداد کے لئے، اس کے لئے تیار حاصل کرنے، یہ کہنا کافی ہے کہ اگرچہ ہم نے 108 TFs اور کیس ہے، نہیں بہت بہترین طالب علم / استاد کے تناسب میں ایک بار ہم نے 80،000 دیگر طلباء کو مارا. تو ہم جا نہیں کر رہے ہیں بہت سے مسئلہ گریڈنگ دستی طور پر متعین کرتا ہے. اس ہفتے تو مسئلہ سیٹ میں پیش کیا CS50 چیک کیا جائے گا، جو آلے کے اندر اندر ایک کمانڈ لائن افادیت کی جا رہی ہے کہ آپ ایک بار تم اس کے بعد میں اس ہفتے کے آخر میں اپ ڈیٹ کریں گے، اور آپ ایک کمانڈ چلانے کے لئے کے قابل ہو جائے گا، 50 چیک کرنے کے لیے، اور اپنے اپنے pset پر، آپ کو کہ آیا آپ کا پروگرام ہے کچھ کی رائے حاصل کریں گے صحیح یا غلط مختلف ڈیزائن ونیردیشوں میں کہا گیا ہے کہ ہم نے فراہم کی ہے کے مطابق ہے. تو اس کے بارے میں مزید اور مسئلہ سیٹ تفصیلات اور CS50x ہم جماعتوں نے اس کے ساتھ ساتھ استعمال کر رہے ہیں. تو مسئلہ 4 سیٹ ہے عدالتی کے بارے میں سب. اور یہ ٹکڑا کچھ چیزیں حقیقی زندگی کی طرف سے حوصلہ افزائی کیا گیا تھا، جس کے تحت جب میں گریجویٹ اسکول میں تھا، میں اس کے ساتھ تھوڑی دیر کے لئے interned Middlesex کاؤنٹی ڈسٹرکٹ اٹارنی آفس عدالتی کام کر رہی میں ان کی برتری عدالتی تفتیش کے ساتھ، اور اس کی ترسیلات ہے، اب مجھے لگتا ہے کہ میں نے چند ہفتے کے ماضی کا ذکر کیا ہے، ماس ریاست پولیس یا دیگر میں آئے گا، وہ ہارڈ ڈرائیوز اور سی ڈیز اور فلاپی ڈسک کی طرح چیزوں کو چھوڑ دیں گے وغيرہ پر، اور پھر عدالتی دفتر کے مقاصد کے تعین تھا کہ کیا وہاں تھا یا کسی قسم کے ثبوت نہیں تھا. یہ اسپیشل انویسٹی گیشن یونٹ تھا، تو یہ جرم وائٹ کالر تھا، یہ جرائم کی زیادہ پریشان طرح تھا، کے کچھ قسم کی ڈیجیٹل میڈیا شامل کچھ، پتہ چلا ہے کہ نہیں کہ بہت سے لوگ ایک ہوئے کہا کہ ای میل لکھنے "میں نے یہ کیا ہے." تو اکثر ان عدالتی تلاش بند نہیں کیا ہے کہ زیادہ پھل، لیکن کبھی کبھی لوگوں کو اس طرح کے ای میل لکھنے ہوں گے. تو کبھی کبھی کوششوں ایوارڈ دیا گیا. لیکن اس عدالتی pset کی قیادت، ہم 4 pset گرافکس کا تھوڑا سا میں متعارف کرانے گے. تو آپ شاید حاصل کی جاچکی، JPEGs GIFs، اور ان دنوں کی طرح ان چیزوں کو لے، لیکن اگر تم واقعی اس کے بارے میں کیا سوچتے ہیں، ایک تصویر، روب چہرے کی طرح نقطے کے ایک ہی تسلسل ہے، یا پکسلز کے طور پر ماڈلنگ جا سکتا ہے. اب، روب چہرے کی صورت میں، رنگوں کا ہر طرح ہے، اور ہم انفرادی نقطہ، otherwide پکسلز کے طور پر جانا جاتا ہے کو دیکھنے کے لئے شروع کر دیا، ایک بار ہم اندر زوم شروع لیکن اگر ہم دنیا کو تھوڑا آسان بنانے، اور صرف اتنا کہنا ہے کہ یہاں یہ روب ہے میں سیاہ فام اور سفید فام، اچھی طرح سیاہ، کی نمائندگی کرنے اور سفید میں ہم بائنری استعمال کر سکتے ہیں. اور اگر ہم بائنری کو استعمال کرنے کے لئے جا رہے ہیں، 1 یا 0، ہم یہ وہی تصویر کا اظہار کر سکتے ہیں روب بٹس کے اس پیٹرن کے ساتھ مسکراتا ہوا چہرہ: 11000011 کی نمائندگی کرتا ہے سفید، سفید، سیاہ، سیاہ، سیاہ، سیاہ، سفید سفید. اور اس طرح یہ ایک بہت بڑی چھلانگ نہیں ہے، تو پھر، رنگین تصاویر کے بارے میں بات کرنا شروع کریں. چیزیں ہیں جو آپ کو فیس بک پر دیکھیں یا ایک ڈیجیٹل کیمرے کے ساتھ لے جائے گا، لیکن، یقینی طور پر، جب یہ رنگ آتا ہے، آپ زیادہ بٹس کی ضرورت ہے. اور تصاویر کی دنیا میں بہت عام 1 بٹ رنگ استعمال کرنے کے لئے نہیں ہے، کے طور پر اس سے پتہ چلتا ہے، لیکن 24 بٹ رنگ، جہاں آپ لاکھوں رنگوں کا حاصل ہے. ، تو کے طور پر اس معاملے میں جب ہم روب آنکھ میں یکبر لاکھوں مختلف رنگین امکانات کے کسی بھی تعداد تھی. تو ہم مسئلہ 4 سیٹ میں walkthrough کے طور پر ساتھ ساتھ میں اس سے ملواتا ہوں، جو معمول 2:30 کی بجائے 3:30 بجے کیونکہ جمعہ کو یہاں لیکچر آج ہو جائے گا. لیکن ویڈیو آن لائن، ہمیشہ کی طرح، کل. ہم آپ کو یہ بھی ایک اور فائل کی شکل سے ملواتا ہوں. تو یہ جان بوجھ کر پہلے دھمکی نظر مراد ہے، لیکن یہ تو صرف C struct کے لئے کچھ دستاویزات ہے. یہ پتہ چلا ہے کہ مائیکروسافٹ سال پہلے، اس شکل کو مقبول بنانے میں مدد ملی ہے، ملاقات کی بٹ نقشہ فائل کی شکل، BMP، اور یہ ایک سپر آسان تھا، رنگین تصویری فائل کی شکل ہے جو کہ آپ نے کچھ وقت کے لئے استعمال کیا جاتا تھا ہے وہ یہ کہ یہ اور کبھی کبھی اب بھی ڈیسک ٹاپ پر وال پیپر کے لئے. اگر آپ ونڈوز ایکس پی اور رولنگ پہاڑیوں اور نیلے آسمان پر واپس لگتا ہے، کہ عام طور پر BMP، یا بٹ نقشہ تصویر، اور bitmaps ہمارے لئے مذاق ہے کیونکہ وہ تھوڑی پیچیدگی ہے. یہ بہت 0 اور 1 کی اس گرڈ کے طور پر کے طور پر آسان نہیں ہے. اس کے بجائے، آپ ایک فائل کے شروع میں ایک ہیڈر کی طرح چیزیں ہیں. تو دوسرے الفاظ میں، BMP فائل. کے اندر 0 اور 1 کی ایک مکمل جھوبڈ ہے، لیکن وہاں کچھ اضافی 0 اور 1 وہاں ہے. اور یہ پتہ چلا ہے کہ جو ہم شاید کے لئے سال کے لئے حاصل کی جاچکی کر لیا ہے، DOC یا. XLS یا مختصر mp3. یا اتارنا Mp4. کی طرح فائل کی شکل، جو بھی فائل کی شکل ہے کہ تم اس سے واقف ہیں. کیا یہاں تک کہ ایک فائل کی شکل کے لئے اس کا مطلب یہ ہے؟ کیونکہ دن کے آخر میں، ان فائلوں کی تمام کو ہم استعمال کرتے ہیں 0 اور 1 اور شاید ان 0 اور 1، بی، سی، ASCII یا جیسے کے ذریعے کی نمائندگی کرتے ہیں لیکن دن کے اختتام پر کے ذریعے، یہ صرف 0 اور 1 کی ہے. تو انسان کو صرف کبھی کبھار ایک نئی فائل کی شکل ایجاد کرنے کا فیصلہ جہاں وہ معیاری بٹس کے نمونوں اصل مطلب گا. اور یہاں اس صورت میں، لوگوں کو جو بٹ نقشہ فائل کی شکل کے لئے ڈیزائن کیا نے کہا ہے کہ ایک بٹ نقشہ فائل میں بہت پہلے بائٹ میں 0 آفسیٹ کی طرف سے denoted، وہاں کچھ cryptically نام متغیر کہا جاتا bfType ہونے جا رہا ہے، جس میں صرف بٹ نقشہ فائل کی قسم کے لئے کھڑا ہے، یہ کیا بٹ نقشہ فائل کی قسم ہے. آپ شاید اندازہ کرنا، دوسری قطار ہے کہ 2 آفسیٹ، بائٹ نمبر 2 سے، کر سکتے ہیں، 0 اور 1 ہے کہ جس چیز کی نمائندگی کرتا ہے کا ایک نمونہ ہے؟ کچھ کا حجم، اور یہ وہاں سے چلا جاتا ہے. تو مسئلہ 4 سیٹ میں، آپ ان چیزوں میں سے کچھ کے ذریعے چلی کریں گے. ہم نے ختم نہیں ان سب کے بارے میں دیکھ بھال کرے گا، لیکن محسوس یہ دلچسپ حاصل کرنے کے لئے شروع ہوتا ہے لائن یا 54 بائٹ، rgbtBlue گرین اور ریڈ کے ارد گرد. اگر تم نے کبھی مخفف RGB، سرخ سبز نیلا نے سنا ہے، یہ اس کو ایک حوالہ ہے. کیونکہ یہ پتہ چلتا ہے، آپ اندردخش کے تمام رنگوں کو پینٹ کر سکتے ہیں سرخ اور نیلے اور سبز کے کچھ مجموعہ کے ساتھ. اور کمرے میں والدین اس حقیقت میں جلد پروجیکٹر میں سے کچھ یاد ہو سکتا ہے. ان دنوں، آپ کو صرف یہ دیکھنا 1 چمکتی روشنی ایک لینس سے باہر آ رہا ہے. لیکن دن میں واپس، آپ سرخ لینس، نیلے، لینس، اور سبز عینک تھا اور مل کر وہ سکرین کا مقصد اور ایک رنگارنگ تصویر قائم کی. اور اکثر مڈل اسکولوں اور ہائی اسکولوں ان لینس ہوگا کبھی تو تھوڑا سا ترچھا، لہذا آپ کو ڈبل یا ٹرپل تصاویر کو دیکھنے کی طرح تھے، لیکن اس کا خیال تھا. آپ کو ایک تصویر تصویر سرخ اور سبز اور نیلے رنگ کی روشنی تھی. اور یہ کہ اسی اصول کے کمپیوٹر میں استعمال کیا جاتا ہے. تو چیلنجوں میں، تو، آپ کے لئے مسئلہ میں 4 مقرر کچھ چیزیں جا رہے ہیں، اصل میں ایک تصویر کا سائز تبدیل ہے. 0 اور 1 کی پیٹرن میں لینے کے لئے، اعداد و شمار جو 0 اور 1 کے حصوں ڈھانچے میں کیا اس طرح کی نمائندگی کرتے ہیں، کر اندازہ لگا پکسلز دہرانے: ریڈ، اداس، سبز تاکہ اندر جب ایک تصویر کو ابتدائی طور پر اس طرح لگتا ہے اس طرح نظر آئے، اس کے بعد کی بجائے ہو سکتا ہے. دیگر چیلنجوں میں، بھی، ہو سکتا ہے کہ آپ کے حوالے کیا جائے گا جا رہا ہے ایک ڈیجیٹل کیمرے سے ایک اصل فائل کی فارنسک تصویر اور اس کیمرے ایک بار ایک وقت، تصاویر کی ایک پوری چڑھانے تھے. مسئلہ ہے، ہم اتفاقی طور پر ہے مٹ تھا یا تصویر کسی طرح خراب ہے. بری چیزیں ڈیجیٹل کیمرے کے ساتھ ہو، اور اس لئے ہم فوری طور پر 0 اور 1 کے تمام کاپی دور ہے کہ آپ کے لئے کارڈ، 1 بڑی فائل میں ان سب کو بچا لیا، اور اس کے بعد ہم نے انہیں آپ کے ہاتھ میں کر دے گی مسئلہ میں 4 تاکہ تم C میں ایک پروگرام ہے جس کے ساتھ نمٹنے کو لکھ سکتے ہیں. ان JPEGs، مثالی طور پر. اور یہ کہ JPEGs بدل جاتا ہے، اگرچہ وہ ایک پیچیدہ فائل کی شکل کے کسی حد تک ہو، وہ اس کے مسکراتے ہوئے چہرے سے یہاں بہت پیچیدہ ہیں. یہ پتہ چلتا ہے کہ ہر JPEG 0 اور 1 کی اسی پیٹرن کے ساتھ شروع ہوتی ہے. تو، لوپ یا اسی طرح کے کے لئے ایک جبکہ لوپ یا کا استعمال کرتے ہوئے آپ اس فارنسک تصویر میں 0 اور 1 کی زائد iterate کر سکتے ہیں اور ہر وقت آپ کو خاص پیٹرن ہے کہ مسئلہ سیٹ کی تفصیلات میں وضاحت کی گئی ہے آپ کو بہت زیادہ امکان کے ساتھ فرض، 'اوہ، یہاں ہے، کر سکتے ہیں، ایک JPEG کے آغاز، 'اور جیسے ہی آپ محسوس اسی پیٹرن، بائٹس یا کلو بائٹ یا میگا بائٹس میں سے کچھ کے بعد نمبر، آپ فرض، 'اوہ کر سکتے ہیں! یہاں ایک دوسرا JPEG، تصویر میں پہلے ایک کے بعد لیا ہے. آپ کے وزٹرز کا ریکارڈ رکھا کہ سب سے پہلے فائل کو پڑھنے کے بند دو، اس نئے لکھنے شروع کر دیں. ' اور 4 pset کے لئے آپ کے پروگرام کی پیداوار کے طور پر بہت سے 50 JPEGs جا رہا ہے. اور اگر یہ 50 JPEGs نہیں ہے، تو آپ کو ایک لوپ کے تھوڑا سا ہے. اگر آپ کا ایک لامحدود تعداد میں JPEGs ہے، آپ کو ایک لامتناہی لوپ ہے. ، بھی، جس سے کہ بہت عام کا معاملہ ہو جائے گا. اس افق پر کیا ہے. 0 ہمارے پیچھے کوئز. ، احساس، اپنے ای میل کے مطابق، کہ ہمیشہ وہاں لوگ ہے جو دونوں خوش طرح غیر جانبدار کی، اور کوئز کے ارد گرد اداس 0 وقت ہیں. براہ مہربانی مجھ تک پہنچ سکتے ہیں، سر TFs، Zamyla اپنے TF یا کیس کے ایک ہے کہ آپ کو پتہ ہے کہ اگر آپ کو بات چیت کس طرح چیزوں گئے ہیں. تو کمرے میں ماں باپ کو متاثر کرنے، CS50 لائبریری کیا ہے؟ اچھا کام کیا. CS50 لائبریری کیا ہے؟ جی ہاں؟ [Student کی جوابات، unintelligible] >> ٹھیک ہے، اچھا ہے. تو اس کے کوڈ کا ایک prewritten سیٹ ہے کہ ہم، ملازمین، لکھا، ہم آپ کو فراہم کی ہیں، کچھ عام functionalities فراہم کرنے کے لئے. چیزیں مجھے ایک تار حاصل کرنا، مجھے ایک int حاصل، کے تمام افعال جو یہاں درج ہیں. اب شروع ہو رہا ہے، ہمیں واقعی ان کی تربیت پہیوں کو لے شروع. تو ہم تم سے دور ایک "STRING" شروع کرنے جا رہے ہیں، جس میں یاد ہے، جو اصل ڈیٹا کی قسم کے لیے صرف ایک متبادل تھا؟ حروف *. تو والدین کے لئے، جو شاید تھا - یہ اچھی بات ہے، تو چار * ہم دیکھنا شروع کر دیں گے سکرین پر تمام کے طور پر ہم اپنے الفاظ سے "STRING" کو خارج کم سے کم جب یہ اصل میں کوڈ لکھنے کی ہو. اسی طرح، ہم زیادہ سے زیادہ ان کے افعال میں سے کچھ کا استعمال روک دیں گے، کیونکہ ہمارے پروگرام زیادہ بہتر حاصل کرنے کے لئے جا رہے ہیں بجائے صرف پروگرام جو ایک فوری طور پر ٹمٹمانے والے کے ساتھ وہاں بیٹھ لکھتے ہیں، صارف کے لئے انتظار کر رہے اندر کچھ ٹائپ آپ کو دوسری جگہوں سے اپنے آدانوں ملے گی. مثال کے طور پر، آپ کو مقامی ہارڈ ڈرائیو پر بٹس کی سیریز سے انہیں ملے گی. تم نے انہیں مستقبل میں بجائے ایک نیٹ ورک کنکشن سے کچھ ویب سائٹ کہیں گے. تو پہلی بار کے لئے اس پرت چھیل دو، اور CS50 آلات ھیںچو اور یہ کہا جاتا CS50.h فائل، جو آپ ہفتوں کے لئے بھی شامل تیز رہی ہے. لیکن اصل میں دیکھتے ہیں کہ اس کے اندر کیا ہے. تو نیلے رنگ میں فائل کے سب سے اوپر تبصرے کی ایک پوری چڑھانے ہے، وارنٹی معلومات اور لائسنسنگ. اس طرح کی ایک عام مثال کے ہے سافٹ ویئر میں، کیونکہ سافٹ ویئر کی ایک بہت ان دنوں ہے کیا کہتے ہیں "اوپن سورس" جس کا مطلب یہ ہے کہ کسی کوڈ لکھا ہے اور یہ آزادانہ طور پر دستیاب بنایا، نہ صرف چلانے اور استعمال کرنے کے لئے، لیکن اصل میں تبدیلی کو پڑھیں اور اپنے اپنے کام میں ضم. تو ہے کہ آپ کیا گیا ہے کا استعمال کرتے ہوئے، اوپن سورس سافٹ ویئر، اگرچہ وہ ایک بہت چھوٹی شکل میں. اگر میں تبصرے کے ماضی میں ذیل میں سکرال، تاہم، ہم کچھ زیادہ واقف چیزوں کو دیکھنے کے لئے شروع کر دیں گے. تو یہاں سب سے اوپر دیئے گئے نوٹس، کہ CS50.h فائل ہیڈر فائلوں کی ایک مکمل جھوبڈ بھی شامل ہے. اب، ان میں سے سب سے زیادہ ہم پہلے نہیں دیکھا ہے، لیکن ایک ہے واقف ہیں، ان میں سے جو ہم نے، دیکھا ہے مختصر طور پر ہی سہی، اس طرح اب تک؟ جی ہاں، معیاری لائبریریوں. Stdlib.h malloc ہے، تو ایک بار ہم متحرک میموری تقرری کے بارے میں بات کرنا شروع کر دیا، جو ہم اگلے ہفتے واپس آ کے طور پر کریں گے، ہم نے وہ فائل بھی شامل ہے کرنا شروع کر دیا ہے. یہ پتہ چلا ہے کہ bool اور سچے اور جھوٹے C میں اصل میں نہیں موجود، SE فی جب تک آپ اس فائل کو یہاں شامل ہیں. تو ہم ہفتوں کے لئے، کیا گیا ہے معیار bool.h سمیت تاکہ تم. bool، صحیح یا غلط تصور کا استعمال کر سکتے ہیں اس کے بغیر، آپ کو یہ جعلی ترتیب اور ایک int استعمال ہوگا اور منمانے فرض ہے کہ 0 باطل ہے اور 1 سچ ہے. اب، اگر ہم مزید نیچے سکرال، یہاں ایک تار کی ہماری تعریف ہے. یہ پتہ چلتا ہے، جیسا کہ ہم نے پہلے کہا ہے، کہ واقعی جہاں اس * ہے کوئی فرق نہیں پڑتا. آپ کی گنجائش بھی چاروں طرف سے کر سکتے ہیں. ہم اس سمسٹر، اس سے اس کے طور پر فروغ دینے کے واضح کرنے کے لئے کہ * کی قسم کے ساتھ کرنا ہے. احساس لیکن، جیسا کہ عام، اگر کچھ نہیں زیادہ عام ہے، اسے وہاں ڈال دیا ہے لیکن فعل یہ ایک ہی بات ہے. لیکن اب، اگر ہم نیچے مزید پڑھتے ہیں، کہتے ہیں پر ایک نظر، GetInt لے، کیونکہ ہم اس کا استعمال کیا، شاید کچھ اور اس سمسٹر سے پہلے. اور یہاں GetInt ہے. یہ کیا ہے؟ یہ پروٹوٹائپ ہے. تو اکثر، ہم ہماری کی چوٹیوں پر prototypes ڈال دیا ہے سی فائلیں، لیکن آپ کو ہیڈر فائلوں، H فائلوں. میں prototypes بھی رکھ سکتے ہیں، ، تو اس طرح کہ آپ کو کچھ کام کرتا ہے جب لکھنے جو ہے کہ آپ کو دوسرے لوگوں کو استعمال کرنے کے لئے کے قابل بننا چاہتا ہوں، بالکل CS50 لائبریری کے ساتھ معاملہ ہے، تم نے نہیں صرف CS50.c طرح کچھ میں اپنے افعال پر عملدرآمد، تم نے بھی اس فائل کی سب سے اوپر دیئے گئے نہیں prototypes ڈالا، لیکن ایک ہیڈر فائل کے سب سے اوپر دیئے گئے، تو اس ہیڈر فائل ہے جو دوستوں اور ساتھیوں میں شامل ہیں، تیزی کے ساتھ ان کے اپنے کوڈ میں شامل کریں. اس وقت تو آپ کو دیا ہے ان prototypes سمیت مؤثر طریقے سے آپ کی فائل کے سب سے اوپر دیئے گئے، لیکن اس تیز کی راہ کی طرف سے طریقہ کار شامل ہیں ہے کہ بنیادی طور پر نقول اور pastes آپ کے اپنے میں اس فائل. اب، یہاں کچھ کافی تفصیلی دستاویزات ہے. ہم بہت کر لیا ہے کے لئے حاصل کی جاچکی کہ GetInt ایک int ہو جاتا ہے، لیکن یہ بدل جاتا ہے وہاں کسی کونے مقدمات ہے، ٹھیک ہے؟ کیا اگر ایک بڑی تعداد اس طرح بہت بڑا ہے میں صارف کی قسم کے؟ A quintillion، جو صرف ایک int کے اندر کے قابل نہیں ہو سکتا؟ متوقع رویہ کیا ہے؟ ٹھیک ہے، مثالی طور پر، یہ امکانات ہے. تو اس معاملے میں، اگر آپ نے واقعی ٹھیک پرنٹ پڑھ، آپ کہ اگر لائن پڑھا نہیں کیا جا سکتا، اس کی واپسی INT_MAX نظر آئے گا. ہم اس کے بارے میں بات کبھی نہیں کی ہے، لیکن اس کے بڑے حروف تہجی کی بنیاد پر، یہ کیا ہے، شاید؟ یہ ایک مسلسل ہے، تو اس میں کچھ خاص مسلسل ہے جو شاید قرار دیا ہے ان ہیڈر فائلوں کو فائل میں اعلی ہے میں سے ایک میں، اور INT_MAX شاید طرح، تقریبا 2 بلین کچھ ہے. کہ کیا جا رہا ہے کیونکہ ہم کسی نہ کسی طرح کہ کچھ کی نشاندہی کرنے کی ضرورت ہے خیال غلط ہو گیا، ہم ہمارے اختیار میں ہاں، 4 ارب کی تعداد ہے، منفی 2 ارب ارب، 2، یا لے دے. ٹھیک ہے، کیا پروگرامنگ میں عام ہے ہے آپ کو صرف ان کی تعداد کے ایک چوری ہے. شاید 0، شاید ارب 2، شاید منفی 2 ارب. تو آپ کو آپ کے ممکنہ اقدار کے ایک خرچ کرتے ہیں تاکہ تم دنیا کا ارتکاب کر سکتے ہیں کہ اگر کچھ غلط ہو جاتا ہے، میں نے اس قیمت کو سپر بڑا واپس آ جائیں گے. لیکن آپ صارف طرح خفیہ کچھ ٹائپ نہیں کرنا چاہتا ہے "2، 3، 4 ..." واقعی بڑی تعداد کی وجہ سے، آپ کو مسلسل طور پر جہاں بجائے عام. تو واقعی، اگر آپ مقعد گزشتہ چند ہفتوں رہے تھے کسی بھی وقت آپ کے پاس GetInt فون کرتے ہیں تو، آپ کیا جانا چاہئے اگر ایک شرط کے ساتھ کی جانچ ہو رہی ہے. نے INT_MAX میں صارف کی قسم کیا، یا اس سے زیادہ خاص طور پر، کیا GetInt واپسی INT_MAX کیا؟ کیونکہ اگر اس نے کیا، کہ اصل کا مطلب ہے کہ وہ اس ٹائپ نہیں کیا، اس معاملے میں کچھ غلط ہو گیا. تو یہ ہے جو عام طور پر ایک "پرہری" قیمت، جس میں صرف خصوصی کا مطلب ہے کے طور پر جانا جاتا ہے. ٹھیک ہے، اب سی فائلوں. میں تبدیل. C فائل میں کچھ وقت کے لئے آلے میں موجود ہے، اور اصل میں، آلات یہ آپ کے لئے precompiled ہے اس چیز میں ہم نے اعتراض کے کوڈ، لیکن یہ صرف آپ کو کوئی فرق نہیں پڑتا وہ کہاں ہے کیونکہ نظام جانتا ہے، اس صورت میں، وہ کہاں ہے، آلات. دو لیکن ذیل میں سکرال اب GetInt، اور دیکھو کس طرح GetInt کیا گیا ہے اس وقت کام کر. تو یہاں ہم پہلے سے اسی طرح کی رائے ہے. دو کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے صرف کوڈ حصے میں زوم، اور جو ہم GetInt کے لئے مندرجہ ذیل ہے. یہ کوئی ان پٹ نہیں لیتا ہے اور یہ ایک int واپس، جبکہ (صحیح)، تو ہم نے جان بوجھ کر لامحدود لوپ ہے لیکن، شاید، ہم اس سے باہر کسی نہ کسی طرح توڑ، یا کریں گے اس کے اندر سے واپس. تو یہ کس طرح کام کرتا ہے کو دیکھنے کے. ٹھیک ہے، ہم GetString استعمال کرنے لگتے ہیں لوپ، 166 کے اندر اس کی پہلی سطر میں. یہ اچھا عمل ہے کیونکہ کن حالات کے تحت GetString اس خصوصی مطلوبہ الفاظ نل، واپس آ سکتے ہیں؟ اگر کچھ غلط ہو جاتا ہے. کیا غلط جب تم GetString ایسا کچھ کہہ سکتے ہیں؟ جی ہاں؟ [Student کی جواب، unintelligible] >> جی ہاں. تو شاید malloc ناکام ہو جاتا ہے. ڈاکو GetString کے نیچے کہیں malloc بلا رہا ہے، جو میموری مختص، جو کہ کمپیوٹر کی دکان کی اجازت دیتا ہے حروف کے تمام ہے کہ بورڈ میں صارف اقسام. فرض اور صارف کو مفت وقت کے ایک بہت ساری تھا اور 2 ارب حروف سے ٹائپ ہے، مثال کے طور پر،. کمپیوٹر سے زیادہ حروف بھی RAM ہے. ٹھیک ہے، GetString آپ کو مطلع کرنا قابل ہو جائے کرنے کے لئے ہے، یہاں تک کہ اگر یہ ایک سپر، سپر، غیر معمولی کونے معاملہ ہے. یہ کسی نہ کسی طرح اس کو ہینڈل کرنے کے قابل ہے، اور GetString اگر ہم واپس جا اور اس کی دستاویزات پڑھ حقیقت میں،، نل واپس. اب اگر GetString نل واپس لوٹنے کی طرف سے ناکام ہو جاتا ہے، GetInt کرنے میں ناکام ہو رہا ہے INT_MAX صرف ایک پرہری کے طور پر آرہے ہیں، کی طرف سے. یہ صرف انسانی کنونشن ہیں. ایک ہی راستہ ہے جس سے آپ کو یہ پتہ چلے گا معاملہ ہے دستاویزات پڑھنے سے ہے. تو جہاں int اصل میں ہے GotInt ذیل میں سکرال. اگر ایسا ہے تو میں ذیل میں سکرال مزید تھوڑی، ہم 170 سطر میں ان لائنوں سے اوپر ایک تبصرہ ہے. تو ہم نے 172 میں، اعلان، ایک int ن اور چار سی، اور پھر اس نئی تقریب جو تم میں سے بعض سے پہلے بھر ٹھوکر کھائی ہے، لیکن sscanf. یہ سٹرنگ اسکین F کے لئے کھڑا ہے. دوسرے الفاظ میں، مجھے ایک تار دے اور میں اسے دلچسپی کے کے بارے میں معلومات کے ٹکڑے کے لئے اسکین کرے گا. تو اس کا کیا مطلب ہے؟ ٹھیک ہے، مان لیں کہ میں بورڈ میں، لفظی، 1 2 3 ٹائپ، اور پھر داخل مارا. 1 2 3 ڈیٹا کی قسم جب GetString کی طرف سے واپس کیا ہے؟ یہ ظاہر ہے ایک تار ہے، ٹھیک ہے؟ میں ایک تار ہے، تو 1 2 3 واقعی "1 2 3" ہے \ 0 کے ساتھ اس کے آخر میں. یہ ایک int نہیں ہے. یہ ایک نمبر نہیں ہے. یہ ایک نمبر کی طرح لگتا ہے لیکن یہ اصل میں نہیں ہے. تو کیا GetInt کرنا ہے؟ یہ کہ بائیں سے دائیں سٹرنگ کو اسکین کرنے کے لئے ہے، 1 2 3 0 \، اور کسی نہ کسی طرح یہ ایک حقیقی عددی قبول. اب، آپ کو پتہ ہے کہ کس طرح ایسا کر سکتے ہیں. اگر آپ 2 pset واپس لگتا ہے، آپ کو شاید تھوڑا آرام دہ اور پرسکون ہے تمہیں کیسر یا vigenere کے ساتھ ایک سٹرنگ iterate کر سکتے ہیں، آپ کی پسند کے ساتھ ints حروف تبدیل کر سکتے ہیں. یہ کام کی ایک پوری بہت ہے. sscanf طرح ایک تقریب ہے جو آپ کے لیے وہ اس کی کال کیوں نہیں؟ تو sscanf اسے کہتے لائن کے معاملے میں، جو کہ ایک تار ہے میں ایک دلیل کی توقع ہے. اس کے بعد آپ کی قیمت درج کرنے میں، وضاحت، بہت printf کی طرح، جو تم نے اس جملے کو میں دیکھنے کے لئے کی امید ہے؟ میں یہاں کیا کہہ رہا ہوں، میں ایک دشملو تعداد اور شاید ایک کردار کو دیکھنے کے لئے کی امید ہے. اور ہم دیکھتے ہیں کیوں یہ صرف ایک لمحے میں معاملہ ہے گے. یہ پتہ چلا ہے کہ یہ سنکیتن اب چیزیں یاد تازہ ہے ہم نے صرف ایک ہفتے پہلے کے بارے میں بات کر شروع کر دیا ہے. کیا ہے (ن) اور & C ہمارے لئے یہاں کیا کر رہے ہو؟ [Student کی جوابات، unintelligible] >> جی ہاں. یہ مجھے دے سی کے (ن) اور پتہ کا پتہ ہے. اب، یہ ضروری ہے کہ کیوں ہے؟ ٹھیک ہے، تم جانتے ہو کہ سی میں کام کرتا ہے کے ساتھ آپ سب میں ایک قدر یا کوئی قیمت نہیں ہمیشہ واپس کر سکتے ہیں. آپ کو ایک int، سٹرنگ، فلوٹ، ایک چار، جو کچھ بھی واپس کر سکتے ہیں. یا آپ کے پاس باطل واپس، لیکن آپ 1 بات صرف زیادہ سے زیادہ واپس جا سکتے ہیں کر سکتے ہیں. لیکن یہاں ہم sscanf آپ کے وزٹرز کا ریکارڈ رکھا شاید ایک int، ایک دشملو تعداد پر واپس کرنا چاہتے ہیں، اور بھی ایک، چار، اور میں ایک لمحے میں کیوں چار سمجھا دونگا. تو آپ کو مؤثر طریقے سے F 2 چیزیں واپس کرنا چاہتے ہیں، وہ سی میں ممکن نہیں تو اس کے ارد گرد ہے کہ آپ 2 پتوں میں گزرنے والے کی طرف سے مل کر کام کر سکتے ہیں، کیونکہ جیسے ہی آپ کو ایک تقریب 2 پتوں کے حوالے کیا ہے کہ ان کے ساتھ تقریب میں کیا کر سکتے ہیں؟ یہ ان پتوں پر لکھ سکتے ہیں. * آپریشن کا استعمال کریں اور ان پتوں میں سے ہر ایک "وہاں جانا" کر سکتے ہیں. یہ اس بیک ڈور نظام کی طرح ہے، لیکن متغیر کی اقدار کو تبدیل کرنے کے لئے بہت ہی عام اس 2 کے معاملے میں صرف 1 جگہ سے زیادہ ہے. اب نوٹس، میں == to1 کی جانچ پڑتال کر رہا ہوں، اور پھر N واپس لوٹنے اگر حقیقت میں ہے کہ، صحیح اندازہ. تو کیا ہو رہا ہے؟ ٹھیک ہے، اور تکنیکی طور پر، یہ ہے کہ یہ سب ہم واقعی GetInt میں ہونے چاہتے ہیں ہے. ہم تجزیہ، تو بات کرنا چاہتے ہیں، ہم سٹرنگ کو پڑھنے کے لئے چاہتے ہیں "1 2 3" اور اگر ایسا لگتا ہے کہ وہاں ایک نمبر ہے، جو ہم sscanf کہہ کر رہے ہیں میرے لئے یہ متغیر (ن) میں یہ تعداد 1، 2، 3 کو ہے. ، تو کیوں، کیا میں نے اس کے ساتھ ساتھ؟ یہ بھی کہا، sscanf، آپ کو ایک کردار بھی یہاں ہو سکتا ہے کے کردار کیا ہے. [Student کی بولنے، unintelligible] >> - ایک اعشاریہ کام کر سکتا تھا. آو منعقد ہے کہ ایک لمحے کے لئے سوچا ہے. اور کیا؟ [طالب علم، unintelligible] تو >> اچھا خیال، نل کردار ہو سکتا ہے. یہ اس صورت میں اصل میں ہے، نہیں ہے. جی ہاں؟ [طالب علم، unintelligible] >> ASCII. اور دو یا، مجھے بھی مزید سامانییکرن. ٪ وہاں C صرف غلطی چیکنگ کے لئے ہے. ہم وہاں نہیں کرنا چاہتے ہیں، تعداد کے بعد کردار، لیکن جو مجھ سے کیا کرنے کی اجازت دیتا ہے ہے مندرجہ ذیل ہے: یہ پتہ چلا ہے کہ sscanf،، (ن) اور سی اقدار اس مثال میں یہاں ذخیرہ کرنے کے علاوہ کیا یہ بھی ہے کہ یہ متغیر کی تعداد واپس آئے تو وہ اندر اقدار ڈال تو اگر آپ 1 2 3 میں صرف ٹائپ کریں، اس کے بعد صرف ایک فیصد D میچ ہو رہا ہے اور صرف N 1 2 3 طرح ایک قدر کے ساتھ محفوظ ہو جاتا ہے اور کچھ بھی نہیں سی میں ڈال دیا جاتا ہے؛ ج بھی ردی کی ٹوکری کی قیمت ہے، تو بات کرنے کی. وجہ سے ردی کی ٹوکری میں کچھ قدر کے طور پر کیا گیا ہے کبھی نہیں initialized. تو اس صورت میں، sscanf 1 واپس، کیونکہ میں ان میں سے ایک اشارہ کی آبادی ہے، جس صورت میں، بہت اچھا. میں ایک int ہے، تو میں اوپر مفت میموری آزاد وہ GetString اصل میں مختص کی، اور پھر میں (ن) واپس. دوسری صورت میں، اگر تم نے کبھی اس جہاں دوبارہ کوشش حیران بیان سے آتا ہے، یہاں سے آتا ہے. اگر اس کے برعکس کی طرف سے، میں FOO 1 2 3 میں ٹائپ کریں، متن صرف کچھ بے ترتیب ترتیب، sscanf کو دیکھنے کے لئے کی جا رہی ہے، تعداد اہ، تعداد اہ، اہ، تعداد، اہ - F. اور یہ (ن) میں 1 2 3 کے لئے پیش کیا جا رہا ہے. سی F ڈال، اور پھر 2 واپس جا رہا ہے. تو ہم ہیں، صرف scanf رویے کی بنیادی تعریف کا استعمال کرتے ہوئے، ایک بہت آسان طریقہ - ٹھیک ہے، پہلی نظر میں پیچیدہ، لیکن دن کے اختتام پر کہنے کی کافی سادہ طریقہ کار، ایک int ہے، اور اگر ایسا ہے تو ہے، کہ صرف ایک چیز جو میں نے محسوس کیا ہے؟ اور سفید یہاں خلائی جان بوجھ ہے. اگر آپ sscanf کے لئے دستاویز کو پڑھنے کے، یہ آپ کہ، اگر آپ کو شروع یا آخر میں سفید جگہ کا ایک ٹکڑا شامل ہیں بتاتا ہے sscanf بھی کسی بھی وجہ سے صارف کی اجازت، اسپیس بار 1 2 3 مارا جائے گا، اور یہ کہ جائز ہو جائے گا. یہ صارف پر چللاو نہیں صرف اس لئے کہ وہ شروع یا آخر میں اسپیس بار مارا جائے گا، جو صرف تھوڑا زیادہ صارف دوست ہے. کوئی سوال، پھر، GetInts پر؟ جی ہاں؟ [Student کی سوال، unintelligible] >> اچھا سوال ہے. اگر آپ نے ابھی ایک چار میں ٹائپ، F، اور ہٹ کی طرح داخل کبھی 1 2 3 ٹائپ کے بغیر، کیا آپ کو لگتا ہے کہ کوڈ کے اس لائن کے رویے تو کیا ہوگا؟ تو sscanf کہ کا احاطہ بھی کر سکتے ہیں، کیونکہ اس صورت میں یہ جا ن یا سی کو بھرنے کے لئے نہیں ہے، بجائے 0 واپس جا رہا ہے. کس صورت میں، میں بھی اس منظر نامے پکڑ رہا ہوں، کیونکہ متوقع قدر میں چاہتا ہوں کہ 1 ہے. میں صرف 1 چاہتے ہیں، اور 1 صرف ایک ہی چیز بھر. اچھا سوال ہے. دیگر؟ ٹھیک ہے، لہذا ہم یہاں کے افعال میں سے سب سے نہیں جانا ہے. لیکن ایک ہے کہ شاید باقی دلچسپی کے لگتا ہے ہے GetString کیونکہ اس سے پتہ چلتا ہے کہ GetFloat، GetInt، ، تمام پنٹ ان GetString فعالیت کی ایک بہت GetLongLong GetDouble. تو وہ یہاں کس طرح لاگو کیا جاتا ہے پر ایک نظر لے. یہ ایک تھوڑا پیچیدہ لگتا ہے، لیکن یہ ایک ہی بنیادی اصولوں کا استعمال کرتا ہے کہ ہم نے گزشتہ ہفتے کے بارے میں بات کرنا شروع کر دیا. تو GetString میں، جو باطل کے مطابق کوئی دلیل کو یہاں سے لیتا ہے، اور یہ ایک تار واپس، تو میں نامی بفر سٹرنگ اعلان کر رہا ہوں. میں واقعی میں نہیں ہے کہ وہ کیا ابھی تک کے لئے استعمال کیا جا رہا ہے معلوم، لیکن ہم دیکھ لیں گے. صلاحیت کی طرح لگتا ہے ڈیفالٹ، 0 کی طرف سے ہے، جہاں یہ جا رہا ہے کافی نہیں اس بات کا یقین ہے. اس بات کا یقین N ابھی تک کے لئے استعمال کیا جا رہا ہے. لیکن اب یہ تھوڑا زیادہ دلچسپ 243 لائن میں ہو رہا ہے، ہم ایک int سی، اس طرح کی ایک پاگل تفصیل کے اعلان. ایک چار 8 بٹس ہے، اور 8 بٹس کس طرح مختلف اقدار کو محفوظ کر سکتے ہیں؟ 256. مسئلہ ہے، اگر آپ کو 256 مختلف ASCII حروف کرنا چاہتے ہیں، جو ہیں، اگر تم واپس سوچتے ہیں، اور یہ حفظ کچھ نہیں ہے. لیکن اگر آپ کہ بڑا ASCII چارٹ واپس لگتا ہے ہم ہفتے پہلے تھا، اس معاملے میں 128 یا 256 ASCII حروف میں تھے. ہم نے 0 تمام نمونوں اور 1 ہے کا استعمال کیا ہے. یہ ایک مسئلہ ہے اگر آپ میں ایک خامی کا پتہ لگانے کے قابل بننا چاہتا ہوں. ، اگر آپ کے پاس پہلے سے ہی آپ کے لئے 256 حروف اقدار کا استعمال کرتے ہوئے کر رہے ہیں کیونکہ تم آگے نہیں کیا منصوبہ بندی، کیونکہ اب آپ کو کہنے کی کوئی راستہ نہیں ہے، "یہ ایک legit کردار ہے نہیں ہے، یہ کوئی غلط پیغام ہے." تو دنیا کیا ہے ہے، وہ اگلے سب سے بڑی قدر کا استعمال کرتے ہیں، ایک int کی طرح کچھ ہے تاکہ تم بٹس کی ایک پاگل نمبر ہے، 4 ارب ممکن اقدار کے لئے 32، لہذا آپ کو اپ صرف استعمال کرتے ہوئے ختم کر سکتے ہیں، بنیادی طور پر، ان میں سے 257، 1 جن میں سے ایک غلطی کے طور پر کچھ خاص مطلب ہے. تو یہ کس طرح کام کرتا ہے کو دیکھنے کے. 246 لائن میں، میں نے اس بڑی دیر لوپ ہے کہ fgetc بلا رہا ہے، F معنی فائل، getc، اور پھر stdin. پتہ چلا ہے یہ صرف کہنے کے عین مطابق راستہ ہے "کی بورڈ سے ان پٹ پڑھ." معیاری ان پٹ کا مطلب ہے، کی بورڈ، معیاری پیداوار کی سکرین کا مطلب ہے کہ، اور معیاری غلطی، جو ہم 4 pset میں نظر آئے گا، سکرین کا مطلب ہے، لیکن اتنا ہے کہ سکرین کے ایک خاص حصہ نہیں conflated ہے اصل پیداوار کہ آپ پرنٹ کا ارادہ کے ساتھ، لیکن مستقبل میں اس کے بارے میں مزید. تو fgetc صرف کا مطلب ہے کہ کی بورڈ سے ایک کردار کو پڑھتے ہیں، اور اس کی دکان کہاں ہے؟ سی سٹور، اور پھر چیک کرنے کے لیے، تو میں صرف کچھ بولین conjunctions کا استعمال کرتے ہوئے کر رہا ہوں یہاں چیک کرنے کے لیے ہے کہ یہ برابر \ نہیں ن، تو صارف داخل متاثر ہے. ہم اس نقطہ، لوپ کے آخر میں کو روکنے کے لئے چاہتے ہیں، اور ہم بھی چیک کرنے کے لیے کرنا چاہتے ہیں کے لئے خصوصی مستقل مسل اختتام، جس میں اگر تم جانتے ہو یا اندازہ ہے - کیا اس کے لئے کیا مطلب ہوتا ہے؟ فائل کے آخر میں. تو یہ nonsensical کی طرح ہے، کیونکہ اگر میں کی بورڈ میں ٹائپ کر رہا ہوں، واقعی اس میں شامل نہیں فائل، لیکن کلی کا مطلب تھا مدت کے یہ صرف ترتیب ہے انسانی انگلیوں سے کہ اور کچھ نہیں آ رہا ہے. مسل اختتام. فائل کے آخر میں. ایک طرف ایک کے طور پر، اگر آپ نے کبھی اپنے کی بورڈ میں کنٹرول د ہے متاثر کہ تم ابھی تک نہیں ہوگا، آپ کنٹرول سی متاثر ہے. لیکن کنٹرول د اس خاص مسلسل کہا جاتا مسل اختتام بھیجتا ہے. تو اب ہم صرف کچھ متحرک میموری مختص کرنے کا ہے. تو اگر N + 1 صلاحیت>، اب میں (ن) کی وضاحت کریں گے. ن بفر میں کتنے بائٹس فی الحال ہے، سٹرنگ ہے کہ آپ فی الحال صارف سے کر رہے ہیں کی تعمیر. اگر آپ کو آپ کے بفر میں زیادہ حروف سے آپ کو بفر میں صلاحیت ہے، intuitively، کیا تو ہم کیا کرنے کی ضرورت ہے زیادہ صلاحیت مختص ہے. میں ریاضی میں سے کچھ یہاں ملائی اتارا جا رہا ہوں اور یہاں صرف اس تقریب پر توجہ دیتے ہیں. کیا تم جانتے ہو malloc ہے، یا کم از کم عام طور پر واقف ہے. ایک اندازہ کیا realloc کرتا ہے لے لو. [Student کی جواب، unintelligible] >> جی ہاں. اور یہ کافی میموری نہیں ہے انہوں نے مزید کہا، یہ مندرجہ ذیل میموری reallocates: اگر پھر بھی آپ اس میموری کی زیادہ دینے کے لئے تار کے آخر میں کمرے سے یہ اصل میں آپ کو دیتا ہے، تو آپ اس اضافی میموری ملے گی. تو آپ ڈور حروف واپس ڈال واپس، واپس واپس کر سکتے ہیں. لیکن اگر ایسی بات نہیں ہے، کیونکہ آپ بہت دیر سے انتظار کر رہے تھے اور بے ترتیب کچھ میموری میں وہاں plopped، لیکن اس اضافی ہے یہاں یاد، وہ ٹھیک ہے. Realloc آپ کے لئے تمام بھاری لفٹنگ کرنے والی ہے، STRING نے آپ کو پڑھا اس طرح یہاں سے دور ہے منتقل، وہاں نیچے رکھ اور پھر آپ کو اس وقت کے بارے میں مزید کچھ رن وے دے. تو ہاتھ کی لہر کے ساتھ، مجھے کا کہنا ہے کہ کہ GetString کیا کر رہا ہے ہے، یہ ایک چھوٹی سی بفر، شاید 1 ایک کردار کے ساتھ شروع ہو رہا ہے، اور 2 حروف میں صارف کی اقسام اگر، GetString تک ختم ہوتا ہے realloc بلا کہتے ہیں، 'اوہ، 1 کردار کافی نہیں تھا. 2 حروف مجھے دے دو. ' پھر اگر آپ لوپ کی منطق کے ذریعے پڑھا، ، کا کہنا ہے کہ 'ؤہ، 3 حروف میں ٹائپ صارف جا رہا ہے. مجھے دے دو 2 نہیں بلکہ 4 حروف، تو آپ کے وزٹرز کا ریکارڈ رکھا 8 دے، تو مجھے 16 اور 32 دے. ' حقیقت یہ ہے کہ میں نے صلاحیت کو دگنا کرنے ہر بار رہا ہوں کا مطلب یہ ہے کہ بفر آہستہ آہستہ اضافہ نہیں ہے. یہ انتہائی تیز رفتار اضافہ ہو رہا ہے، اور کیا اس کا فائدہ ہو سکتا ہے؟ میں بفر کا سائز دگنا کرنے کیوں کر رہا ہوں، اگرچہ صارف صرف 1 کی بورڈ سے اضافی کردار کی ضرورت ہو سکتی ہے؟ [Student کی جواب، unintelligible]. >> وہ کیا ہے؟ بالکل. آپ کے طور پر اکثر بڑھ نہیں ہے. اور یہ صرف ایک قسم ہے - you're آپ کے دانو یہاں باڑ لگانا. خیال ہے کہ آپ کو بہت realloc فون نہیں کرتے، کیونکہ یہ سست ہو جاتا ہے. کسی بھی وقت آپ میموری کے لئے آپریٹنگ سسٹم سے دعا گو ہیں، جیسا کہ آپ جلد ہی نظر آئے گا مستقبل میں مسئلہ سیٹ میں، اس میں کچھ وقت لگ جاتا ہے. ہے کہ وقت کی رقم کو کم سے کم کرنا، یہاں تک کہ اگر آپ کچھ جگہ برباد کر رہے ہیں تو، ایک اچھی بات ہو جاتا ہے. لیکن اگر ہم GetString کے آخری حصہ کے ذریعے یہاں پڑھ، اور پھر، ہر ایک لائن یہاں سمجھنے اتنی اہم نہیں ہے آج. نوٹس لیکن ہے کہ وہ آخر میں مطالبہ malloc پھر، اور یہ مختص بالکل کے طور پر بہت سے شراکت کے طور پر اس سٹرنگ کے لئے کی ضرورت ہے اور پھر مفت فون کر کے دور پھینک دے، ضرورت سے زیادہ بڑے بفر، اگر یہ واقعی بھی کئی بار دوہرا کر لی. مختصر میں، اس طرح GetString کیا گیا ہے اس وقت کام کر. یہ ہے ایک وقت میں ایک کردار پڑھا ہے بار بار بار اور ہر بار یہ کچھ اضافی میموری کی ضرورت ہے، یہ اس کے لئے realloc کو فون کر کے آپریٹنگ سسٹم پوچھتا ہے. کوئی سوال؟ ٹھیک ہے. ایک حملہ ہے. اب جب کہ ہم اشارہ سمجھتے ہیں، یا کم از کم اشارہ کے ساتھ تیزی سے واقف ہیں، ہم غور کریں کہ کس طرح پوری دنیا گر شروع ہوتا ہے اگر آپ معاندانہ صارفین کے خلاف کافی نہیں ہے کا دفاع، لوگ ہیں جو آپ کے سسٹم میں ہیک کرنے کی کوشش کر رہے ہیں. وہ لوگ جو کچھ رجسٹریشن کوڈ circumventing کی طرف سے آپ کے سافٹ ویئر کی چوری کی کوشش کر رہے ہیں کہ وہ اندر ٹائپ کریں ورنہ ہو سکتا ہے اس مثال میں نظر یہاں لے لو، جس میں صرف C کوڈ آن ہے ہے کہ اس کے نیچے دیے گئے ایک اہم تقریب ہے، ایک تقریب FOO مطالبہ، اور اس FOO گزر رہا ہے؟ [Student کی] ایک دلیل ہے. >> اکیلی دلیل. تو argv [1] جس کا پہلا لفظ صارف ٹائپ کا مطلب ہے کہ a.out یا جو کچھ بھی کے بعد کمانڈ لائن میں پروگرام کا کہا جاتا ہے. FOO تو، سب سے اوپر، ایک چار * میں لیتا ہے، لیکن اس کی چار * کیا ہے؟ سلک. کوئی نئی بات نہیں ہے، اور اس سٹرنگ منمانے جا رہا ہے بار کہا جاتا ہے. اس لائن میں، چار سی [12]، انگریزی نیم تکنیکی طرح کی میں کیا یہ لائن کر رہی ہے؟ کی لڑی -؟ تصوراتی، بہترین. کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے 12 حروف کی ایک سرنی دیجئے. تو ہم یہ ایک بفر کو فون کر سکتے ہیں. تکنیکی C کہتے ہیں، لیکن پروگرامنگ میں ایک بفر جگہ کا ایک گروپ ہے کہ آپ کو کچھ چیزیں اندر رکھ سکتے ہیں کا مطلب ہے memcpy، پھر آخر میں، ہم پہلے استعمال نہیں کیا ہے. لیکن آپ شاید اندازہ لگا سکتے ہیں کیا اس سے فرق پڑتا ہے. یہ میموری نقل کرتا ہے. اس کا کیا کرنا ہے؟ ٹھیک ہے، یہ بظاہر بار نقل کرتا ہے، اس کی ان پٹ سی میں، لیکن صرف اس بار کی لمبائی. لیکن یہاں ایک بگ ہے. ٹھیک ہے، تو تکنیکی طور پر ہم strlen واقعی (بار) X sizeof (چار)، کیا یہ صحیح ہے کیا کرنا چاہئے. لیکن بدترین صورت میں یہاں دو، اس that's کو سنبھالنے - ایسا ہے، تو ٹھیک ہے. اس کے بعد 2 کیڑے ہے. (چار) sizeof، ٹھیک ہے، تو یہ تھوڑا وسیع بنانے کے. تو اب وہاں ابھی بھی ایک مسئلے جو کیا ہے؟ [Student کی جواب، unintelligible] کس کے لئے >> چیک؟ ٹھیک ہے، تو ہم جانچ پڑتال کی جانی چاہئے کے نل کے لئے، کیونکہ بری چیزوں ہوگا جب آپ کا پوائنٹر نل ہے، کیونکہ تم نے وہاں جا، اور تم نے کبھی نہیں کرنا چاہئے شہوت انگیز null جا سکتا ہے * آپریٹر کے ساتھ محولہ لقب ضبطی کی طرف سے. تو یہ اچھی بات ہے، اور اور کیا ہم کر رہے ہیں؟ منطقی طور پر کوئی دوش بھی یہاں ہے. [Student کی جواب، unintelligible] >> لہذا اگر argc ≥ 2 چیک کرنے کے لیے؟ ٹھیک ہے تو، اس پروگرام میں 3 کیڑے یہاں ہے. ہم جانچ پڑتال اگر صارف اصل میں [1] argv اچھا ہے، میں کچھ بھی نہیں میں ٹائپ کر رہے ہیں. تو تیسرا بگ ہے؟ جی ہاں؟ [Student کی جواب، unintelligible] >> اچھا لگا. تو ہم نے ایک منظر نامے کی جانچ پڑتال. ہم لپیٹ زیادہ میموری کو کاپی نہیں کی جانچ پڑتال سے بار کی لمبائی کی حد سے تجاوز کرے گا. لہذا اگر سٹرنگ میں ٹائپ صارف کو 10 حروف طویل ہے، یہ کہہ رہی ہے، 'صرف 10 حروف کو کاپی کر دیں.' اور یہ ٹھیک ہے، لیکن اگر فوری طور پر میں ایک لفظ میں ٹائپ صارف 20 کردار لفظ کی طرح، یہ ہے، بار سے کیا میں کاپی 20 حروف کا کہنا ہے؟ C، دوسری صورت میں ہمارے بفر کے طور پر کہا جاتا ہے، جس کا مطلب ہے کہ آپ صرف ڈیٹا لکھا 8 بائٹ مقامات میں کہا گیا ہے کہ تم خود نہیں، اور آپ کو احساس ہے کہ تم انہیں کبھی نہیں مختص میں ان کی ہی نہیں ہے. تو یہ ہے جو عام طور پر بفر اتپرواہ حملے کے طور پر جانا جاتا ہے، یا بفر overrun معنوں میں حملے اور اس حملے کہ اگر صارف یا پروگرام ہے جو آپ کے تقریب کو بلا رہا ہے اس maliciously کر رہا ہے، اصل میں کیا ہوتا ہے اگلے بہت برا ہو سکتا ہے. چلو، اس تصویر پر ایک نظر یہاں لے. میموری کی یہ تصویر آپ کے اسٹیک کی نمائندگی کرتا ہے. یاد کرتے ہیں اور یہ کہ ہر وقت آپ کو ایک تقریب کہتے ہیں، آپ اسٹیک پر یہ چھوٹا سا فریم ملے گا اور پھر ایک اور پھر دوسرے اور پھر دوسرے. اور ابھی تک ہم صرف اس قسم کی ہے ان rectangles کے طور پر abstracted دور یا تو وہاں کی بورڈ پر یا سکرین پر یہاں. لیکن، اگر ہم ان rectangles میں سے ایک پر میں زوم جب تم نے ایک تقریب FOO فون، پتہ چلا ہے کہ اسٹیک پر زیادہ ہے اس فریم اور یہ کہ مستطیل کے اندر سے صرف X اور Y اور A اور B، جیسا کہ ہم سویپ کے بارے میں بات کر رہا تھا. یہ پتہ چلا ہے کہ نچلے درجے میں کچھ تفصیلات ہیں، ان کے درمیان ایڈریس واپس. اہم تو یہ پتہ چلتا ہے جب مرکزی FOO مطالبہ، FOO کو مطلع کرنا ہے اہم ایڈریس کے کمپیوٹر کی میموری میں ہے. ورنہ وجہ سے، جلد ہی FOO کے طور پر اس صورت میں یہاں کے طور پر قتل کیا جاتا ہے، ایک بار آپ FOO کے آخر میں اس کے قریب گھوبگھرالی تسمہ تک پہنچنے، heck FOO کس طرح پتہ جہاں پروگرام کا کنٹرول کرنے کے لئے سمجھا جاتا ہے؟ یہ پتہ چلا ہے کہ اس سوال کا جواب وہ لال مستطیل میں ہے. یہ ایک پوائنٹر کی نمائندگی کرتا ہے، اور یہ کمپیوٹر پر ہے، عارضی طور پر ذخیرہ، نام نہاد اسٹیک کا اہم پتہ تاکہ جلد ہی FOO کے طور پر قتل کیا جاتا ہے، کمپیوٹر کہاں اور اہم کیا لائن پر واپس جانا جانتا ہے. محفوظ شدہ فریم یہ پوائنٹر اس سے اسی طرح سے متعلق ہے. چار * یہاں بار کیا کی نمائندگی کرتا ہے؟ ٹھیک ہے، اب یہ نیلی طبقہ یہاں FOO فریم ہے، کیا بار ہے؟ ٹھیک ہے، تو بار صرف FOO تقریب دلیل ہے. تو اب ہم واقف تصویر میں واپس آ گئے ہیں. اسکرین پر مزید چیزیں اور مزید خلفشار ہے لیکن یہ ہلکے نیلے رنگ حصہ ہے جو ہم نے سویپ کی طرح کچھ کے لئے چاکبورڈ پر ڈرائنگ. یہ FOO کے لئے فریم اور اب اس میں صرف ایک چیز صحیح ہے بار ہے، جو اس پیرامیٹر ہے. لیکن اور کیا اسٹیک میں اس کوڈ کے مطابق کرنا چاہئے؟ چار ج [12]. تو ہم میموری کا 12 چوکوں کو بھی دیکھنا چاہئے، نامی سی متغیر مختص. اور یقینا ہم سکرین پر ہے. سب سے اوپر ہے وہاں C [0]، اور پھر اس خاکہ کے مصنف تھا چوکوں کے تمام ڈرائنگ کی زحمت نہیں لیکن وہاں واقعی وہاں 12 کیونکہ اگر آپ نیچے دائیں طرف دیکھتے ہیں، سی [11]، اگر آپ 0 سے شمار ایسے، 12 بائٹس ہے. لیکن یہاں مسئلہ ہے: کس سمت میں سی بڑھ رہی ہے؟ نیچے اوپر ترتیب دیں، ٹھیک ہے؟ اگر یہ سب سے اوپر شروع ہوتی ہے اور نیچے اگنے، ہے جیسا کہ ہم نے خود کو زیادہ رن وے کو چھوڑ دیا ہے یہاں بالکل نہیں دیکھو. ہم کی طرح ایک کونے میں خود پینٹ ہے، اور یہ کہ سی [11]، بار، جس میں اسٹیک فریم پوائنٹر کے خلاف ٹھیک ہے کے خلاف ٹھیک ہے جو واپسی ایڈریس کے خلاف ٹھیک ہے، وہاں کوئی گنجائش نہیں ہے. تو کیا مطلب ہے، پھر، اگر آپ کو نقصان پہنچانا، اور آپ کو ایک 12 بائٹ بفر میں 20 بائٹس پڑھنے کی کوشش کرتے ہیں؟ ان 8 اضافی بائٹس کہاں جا رہے ہیں؟ باقی سب کے اندر، جن میں سے بعض انتہائی اہم ہے. اور سب سے اہم بات ہے، ممکنہ طور پر، سرخ باکس وہاں ہے، واپسی کا پتہ ہے. کیونکہ لگتا ہے کہ آپ نے غلطی سے یا adversarially ہیں ان 4 بائٹس، کہ پوائنٹر ایڈریس ادلیکھت، صرف ردی کی ٹوکری کے ساتھ، لیکن ایک بڑی تعداد ہے جو میموری میں ایک حقیقی ایڈریس کی نمائندگی ہوتا ہے کے ساتھ نہیں ہے؟ کیا implicaiton ہے، منطقی طور پر؟ [Student کی جوابات، unintelligible] بالکل. >> FOO واپس جب اور ہٹ کہ گھوبگھرالی تسمہ، پروگرام کے اہم واپس نہیں کی کارروائی کی جا رہی ہے، اس سرخ باکس میں جو کچھ بھی پتہ ہے میں واپس جا رہا ہے. اب، circumventing سافٹ ویئر کی رجسٹریشن کے معاملے میں پتہ نہیں ہوتا جو جا رہا ہے واپس کیا ہے جشن ہے کہ عام طور پر کہا جاتا ہے کے بعد آپ کے سافٹ ویئر کے لئے ادائیگی کی ہے ہو جاتا ہے اور آپ کے رجسٹریشن کوڈ inputted؟ تم یہاں نہیں میں ٹرک کمپیوٹر ترتیب بلکہ اس کی بجائے، یہاں جا سکتا ہے. یا، اگر آپ واقعی ہوشیار ہو، کی بورڈ میں ایک مخالف میں اصل میں ٹائپ کر سکتے ہیں، مثال کے طور پر ایک اصل لفظ نہیں، 20 نہیں حروف، لیکن لگتا ہے کہ، وہ قسم کے کچھ ایسے حروف ہیں جو کوڈ کی نمائندگی کرتے ہیں میں ہے؟ اور اس C کوڈ نہیں ہے، یہ حروف کا ہونا ہو رہا ہے جو بائنری مشین کوڈ، 0 اور 1 کی نمائندگی کرتے ہیں. لیکن لگتا ہے کہ وہ کافی ہوشیار ہے کہ کسی نہ کسی طرح GetString فوری میں پیسٹ کرنے ہیں کچھ ہے کہ بنیادی طور پر کوڈ مرتب کیا ہے، اور آخری 4 بائٹس ہے کہ واپسی پتہ ادلیکھت، اور کیا پتہ ہے کہ ان پٹ کیا کرتا ہے؟ یہ لال مستطیل بفر کی پہلی بائٹ کے ایڈریس میں ذخیرہ ہے. تو کیا تم واقعی ہوشیار ہونا پڑے گا، اور اس مقدمے کی سماعت اور غلطی کا بہت ہے وہاں برے لوگ، لیکن اگر آپ کو اعداد و شمار کر سکتے ہیں اس بفر کتنا بڑا ہے، کے لئے ایسی ہے کہ ان پٹ میں گزشتہ چند بائٹس ہے کہ آپ اس پروگرام کو فراہم کی آپ کے بفر کے آغاز کا پتہ برابر ہوگا، کیا تم یہ کر سکتے ہیں. اگر ہم کہتے ہیں، عام طور پر، ہیلو، اور \ 0، کہ کیا بفر میں ختم ہو جاتی ہے. لیکن اگر ہم زیادہ ہوشیار ہیں، اور ہم نے کہ جو ہم حملے کا کوڈ generically فون کروں گا کے ساتھ بفر بھرنے کے، A، A، A، A: حملہ، حملے، حملہ، حملے، جہاں یہ صرف کچھ ہے کہ کچھ برا کرتا ہے ہے. ٹھیک ہے، کیا ہوتا ہے اگر تم واقعی ہوشیار ہو، تم یہ کر سکتا ہے: 80، CO، 35، 08: سرخ باکس میں تعداد کی ایک ہی تسلسل ہے. نوٹس کہ وہ نمبر ہے کہ یہاں ہے سے میل کھاتا ہے. معکوس ترتیب میں ہے، لیکن یہ کسی اور وقت پر. یاد رکھیں کہ اس کی واپسی کا پتہ کیا گیا ہے جان بوجھ کر تبدیلی ایڈریس یہاں کے برابر، اہم نہیں پتہ. تو اگر برا آدمی سپر ہوشیار ہے، وہ اس حملے کے کوڈ میں شامل کرنے جا رہا ہے کچھ کی طرح، 'صارف کی فائلوں کی تمام خارج کر دیں.' یا پاس ورڈ کو کاپی کریں، 'یا' ایک صارف اکاؤنٹ ہے جس میں میں لاگ ان کر سکتے ہیں بنائیں. کچھ بھی، اور یہ دونوں خطرہ ہے اور سی کی طاقت ہے کیونکہ آپ کو اشارہ کے ذریعے ياداشت کو رسائی حاصل ہے اور تم کچھ بھی آپ کے کمپیوٹر کی میموری میں چاہتا ہوں اس لئے لکھ سکتے ہیں. آپ کو ایک کمپیوٹر کو کچھ آپ کو صرف کرنا چاہتے ہیں کی طرف سے کر سکتے ہیں ہے یہ اس کی اپنی میموری کی جگہ کے اندر اندر کے ارد گرد کود. اور اس طرح، اس دن تو، بہت سے پروگراموں اور بہت سی ویب سائٹ ہے کہ سمجھوتہ کر رہے ہیں اس کا فائدہ لینے والے لوگوں کو ذیل میں ابال. اور یہ ایک سپر بہتر حملے کی طرح لگتا ہے ہو سکتا ہے، لیکن یہ اس طرح ہمیشہ نہیں شروع کرتا ہے. حقیقت یہ ہے کہ کیا برے لوگ عام طور پر کیا کرے گا، چاہے وہ ایک کمانڈ لائن میں ایک پروگرام یا ایک GUI پروگرام یا ایک ویب سائٹ ہے، تم صرف قسم کی معمولی ہدایات فراہم کرنا شروع کریں. آپ کو تلاش کے فیلڈ اور ہٹ میں داخل میں ایک بہت بڑا لفظ میں ٹائپ کریں، اور آپ کو اگر ویب سائٹ گر کر تباہ کو دیکھنے کے لئے انتظار کریں. یا آپ اگر پروگرام کوئی غلطی پیغام اظہار انتظار کریں. کیونکہ اگر تم خوش ہو جاؤ، برا آدمی، اور آپ کو کچھ پاگل ان پٹ فراہم کرتے ہیں کہ اس پروگرام کریش ہو جاتا ہے، اس کا مطلب ہے کہ پروگرامر نے اپنے برے رویے کی امید نہیں تھی جس کا مطلب ہے کہ آپ شاید کر سکتے ہیں کافی کوشش کے ساتھ، کافی مقدمے کی سماعت اور غلطی، اعداد و شمار کس طرح ایک سے زیادہ عین مطابق حملے چھیڑنے. سلامتی کے تو زیادہ سے زیادہ ایک حصہ ان حملوں نہیں ہے مکمل طور پر گریز، لیکن ان کا پتہ لگانے اور اصل میں نوشتہ دیکھ اور دیکھ کر پاگل آدانوں آپ کی ویب سائٹ میں ٹائپ لوگ ہیں. کیا آپ کی ویب سائٹ میں تلاش کی اصطلاحات لوگوں کو کچھ بفر overflowing کی امید میں ٹائپ ہے؟ اور، یہ ایک صف کیا ہے سادہ مبادیات کو فوڑے اور اس اور استعمال کرنے کے لئے میموری مختص کیا مطلب ہے؟ اور اس سے متعلق بھی ہے. تو صرف ایک ہارڈ ڈرائیو کے اندر ایک بار پھر نظر. تو آپ کو یاد ہوگا کہ آپ سے ایک یا دو ہفتے کے پہلے فائلوں جب کھینچ کر لائیں اپنے ریسایکل بن یا ردی کی ٹوکری میں کر سکتے ہیں، کیا ہوتا ہے؟ [Student کی] کوئی بات نہیں ہے. >> جی ہاں، بالکل کچھ نہیں. آخر میں اگر آپ کو کم چلاتے ہیں ڈسک کی جگہ، ونڈوز یا میک OS کی طرف سے آپ کے لئے فائلوں کو حذف کرنے شروع کر دیں گے. لیکن اگر آپ وہاں میں کچھ کھینچ کر لائیں، تو یہ تمام محفوظ نہیں ہے. تمام roomate، دوست، یا خاندان کے رکن کرنا ہے ڈبل کلک کریں، ہے اور voila. تمام خاکہ فائلوں ہے کہ آپ کو خارج کرنے کی کوشش کی ہے. لہذا ہم میں سے سب سے زیادہ کم از کم پتہ ہے کہ تم صحیح یا کلک کنٹرول پر کلک کریں اور خالی، ردی کی ٹوکری، یا ایسا کچھ. لیکن پھر بھی، کہ ٹرک کافی نہیں کرتی. کیونکہ جب تم میں سے کسی ایک کو آپ کو آپ کی ہارڈ ڈرائیو پر ایک فائل ہے کیا ہوتا ہے جو کچھ لفظ دستاویز یا کوئی JPEG کی نمائندگی کرتا ہے؟ اور یہ آپ کی ہارڈ ڈرائیو کی نمائندگی کرتا ہے، اور چلو کا کہنا ہے کہ اس sliver کہ فائل کی نمائندگی کرتا ہے، اور یہ 0 اور 1 کی ایک پوری چڑھانے کے پر مشتمل ہے. کیا ہوتا ہے جب آپ اس فائل کو صرف trashcan یا ریسایکل بن میں مت گھسیٹو، بلکہ یہ خالی ہے؟ کچھ بھی نہیں کی بنیاد پر ترتیب دیں. یہ بالکل نہیں ہے نہیں ہے. اب یہ صرف کچھ بھی نہیں ہے، کیونکہ کچھ اس کے ٹیبل کی شکل میں ہوتا ہے. تو وہاں ایک کمپیوٹر میموری کے اندر ڈیٹا بیس یا ٹیبل کے کسی قسم ہے جو بنیادی طور پر فائلوں کے ناموں کے لئے 1 کالم ہے، اور فائل کے محل وقوع کے، جہاں یہ 123 مقام، صرف ایک بے ترتیب تعداد میں ہو سکتا ہے اس کی 1 کالم. تو ہم x.jpg طرح کچھ، اور 123 مقام ہو سکتے ہیں. اور اس کے بعد کیا ہوتا ہے، جب آپ کو آپ کی ردی کی ٹوکری خالی ہے؟ وہ دور چلا جاتا ہے. لیکن کیا کرتا دور نہیں جانا 0 اور 1 کی ہے. تو کیا ہوا، تو، کنکشن کی 4 pset؟ 4 pset کے ساتھ، صرف اس لئے کہ ہم اتفاقی طور پر ختم کیا ہے ، کامپیکٹ فلیش کارڈ جو ان تمام تصاویر کی تھی یا صرف کیونکہ بدقسمتی سے یہ خراب ہوگئ بن گیا، کا مطلب یہ نہیں ہے کہ 0 اور 1 ابھی تک نہیں ہے. شاید ان میں سے کچھ کھو دیا ہے کیونکہ کچھ خراب کیا گیا ہے یعنی وہ اس طرح کہ کچھ 0 1 اور 1 کی بن گیا میں 0 بن گیا. بری چیزیں ہو چھوٹی گاڑی سافٹ ویئر یا خراب ہارڈ ویئر کی وجہ سے کر سکتے ہیں. لیکن ان بٹس کے بہت سے، ہو سکتا ہے ان میں سے بھی 100٪ ابھی بھی وہاں ہیں، یہ صرف ہے کہ کمپیوٹر یا کیمرے کا پتہ جہاں JPEG 1 شروع نہیں کرتا اور جہاں JPEG 2 شروع کر دیا، لیکن اگر آپ کو، پروگرامر، پریمی تھوڑا سا ہے، جہاں ان JPEGs ہیں یا ہے وہ کس طرح نظر آتے ہیں کے ساتھ جانتے ہیں کہ، آپ 0 اور 1 کا تجزیہ کرے گا اور، کا کہنا ہے کہ 'اوہ کر سکتے ہیں. JPEG. ، JPEG، ؤہ. آپ بنیادی طور پر کے لئے صرف ایک کے ساتھ ایک پروگرام لکھنے یا کر سکتے ہیں جبکہ لوپ کہ ان فائلوں میں سے ہر ایک اور ہر ایک شفاياب. تو سبق تو، شروع کرنے کے لئے "محفوظ" آپ کی فائلوں صفائی اگر آپ کو یہ مکمل طور پر سے بچنے کے لئے کرنا چاہتے ہیں. جی ہاں؟ [Student کی سوال، unintelligible] >> مزید میموری سے تم سے پہلے کیا ہے - اوہ! اچھا سوال ہے. کیوں تو، پھر، ردی کی ٹوکری خالی کرنے کے بعد کیا آپ کے کمپیوٹر میں آپ کو آگاہ کرتے ہیں کہ آپ اس کے لئے مزید مفت خلا سے تم سے پہلے کیا ہے؟ مختصر میں، کیونکہ یہ جھوٹ بول رہی ہے. تکنیکی طور پر، آپ کو زیادہ جگہ ہے. کیونکہ اب تم نے کہا ہے، تو آپ کو دوسری چیزیں ڈال جہاں اس فائل کو ایک بار کر سکتے ہیں، لیکن اس کا یہ مطلب یہ نہیں بٹس دور جا رہے ہیں ہے، پر اس کا یہ مطلب نہیں ہے بٹس سب 0 کیا جا رہا ہے کو تبدیل کر دیا گیا، مثال کے طور پر آپ کے تحفظ کے لئے،. اس کے برعکس، اگر آپ کو "محفوظ" مٹائیں فائلوں، یا جسمانی طور پر آلہ تباہ، جو واقعی صرف ایک ہی طریقہ ہے، بعض اوقات کہ ارد گرد. تو ہم نیم ڈراونا نوٹ کریں کہ کیوں نہیں چھوڑ دیتے، اور ہم نے تم سے پیر کو نظر آئے گا. CS50.TV