[Powered by Google Translate] [6 ہفتہ جاری،] [ڈیوڈ J. Malan] [ہارورڈ یونیورسٹی] [یہ CS50 ہے.] [CS50.TV] یہ CS50 ہے اور یہ 6 ہفتے کے آخر ہے. تو CS50x، ہارورڈ یونیورسٹی کے پہلے edX پہل میں ملوث کورس میں سے ایک واقعی گزشتہ پیر کو debuted. اگر آپ انٹرنیٹ پر دوسروں کو کیا کی ایک جھلک حاصل کرنے کے لئے کرنا چاہتے ہیں ہیں اور اب کے ساتھ کے بعد، آپ کو x.cs50.net کی قیادت کر سکتے ہیں. وہ تم edx.org پر مناسب جگہ پر ری ڈائریکٹ کریں گے، جو جہاں یہ اور اب ایم ائی ٹی اور برکلے کے دوسرے کورس رہتے. آپ کو ایک اکاؤنٹ کے لئے سائن اپ کرنا پڑے گا، آپ کو تلاش ہے کہ مواد زیادہ تر ایک ہی ہے. کے طور پر آپ اس سمسٹر ہے، میں کچھ تاخیر ہفتے تاہم، جیسا کہ ہم سب تیار ہو جاؤ. لیکن کیا CS50x میں طالب علموں کو اب دیکھیں گے کہ وہ بالکل اس کی طرح ایک انٹرفیس ہے. یہ، مثال کے طور پر، walkthrough مسئلہ 0 سیٹ کے لئے کی قیادت Zamyla ہے. edx.org میں لاگ ان کرنے کے بعد، ایک CS50x Student کی چیزوں کی طرح دیکھتا ہے آپ کو ایک کورس میں دیکھنے کی توقع کریں گے: پیر کے لئے لیکچر لیکچر بدھ، مختلف شارٹس، مسئلہ سیٹ، walkthroughs، پی ڈی ایفز کے لئے. اس کے علاوہ، آپ کو یہاں دیکھ کر، مشین ترجمہ چینی، جاپانی، ہسپانوی، اطالوی میں انگریزی ٹرانسکرپٹس، دیگر زبانوں میں سے اور ایک مکمل جھوبڈ ہے کہ نامکمل ضرور ہو جائے گا جیسا کہ ہم ان کے پروگرام رول ملاقات کی ایک API کچھ کا استعمال کرتے ہوئے، گوگل کی طرف سے یا ایپلیکیشن پروگرامنگ انٹرفیس، ہے کہ ہمیں ان دیگر زبانوں انگریزی میں تبدیل کرنے کی اجازت دیتا ہے. لیکن، کچھ سو سے زیادہ رضاکاروں کی شاندار روح کا شکریہ انٹرنیٹ پر بے ترتیب لوگوں کے ساتھ حسن معاشرت اور اچھا ملوث حاصل کرنے کی پیشکش کی ہے اس منصوبے میں، ہم آہستہ آہستہ ان ترجموں کا معیار کیا جائے گا کو بہتر بنانے کے ہونے انسان غلطیوں کہ ہمارے کمپیوٹرز کر دیا ہے درست ہے. تو اس کا بدل جاتا ہے کیا ہم چند طالب علموں نے پیر کو کیا تھا سے ہم نے ابتدائی طور پر توقع کی جاتی ہے. اصل میں، اب CS50x 100،000 گھر میں ساتھ درج ذیل افراد ہیں. تو احساس آپ کا حصہ کمپیوٹر سائنس میں اس کورس کو کرنے کے اس افتتاحی کلاس ہیں زیادہ عام طور پر تعلیم، زیادہ وسیع طور پر قابل رسائی ہے. اور حقیقت اب ان بڑے پیمانے پر آن لائن کورس میں سے کچھ کے ساتھ ہے، وہ سب کے سب ان بہت زیادہ تعداد کے ساتھ شروع کریں، جیسا کہ ہم نے یہاں کیا ہے لگ رہے ہو. لیکن مقصد، بالآخر، CS50x کے لئے واقعی ممکن ہو سکے کے طور پر ختم لائن پر کئی کے طور پر لوگوں کو حاصل کرنے کے لئے. ڈیزائن، CS50x گزشتہ پیر سے پیش کی گئی جا رہا ہے 15 اپریل، 2013 کے ذریعے تمام راستہ، تاکہ لوگ جو اسکول کے وعدوں دوسری جگہوں پر ہے، کام، خاندان، دیگر تنازعات کی طرح، تھوڑا زیادہ لچک جس کے ساتھ اس کورس میں کودو، جو، یہ کہنا کافی، بہت ambitiously کیا صرف اس صورت میں صرف ایک معمول سمسٹر کے دوران تین ماہ کے دوران. لیکن ان طلباء کو بھی یہی مسئلہ کے سیٹ سے نمٹنے گا، اسی مواد کو دیکھنے کے اسی شارٹس اور طرح تک رسائی ہے. تو احساس ہوتا ہے کہ ہم اس کے ساتھ مل کر میں سچ میں ہیں. اور CS50x کے اختتام اہداف میں سے ایک کو کئی کے طور پر لوگوں کو حاصل کرنے کے لئے نہیں ہے ختم لائن اور انہیں کمپیوٹر سائنس کے اس نئے تفہیم دینے کے لئے بلکہ پروگرامنگ انہیں اس کا اشتراک تجربہ ہے. کیمپس میں 50 اہم خصوصیات میں سے ایک، ہمیں امید ہے کہ، اجتماعی تجربے کے اس طرح ہوا، بہتر کے لیے یا برے کے لئے، کبھی کبھی، لیکن ان لوگوں کو بائیں اور دائیں کی طرف رجوع اورقرب اختیار کرنے اور دفتر گھنٹے اور hackathon اور منصفانہ ہے. یہ تھوڑا مشکل ہے کہ آن لائن لوگوں کے ساتھ ذاتی طور پر کرنا ہے، لیکن اپریل میں CS50x پہلی CS50 نمائش کے ساتھ ختم ہو گا، جو میلے کے ہمارے خیال کی ایک آن لائن موافقت ہو جائے گا ان ہزاروں طالب علموں کے سب جہاں 1 پیش رکھا جائے گا مدعو - ویڈیو 2 منٹ، یا تو ان کے ان کے منصوبے کی حتمی یا ویڈیو کی ایک screencast ہیلو لہراتے ہوئے اور ان کے منصوبے کے بارے میں بات کر رہے ہیں اور یہ demoing اپنے پوروورتیوں کی طرح کیمپس یہاں میلے میں کیا ہے، تاکہ کہ سمسٹر آخر کی طرف سے، امید ہے ایک عالمی نمائش ہے CS50x 'طالب علموں کے آخری منصوبوں کی، بہت کچھ اس طرح ہے جس نے آپ کو اس دسمبر کیمپس میں انتظار کر رہا ہے یہاں. تو آنے والے مہینوں میں اس پر زیادہ. 100،000 طلباء کے ساتھ، تاہم، چند مصدقین کے لئے ایک ضرورت آتا ہے. دیکھتے ہوئے کہ تم لوگ پگڈنڈی چل چلاتی یہاں ہیں اور CS50 لینے کئی ہفتوں، اس مواد edX پر لوگوں کی رہائی سے پہلے میں احساس ہم نے اس پہل میں کے طور پر ہر ممکن حد تک اپنے اپنے طالب علموں کی بہت سے شامل کی محبت، دونوں کے ساتھ ساتھ سمسٹر اس موسم سرما کے دوران اور اس آنے والے موسم بہار ہے. تو اگر آپ CS50x میں ملوث حاصل کرنے کے لئے کرنا چاہتے ہیں، خاص طور پر CS50 بحث edX ورژن CS50x گفتگو میں شرکت، ، جو تم میں سے بہت سے کیمپس کا استعمال کرتے ہوئے، آن لائن بلیٹن بورڈ برائے مہربانی اس یو آر ایل پر سر کرنا، ہمیں معلوم ہے کہ تم کون ہو، کیونکہ ہم نے طلبا اور عملے کی ایک ٹیم اور اساتذہ یکساں تعمیر محبت چاہتے ہیں جو کیمپس صرف ساتھ کھیل رہے ہیں اور باہر کی مدد. اور جب انہوں نے ایک سوال کے نظر آتا ہے جو ان سے واقف ہے، آپ کو کچھ بگ کی اطلاع کہیں باہر وہاں کچھ ملک میں انٹرنیٹ پر طالب علم نے سنا، اور یہ کہ ایک گھنٹی بجتی ہے کیونکہ آپ کے پاس بھی ہے جو ایک ہی مسئلہ تھا ، امید ہے کہ آپ کی D ہال میں کچھ وقت پہلے تو میں آپ سوریکی اور اپنے اپنے تجربے کا اشتراک کر سکتے ہیں. لہذا براہ مہربانی اگر آپ چاہیں تو حصہ لینا ہے. ہارورڈ میں کمپیوٹر سائنس کورس میں ایک روایت کے تھوڑا سا ہے، ان میں سے کچھ ملبوسات، کچھ کپڑے، جو آپ کو فخر پہن سکتی ہونے کے CS50، سمسٹر آخر میں، بہت فخر کے ساتھ کہہ رہا ہوں کہ آپ CS50 ختم اور CS50 طرح لیا، اور ہم نے ہمیشہ طالب علموں کو شامل کرنے کی کوشش ، اس کے عمل میں جتنا ممکن ہو، ہم جس کے لئے مدعو سمسٹر کے اس وقت کے ارد گرد، طالب علموں کو، ڈیزائن جمع کرنے کے لئے فوٹوشاپ کا استعمال کرتے ہوئے، یا پسند کا جو بھی آلہ آپ کو استعمال کرنا چاہتے ہیں اگر آپ کو ایک ڈیزائنر ہیں، ٹی شرٹ اور سویٹ شرٹ کے لئے ڈیزائن کو جمع کرنے کے لئے اور کتوں کے لئے چھاتے اور تھوڑا bandanas اب ہم ہیں اور پسند کرتے ہیں. اور سب کچھ تو ہے - ہر سال جیتنے والوں کی نمائش کر رہے ہیں تو store.cs50.net میں کورس کی ویب سائٹ پر. سب کچھ وہاں قیمت پر فروخت کی ہے، لیکن اس کی ویب سائٹ صرف خود چلاتی اور لوگوں کے رنگ اور ڈیزائن ہے کہ وہ پسند کو منتخب کرنے کے لئے کی اجازت دیتا ہے ہے. تو میں نے سوچا تھا کہ ہم نے گزشتہ سال کے ڈیزائن کی کچھ شیئر تھا ہے کہ یہ یہاں ایک کے علاوہ ویب سائٹ پر تھے، جس میں ایک سالانہ روایت ہے. "ہر روز میں Faultn Seg رہا ہوں" گذارشات میں سے ایک آخری سال تھا، جو اب بھی دستیاب ہے سابق طالب علم کے لئے وہاں ہے. ہم اس میں سے ایک تھا، "CS50، 1989 قائم کیا ہے." ہمارے میں سے ایک Bowdens، روب، بہت مقبول گزشتہ سال تھی. "ٹیم Bowden" تھا پیدا، اس ڈیزائن کو سب سے اوپر بیچنے والے کے درمیان، پیش کیا گیا تھا. جیسا کہ اس میں سے ایک تھا. فروخت نوشتہ کے مطابق بہت سے لوگ "Bowden بخار" تھا. احساس کہ اب آپ کی ڈیزائن وہاں، انٹرنیٹ پر کر سکتے ہیں. اگلے مسئلہ میں اس پر مزید تفصیلات آنے متعین کرتا ہے. ایک اور آلہ: آپ کو کچھ نمائش لیا اور امید ہے کہ اب GDB کے ساتھ کچھ تجربہ ہاتھوں پر، جو ظاہر ہے، debugger اور آپ جوڑتوڑ کرنے کی اجازت دیتا ہے کافی کم سطح پر اپنے پروگرام کر رہی ہے، کس قسم کی چیزیں؟ کیا GDB آپ کو کیا کرتا ہے؟ جی ہاں؟ مجھ سے کچھ دے دو. [Student کی جواب، unintelligible] اچھی بات ہے. تقریب میں مرحلہ، تو آپ کو چلانے ٹائپ نہ صرف ہے اور اس کی مکمل ذریعے پروگرام دھچکا ہے، معیاری پیداوار چھپائی چیزیں. بلکہ، آپ کو لائن کی طرف سے لائن اس کے ذریعے قدم، یا تو اگلے ٹائپ کر سکتے ہیں لائن یا ایک تقریب میں کودو، عام طور پر ایک ہے کہ آپ نے لکھا قدم کی طرف سے جاری کی لائن کی طرف سے لائن کے پاس جاؤ. اور کیا GDB آپ کو کیا کرتا ہے؟ جی ہاں؟ [Student کی جواب، unintelligible] متغیر پرنٹ کریں. تو اگر آپ کو آپ کے پروگرام کے اندر ایک چھوٹا سا تجزیہ کرنا چاہتے ہیں ، سب جگہ printf بیانات لکھنے کا سہارا کے بغیر آپ کو صرف ایک متغیر یا ایک متغیر ظاہر کو پرنٹ کر سکتے ہیں. GDB طرح debugger کے ساتھ آپ اور کیا کر سکتا ہوں؟ [Student کی جواب، unintelligible] بالکل. آپ breakpoints مقرر کر سکتے ہیں، آپ کو وقفے پر عملدرآمد کا کہنا ہے کہ کر سکتے ہیں مرکزی تقریب یا FOO تقریب میں. 123 لائن پر وقفے پر عملدرآمد کا کہنا ہے کہ کر سکتے ہیں. اور breakpoints ایک بہت ہی طاقتور تکنیک ہیں کیونکہ اگر تم جہاں آپ مسئلہ کا ایک عام احساس ہے شاید، کیا تمہیں وقت ہے پروگرام کے مکمل ذریعے نکلنے ضائع نہیں ہے. تم وہیں بنیادی طور پر اور پھر کود ٹائپنگ شروع کر سکتے ہیں - قدم یا اگلے یا جیسے کے ساتھ اس کے ذریعے سے نکلنے کی. لیکن GDB طرح کچھ کے ساتھ پکڑنے یہ ہے کہ یہ آپ کی مدد کرتا ہے، انسان، اپنے مسائل کو تلاش کریں اور اپنے کیڑے تلاش کریں. یہ انہیں لازمی طور پر آپ کے لئے نہیں ہے اتنا تلاش کریں. تو ہم نے دوسرے دن style50 شروع کی، جس میں ایک مختصر کمانڈ لائن ٹول ہے ہے کہ اپنے کوڈ کو تھوڑا سا زیادہ cleanly تم سے stylize کی کوشش کرتا ہے، انسان کیا ہے، ہو سکتا ہے. لیکن یہ بھی، واقعی میں صرف ایک جمالیاتی بات ہے. لیکن یہ بدل جاتا ہے وہاں نامی یہ دوسری Valgrind آلہ ہے جو تھوڑا سا زیادہ استعمال کرنے کے لئے arcane ہے. پہلی نظر میں اس کی پیداوار atrociously خفیہ ہے. لیکن یہ wonderfully مفید ہے، خاص طور پر اب جب کہ ہم اس اصطلاح کی حصہ ہیں تم جہاں malloc اور متحرک میموری تقرری کا استعمال شروع کر رہے ہیں. چیزیں واقعی، واقعی غلط فوری طور پر جا سکتے ہیں. وجہ سے، اگر آپ اپنے میموری کو آزاد کرنے کے لئے بھول جاتے ہیں، یا آپ کو کچھ نل پوائنٹر dereference یا آپ کو کچھ ردی کی ٹوکری پوائنٹر dereference، جو عام طور پر علامات کہ نتائج کیا ہے؟ غلطی Seg. اور آپ کے پاس کئی کلو بائٹ یا میگا بائٹس میں سے کچھ کا یہ بنیادی فائل حاصل وہ اپنے پروگرام کی میموری کی حالت کی نمائندگی کرتا ہے جب وہ گر کر تباہ ہوگیا، لیکن اپنے پروگرام کو بالآخر گناہ seg، انقطاع غلطی، جس کا مطلب ہے کہ کچھ برا تقریبا ہمیشہ ہی سے متعلق ہو گیا ایک غلطی میموری سے متعلق ہے کہ آپ کہیں بنا دیا. تو Valgrind سے آپ کو اس طرح سے چیزیں تلاش کرنے میں مدد ملتی ہے. یہ ایک آلہ ہے جو آپ کو چلاتے ہیں، GDB کی طرح کے بعد آپ کو اپنے پروگرام مرتب کر لیا ہے، لیکن بجائے اپنے پروگرام براہ راست چلانے کے، آپ چلاتے Valgrind اور آپ اس سے آپ کے پروگرام پاس، ویسے ہی جیسے آپ GDB کے ساتھ کیا کیا. اب، استعمال، کی پیداوار کا سب سے بہترین قسم کی حاصل کرنے کے لئے، تھوڑا طویل ہے، سکرین کے اوپر وہیں آپ Valgrind بمقابلہ دیکھیں گے. "بمقابلہ" تقریبا عالمی شبدبہل کا مطلب ہے کہ جب تم نے ایک لینکس کمپیوٹر پر پروگراموں کا استعمال کرتے ہوئے کر رہے ہیں. تو اس کا مطلب ہے کہ آپ ڈیفالٹ کی طرف سے طاقت سے زیادہ معلومات تھوکنے. "- اصلی = لیک چیک کرنے کے لیے." یہ صرف ہر ممکن میموری لیک کے لئے چیک کہہ رہا ہے، غلطیوں کہ میں نے ہو سکتا ہے. یہ بھی لینکس کے پروگراموں کے ساتھ ایک عام مثال ہے. عام طور پر، اگر آپ کو ایک کمانڈ لائن کی دلیل ہے کہ ایک "سوئچ" ہے، جو پروگرام کا رویہ تبدیل کرنا ہے، اور یہ ایک خط ہے، یہ V-، لیکن اس سے تبدیل کر دیا ہے اگر، صرف پروگرامر کے ڈیزائن کی طرف سے الفاظ کی ایک مکمل لفظ یا سیریز، کمانڈ لائن کی دلیل کے ساتھ شروع ہوتا ہے - یہ صرف انسانی کنونشن کی ہیں، لیکن آپ انہیں دیکھ کر تیزی سے کریں گے. اور پھر آخر میں، "a.out" اس مخصوص مثال کے طور پر میں اس پروگرام کے لئے صوابدیدی نام ہے. اور یہاں کچھ نمائندہ پیداوار ہے. اس سے پہلے کہ ہم اس کا کیا مطلب ہو سکتا ہے دیکھو، مجھے یہاں کے کوڈ کا ایک ٹکڑا ہے. اور کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے راستے سے یہ باہر منتقل، جلد ہی آرہا ہے، اور memory.c، جو کہ اس مختصر مثال ہے میں ایک نظر ڈالیں. تو اس پروگرام میں، کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے کام کرتا ہے اور سوال پر میں زوم. ہم نے ایک اہم تقریب ہے جو ایک تقریب کہتے ہیں F ہے، اور پھر کیا F تھوڑا تکنیکی انگریزی میں کیا کارروائی کرتا ہے؟ F کیا ہے کرنا کارروائی؟ میں کس طرح کے بارے میں 20 لائن کے ساتھ شروع اور ستارہ مقام سے فرق نہیں پڑتا کریں گے، لیکن میں مسلسل یہاں صرف آخری لیکچر کے ساتھ ہو جائے گا. 20 لائن کیا ہے ہمارے لئے کیا ہے؟ بائیں طرف. ہم اسے توڑ نیچے مزید کریں گے. Int * X: اس کا کیا کرنا ہے؟ ٹھیک ہے. یہ ایک پوائنٹر قرار دیا ہے، اور اب ہم سے بھی زیادہ تکنیکی. یہ کیا ہے، بہت concretely مطلب پوائنٹر اعلان؟ کوئی اور؟ جی ہاں؟ [Student کی جواب، unintelligible] بہت دور ہے. تو آپ کو برابر علامت کے دائیں ہاتھ کی طرف پڑھ رہے ہیں. صرف بائیں پر توجہ مرکوز صرف int X * پر چلو. یہ ایک پوائنٹر ہے "کا اعلان"، لیکن اب اس تعریف کے گہرے میں کودو. کہ concretely کیا تکنیکی طور پر، کیا مطلب ہے؟ جی ہاں؟ [Student کی جواب، unintelligible] ٹھیک ہے. یہ یاد میں ایک ایڈریس کو بچانے کے لئے کی تیاری ہے. اچھی بات ہے. دو اور اس ایک قدم آگے لے، یہ ایک متغیر، X، جو 32 بٹیں قرار دیا ہے. اور مجھے پتہ ہے کہ یہ کیونکہ 32 بٹس ہے - یہ نہیں ہے کیونکہ یہ ایک int ہے، کیونکہ اس نے اس معاملے میں ایک پوائنٹر ہے. اتفاق ہے کہ یہ ایک اور ایک int کے ساتھ بھی ایسا ہی ہے، لیکن حقیقت یہ ہے کہ ستارہ کا مطلب ہے کہ یہ ایک پوائنٹر ہے اور آلات میں بہت سے کمپیوٹر کے ساتھ، لیکن سب نہیں، اشارہ 32 بٹیں ہیں. تازہ ترین Macs، تازہ ترین پی سی کی طرح کے بارے میں مزید جدید ہارڈویئر پر، آپ کو 64 بٹ اشارہ کر سکتے ہیں، لیکن آلے میں، ان چیزوں 32 بٹیں ہیں. تو ہم اس پر معیاری گے. مزید concretely کہانی مندرجہ ذیل ہے: ہم نے ایک پوائنٹر "اعلان"، اس کا کیا مطلب ہے؟ ہم ایک میموری ایڈریس محفوظ کرنے کے لئے تیار ہے. اس کا کیا مطلب ہے؟ ہم نے ایک متغیر نام نہاد ایکس ہے جو 32 بٹیں لگتے بنا کہ ایک عددی کا پتہ جلد ہی جمع کرے گا. اور یہ شاید کے بارے میں کے طور پر عین مطابق ہم کے طور پر حاصل کر سکتے ہیں. یہ ٹھیک ہے آگے بڑھنے دنیا کو آسان کرنے کے لئے اور صرف اتنا کہنا نامی X پوائنٹر اعلان. پوائنٹر اعلان کریں، لیکن اور سمجھتے ہیں کہ اصل میں کیا چل رہا ہے احساس صرف ان چند حروف میں بھی. اب، یہ تقریبا ایک تھوڑا آسان ہے، اگرچہ یہ ایک طویل اظہار ہے. تو کیا یہ کر رہا ہے کہ اب روشنی ڈالی ہے: "malloc (10 sizeof (int)) *" جی ہاں؟ [Student کی جواب، unintelligible] اچھی بات ہے. اور میں نے اسے وہاں سے لے لیں گے. یہ دس integers کے لئے میموری کا ایک حصہ آونٹیت ہے. اور اب تھوڑا گہرے میں کودو، یہ دس integers کے لئے میموری کا ایک حصہ آونٹیت ہے. کیا malloc پھر واپس آ رہا ہے؟ اس حصہ کے ایڈریس، یا، concretely کہ حصہ کے پہلے بائٹ کا پتہ ہے. تو میں کس طرح ہوں، پروگرامر جانتے ہیں، میموری ختم ہو جاتی ہے کہ حصہ کہاں ہے؟ میں جانتا ہوں کہ یہ ملحق ہے. Malloc، تعریف کی طرف سے، آپ کو میموری کا ایک ملحق حصہ دے گا. اس میں کوئی فرق ہے. تم اس حصہ میں ہر بائٹ کو رسائی حاصل ہے، واپس واپس، واپس لیکن مجھے کس طرح پتہ ہے کہ میموری کے اس حصہ کے آخر کہاں ہے؟ تم نے malloc جب استعمال کرتے ہیں؟ [Student کی جواب، unintelligible] اچھا لگا. تم نہیں. آپ کو یاد ہے. مجھے یاد ہے کہ میں 10 کی قیمت کا استعمال کیا ہے، اور میں یہاں کیا کر بھی نہیں لگتا. لیکن ذمہ داری مجھ پر مکمل طور پر ہے. Strlen، جو ہم ڈور کے لئے تھوڑا سا پر انحصار ہو گئی ہو، \ 0 ہونے کے اس کنونشن کی وجہ سے صرف کام کرتا ہے یا ایک تار کے آخر میں اس خاص nul کردار NUL،. یہ میموری کا صوابدیدی مقدار کے لئے نہیں روک ہے. یہ آپ پر منحصر ہے. اوپر 20 تو تو، میموری کا ایک حصہ مختص جو دس integers محفوظ کر سکتے ہیں، اور یہ پہلے بائٹ کا پتہ ذخیرہ کہ کہا جاتا متغیر X میں یاد کے حصہ کے. لہذا، جس میں ایک پوائنٹر ہے. ، بدقسمتی سے، 21 لائن تو ایک غلطی تھی. لیکن اس سے پہلے، یہ کیا کر رہی ہے؟ یہ 10 محل وقوع، حساب سے ترتیب 0 سٹور کہہ رہا ہے، X کی قدر 0 نامی میموری کا حصہ. تو محسوس چیزوں کے ایک جوڑے پر جا رہے ہیں. اگرچہ X پوائنٹر ہے، ایک جوڑے ہفتے پہلے سے یاد کہ آپ صف انداز مربع بریکٹ سنکیتن اب بھی استعمال کر سکتے ہیں. کیونکہ وہ اصل میں زیادہ خفیہ نظر پوائنٹر ریاضی کے لئے مختصر ہاتھ سنکیتن ہے. جہاں ہم اس طرح کچھ کرنا ہوگا: ایڈریس ایکس لے لو، پر 10 مقامات میں منتقل کریں، پھر جو کچھ بھی پتہ اس مقام پر محفوظ کیا جاتا ہے وہاں چلتے ہیں. لیکن سچ کہوں تو، یہ صرف atrocious ہے اور کے ساتھ آرام دہ اور پرسکون حاصل کرنے کے لئے پڑھیں. تو دنیا میں عام طور پر مربع بریکٹ کا استعمال کیا جاتا ہے کیونکہ یہ زیادہ انسانی کے پڑھنے. لیکن یہ ہے کیا واقعی ہڈ کے نیچے جا رہا ہے؛ X پتہ،، ایک صف نہیں SE فی ہے. تو یہ 0 X میں 10 جگہ پر ذخیرہ کرنے کا ہے. یہ کیوں برا ہے؟ جی ہاں؟ [Student کی، جواب، unintelligible] بالکل. ہم صرف دس ints مختص، لیکن ہم 0 سے جب سی پروگرامنگ شمار، تو آپ 0 1 2 3 4 5 6 7 8 9، لیکن 10 سے کو رسائی حاصل ہے. یا تو پروگرام seg غلطی جا رہا ہے یا ایسا نہیں ہے. اس ایک nondeterministic رویے کی طرح ہے، لیکن ہم سچ میں نہیں جانتے ہو. یہ سچ پر منحصر ہے کہ کیا ہم خوش ہو جاؤ. اگر یہ پتہ چلا ہے کہ آپریٹنگ سسٹم برا نہ مانے کرتا ہے اگر میں اس اضافی بائٹ کا استعمال کرتے ہیں، اگرچہ یہ مجھے نہیں دیا ہے، میرا پروگرام نہیں کریش ہوا ہو سکتا ہے. یہ خام ہے، یہ چھوٹی گاڑی ہے، لیکن آپ اس علامات کو دیکھ نہیں سکتا ہے، یا آپ نے اسے ایک وقت میں صرف ایک بار دیکھ سکتے ہیں. لیکن حقیقت یہ ہے کہ بگ حقیقت میں ہے،، وہاں ہے. اور یہ واقعی مسئلہ ہے اگر آپ کو ایک پروگرام ہے کہ آپ کو درست کرنا چاہتے ہیں لکھا ہے، ہے کہ آپ اس پروگرام نے فروخت کیا ہے کہ لوگوں کو استعمال کرتے ہوئے کہ ہر تھوڑی دیر میں ایک بار کریش ہو رہے ہیں کیونکہ، کورس کے، یہ اچھا نہیں ہے. اصل میں، اگر آپ کو ایک لوڈ، اتارنا Android فون یا ایک موبائل ہے اور ان دنوں آپ کے اطلاقات ڈاؤن لوڈ، اتارنا، اگر تم نے کبھی لیا ہے، ایک اپلی کیشن صرف چھوڑ، کہ اچانک غائب ہو، تقریبا ہمیشہ کچھ مسئلہ میموری متعلقہ کا نتیجہ ہے، پروگرامر نے جس خراب اور dereferenced ایک پوائنٹر کہ وہ یا وہ نہیں ہونا چاہئے، اور iOS یا لوڈ، اتارنا Android کا نتیجہ صرف پروگرام مکمل طور پر قتل ہے بلکہ خطرے کی جانچ سیکورٹی معاہدے کے رویے یا کسی قسم سے. ایک اس ایک کے علاوہ اس پروگرام میں دیگر بگ ہے. اور کیا میں اس پروگرام میں خراب ہے؟ میں مشق نہیں کیا میں نے تبلیغ ہے ہے. جی ہاں؟ [Student کی جواب، unintelligible] اچھا لگا. میں نے میموری آزاد نہیں ہے. تو اب انگوٹھے کی حکمرانی کسی بھی وقت آپ کے پاس malloc فون آپ کو فون، مفت جب تم نے کیا کر رہے ہیں کہ میموری کو استعمال کرتے ہوئے ہے. اب، میں اس میموری آزاد کب چاہتے ہیں؟ شاید سنبھالنے اس کی پہلی سطر درست تھا، میں اسے یہاں چاہتا. کیونکہ میں مثال کے طور پر، نہیں، اس کو نیچے کر سکتے ہیں یہاں کیا ہے. کیوں؟ بس باہر گنجائش ہے. تو اگرچہ ہم اشارہ کے بارے میں بات کر رہے ہیں، یہ ایک 2 ہفتہ یا 3 مسئلہ ہے، جہاں X صرف گھوبگھرالی منحنی خطوط وحدانی جہاں یہ اعلان کیا گیا تھا کے اندر گنجائش میں ہے ہے. تو آپ ضرور یہ مفت نہیں کر سکتے ہیں. تقریبا 21 لائن کے بعد میری ہی اسے آزاد کرنے کا موقع ہے. یہ ایک کافی سادہ پروگرام ہے، یہ کافی آسان تھا، ایک بار آپ کی قسم آپ کے دماغ میں لپیٹ کیا ارد گرد پروگرام کر رہی ہے، ہے جہاں غلطیاں تھیں. اور یہاں تک کہ اگر آپ نے پہلے نہیں دیکھا، امید ہے کہ یہ اب تھوڑا واضح ہے کہ ان غلطیوں کو بہت آسانی سے حل کر رہے ہیں اور آسانی سے بنا. لیکن جب ایک پروگرام میں 12 سے زائد لائنیں طویل ہے، 50 لائنوں طویل، 100 لائنیں طویل ہے، لائن کی طرف سے آپ کے کوڈ کی لائن کے ذریعے گھومنا، یہ سوچ کر اس کے ذریعے منطقی طور پر، ممکن ہے لیکن کرنا خاص طور پر مذاق نہیں ہے، مسلسل کیڑے کی تلاش میں، اور یہ بھی مشکل کرنا، اور یہی وجہ ہے کہ Valgrind کی طرح ایک آلہ موجود ہے. ، مجھے میری ٹرمینل دریچہ کھول: مجھے آگے بڑھیں اور اس کام کو اور آپ کے وزٹرز کا ریکارڈ رکھا میموری صرف نہیں چلاتے ہیں، کیونکہ میموری ٹھیک ہو جائے لگتا ہے. میں خوش ہو رہا ہوں. صف کے آخر میں اس اضافی بائٹ جانا بہت مشکلات ہو نہیں لگتا. لیکن مجھے، بہر حال، وویک چیک، جس میں صرف چیک کرنے کے لیے کا مطلب ہے چاہے یا نہیں یہ اصل میں درست ہے. تو valgrind V-- مکمل = لیک چیک کرنے کے لیے، اور اس کے بعد اس معاملے میں پروگرام کے نام پر میموری، نہیں a.out ہے. تو آپ کے وزٹرز کا ریکارڈ رکھا آگے بڑھیں اور اس کام کو. درج کریں مارو. پیارے بھگوان. یہ اس کی پیداوار ہے، اور یہ وہی ہے جو میں پہلے alluded. لیکن، اگر آپ تمام قسم کی معمولی ہدایات کے ذریعے یہاں پڑھنا سیکھنے اس کی سب سے زیادہ صرف تشخیصی پیداوار ہے جو دلچسپ نہیں ہے ہے. آپ کی آنکھ کیا واقعی کے لئے لگ جائے چاہتا ہے غلطی یا غلط کا کوئی ذکر ہے. الفاظ جو کہ مسائل کا مشورہ ہے. اور یقینا، دیکھو کیا غلط ہو رہا نیچے یہاں ہے. میں کسی قسم کا خلاصہ، "استعمال میں باہر نکلیں. 1 بلاکس میں 40 بائٹس" میں واقعی میں نہیں ہوں اس بات کا یقین کر لیں کہ ایک بلاک کیا ہے ابھی تک، لیکن 40 بائٹس اصل کی طرح میں سمجھ وہ کہاں سے آ رہا ہے. سکتے ہیں لگتا ہے. 40 بائٹس. باہر نکلیں استعمال میں 40 بائٹس کیوں ہیں؟ اور خاص طور پر، اگر ہم یہاں نیچے سکرال میں ضرور یہی وجہ ہے کہ 40 بائٹس کھو دیا؟ جی ہاں؟ [Student کی جواب، unintelligible] کامل. جی ہاں، بالکل. دس integers تھے، اور ان میں سے ہر ایک، 4، یا 32 بٹس کے سائز ہے، تو میں نے خاص طور پر 40 بائٹس کھو کیونکہ، جیسا کہ آپ کی تجویز پیش کی، میں نے فون کیا نہیں ہے ہے. یہ ایک بگ ہے، اور اب ہم نیچے تھوڑا مزید غور کرنے اور اس کے ساتھ دیئے گئے دیکھ، "غلط 4 سائز کے لکھتے ہیں." اب یہ کیا ہے؟ یہ برقیہ پتہ کیا بنیاد سنکیتن کا اظہار کیا ہے، بظاہر؟ یہ شش اعشاری ہے، اور کسی بھی وقت آپ کو ایک 0x سے شروع نمبر دیکھ، یہ شش اعشاری کا مطلب ہے، جس پر ہم واپس، میرے خیال میں، سوالات کے pset 0 حصے میں کیا ہے، جو ایک warmup مشق کرنا تھا، بائنری hex پر دشملو تبدیل وغیرہ. شش اعشاری، انسانی کنونشن کی طرف سے، عام طور پر اشارہ کی نمائندگی کرنے کا استعمال کیا جاتا ہے یا عام طور پر پتے،. یہ صرف ایک کنونشن ہے، کیونکہ یہ تھوڑا آسان ہے پڑھنے، یہ تھوڑا دشملو ایسا کچھ سے زیادہ کمپیکٹ ہے، اور بائنری سب سے زیادہ انسانوں کے لئے استعمال کرنے کے لئے بیکار ہے. تو اب اس کا کیا مطلب ہے؟ ٹھیک ہے، ایسا لگتا ہے جیسے ایک جعلی لکھے memory.c 21 لائن پر 4 سائز کے. تو 21 لائن پر واپس جانے، اور یقینا، یہاں کہ جعلی لکھنے ہے. تو Valgrind مکمل طور پر میرا ہاتھ پکڑ کر مجھے بتاو کہ کیا طے کر ہے نہیں ہے، لیکن اس کا پتہ لگانے کے کہ میں ایک غلط لکھنے کر رہا ہوں ہے. میں 4 بائٹس چھونے کہ میں نہیں ہونا چاہئے رہا ہوں، اور بظاہر وجہ سے ہے، جیسا کہ آپ نے کہا، میں بجائے [9] [10] کر رہا ہوں زیادہ سے زیادہ یا [0] یا کے درمیان میں کچھ. Valgrind کے ساتھ، کسی بھی وقت ہے آپ کے پاس اب ایک پروگرام لکھ رہے ہیں کا احساس کہ اشارہ کا استعمال کرتا ہے اور میموری استعمال کرتا ہے، malloc خاص طور پر، اور یقینی طور پر یہ طویل چلانے کی عادت میں ملے لیکن بہت آسانی سے کاپی اور چسپاں Valgrind کی کمان اگر وہاں میں کچھ غلطیاں دیکھنے کے لئے. اور اس حد سے زیادہ ہر وقت آپ کی پیداوار دیکھتے ہوں گے، لیکن صرف ضعف کی پیداوار کا سب سے تجزیہ اور اگر آپ کو دیکھو، دیکھو غلطیوں کے ذکر انتباہ یا غلط یا کھو کوئی بھی الفاظ ہے کہ آپ کی طرح آواز کہیں خراب ہے. تو احساس ہوتا ہے کہ آپ کی ٹول کٹ میں ایک نیا آلہ ہے. اب پیر، ہم لوگوں کی ایک پوری چڑھانے تھا یہاں آتے اور ایک لنک کی فہرست کے تصور کی نمائندگی کرتے ہیں. اور ہم نے کیا مسئلہ کا ایک حل کے طور پر منسلک فہرست شروع کی؟ جی ہاں؟ [Student کی جواب، unintelligible] اچھا لگا. Arrays نہیں میموری ان کو شامل کیا جا سکتا ہے. اگر آپ کو 10 سائز کے ایک صف، جو تمہیں حاصل ہے مختص. آپ realloc کی طرح ایک تقریب کو فون اگر آپ کو ابتدائی طور پر malloc کہا جا سکتا ہے، اور یہ کہ صف کا اضافہ کرنے کی کوشش کر سکتے ہیں اگر اس کے اختتام کی طرف کی جگہ ہے کہ کوئی کسی ایک کا استعمال کرتے ہوئے، اور اگر نہیں ہے، تو آپ صرف ایک بڑا حصہ کسی اور مل جائے گا. لیکن اس وقت یہ نئی صف میں ان بائٹس کی تمام کاپی کرے گا. یہ ایک بہت ہی صحیح حل کی طرح لگتا ہے. یہی وجہ ہے کہ بدسورت؟ میرا مطلب ہے کہ یہ کام کرتا ہے، انسان اس مسئلہ کو حل کیا ہے. ہم اس سے منسلک کی فہرست کے ساتھ پیر کو حل کی کیا ضرورت تھی؟ جی ہاں؟ [Student کی جواب، unintelligible] یہ ایک طویل وقت لگ سکتا ہے. اصل میں، کسی بھی وقت آپ malloc یا realloc یا calloc، جو ابھی تک کسی دوسرے سے ایک ہے بلا رہے ہیں کسی بھی وقت، آپ پروگرام کر رہے ہیں، آپریٹنگ سسٹم پر سے گفتگو کرتے ہوئے آپ اس پروگرام نیچے کی رسائی سست کر دیتے ہیں. اور اگر آپ loops میں چیزوں کے اس قسم کے کر رہے ہیں، آپ واقعی چیزوں کو سست کر رہے ہیں. تم جا "ہیلو دنیا" قسم کے پروگراموں کے آسان یہ محسوس نہیں کر رہے ہیں، لیکن بہت بڑے پروگراموں میں، میموری کے لئے آپریٹنگ سسٹم پوچھ بار بار یا اسے دے واپس بار بار ایک اچھی بات نہیں ہو جاتا ہے. کے علاوہ، یہ صرف ذہنی طرح کی ہے - یہ وقت کی ایک مکمل بربادی ہے. کیوں زیادہ سے زیادہ میموری مختص، خطرہ، نئی صف میں سب کچھ کاپی اگر آپ کو ایک متبادل کی اجازت دیتا ہے کہ آپ صرف زیادہ سے زیادہ میموری مختص ہے جیسا کہ آپ نے واقعی ضرورت ہے ہے؟ تو وہاں pluses یہاں minuses ہے. pluses میں سے ایک یہ ہے کہ ہم تحرک ہے. کیا، جہاں میموری کی مقدار ہیں جو آزاد ہیں کوئی فرق نہیں پڑتا میں پیدا صرف ان روٹی crumbs اشارہ کے ذریعے الگ الگ کر سکتے ہیں میری پوری منسلک فہرست کے ساتھ سٹرنگ. لیکن میں کم از کم ایک قیمت ادا کرتے ہیں. میں منسلک کی فہرست حاصل کرنے میں دینے کی کیا ضرورت ہے؟ جی ہاں؟ [Student کی جواب، unintelligible] اچھا لگا. آپ مزید میموری کی ضرورت ہے. اب میں یہ اشارہ کے لئے جگہ کی ضرورت ہے، اور اس سپر آسان منسلک فہرست کی صورت میں جو صرف integers، جو 4 بائٹس ہیں ذخیرہ کرنے کی کوشش کر رہی ہے، ہم کہہ رہو ٹھیک ہے، ایک پوائنٹر 4 بائٹس ہے، لہذا اب میں لفظی دگنی ہے میموری کی رقم میں صرف اس فہرست میں محفوظ کرنے کی ضرورت ہے. لیکن پھر، یہ کمپیوٹر سائنس میں مسلسل tradeoff ہے وقت اور جگہ اور ترقی کی کوشش، اور دیگر وسائل کے درمیان. ایک لنک کی فہرست کا استعمال کرتے ہوئے کے ایک اور منفی پہلو کیا ہے؟ جی ہاں؟ [Student کی جواب، unintelligible] اچھی بات ہے. تک رسائی حاصل کرنے کے طور پر آسان نہیں ہے. ہم اب کوئی بیعانہ کر سکتے ہیں طرح 0 اصولوں ہفتے اور فتح تقسیم. اور خاص طور پر، بائنری تلاش. کیونکہ اگرچہ ہم انسان ، موٹے طور پر دیکھنے کے کر سکتے ہیں ہے کہ اس فہرست کے وسط کہاں ہے کمپیوٹر صرف جانتا ہے کہ اس سے منسلک فہرست ملاقات کی پہلی ایڈریس پر شروع ہوتا ہے. اور یہ 0x123 یا ایسا کچھ ہے. اور واحد راستہ ہے جس کے پروگرام کا درمیانی عنصر تلاش کر سکتے ہیں میں پوری فہرست تلاش ہے. اور پھر بھی، یہ لفظی مکمل فہرست تلاش کرنے کے لئے ہے کیونکہ ایک بار بھی آپ نے اشارہ پر عمل کرتے ہوئے مشرق وسطی کے عناصر تک پہنچنے، ، آپ پروگرام کوئی اندازہ نہیں ہے اس فہرست میں کتنا وقت ہے، ممکنہ طور پر ہے، جب تک تم اس کے آخر کو مارا ہے، اور کس طرح تم پروگرام پتہ ہے ہے کہ آپ کو ایک لنک کی فہرست کے آخر میں ہیں؟ ایک خاص نل پوائنٹر، تو پھر، ایک کنونشن ہے. بجائے اس پوائنٹر کو استعمال کرنے کے لئے، ہم یقینی طور پر اس میں کچھ ردی کی ٹوکری کی قیمت نہیں چاہتے ہو ، ہم اس کے ہاتھ کرنا چاہتے ہیں نیچے، نل؛ نے مرحلے کی طرف اشارہ کرتے ہوئے کہیں تاکہ ہم اس آنکڑا ڈھانچہ میں یہ ٹرمنس ہے تاکہ ہم کو معلوم ہے وہ کہاں ختم ہوتا ہے. کیا ہوگا اگر ہم اس جوڑتوڑ کرنا چاہتے ہیں؟ ہم اس ضعف کی زیادہ سے زیادہ کیا، اور انسانوں کے ساتھ، لیکن کیا ہوا اگر ہم ایک اندراج کرنا چاہتے ہیں؟ تو اصل فہرست 9، 17، 20، 22، 29، 34 تھی. کیا ہوگا اگر ہم تو 55 نمبر، اس کے لئے ایک نوڈ کے لئے malloc جگہ چاہتے تھے، اور پھر ہم نے کی فہرست میں 55 ڈالنے کے بالکل اسی طرح جیسے ہم نے پیر کو کیا کرنا چاہتے ہیں؟ ہم اس کو کس طرح کرتے ہیں؟ ، انیتا آیا اور وہ بنیادی طور پر فہرست میں واک. وہ پہلا عنصر میں شروع کر دیا، اور پھر اگلے، اگلے، اگلے، اگلے، اگلے. آخر میں بائیں ہاتھ کی طرح نیچے مارا اور اوہ احساس ہوا، یہ نل ہے. تو کیا پوائنٹر ہیرا پھیری کیا جائے گا کی ضرورت ہے؟ شخص جو آخر پر تھا، نمبر 34، کی ضرورت ہے اس کے بائیں ہاتھ اٹھایا 55 میں اشارہ کرنے کے لئے، 55 نیچے کی طرف اشارہ کرتے ہوئے نیا null مختتم ان کے بائیں بازو کی ضرورت ہے. ہو گیا. آسان خوبصورت کے مطابق فہرست میں 55 شامل کرنے کے لئے. اور یہ نظر ہو سکتا ہے کہ کس طرح؟ آپ کے وزٹرز کا ریکارڈ رکھا آگے بڑھیں اور کچھ کوڈ مثال کے طور پر یہاں کھول دو. میں gedit کھولنے، اور مجھے دو فائلوں کو کھولنے کے پہلے کریں گے. ایک list1.h ہے، اور مجھے یاد دلاتی ہے کہ یہ کوڈ کا حصہ تھا کہ ہم ایک نوڈ کی نمائندگی کرتے تھے. نوڈ دونوں کہا جاتا ن int اور پوائنٹر کو کہا جاتا ہے کہ صرف پوائنٹس فہرست میں اگلے بات ہے. یہ اب H فائل میں ہے. کیوں؟ اس کنونشن کی ہے، اور ہم فائدہ نہیں لیا ہے اس کی ایک بڑی رقم خود، بلکہ اس شخص جو کہ printf اور دیگر افعال لکھا دنیا کے لئے ایک تحفہ کے طور پر کہا جاتا stdio.h فائل کو لکھ کر دیا ان کے افعال میں سے سب. اور پھر وہاں string.h ہے، اور پھر وہاں map.h ہے، اور ان تمام ایچ فائلوں ہے کہ آپ یا دیکھا ہے ہو سکتا ہے اور دوسرے لوگوں کی طرف سے لکھا گیا مدت کے دوران استعمال کیا جاتا ہے. عام طور پر ان لوگوں میں ایچ فائلوں typedefs طرح صرف باتیں ہیں. یا اپنی مرضی کے مطابق اقسام یا constants کے ڈیکلیریشنز کا اعلان. آپ ہیڈر فائل میں افعال کے نفاذ نہ ڈالو. تم ڈالا، بجائے، صرف ان کے prototypes. آپ دنیا کہ وہ کیا کرنے کی ضرورت ہے کے ساتھ چیزیں آپ اشتراک کرنا چاہتے ڈالا کے لئے اپنے کوڈ کو مرتب کرنے کے لئے. تو صرف اس عادت میں حاصل کرنے کے لئے، ہم ایک ہی بات کرنے کا فیصلہ کیا. بہت کچھ list1.h میں نہیں ہے، لیکن ہم لوگوں کو دنیا میں کچھ دلچسپی کا باعث ہو سکتا ہے ڈال دیا ہے ہمارے منسلک فہرست پر عملدرآمد کو استعمال کرنے کے لئے جو کرنا چاہتا ہوں. اب، list1.c میں میں اس پوری بات کے ذریعے جانا، نہیں کرے گا کیونکہ یہ تھوڑا طویل ہے، اس پروگرام، لیکن یہ سچ فوری طور پر فوری طور پر چلانے کے. چلو آپ کے وزٹرز کا ریکارڈ رکھا مرتب list1، مجھے تو list1 چلانے، اور آپ کو کیا نظر آئے گا ہم مصنوعی ایک سادہ سی یہاں پروگرام ہے کہ آپ کے وزٹرز کا ریکارڈ رکھا اور ہٹانے کے ایک کی فہرست میں شامل اعداد و شمار کرنے کی اجازت دینے جا رہا ہے. تو آپ کے وزٹرز کا ریکارڈ رکھا آگے بڑھو اور مینو کے اختیارات کا 3 3 ٹائپ. میں تعداد کو شامل کرنے کے لئے چاہتے ہیں - پہلے نمبر، جس میں 9 سال کی تھی، کیا اور اب مجھے بتایا فہرست ہے 9 رہا ہوں. چلو آپ کے وزٹرز کا ریکارڈ رکھا آگے بڑھو اور دوسرا اندراج کرو، تو مجھے مینو 3 آپشن مارا. کیا تعداد میں داخل کرنا چاہتے ہیں؟ 17. درج کریں. اور میں صرف ایک کر دونگا. مجھے 22 نمبر داخل کریں. تو ہم منسلک فہرست ہے کہ ہم سلائڈ کی شکل میں تھا ایک لمحے پہلے کے آغاز ہے. اس اندراج کو اصل میں کس طرح ہو رہا ہے؟ درحقیقت، 22 کی فہرست کے آخر میں ہے. کہانی تو ہم نے پیر کو اسٹیج پر کہا تھا اور ابھی recapped اصل کوڈ میں لازمی ہو رہا ہے. چلو ایک نظر ڈالیں. کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے اس فائل میں ذیل میں سکرال. ہم کے افعال میں سے کچھ ٹیکہ گے، لیکن ہم نیچے جاؤ، کا کہنا ہے کہ، گے داخل تقریب. چلو دیکھتے ہیں کہ ہم کس طرح اس سے منسلک فہرست میں ایک نیا نوڈ داخل کرنے کے بارے میں ہے. فہرست کہاں کا اعلان کیا ہے؟ چلو، سب سے اوپر کے تمام طریقہ سکرال، نوٹس اور یہ کہ میری منسلک کی فہرست بنیادی طور پر ایک واحد پوائنٹر ہے کہ ابتدائی طور پر نل ہے کے طور پر اعلان کیا جاتا ہے. اس لئے میں یہاں ایک عالمی متغیر استعمال کر رہا ہوں، جو ہم عام طور پر کے خلاف تبلیغ ہے کیونکہ یہ کرتا ہے آپ کے کوڈ ایک تھوڑا گندا برقرار رکھنے کے لئے، طرح کی سست عام طور پر، کی، لیکن یہ سست نہیں ہے اور یہ غلط نہیں ہے اور یہ برا نہیں ہے اگر آپ کے پروگرام کی زندگی میں واحد مقصد یہ ہے کہ ایک سے منسلک فہرست انکرن ہے. جو بالکل وہی جو ہم کر رہے ہیں. تو بجائے مرکزی اور پھر اعلان ہر تقریب کو منتقل کرنا ہم نے اس پروگرام کے وزٹرز کا ریکارڈ رکھا جائے گا ہے، ہم بجائے احساس اوہ، صرف اسے عالمی بنانے کیونکہ اس پروگرام کے مکمل مقصد ایک اور صرف ایک سے منسلک فہرست کا مظاہرہ کرنے کے لئے ہے. تو وہ ٹھیک لگ رہا ہے. میرے prototypes ہیں، اور ہم نے ان میں سے سب کے ذریعے نہیں کرے گا، لیکن میں حذف تقریب ایک تقریب تلاش ایک داخل تقریب، اور ایک گزرنا تقریب لکھا. لیکن اب داخل تقریب سے واپس نیچے جاؤ دیکھتے ہیں اور کس طرح یہاں کام کرتا ہے. داخل لائن پر ہے - ہم یہاں جانا. داخل کریں. تو یہ کوئی بحث نہیں لے کرتا ہے، کیونکہ ہم یہ کہنے جا رہے ہیں نمبر پر وہ داخل کرنا چاہتے ہیں کے لئے اس پروگرام کے صارف اندر. لیکن اس سے پہلے ہم نے ان کو کچھ جگہ دینے کی تیاری. اس طرح کی دوسری مثال سے کاپی اور پیسٹ کے ہے. اس صورت میں، ہم نے ایک int آونٹیت کیا گیا تھا، اس وقت ہم نے ایک نوڈ آونٹن کر رہے ہیں. میں واقعی میں نہیں کتنے بائٹس ایک نوڈ ہے یاد ہے، لیکن وہ ٹھیک ہے. Sizeof کہ میرے لئے اعداد و شمار کر سکتے ہیں. اور کیوں میں 120 لائن میں نل کے لئے کی جانچ پڑتال کر رہا ہوں؟ 119 سطر میں غلط جا سکتے ہیں؟ جی ہاں؟ [Student کی جواب، unintelligible] اچھی بات ہے. صرف کیس ہو سکتا ہے کہ میں نے بہت زیادہ میموری کے لئے کہا ہے یا کچھ گڑبڑ ہے اور آپریٹنگ سسٹم دینے کے لئے کے لئے کافی شراکت نہیں ہے، تو نل واپس لوٹنے کی طرف سے زیادہ سے زیادہ کا اشارہ ہے، اور اگر میں اس کے لیے نہیں چیک کرنے کے لیے کرتے ہیں اور میں صرف آنکھ بند کر کے آگے بڑھنے کا استعمال ایڈریس واپس، نل ہو سکتا ہے. یہ کسی نامعلوم قدر ہو سکتا ہے، جب تک کہ میں ایک اچھی بات نہیں - اصل میں کسی نامعلوم قدر نہیں ہوگا. تو یہ نل ہو سکتا ہے، میں نہیں چاہتا استعمال اور محولہ لقب ضبطی کا خطرہ ہے. اگر ایسا ہوتا ہے، میں صرف ہم ڈرامہ جیسا کہ میں واپس بالکل نہیں کسی بھی میموری دونگا واپس. دوسری صورت میں، میں کہتا ہوں صارف آپ کے وزٹرز کا ریکارڈ رکھا داخل کرنے کے لئے ایک نمبر دے، میں نے اپنے پرانے دوست GetInt کہتے ہیں، اور پھر اس نئی نحو ہم نے پیر کو متعارف کرایا تھا. 'newptr ہے> n' پتہ لے کہ آپ malloc کی طرف سے دیا گیا تھا کا مطلب ہے جس میں ایک نیا نوڈ اعتراض کے پہلے بائٹ کی نمائندگی کرتا ہے، اور پھر کہا جاتا ن میدان میں جاتے ہیں. ایک چھوٹی سی trivia سوال: یہ جو کوڈ کے خفیہ لائن کے برابر ہے؟ اور کس طرح میں یہ لکھا جا سکتا ہے؟ بوںکنا لینے کے لئے چاہتے ہیں؟ [Student کی جواب، unintelligible] اچھی بات ہے. (ن) کا استعمال کرتے ہوئے، لیکن یہ بالکل اس کے طور پر کے طور پر آسان نہیں ہے. میں نے سب سے پہلے کیا کرنا چاہیئے؟ [Student کی جواب، unintelligible] اچھی بات ہے. میں * newptr.n کرنے کی ضرورت ہے. تو یہ کہہ رہے ہو نیا پوائنٹر ظاہر پتہ ہے ہے. کیوں؟ کیونکہ یہ malloc کی طرف سے واپس کیا گیا تھا. * کہہ رہے newptr "وہاں جانا" اور پھر ایک بار تم وہاں ہو، تو آپ کو زیادہ واقف ن. کا استعمال کر سکتے ہیں، لیکن یہ تو صرف تھوڑا بدسورت لگ رہا ہے، خاص طور پر اگر ہم انسان کو جا رہے ہیں تیر کے ساتھ اشارہ ہر وقت اپنی طرف متوجہ، دنیا اس تیر سنکیتن پر معیاری ہے، جو کہ بالکل ایک ہی بات کرتا ہے. سنکیتن> جب بائیں پر بات پوائنٹر ہے - تو آپ ہی کا استعمال کریں. دوسری صورت میں، اگر یہ ایک حقیقی struct ہے، ن. کا استعمال کریں. یہ تو اور کیوں میں newptr اگلا> ابتدا کرتے ہیں، شہوت انگیز null. ہم اس مرحلے کے اختتام کے بے ربط بائیں ہاتھ کی ضرورت نہیں ہے. جو ہم چاہتے ہیں اسے براہ راست نیچے کی طرف اشارہ کرتے ہوئے، اس فہرست کے آخر کا مطلب ہے کہ اس نوڈ میں ممکنہ طور پر ہو سکتا ہے، تو ہم بہتر اس بات کا یقین کر لیں کہ یہ نل ہے. اور عام طور پر، آپ متغیر یا آپ کے ڈیٹا کے ارکان اور structs ابتدا کچھ صرف اچھا عمل ہے. بس دے ردی کی ٹوکری میں اور عام طور پر موجود رہیں موجود آپ کو مصیبت میں ہو جاتا ہے اگر آپ کو بعد میں کچھ کرنا بھول جاتے ہیں. یہاں کچھ حالتوں ہے. یہ، پھر سے، داخل تقریب ہے، اور پہلی بات کے لئے میں چیک ہے اگر متغیر پہلے بلایا، کہ عالمی متغیر خالی ہے، کا مطلب ہے کہ کوئی فہرست منسلک ہے. ہم نے کوئی تعداد داخل نہیں کیا ہے، لہذا یہ چھوٹی سی ہے کہ اس موجودہ نمبر داخل کریں کی فہرست میں، کیونکہ یہ صرف فہرست کے آغاز میں تعلق رکھتا ہے. تو جب انیتا صرف کھڑا تھا یہاں اکیلے، ڈرامہ تھا یہاں کوئی نہیں اسٹیج پر تھا جب تک ہم ایک نوڈ مختص، اس کے بعد وہ پہلی بار کے لئے اس کا ہاتھ اٹھا سکتا ہے، اگر ہر کسی کے اسٹیج پر اس کے بعد پیر کے روز آئی تھی. اب یہاں یہ ایک چھوٹی سی چیک جہاں میں کہنا ہے ہے کہ اگر (ن) کے نئے نوڈ قیمت موجودہ پہلا نوڈ میں (ن) کی قدر <، اس کا مطلب ہے کہ وہاں ایک لنک کی فہرست ہے جو شروع ہے. فہرست میں کم از کم ایک نوڈ ہے، لیکن اس نئے آدمی اس سے پہلے کہ، تو ہم چیزوں کے ارد گرد منتقل کرنے کی ضرورت ہے سے تعلق رکھتا ہے. دوسرے الفاظ میں، اگر فہرست کے ساتھ شروع کر دیا ہے، کا کہنا ہے کہ، صرف 17 نمبر، یہ - اصل میں، ہم نے یہ زیادہ واضح طور پر کر سکتے ہیں. اگر ہم یہاں ایک پوائنٹر ملاقات کی پہلی کے ساتھ ہماری کہانی شروع، اور ابتدائی طور پر یہ نل ہے، اور ہم 9 نمبر داخل کریں، 9 تعداد واضح طور پر فہرست کے آغاز میں تعلق رکھتا ہے. تو دکھاوا ہم صرف ایڈریس یا نمبر 9 malloced اور اسے یہاں رکھ. اگر پہلے 9 ڈیفالٹ کے ذریعہ ہے، پہلی حالت ہم بات چیت کی چلو نقطہ اس آدمی کو یہاں کا مطلب ہے، یہ نل چھوڑ، اب ہم 9 نمبر ہے. اگلی تعداد میں ہم داخل کرنا چاہتے ہیں 17 ہے. 17 یہاں ہے، تو ہم اس کے ذریعے کچھ منطقی نکلنے کی کیا جا رہے ہیں. تو بجائے دو، اس سے پہلے کہ ہم کرتے ہیں کہ، دکھاوا کہ ہم 8 تعداد کو شامل کرنے کے لئے چاہتے تھے. تو کی سہولت کے لئے، میں یہاں اپنی طرف متوجہ کرنے کے لئے جا رہا ہوں. لیکن یاد رکھو، malloc یہ سب سے زیادہ کہیں رکھ سکتے ہیں. لیکن ڈرائنگ خاطر کے لئے، میں اسے یہاں رکھ دونگا. تو ڈرامہ میں صرف نوڈ 8 نمبر کے لئے مختص کیا ہے، یہ ڈیفالٹ کی طرف سے نل ہے. اب کیا ہوتا ہے؟ چیزوں کی ایک جوڑے. ہم نے اسٹیج پر پیر کو اس غلطی کی ہے جہاں ہم اس طرح پوائنٹر اپ ڈیٹ کر، تو نے یہ کیا ہے، اور پھر ہم نے دعوی کیا ہے - ہم نے اسٹیج پر اور سب یتیم ہے. کیونکہ آپ can't - یہاں آپریشن کی ترتیب ضروری ہے، اب کیونکہ ہم نے اس نوڈ 9 جو صرف خلا میں تیرتا ہوا کی طرح ہے کھو دیا ہے. تو یہ پیر کو صحیح نقطہ نظر نہیں ہے. ہم نے سب سے پہلے کچھ کرنا ہے. دنیا کی حالت اس طرح لگ رہا ہے. ابتدائی طور پر، 8 مختص کیا گیا ہے. 8 داخل کی بہتر طریقہ کیا ہو گا؟ اس پوائنٹر کو سب سے پہلے اپ ڈیٹ کرنے کے بجائے، صرف اس ایک کی بجائے اپ ڈیٹ. تو ہم نے کوڈ کی ایک سطر ہے جو اس نل کردار کو تبدیل کرنے جا رہا ہے کی ضرورت ہے ، ایک حقیقی پوائنٹر 9 نوڈ طرف اشارہ ہے میں اور اس کے بعد ہم نے پہلی محفوظ طریقے سے اس آدمی کو میں یہاں اشارہ کو تبدیل کر سکتے ہیں. اب ہم ایک دو عناصر کی فہرست، ایک لنک کی فہرست، ہے. اور یہ کیا ہے یہاں کی طرح اصل میں نظر آئے ہے؟ اگر ہم کوڈ پر نظر نوٹس، کہ میں بالکل وہی کیا ہے. میں نے کہا کہ newptr لیا ہے، اور اس کہانی میں، newptr اس آدمی کی طرف اشارہ کر رہا تھا. تو مجھے ایک اور بات اپنی طرف متوجہ کرتے ہیں، اور میں اس کے لئے تھوڑا اور کمرے میں چھوڑ دینا چاہئے. تو چھوٹے ڈرائنگ معاف. یہ آدمی newptr کہا جاتا ہے. صرف 25 اوپر - یہ متغیر ہم پہلے لائن میں چند لائنوں کا اعلان کیا، ہے. اور یہ 8 کی طرف اشارہ کرتے ہوئے ہے. تو جب میں کہتا ہوں کہ newptr اگلا>، اس کا مطلب ہے کہ struct پر جو newptr کی طرف سے کیا جا رہا ہے کی طرف اشارہ کیا ہے، تو ہم یہاں ہیں، وہاں چلتے ہیں. پھر تیر کہہ رہا ہے اگلے فیلڈ حاصل ہے، اور پھر = ہوئے کہا کہ وہاں ڈال کیا قیمت ہے؟ قیمت جو پہلے تھا، کیا قدر پہلے تھا؟ سب سے پہلے اس نوڈ کی طرف اشارہ کیا گیا تھا، تو اس کا مطلب ہے کہ اس نوڈ اب اشارہ کرنا چاہئے. دوسرے الفاظ میں، اپنے ہینڈ رائٹنگ کے ساتھ ایک مضحکہ خیز گندگی ہی سہی کیا لگتا ہے، صرف ان تیر کو منتقل کرنے کے ایک آسان خیال کیا ہے صرف اس ایک لائنر کے ساتھ کوڈ ترجمہ. تو سٹور کیا اگلے میدان میں سب سے پہلے میں ہے اور اپ ڈیٹ کیا پہلے اصل ہے. اس میں سے کچھ کے ذریعے آگے اور تیزی سے آگے جانے دو، اور اب صرف اس دم اندراج میں دیکھو. فرض کریں کہ میں جہاں مجھے محسوس ہوتا ہے کہ کچھ نوڈ کے اگلے میدان خالی ہے حاصل کرنے کے لئے. اور کہانی، ایک تفصیل میں اس وقت کہ میں glossing رہا ہوں ہے کہ میں کسی دوسرے پوائنٹر متعارف اپ کیا ہے 142 لائن، پیشرو پوائنٹر میں یہاں. بنیادی طور پر، کہانی میں اس وقت، ایک بار فہرست لمبی ہو جاتا ہے، میں اس قسم کی دو انگلیوں کے ساتھ چلنے کی ضرورت ہے، اگر میں بہت دور جاؤ کیونکہ ایک دورانیے کی ایک فہرست میں یاد ہے، تم پیچھے نہیں جا سکتی. تو predptr کے اس خیال میرے بائیں انگلی ہے، اور newptr - نہیں newptr. ایک اور پوائنٹر کہ یہاں ہے میری دوسری انگلی ہے، اور میں فہرست میں چلنے کی مہربان ہوں. یہی وجہ ہے کہ اس کے موجود ہے. لیکن صرف آسان مقدمات کی ایک پر غور. اگر کہ پوائنٹر اگلے میدان خالی ہے، منطقی مطلب کیا ہے؟ اگر آپ کو اس فہرست میں traversing کر رہے ہیں اور آپ کو ایک نل پوائنٹر مارا؟ آپ کی فہرست کے آخر میں ہیں، اور اس کوڈ تو یہ ایک اضافی عنصر شامل بدیہی طرح کی کہ نوڈ اگلے جن کا پوائنٹر نل ہے لے جائے گا، تو یہ فی الحال خالی ہے، اور اسے تبدیل، اگرچہ، نئے نوڈ کا پتہ ہے. تو ہم صرف کوڈ میں تیر رہے ہیں ڈرائنگ ہے کہ ہم کسی کے بائیں ہاتھ اٹھانے کی طرف سے اسٹیج پر مبذول کرائی. اور کیس ہے کہ میں اب کے لئے میں اپنے ہاتھ لہر گے ، صرف اس لئے کہ مجھے لگتا ہے کہ یہ آسان ہے کھو کرنے کے لئے جب ہم نے اسے اس طرح کے ماحول میں میں کیا فہرست کے وسط میں اندراج کے لئے کی جانچ ہو رہی ہے. لیکن صرف intuitively، کیا ہو کی ضرورت ہے اگر آپ معلوم کرنا چاہتے ہیں جہاں کچھ تعداد کو درمیان میں سے تعلق رکھتا ہے، آپ اسے چلنا ہے ایک سے زیادہ انگلی سے، ایک سے زیادہ پوائنٹر اعداد و شمار جہاں یہ چیکنگ سے تعلق رکھتا ہے عنصر ہے <موجودہ، > موجودہ ایک، اور ایک بار آپ کے پاس اس جگہ ملے، تو آپ شیل کھیل کے اس طرح ہے جہاں آپ کو اشارہ منتقل کے ارد گرد بہت احتیاط سے کرنا ہے. اور اس کا جواب،، اگر وجہ سے کرنے کے لئے آپ کو اس کے ذریعے اپنے آپ گھر میں کرنا چاہتے ہیں صرف کوڈ کا ان دو لائنوں فوڑے نیچے، لیکن ان لائنوں کی ترتیب سپر ضروری ہے. کیونکہ اگر تم کسی کا ہاتھ چھوڑ اور بلند کسی غلط ترتیب میں ہے، ایک بار پھر، آپ کو فہرست orphaning سکتے ہیں. زیادہ conceptually مختصر کرنے کے لئے، اس کے لئے دم میں اندراج نسبتا براہ راست ہے. سر میں اندراج بھی نسبتا براہ راست ہے، لیکن آپ ایک اضافی یہ پوائنٹر اس وقت اپ ڈیٹ کرنے کی ضرورت ہے فہرست میں 5 نمبر پر نچوڑنا اور پھر درمیان میں اندراج میں بھی زیادہ کوشش کی ضرورت ہوتی ہے، بہت احتیاط سے اس کے صحیح مقام پر 20 نمبر داخل کریں، جس میں 17 اور 22 کے درمیان ہے. تو آپ کو 22 نئے نوڈ 20 پوائنٹ کی طرح کچھ کرنے کی ضرورت ہے، اور اس کے بعد، جو نوڈ پوائنٹر کو اپ ڈیٹ کر گزشتہ جائے گا کی ضرورت ہے؟ یہ 17 ہے، اصل میں داخل ہے. تو پھر، میں اس خاص طور پر لاگو کرنے کے لئے اصل کوڈ ملتوی کریں گے. پہلی نظر میں یہ تھوڑا بھاری ہے، لیکن یہ واقعی صرف ایک لامحدود لوپ ہے کہ looping، looping، looping، looping، اور جیسے ہی توڑ کے طور پر آپ کو نل پوائنٹر مارا، کس موڑ پر آپ کو مطلوبہ اندراج کر سکتے ہیں. اس، تو، نمائندہ منسلک فہرست اندراج کوڈ آن ہے. یہ بہت کی طرح تھا، اور ایسا محسوس ہوتا ہے جیسے ہم نے ایک مسئلہ حل کیا ہے، لیکن ہم نے ایک مکمل طور پر ایک دوسرے سے متعارف کرایا ہے. سچ کہوں تو، ہم سب اس وقت صرف کیا ہے بڑی O اور Ω اور وقت چل رہا ہے، اور زیادہ تیزی سے مسائل کو حل کرنے کی کوشش کر رہے اور یہاں ہم نے ایک بڑا قدم اٹھانے پیچھے کی طرف، ایسا محسوس ہوتا ہے. ابھی اور، اگر مقصد کے اعداد و شمار کو جمع کرنے کے لئے ہے، یہ حضور Grail کی طرح محسوس ہوتا ہے، جیسا کہ ہم نے کہا کہ پیر کو سچ میں ہو گی معاملات کو فوری طور پر محفوظ ہے. حقیقت میں فرض، کہ ہم نے ایک لمحے کے لئے ڈال دیا ایک طرف منسلک کی فہرست اور ہم بجائے ایک ٹیبل کے تصور متعارف کرایا ہے. اور ایک صف کے طور پر ایک لمحے کے لئے ہم صرف ایک ٹیبل کے بارے میں سوچنا. یہاں یہ صف اور اس کیس 26 بعض عناصر، 0 25 کے ذریعے ہے، فرض اور یہ کہ آپ کے ناموں کے لئے ذخیرہ میں سے کچھ حصہ کی ضرورت ہے: یلس اور باب اور چارلی اور اس طرح. اور تم کچھ آنکڑا ڈھانچہ کی ضرورت ہے ان ناموں کو محفوظ کرنے کے لئے. ٹھیک ہے، آپ کو ایک لنک کی فہرست کی طرح کچھ استعمال کر سکتے ہیں اور آپ کو باب کے بعد باب اور چارلی کے سامنے یلس داخل کی فہرست پر چلنے کا اور وغیرہ کر سکتے ہیں. اور، اصل میں، اگر آپ کو ایک طرف ایک کے طور پر اس طرح کوڈ کو دیکھنے کے لئے چاہتے ہیں، معلوم کہ list2.h میں، ہم بالکل وہی کرتے ہیں. ہم اس کوڈ کے ذریعے نہیں جانا، لیکن یہ پہلی مثال کے طور پر ایک مختلف ہے جو ایک دوسرے کے ہم نام نہاد طالب علم سے پہلے دیکھا ہے struct متعارف کرایا، اور پھر کیا یہ اصل میں منسلک فہرست میں ذخیرہ ایک طالب علم کی ساخت پوائنٹر ہے کی بجائے ایک سادہ سی عددی، ن. تو احساس ہے کوڈ ہے وہاں جو اصل ڈور شامل، لیکن اگر ہاتھ میں مقصد واقعی کارکردگی کے مسئلے سے نمٹنے کے اب ہے، ، یہ اچھا نہیں ہو گا اگر ہم نے ایک اعتراض کہا جاتا یلس دیا رہے ہیں ہم نے اسے ایک آنکڑا ڈھانچہ میں صحیح جگہ میں رکھنا چاہتا ہوں، ، ایسا محسوس ہوتا ہے جیسے یہ واقعی اچھی ہو صرف یلس کے لئے پیش کیا ہے. جس کے نام کے ساتھ پہلے مقام پر شروع ہوتا ہے. اور باب، جس کا نام B کے ساتھ دوسرے مقام پر شروع ہوتا ہے،. ایک صف کے ساتھ دو یا یہ ایک میز، اس میں ایک ہیش میز بلا شروع، ہم بالکل ایسا کر سکتے ہیں. اگر ہم یلس کی طرح ایک نام دیا جاتا ہے، یلس کی طرح ایک سٹرنگ، آپ A-L-I-C ای کہاں رکھنا ہے؟ ہم نے ایک hueristic کی ضرورت ہے. ہم نے ایک تقریب کی ضرورت ہے یلس کی طرح کچھ ان پٹ لے اور ایک جواب واپس، "اس جگہ پر یلس ڈالو." اور اس جشن، اس بلیک باکس، ایک ہیش فنکشن کہا جا رہا ہے. ایک ہیش فنکشن کچھ اس طرح "یلس" ایک ان پٹ لیتا ہے، ہے، اور آپ کو واپسی، عام طور پر، کچھ ڈیٹا ڈھانچے میں عددی جگہ جہاں یلس تعلق رکھتا ہے. اس صورت میں، ہماری ہیش تقریب نسبتا آسان ہونا چاہئے. ہمارا ہیش فنکشن کا کہنا ہے کہ، اگر آپ "یلس" دیا جاتا ہے، میں کون سا کردار کے بارے میں فکر کرنا چاہئے؟ سب سے پہلے ایک ہے. لہذا میں نے [0] کو دیکھو، اور پھر میں کہتا ہوں کہ اگر [0] کردار ہے، 0 تعداد واپس. اگر یہ B ہے، واپس 1. اگر یہ C، 2 واپس، اور وغیرہ. سب 0 انڈیکس ہے، اور یہ کہ آپ کے وزٹرز کا ریکارڈ رکھا یلس اور پھر باب اور پھر چارلی کو شامل کرنے کے لئے کی اجازت دیتے ہیں اور اس طرح بیان کریں گے یہ آنکڑا ڈھانچہ میں. لیکن یہاں ایک مسئلہ ہے. کیا ہوگا اگر انیتا ساتھ دوبارہ آتا ہے؟ ہم انیتا کہاں رکھنا ہے؟ اس کا نام بھی، خط کے ساتھ شروع ہوتا ہے، اور ایسا محسوس ہوتا ہے جیسا کہ ہم نے اس مسئلہ کا ایک بھی بڑا گندگی کر دیا ہے. اب ہم ایک آنکڑا ڈھانچہ میں فوری طور پر اندراج، مسلسل وقت، اندراج، ہے بلکہ بدتر صورت سے لکیری، لیکن کیا ہم اس معاملے میں انیتا کے ساتھ کیا کر سکتے ہیں؟ دو اختیارات کیا ہیں، واقعی؟ جی ہاں؟ [Student کی جواب، unintelligible] ٹھیک ہے، تو ہم ایک اور طول و عرض کر سکتے ہیں. وہ اچھا ہے. تو ہم چیزیں 3D میں تعمیر باہر جیسا کہ ہم پیر کو زبانی طور پر بات کی کر سکتے ہیں. ہم یہاں ایک دوسرے تک رسائی شامل ہے، لیکن لگتا ہے کہ نہیں، میں اس کو آسان رکھنے کے لئے کوشش کر رہا ہوں. پوری یہاں مقصد یہ ہے کہ فوری طور پر مسلسل وقت تک رسائی ہے، تاکہ بہت زیادہ پیچیدگی کا اضافہ کر رہا ہے. دیگر اختیارات جب یہ آنکڑا ڈھانچہ میں انیتا ڈالنے کی کوشش کر رہے ہیں؟ جی ہاں؟ [Student کی جواب، unintelligible] اچھا لگا. تو ہم باقی سب لوگ نیچے منتقل کر سکتے ہیں، چارلی باب اور یلس، نیچے nudges اور پھر جیسا کہ ہم انیتا ڈال دیا جہاں وہ واقعی چاہتا ہے. جی ہاں، اب، اس کے ایک ضمنی اثر ہے. یہ آنکڑا ڈھانچہ شاید مفید نہیں ہیں کیونکہ ہم لوگوں کو ایک بار داخل کرنا چاہتے ہیں لیکن کیونکہ ہم اگر وہ وہاں بعد میں ہیں چیک کرنے کے لیے کرنا چاہتے ہیں اگر ہم ڈیٹا کے ڈھانچے میں نام پرنٹ کرنا چاہتے ہیں. ہم اس ڈیٹا کے ساتھ کچھ آخر میں کرنے جا رہے ہیں. تو اب ہم اس قسم کی یلس، جو اب نہیں ہے جہاں وہ ہونا چاہیے کے اوپر مصیبت میں ہے. نہ ہی باب ہے، اور نہ ہی چارلی ہے. تو شاید یہ ایک اچھا خیال نہیں ہے. لیکن یقینا، یہ ایک اختیار ہے. ہم سب کو نیچے منتقل کر سکتے ہیں، یا heck، انیتا کھیل دیر سے آئے، ہم کیوں نہیں کرتے انیتا ڈال یہاں نہیں، یہاں نہیں، یہاں نہیں، چلو، فہرست میں صرف اس سے تھوڑا کم ڈال. لیکن اس وقت اس مسئلہ کو دوبارہ devolve شروع ہوتا ہے. آپ یلس کو تلاش کرنے کے لئے کے قابل فوری طور پر ہو، اس کا پہلا نام پر کی بنیاد پر ہو سکتا ہے. اور فوری طور پر باب، اور چارلی. لیکن اس وقت آپ انیتا کے لئے دیکھو، اور آپ کو دیکھ کر، ہم، یلس کے راستے میں ہے. چلو، کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے یلس نیچے چیک کرنے کے لیے ہیں. باب انیتا نہیں ہے. چارلی انیتا نہیں ہے. اوہ، انیتا ہے. اور اگر تم منطق ہے کہ ٹرین کے راستے جاری، کو تلاش کرنے یا اس نئے اعداد و شمار کے ڈھانچے میں انیتا داخل کی بدترین رننگ ٹائم کیا ہے؟ اے (ن) ہے، ٹھیک ہے؟ کیونکہ بدترین صورت میں، یلس، باب، چارلی ہے. . . تمام نام "Y" کسی طرح ہے، تو صرف ایک ہی جگہ ہے چھوڑ دیا. شکر ہے، ہم نہیں "Z" نامی ایک ہے، تو ہم بھی دنیا کے بہت سب سے نیچے دیئے گئے انیتا ڈال. ہم اس مسئلہ واقعی نہیں حل ہے. تو شاید ہم اس تیسری طول و عرض کو متعارف کرانے کی ضرورت ہے. اور یہ پتہ چلتا ہے، اگر ہم اس تیسری طول و عرض متعارف کرانے ہیں، ہم ایسا نہیں بالکل کر سکتے ہیں، لیکن حضور Grail ہو رہی جا رہا ہے مسلسل وقت اندراج اور متحرک اضافے تاکہ ہم سخت کوڈ 26 سائز کے ایک صف کی ضرورت نہیں ہے. ہم کئی ناموں کے طور پر داخل کریں جیسا کہ ہم چاہتے ہیں، لیکن کر سکتے ہیں چلو ہمارے یہاں 5 منٹ کے وقفے لے اور پھر مناسب طریقے سے ایسا. ٹھیک ہے. میں نے کہانی قائم خوبصورت مصنوعی طور پر وہاں یلس اور تو باب اور پھر چارلی اور پھر انیتا کو منتخب کرنے کے کی طرف سے، جس کا نام ظاہر یلس کے ساتھ ٹکرانے پر جا رہا تھا. لیکن سوال ہم کے ساتھ پیر کے روز ختم ہو گئی ہے، کس طرح ممکنہ ہے کہ آپ ان قسم کے collisions ہو گی؟ دوسرے الفاظ میں، اگر ہم اس ٹیبل کی ساخت کا استعمال شروع کرنے کے لئے، جو واقعی صرف ایک صف ہے، 26 مقامات میں سے اس صورت میں، اگر ہمارے آدانوں کی بجائے یکساں تقسیم کی جاتی ہیں؟ یہ مصنوعی نہیں ہے یلس اور باب اور چارلی اور ڈیوڈ وغیرہ حروف تہجی کے، اور یکساں Z. کے ذریعے ایک سے زیادہ تقسیم کیا ہے شاید ہم صرف خوش اور ہم جا دو یا دو B کرنے کے لئے نہیں کر رہے ہیں مل جائے گا بہت زیادہ امکان کے ساتھ، لیکن کسی نے کہا، اگر ہم عام اس مسئلہ کو نہیں 0 25 لیکن اس کا کہنا ہے کہ،، 0، 364 یا 65 کے ذریعے، دنوں میں سے اکثر ایک عام سال میں نمبر اور سوال پوچھا، "امکان ہے کہ اس کمرے میں ہم دونوں ایک ہی سالگرہ ہے کیا ہے؟" یہ دوسرا راستہ رکھو، کیا امکان ہے کہ ہم دونوں کے نام کے ساتھ شروع ہونے والے ہے؟ میں سوال کی طرح ایک ہی ہے، لیکن اس پتے کی جگہ، تلاش کی اس کی جگہ، سالگرہ کے معاملے میں بڑا ہے، کیونکہ ہم حروف تہجی میں حروف سے بہت سے سال میں دن ہے. تصادم کے امکانات کیا ہے؟ ٹھیک ہے، ہم باہر figuring ریاضی مخالف طریقہ کی طرف سے اس کے بارے میں سوچ کر سکتے ہیں. کیا کوئی collisions کا امکان ہے؟ ٹھیک ہے، یہ یہاں اظہار کا کہنا ہے کہ کہ کیا امکان ہے اگر صرف اس کمرے میں ایک شخص ہے کہ انہوں نے ایک منفرد سالگرہ ہے؟ یہ 100٪ ہے. کیونکہ اگر کمرے میں صرف ایک ہی شخص ہے، اس کا یا اس کی سالگرہ سال کے سے 365 دنوں میں سے کسی کو ہو سکتا ہے. تو 365/365 اختیارات کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے 1 قیمت فراہم کرتا ہے. تو اس وقت سوال میں امکان صرف 1 ہے. لیکن اگر کمرے میں ایک دوسرا شخص ہے، امکان ہے کہ ان کی سالگرہ مختلف ہے کیا ہے؟ 364 صرف ممکن دن، کو نظر انداز لیپ کا سال ہے، ان کی سالگرہ کے لئے دیگر افراد کے ساتھ نہیں ٹکرانے. تو 364 365 /. اگر کوئی تیسرا آدمی میں آتا ہے، اس 363 365 / ہے، اور وغیرہ. تو ہم مل کر ان مصنوعات کو ضرب، جو چھوٹے اور چھوٹے ہو رہی ہے، معلوم کرنا ہے کہ امکان ہے کہ ہم سب کے منفرد سالگرہ ہے کیا ہے؟ لیکن اس وقت ہم نے کورس کی، صرف اس کا جواب لے سکتا ہے اور اس کے ارد گرد پلٹائیں اور 1 مائنس اس کے تمام ایک اظہار ہے ہم آخر میں مل جائے گا اگر آپ اپنی ریاضی کی کتابوں کی پشت یاد ہے، یہ اس طرح کچھ لگتا ہے، جو بہت زیادہ آسانی سے گراف کی تشریح ہے. اور یہ یہاں گرافک x محور پر سالگرہ کی تعداد ہے، یا سالگرہ کے لوگ، اور Y محور پر کی تعداد ایک میچ کا امکان ہے. اور یہ کیا کہہ رہا ہے یہ ہے کہ اگر آپ کو، کا کہنا ہے کہ، بھی، ہم 22 23 طرح کچھ کا انتخاب. اگر کمرے میں 22 یا 23 لوگ ہے، امکان ہے کہ ان بہت کم لوگوں میں سے دو ایک ہی سالگرہ کے لئے جا رہے ہیں میں سپر ہائی ہے، combinatorially. 50٪ مشکلات میں کہا گیا ہے کہ 22 لوگوں، عملی طور پر ایک سیمینار کی ایک کلاس میں ان لوگوں میں سے 2 اسی سالگرہ کے لئے جا رہے ہیں. کیونکہ بہت سارے طریقوں جس میں آپ کو ایک ہی سالگرہ ہو سکتا ہے ہے. بھی بدتر، اگر آپ چارٹ کے دائیں ہاتھ کی طرف دیکھتے ہیں وقت کی طرف سے آپ کو اس میں 58 طالب علموں کے ساتھ ایک کلاس ہے، 2 سالگرہ کے لوگوں کے امکان سپر، سپر ہائی، تقریبا 100 فی صد ہے. اب، جو حقیقی زندگی کے بارے میں ایک مذاق حقیقت کی طرح ہے. لیکن مضمرات، اب، ڈیٹا ڈھانچے کے لئے اور ذخیرہ کرنے کے بارے میں معلومات کا مطلب یہ ہے کہ صرف سنبھالنے کے آپ کو ایک اچھا، ڈیٹا کے صاف، وردی کی تقسیم ہے اور آپ کو ایک بہت بڑی چیزوں میں سے ایک گروپ کو فٹ ہونے کے لئے کے لئے کافی صف ہے کا مطلب یہ نہیں ہے آپ کو منفرد مقامات میں لوگوں کو حاصل کرنے کے لئے جا رہے ہیں. آپ collisions کے لئے جا رہے ہیں. hashing کے اس تصور تو، کے طور پر یہ کہا جاتا ہے، جیسے "یلس" ان پٹ لے اور کسی طرح میں یہ مساج اور پھر واپس 0 یا 1 یا 2 کی طرح ایک جواب حاصل ہے. واپس اس تقریب سے کچھ پیداوار حاصل کرنا تصادم کے اس امکان سے دوچار ہے. تو ہم ان collisions کس طرح سنبھال سکتے ہیں؟ ٹھیک ہے، ہم ایک معاملے پر خیال جو مشورہ دیا گیا لگ سکتے ہیں. ہم سب صرف نیچے منتقل کریں، یا ہو سکتا ہے کر سکتے ہیں، تھوڑا سا زیادہ صرف بلکہ اقدام اور سب سے زیادہ، صرف دستیاب جگہ کے سب سے نیچے دیئے انیتا منتقل. تو اگر یلس 0 میں ہے، چارلی باب 1 میں ہے، 2 میں ہے، ہم نے 3 مقام پر انیتا ڈال دیتا ہوں. اور یہ اعداد و شمار کے ڈھانچے میں ایک تکنیک ملاقات کی لکیری کی تحقیقات ہے. لکیری کیونکہ آپ صرف اس لائن چل رہے ہیں، اور تم طرح کی خلاف چھان بین کے ہو ڈیٹا کے ڈھانچے میں دستیاب مقامات کے لئے. بالکل، یہ O (ن) میں devolves. اگر آنکڑا ڈھانچہ بہت مکمل ہے، اس میں 25 افراد پہلے سے ہی ہے، وہ اور اس کے بعد انیتا ساتھ آتا ہے، کس جگہ Z جائے گا ختم ہوتا ہے، اور وہ ٹھیک ہے. وہ اب بھی پورے طور پر فٹ ہوجاتا ہے، اور ہم نے اس کے بعد میں تلاش کر سکتے ہیں. لیکن یہ چیزوں کو تیز کرنے کے مقصد کے خلاف تھا. تو کیا ہوا اگر ہم بجائے اس تیسری طول و عرض شروع کی؟ یہ تکنیک عام طور پر علیحدہ chaining کہا جاتا ہے، یا زنجیروں رکھنے. اور اب کیا ہیش کی میز ہے، اس ٹیبل کی ساخت، آپ کی ٹیبل صرف اشارہ کے ایک صف ہے. لیکن کیا ان کے اشارہ کی طرف اشارہ اندازہ کیا ہے؟ ایک لنک کی فہرست. تو کیا ہوا اگر ہم ان دونوں دنیاؤں کے سب سے بہتر لے؟ ہم ابتدائی اشاریہ جات کے لئے arrays کا استعمال کرتے ہیں آنکڑا ڈھانچہ میں تو ہم [1]، [30] یا وغیرہ [0] فوری طور پر جا سکتے ہیں، لیکن اتنا ہے کہ ہم کچھ لچک ہے اور ہم انیتا اور یلس اور آدم کو فٹ کر سکتے ہیں اور کسی دوسرے نام ہم بجائے دوسرے محور منمانے اضافہ. اور ہم نے پیر کے آخر میں، ہے کہ منسلک فہرست کے ساتھ اظہار صلاحیت ہے. ہم نے ایک آنکڑا ڈھانچہ منمانے ترقی کر سکتا ہے. متبادل طور پر، ہم نے ایک بہت بڑا 2 جہتی صف بنا سکتے ہیں، لیکن اس ایک خوفناک صورتحال اگر جا رہا ہے 2 جہتی صف میں قطاروں کی ایک اضافی شخص جس کا نام اے کے ساتھ شروع کرنے کے لئے ہوتا ہے کے لئے اتنا بڑا نہیں ہے خدا نہ کرے ہم نے ایک بہت بڑا 2 جہتی ساخت reallocate ہے صرف اس لئے کہ بہت سے نام لوگوں کا ہے، خاص طور پر جب بہت کم نام Z کچھ لوگوں کا ہے. یہ صرف ایک بہت ویرل آنکڑا ڈھانچہ ہونے جا رہا ہے. تو یہ کسی بھی طرح سے کامل نہیں ہے، لیکن اب ہمیں کم سے کم کرنے کی صلاحیت ہے فوری طور پر جہاں یلس یا انیتا سے تعلق رکھتا ہے، عمودی محور کی شرائط میں کم از کم، اور اس کے بعد ہم صرف فیصلہ ہے جہاں اس سے منسلک فہرست میں انیتا یا یلس ڈال ہے. اگر ہم چیزوں کو حل کرنے کے بارے میں کوئی پرواہ نہیں ہے، کتنی جلدی ہم اس طرح کی ساخت میں یلس داخل کر سکتا ہے؟ یہ مسلسل کا وقت ہو گیا ہے. [0] میں ہم انڈیکس، اور اگر کوئی وہاں یلس اس منسلک فہرست کے آغاز میں چلا جاتا ہے. لیکن یہ ایک بڑا سودا نہیں ہے. کیونکہ اگر انیتا تو ساتھ آتا ہے کئی اقدامات میں سے کچھ کے بعد، انیتا ہے کہاں؟ ٹھیک ہے، [0]. Oop. یلس اس منسلک فہرست میں پہلے سے ہی ہے. لیکن اگر ہم نے ان کے ناموں کو حل کرنے کے بارے میں کوئی پرواہ نہیں ہے، ہم یلس میں، داخل انیتا، چلو لیکن اس کی بھی جو مسلسل وقت ہے کر سکتے ہیں. اگر یلس اور آدم اور ان تمام دوسرے ایک کا نام ہے، یہ ان نہیں جسمانی طور پر منتقل ہے. کیوں؟ کیونکہ ہم صرف منسلک فہرست، کون جانتا ہے کے ساتھ یہاں آیا ان مراکز کو ویسے بھی رہے ہیں؟ تمہیں صرف اتنا کرنا ہے کہ روٹی crumbs منتقل کریں. کے ارد گرد تیر کو منتقل، آپ کو جسمانی طور پر کوئی اعداد و شمار کے ارد گرد منتقل نہیں ہے. تو ہم انیتا اس صورت میں داخل، فوری طور پر کر سکتے ہیں. مسلسل وقت ہو گیا ہے. تو ہم مسلسل وقت، تلاش، اور انیتا کی طرح کسی کے اندراج مسلسل وقت ہے. لیکن دنیا oversimplifying کی طرح. کیا ہوگا اگر ہم بعد میں یلس کو تلاش کرنے کے لئے چاہتے ہیں؟ کیا ہوگا اگر ہم بعد میں یلس کو تلاش کرنے کے لئے چاہتے ہیں؟ کس طرح بہت سے اقدامات ہیں جو آنے والا ہے؟ [Student کی جواب، unintelligible] بالکل. منسلک فہرست میں یلس سے پہلے لوگوں کی تعداد. تو یہ بہت کامل نہیں ہے، کیونکہ ہمارے آنکڑا ڈھانچہ، پھر یہ عمودی رسائی حاصل ہے اور پھر اس نے ان سے تعلق رکھنے پھانسی کی فہرست ہے - اصل میں، یہ ایک صف میں ایک کو اپنی طرف متوجہ نہیں دو ہیں. یہ ان سے منسلک کی فہرست اس سے دور ہے پھانسی ہے کہ اس طرح کچھ لگتا ہے. لیکن مسئلہ یہ ہے اگر یلس اور آدم اور ان تمام دیگر A ناموں ، وہاں زیادہ سے زیادہ ختم کی تلاش کسی کے اقدامات کا ایک گروپ لے سکتا ہے، bcause آپ کو منسلک فہرست گزرنا ہے، جو ایک لکیری آپریشن ہے. تو سچ میں، تو، کے اندراج کے وقت بالآخر O (ن)، جہاں ن فہرست میں عناصر کی تعداد ہے. سے تقسیم کیا ہے، منمانے میٹر، جہاں میٹر منسلک فہرستوں کی تعداد ہے فون کہ ہم اس عمودی محور میں ہے. دوسرے الفاظ میں، اگر ہم واقعی کے ناموں کی ایک ہی تقسیم فرض، مکمل طور پر غیر حقیقی ہے. واضح طور پر دوسروں کے مقابلے میں کچھ حروف کی زیادہ ہے. لیکن اگر ہم نے ایک ہی تقسیم لمحے کے لئے فرض، اور ہم کل لوگوں، اور ایم کل زنجیروں کو ن ہے ہم پر دستیاب ان زنجیروں میں سے ہر ایک کی اس وقت کی حد کے کافی صرف کل، ن زنجیروں کی تعداد کی طرف سے تقسیم کیا جا رہا ہے. تو این / ایم. لیکن یہاں ہے جہاں ہم سب mathematically ہوشیار ہو سکتا ہے. M مسلسل جاری ہے، کیونکہ ان میں سے ایک مقررہ تعداد میں ہے. آپ کو شروع میں آپ کی صف کا اعلان کرنے جا رہے ہیں، اور ہم عمودی محور نیا سائز کرنا نہیں ہو. تعریف کے مطابق، یہ طے رہتا ہے. یہ صرف افقی محور ہے، ایسا ہے، تو یہ تبدیل کرنے سے بات کرنے. تو تکنیکی طور پر، یہ ایک مسلسل جاری ہے. تو اب، کے اندراج کے وقت بہت O (ن) کے ہے. تو یہ کرتے ہیں کہ وہ بہت اچھا محسوس نہیں کرتا ہے. لیکن کیا سچ یہاں ہے؟ ٹھیک ہے، اس وقت،، ہفتوں کے لئے ہم کہتے رہے O (ن ²). اے (ن)، 2 X ن ² - ن 2 کی طرف سے تقسیم کیا ہے. . . ech. یہ صرف ن ² ہے. لیکن اب، سمسٹر کے اس حصے میں ہم حقیقی دنیا کے بارے میں دوبارہ بات شروع کر سکتے ہیں. اور این / ایم صرف اکیلے (ن) سے بالکل تیز ہے. اگر آپ کے پاس ایک ہزار نام ہیں، اور آپ انہیں ایک سے زیادہ بالٹیاں میں توڑ تاکہ آپ کو ان زنجیروں میں سے ہر ایک میں صرف دس نام ہیں، بالکل دس چیزوں تلاش ایک ہزار چیزوں سے تیز کی جا رہی ہے. اور آئندہ مسئلہ سیٹ کی ایک آپ کو چیلنج کرنے کی جا رہی ہے بالکل اس کے بارے میں سوچنا بھی تاہم،، جی ہاں asymptotically اور mathematically، یہ ابھی تک صرف لکیری ہے، جو عام طور پر بیکار ہے جب چیزوں کو تلاش کرنے کے لئے کی کوشش کر رہے ہیں. حقیقت میں، یہ اس سے بھی تیزی سے چل رہا ہے اس باجک کی وجہ سے. اور اس طرح پھر اس کاروبار بند ہونے جا رہا ہے اور اصول اور حقیقت کے درمیان اس تنازعہ اور knobs میں سے ایک سمسٹر میں اس وقت تبدیل کرنا شروع کر دیں گے ، ایک ہی حقیقت کی ہے کیونکہ ہم semster آخر کے لئے طرح کی تیاری کے طور پر ہم نے ویب پروگرامنگ کی دنیا میں متعارف کرانے واقعی جہاں، کارکردگی شمار کی جا ہے کیونکہ اپنے صارفین کو جا رہے ہیں غریب ڈیزائن کے فیصلوں کو محسوس اور کی تعریف شروع کر دیں. 31 عناصر کے ساتھ ایک ہیش میز - تو کس طرح آپ کو ایک لنک پر عملدرآمد کے بارے میں کرتے ہیں؟ اور گزشتہ مثال کے طور پر سالگرہ کے بارے میں منمانے تھا. اگر کسی نے 1 جنوری فروری یا 1 کی سالگرہ ہے، ہم اس بالٹی میں ڈال دونگا. اگر یہ 2 جنوری، 2 فروری، 2 مارچ ہے، ہم اس بالٹی میں ڈال دونگا. یہی وجہ ہے کہ یہ 31 سال کی تھی. آپ کو ایک ہیش ٹیبل کو کس طرح کا اعلان کر سکتا ہوں؟ نوڈ * ٹیبل یہ بہت آسان ہو سکتا ہے، اس کے لئے صوابدیدی نام، [31] ہے. اس سے آپ کے وزٹرز کا ریکارڈ رکھا نوڈس دیتا ہے 31 اشارہ، اور یہ کہ آپ کے وزٹرز کا ریکارڈ رکھا منسلک کی فہرست 31 اشارہ کرنے کی اجازت دیتا ہے ہے یہاں تک کہ اگر ان زنجیروں کو ابتدائی طور پر نل ہیں. مجھے کیا کرنا چاہتے ہے اگر میں محفوظ کرنا چاہتے ہیں "یلس،" "باب،" "چارلی"؟ ٹھیک ہے، ہم ایک ڈھانچے میں ان چیزوں پر لپیٹ کرنے کی ضرورت ہے کیونکہ ہم یلس باب کی طرف اشارہ چارلی کی طرف اشارہ ہے، وغیرہ. کی ضرورت ہے ہم تو صرف نام اکیلی نہیں ہو سکتا ہے، تو میں نے ایک نیا بلایا نوڈ یہاں ڈھانچہ بنا سکتا ہے. اصل نوڈ کیا ہے؟ اس نئے منسلک فہرست میں ایک نوڈ کیا ہے؟ پہلی بات، کہا جاتا لفظ ہے، اس شخص کے نام کے لئے ہے. LENGTH، شاید، ایک انسان کا نام کی زیادہ سے زیادہ لمبائی سے متعلق ہے، جو کچھ بھی ہے، 20، 30، پاگل کونے کے مقدمات میں 40 حروف اور +1 کس کے لئے ہے؟ یہ صرف اضافی نل کردار، \ 0 ہے. تو یہ نوڈ اندر خود "کچھ" ریپنگ کی ہے، لیکن یہ بھی کہا جاتا اگلے پوائنٹر اعلان تاکہ ہم باب چارلی پر یلس چین وغیرہ کر سکتے ہیں اور. نل لیکن اس کی ضروری نہیں کر سکتے ہیں. ان ہیش ٹیبل پر میں آپ کا کوئی سوال ہے؟ جی ہاں؟ [Student کی سوال پوچھ، unintelligible] ایک صف - اچھا سوال ہے. ایک کی بجائے صرف چار * صف میں یہ چار لفظ کیوں ہے؟ یہ کسی حد تک صوابدیدی مثال میں، میں سہارا نہیں کرنا چاہتا تھا اصل ناموں میں سے ہر ایک کے لئے malloc. میں سٹرنگ کے لئے میموری کا ایک زیادہ سے زیادہ رقم کا اعلان کرنا چاہتا تھا تاکہ میں ساخت میں کاپی یلس 0 \ اور نہیں malloc اور آزاد اور طرح سے نمٹنے کے لئے کر سکتے ہیں. لیکن میں ایسا اگر میں خلائی استعمال کی ہوش چاہتا تھا سکتا ہے. اچھا سوال ہے. تو اس سے دور سامانییکرن کرنے کی کوشش اور آج کے اعداد و شمار کے ڈھانچے پر باقی کو زیادہ عام طور پر توجہ مرکوز اور دیگر مسائل کہ ہم ایک ہی بنیادی اصولوں کا استعمال کرتے ہوئے حل کر سکتے ہیں اگرچہ خود کو ان کی تفصیلات میں اعداد و شمار کے ڈھانچے مختلف ہو سکتا ہے. تو یہ کمپیوٹر سائنس میں بدل جاتا ہے، درخت بہت عام ہیں. اور آپ کو ایک درخت قسم کے ایک خاندان کے درخت کی طرح سوچ سکتے ہیں، کچھ جڑیں، کچھ matriarch یا وائس چانسلر کہاں ہے، دادی ماں یا دادا یا پہلے واپس، جس کے نیچے ماں اور والد صاحب یا مختلف بہن بھائیوں یا پسند ہیں. تو ایک درخت کا ڈھانچہ نوڈس ہے اور یہ بچے ہیں، عام طور پر ہر نوڈ کے لئے 0 یا اس سے زیادہ بچے. اور شبدجال میں سے کچھ ہے کہ آپ یہاں اس تصویر میں نظر آنے والے ہے کناروں پر چھوٹے بچے یا grandkids میں سے کسی ان سے نکلنے والے تیر جو ہے، وہ نام نہاد پتے، اور اندر کسی کو بھی ہیں ایک اندرونی نوڈ ہے، آپ اسے ان خطوط پر کچھ بھی کہہ سکتے ہیں. لیکن اس کی ساخت بہت عام ہے. یہ ایک تھوڑا صوابدیدی ہے. ہم نے بائیں جانب ایک بچہ ہے، ہم نے دائیں طرف کے تین بچے ہیں، نیچے دو بچے چھوڑ دیا. تو ہم مختلف سائز کے درخت ہیں، لیکن اگر ہم چیزوں معیاری شروع کر سکتے ہیں، اور تم پیٹرک کے ویڈیو سے سابقہ ​​مختصر سے بائنری تلاش اس کو یاد کر سکتے ہیں آن لائن، بائنری تلاش ایک صف کے ساتھ لاگو کیا جائے گا کی ضرورت نہیں ہے ایک بلیکبورڈ پر یا کاغذ کے ٹکڑے. لگتا ہے کہ آپ ایک سے زیادہ بہتر آنکڑا ڈھانچہ میں اپنے نمبروں پر محفوظ کرنا چاہتا تھا. آپ اس طرح ایک درخت بنا سکتا ہے. آپ کو ایک C میں اعلان نوڈ، اور اس نوڈ کے اندر اس کی کم از کم دو عناصر کر سکتے ہیں کر سکتے ہیں. ایک جس نمبر پر آپ کو محفوظ کرنا چاہتے ہیں اور دیگر ہے - ٹھیک ہے، ہم ایک اور کی ضرورت ہے. دوسرے اپنے بچوں کو ہے. تو یہاں ایک اور آنکڑا ڈھانچہ ہے. اس وقت، ایک نوڈ ایک بڑی تعداد کو ذخیرہ کرنے کے طور پر (ن) وضاحت کی گئی ہے اور پھر دو اشارہ، بائیں بچے اور دائیں بچے. اور وہ من مانی نہیں ہو. اس درخت کے بارے میں دلچسپ کیا ہے؟ کہ ہم کس طرح اس رکھی باہر ہے یا کس طرح پیٹرک اس کی ویڈیو میں رکھی طرز کیا ہے؟ اس کی طرح واضح ہے کہ کچھ یہاں پر جا چھنٹائی ہے، لیکن کیا سادہ اصول ہے؟ جی ہاں؟ [Student کی جواب، unintelligible] ٹھیک ہے. اگر آپ کو اس میں نظر، آپ کو بائیں جانب چھوٹی سی تعداد دیکھ رہے ہیں، بائیں پر بڑی تعداد ہے، لیکن ہے کہ ہر نوڈ کے لئے درست ہے. ہر نوڈ کے لئے، اس کے بائیں بچے اس سے بھی کم، اور اس کے صحیح بچے اس سے زیادہ سے زیادہ ہے. کیا اس کا مطلب اب یہ ہے اگر میں اس آنکڑا ڈھانچہ، کا کہنا ہے کہ 44 نمبر تلاش کرنا چاہتے ہیں ہیں، میں جڑ شروع کرنے کی وجہ کے طور پر اب یہ زیادہ پیچیدہ اعداد و شمار ڈھانچے کے سب کے ساتھ ہے،، ہم صرف ایک بات پوائنٹر ہے، آغاز. اور اس صورت میں، آغاز جڑ ہے. یہ بائیں آخر نہیں ہے، یہ اس ڈھانچے کی جڑ ہے. تو میں دیکھ رہا ہوں یہاں 55 ہے، اور میں 44 کے لئے تلاش کر رہا ہوں. کس سمت میں جانا چاہتے ہو؟ ٹھیک ہے، میں بائیں طرف جانے کے لئے کرنا چاہتے ہیں، کیونکہ ظاہر ہے، حق بہت بڑا ہو رہا ہے. تو یہاں محسوس، آپ conceptually نصف میں درخت کاٹ طرح کی ہیں کیونکہ تم جا نیچے دائیں ہاتھ سے کبھی نہیں رہے ہیں. تو اب میں 55 سے 33 تک جانا ہے. یہ ایک نمبر کا بہت چھوٹا ہے. میں 44 کے لئے تلاش کر رہا ہوں لیکن اب مجھے پتہ ہے کہ اگر اس پیڑ میں 44 ہے، میں حق پر ظاہر کیا جا سکتا ہے. تو پھر، میں کٹائی نصف میں درخت ہوں. یہ بہت زیادہ فون بک conceptually جیسی ہے. جیسی ہے جو ہم نے بلیکبورڈ پر کاغذات کے ساتھ کیا تھا، لیکن یہ ایک سے زیادہ پیچیدہ ڈھانچہ ہے جو ہمیں اصل میں کرنے کے لئے کی اجازت دیتا ہے ہے اس الگورتھم کے ڈیزائن کی طرف سے فتح، تقسیم اور اصل میں، اس طرح کی ساخت traversing - افوہ. اس طرح ایک ساخت Traversing، جہاں یہ صرف "اس طرح یا اس طرح جانا، یہ سب کوڈ ہے کہ سب سے پہلے میں آپ کے دماغ میں جھکا جب اس کے حصے میں عمل درآمد کا مطلب یا گھر میں اس کے ذریعے چلنا، بائنری کی تلاش کے لئے، تکرار یا iteration کا استعمال کرتے ہوئے، اسے گردن میں درد ہے. مشرق عنصر تلاش کریں، تو اپنے پکڑ دھکڑ یا نیچے کرتے ہیں. اس خوبصورت ہے کیونکہ ہم تکرار اب دوبارہ استعمال کر سکتے ہیں، لیکن بہت زیادہ cleanly. یقینا، اگر آپ کو 55 نمبر پر ہیں اور آپ کو 44 کو تلاش کرنے کے لئے چاہتے ہیں، تم جاؤ اس حالت میں چھوڑ دیا، تو تم کیا کرتے ہو؟ آپ بالکل وہی الگورتھم چلاتے ہیں. تم نوڈ کی قیمت چیک کرنے کے لیے، تو آپ کو بائیں یا دائیں جاتے ہیں. تو پھر آپ کو نوڈ کی قدر چیک کرنے کے لیے، بائیں یا دائیں جانا. یہ بالکل تکرار سے بہتر ہے. تو اگرچہ ہم نے ماضی میں کچھ کافی صوابدیدی تکرار شامل مثال کے طور پر کیا ہے. جو ڈیٹا stuctures کے ساتھ پنراورتی کے کرنے کی ضرورت نہیں، خاص طور پر درختوں، یہ ایک مسئلہ لینے کے اس خیال کی ایک کامل درخواست ہے، یہ سکڑ، اور پھر اسی کی قسم کی، لیکن چھوٹے پروگرام کے حل. تو وہاں ایک اور آنکڑا ڈھانچہ کہ ہم متعارف کرانے کر سکتے ہیں ہے. یہ ایک سب سے پہلے خفیہ نظر نظر میں ڈیزائن کیا گیا ہے، لیکن یہ ایک حیرت انگیز ہے. تو یہ ایک ڈیٹا ملاقات کی ایک trie، trie، جو لفظ حاصل سے وراست میں ملی ہے ساخت ہے، جس میں دوبارہ کوشش ویل اعلان نہیں ہے، لیکن ہے کہ یہ چیزیں دنیا کیا مطالبہ. کوشش کرتا ہے. T R-مجھے ای. یہ کسی قسم کے ایک درخت کا ڈھانچہ ہے، لیکن ایک trie میں نوڈس میں سے ہر ایک کیا ظاہر ہوتا ہے؟ اور یہ تھوڑی گمراہ کن ہے کیونکہ یہ مختصر کی طرح ہے. لیکن ایسا لگتا ہے جیسے اس trie میں ہر نوڈ واقعی میں ایک صف ہے. اور اگرچہ اس آریھ کے مصنف نہیں دکھایا ہے، اس معاملے میں، یہ trie ایک آنکڑا ڈھانچہ ہے جس کا مقصد زندگی میں الفاظ کی جمع ہے ہے A-L-I-C ای یا B-و B-طرح. اور جس طرح اس ڈیٹا اسٹورز یلس اور باب اور چارلی اور انیتا اور وغیرہ ہے یہ ایک صف کا استعمال کرتا ہے جس کے تحت ایک trie میں یلس جمع، ہم جڑ نوڈ جو ایک صف کی طرح لگ رہا ہے میں شروع، اور یہ آشلپی سنکیتن کے وزٹرز کا ریکارڈ رکھا جائے گا. مصنف abcdefg لپ کیونکہ اس کے ساتھ کوئی نام تھے. وہ صرف ایم اور پی اور T سے ظاہر ہوتا ہے، لیکن اس صورت میں، چلو کچھ نام یہاں ہیں یلس اور باب اور چارلی سے دور منتقل. میکسویل نے یہ خاکہ میں اصل ہے. تو کہ مصنف کی دکان کس طرح کیا M-X--W-E-L L-؟ وہ جڑ نوڈ میں شروع کی، اور چلے گئے [M]، تو 13 تقریبا صف میں 13th جگہ. پھر وہاں سے، وہاں ایک پوائنٹر ہے. پوائنٹر ایک صف پر معروف ہے. وہاں سے مصنف نے محل وقوع ایک میں اس صف میں حساب سے ترتیب ہے، کے طور پر سب سے اوپر بائیں میں دکھایا گیا ہے، اور پھر وہ ایک دوسرے صف کہ پوائنٹر کے بعد، اور مقام ایکس میں پوائنٹر گئے اس کے بعد، اگلی صف جگہ W، E، L، L، اور وغیرہ میں اور آخر میں، اصل میں اس کی ایک تصویر کے لئے کرنے کی کوشش کریں. کوڈ میں کی طرح ایک نوڈ نظر کیا کرتا ہے؟ ایک trie میں ایک نوڈ زیادہ نوڈس اشارہ ایک صف پر مشتمل ہوتی ہے. لیکن وہاں بھی بولین قدر کا کم از کم اس کے عمل میں کسی قسم ہو، مل گیا ہے. میں اسے is_word فون کرنے کی ہو. کیوں؟ کیونکہ جب آپ میکسویل داخل کر رہے ہیں، تم سے نہیں داخل کر رہے ہیں یہ آنکڑا ڈھانچہ میں کچھ بھی. تم M. لکھ نہیں کر رہے ہیں، تم ایکس نہیں لکھ رہے ہو تم کر رہے ہو اشارہ پر عمل پیرا ہے. پوائنٹر جو M، تو پوائنٹر کہ ایک کی نمائندگی کرتا ہے کی نمائندگی کرتا ہے، تو پوائنٹر X، پھر W، E، L، L کی نمائندگی کرتا ہے، لیکن کیا آپ آخر میں کرنے کی ضرورت جاؤ، چیک کرنے کے لیے طرح کی ہے، میں نے اس جگہ تک پہنچ گئی ہے. آنکڑا ڈھانچہ میں ایک لفظ ہے جو یہاں ختم ہو جاتی ہے. تو کیا trie واقعی کے ساتھ بھری ہوئی ہے اور مصنف کی نمائندگی کرنے کا انتخاب کیا ہے چھوٹے ترکون کے ساتھ ان terminuses. یہ صرف کا مطلب ہے کہ یہ حقیقت یہ مثلث یہاں ہے سچ ہے، یہ بولین قیمت اگر آپ درخت میں پیچھے کی طرف جانے کا مطلب ہے، نامی ایک میکسویل اس میں ہے لفظ کا مطلب. لیکن مثال کے طور پر لفظ FOO،، درخت میں نہیں ہے، اگر میں جڑ نوڈ میں سب سے اوپر شروع کیونکہ یہاں F پوائنٹر، کوئی اے پوائنٹر، کوئی اے پوائنٹر ہے. FOO اس لغت میں ایک کا نام نہیں ہے. لیکن اس کے برعکس کی طرف سے، ٹیورنگ، T-U-R-I-ن G-. ایک بار پھر، میں ٹی یا آپ یا ر یا میں یا ن یا جی کی دکان نہیں تھی. لیکن میں اس آنکڑا ڈھانچہ میں سٹور نے سچ نیچے اس نوڈ میں راستے سے ایک قدر - درخت میں سچ is_word کے اس بولین قیمت مقرر کرتے ہوئے. تو ایک trie یہ بہت دلچسپ میٹا ساخت کی طرح ہے، تم الفاظ جہاں واقعی نہیں رہے ہیں ذخیرہ کرنے لغت کے اس قسم کے لئے خود کو. واضح کرنے کے لئے، آپ صرف ہاں یا نہیں ذخیرہ کرنے رہے ہیں، اس میں ایک لفظ ہے جو یہاں ختم ہو جاتی ہے ہے. اب کیا مطلب ہے؟ اگر آپ کو ایک ڈکشنری میں 150،000 الفاظ ہیں کہ آپ میموری میں محفوظ کرنے کی کوشش کر رہے ہیں ایک لنک کی فہرست کی طرح کچھ کا استعمال کرتے ہوئے، آپ کو آپ کے منسلک فہرست میں 150،000 نوڈس کے لئے جا رہے ہیں. اور ان الفاظ میں سے ایک کی ترتیب حروف تہجی کی تلاش O (ن) کے وقت لگ سکتا ہے. لکیری وقت ہو گیا ہے. ، یہاں ایک trie کے کیس میں ایک لفظ کی تلاش کی رننگ ٹائم کیا ہے؟ ہے یہ یہاں خوبصورتی بدل جاتا ہے کہ یہاں تک کہ اگر آپ نے پہلے ہی یہ لغت میں 149.999 الفاظ ہیں، جیسا کہ اس آنکڑا ڈھانچہ کے ساتھ لاگو کتنا وقت اسے لے لو یا شامل کرنے کے لئے ایک اور شخص کو اس میں، یلس کی طرح یلس، کرتا ہے؟ ٹھیک ہے، یہ صرف 5 ہے، شاید پیچھے کردار کے لئے 6 اقدامات. کیونکہ ڈھانچے میں دوسرے ناموں کی presense یلس داخل کرنے کی راہ میں نہیں ملتا ہے. اس کے علاوہ، یلس کی تلاش میں ایک بار اس لغت میں 150،000 الفاظ ہیں یلس کو تلاش کرنے کے لئے آپ کی راہ میں نہیں حاصل کرتا ہے، کیونکہ یلس ہے. . . . . یہاں، میں کیونکہ ایک بولین قیمت مل گیا ہے. اور اگر کوئی بولین سچ ہے، تو یلس ہے الفاظ کی اس آنکڑا ڈھانچہ میں نہیں ہے. دوسرے الفاظ میں، چیزوں کو تلاش کرنے اور داخل چیزوں کے اس نئے میں چل رہا وقت trie آنکڑا ڈھانچہ O ہے - یہ نہیں ن ہے. کیونکہ 150،000 لوگوں کے presense یلس پر کوئی اثر نہیں ہے، ایسا لگتا ہے. تو چلو K، جہاں K انگریزی میں ایک لفظ کی زیادہ سے زیادہ لمبائی ہے کہتے ہیں جو عام طور پر سے زیادہ حروف 20 کچھ ہے. تو K مسلسل جاری ہے. تو حضور Grail ہم اب ملا ہے لگ رہے ہو اضافہ کے لئے ایک trie مسلسل وقت کی تنسیخ کے لئے ہے، lookups کے لئے،. وجہ سے، جو پہلے سے ہی ڈھانچے میں چیزوں کی تعداد جو بھی جسمانی طور پر یہاں نہیں ہیں. ایک بار پھر، وہ صرف سے دور کی جانچ پڑتال سلجھا رہے ہیں، ہاں یا نہ اس کے مستقبل کا رننگ ٹائم پر کوئی اثر نہیں ہے. لیکن پکڑنے ہوگا، ورنہ ہم اتنا وقت نہیں ہوتا بیکار ان تمام دیگر ڈیٹا کے ڈھانچے پر آخر میں خفیہ ایک ہے جو حیرت انگیز ہے حاصل کرنے کے لئے. تو ہم کس قیمت پر اس کی عظمت کو یہاں حاصل کرنے کے لئے ادا کر رہے ہیں؟ خلائی. یہ بات بڑے پیمانے پر ہے. اور وجہ یہ ہے کہ مصنف نے اسے یہاں پیش نہیں، محسوس، ان چیزوں کے جو arrays کی طرح نظر آتے کہ وہ درخت کی باقی، trie کے باقی کو اپنی طرف متوجہ نہیں کیا، کیونکہ وہ صرف نہیں ہو کہانی سے متعلق ہے. لیکن ان تمام مراکز کی سپر وسیع ہیں، اور درخت میں ہر نوڈ لیتا ہے 26 یا اصل میں، کیونکہ اس معاملے میں میں apostrophe کے لئے جگہ سمیت 27 حروف ہو سکتے ہیں تاکہ ہم apostrophized الفاظ کر سکتے ہیں. اس صورت میں، یہ وسیع arrays ہیں. تو اگرچہ وہ نہیں picutured رہے ہیں، اس RAM کے ایک بڑے پیمانے پر رقم لیتا ہے. جو ٹھیک ہو جائے گا، جدید ہارڈ ویئر میں especilly ہو سکتا ہے، لیکن اس tradeoff ہے. ہم آپ کو زیادہ جگہ خرچ کر کے کم وقت ملتا ہے. تو جہاں یہ سب کیا ہو رہا ہے؟ ٹھیک ہے، کیا دو - دو یہاں دیکھ. اس آدمی کو یہاں ایک چھلانگ دیتے. ، اس پر یقین ہے یا نہیں، زیادہ سے زیادہ مذاق کے طور پر کچھ وقت کے لئے C اب ہم سمسٹر جہاں جدید چیزیں منتقلی کا وقت ہے میں نقطہ پہنچ رہے ہیں. ایک اعلی سطح پر چیزیں. اور اگرچہ اگلے دو ہفتوں کے لیے ہم نے خود اشارہ اور یاد داشت مینجمنٹ کی دنیا میں وسرجت اب بھی جاری رکھیں گے کہ سکون ہے جس کے ساتھ ہم نے تو بنا سکتے ہیں حاصل کرنے کے لئے، آخر بالآخر کھیل ہے، ستم ظریفی یہ ہے متعارف کرانے، اس زبان نہیں ہے. ہم HTML کے بارے میں بات کر 10 منٹ کی طرح خرچ کریں گے. HTML ہے مارکاپ زبان ہے، اور ایک مارکاپ زبان ہے کھلا بریکٹ اور بند بریکٹ کا کہنا ہے کہ 'اس کو بولڈ' ان کی سیریز ہے اس italics '' اس کو مرکز بنا. یہ کہ تمام ذہنی دلچسپ نہیں ہے، بلکہ یہ انتہائی مفید ہے. اور یہ یقینی طور پر ہر طرف موجود ہے ان دنوں. لیکن کیا HTML کی دنیا کے بارے میں طاقتور ہے، ویب پروگرامنگ عام طور پر، متحرک چیزوں کی تعمیر، پی ایچ پی یا ازگر یا روبی یا جاوا یا C # کی طرح زبانوں میں کوڈ لکھنے. سچ میں، جو کچھ بھی انتخاب کی اپنی زبان ہے، اور HTML کو متحرک طور پر پیدا. کہا جاتا CSS کو متحرک طور پر کچھ پیدا. جھرن کاری سٹائل شیٹس، جو جمالیات کے بارے میں بھی ہے. اور اس طرح آج بھی اگرچہ، اگر میں واقف Google.com کی طرح کچھ ویب سائٹ پر جاتے ہیں، اور میں، ڈویلپر، مسودہ، جو ہو سکتا ہے کہ آپ سے پہلے کیا ہے دیکھنے جاتے ہیں، لیکن ماخذ کو دیکھنے کے لئے جا رہا، شاید یہ سب بہت خفیہ لگتا ہے. لیکن یہ بنیادی کوڈ ہے کہ Google.com نافذ ہے. سامنے کے آخر میں. اور اصل میں یہ سب fluffy جمالیات سامان ہے. یہ CSS ہے یہاں. اگر میں طومار کر رہو نیچے ہم کچھ چیزیں رنگ کوڈت ملے گی. یہ HTML ہے. گوگل کوڈ ایک گندگی کی طرح لگ رہا ہے، لیکن اگر میں اصل میں ایک مختلف ونڈو کھولنے، ہم اس میں کچھ کا ڈھانچہ دیکھ سکتے ہیں. اگر میں اس کو کھولتے ہیں تو، نوٹس، تھوڑا زیادہ پڑھنے کے قابل ہے. ہم طویل عرصے سے پہلے اس ٹیگ کو دیکھ کر جا رہے ہیں، [لفظ] میں ایک ٹیگ ہے HTML، سر، جسم، div، سکرپٹ، متن کے علاقے، مدت، مرتکز، div. اور پہلی نظر میں یہ بھی خفیہ نظر کی ترتیب، لیکن اس گند بعض نمونوں، اور تکرار پذیر پیٹرن مندرجہ ذیل ہے، تاکہ ایک بار ہم مبادیات حاصل نیچے، آپ کو اس طرح سے کوڈ لکھنے کے قابل ہو جائے گا اور پھر ایک زبان، جسے جاوا سکرپٹ کا استعمال کرتے ہوئے اس طرح کوڈ جوڑتوڑ. اور جاوا سکرپٹ ایک براؤزر کی زبان ہے جو اندر چلتا ہے ہے آج ہے کہ ہم نے کورس خریداری کا آلہ ہے جو کہ گوگل کے نقشے کا استعمال کرتا ہے کے لئے ہارورڈ یونیورسٹی کورسز پر استعمال کرتے ہیں آپ تحرک کی ایک پوری چڑھانے دینے، فیس بک، آپ ہے جس میں فوری طور پر کی حیثیت کی تازہ ترین معلومات کو ظاہر کرنے کے ٹویٹر کا استعمال کرتا ہے آپ ٹویٹس کو فوری طور پر ظاہر ہے. یہ سب کچھ ہم نے خود کو اندر وسرجت شروع ہو جائے گا لیکن وہاں حاصل کرنے کے لئے، ہم انٹرنیٹ کے بارے میں کچھ کو سمجھنے کی ضرورت ہے. یہ کلپ صرف ایک طویل منٹ ہے، اور چلو فرض اب اس حقیقت میں ہے،، کس طرح انٹرنیٹ کے آنے کے بارے میں کیا ہے کے لئے ایک جھلکی کے طور پر کام کرتا ہے. میں آپ کو "نیٹ کے اول." دے [♫ آہستہ کورس موسیقی ♫] [مرد راوی] وہ ایک پیغام کے ساتھ آیا تھا. تمام نے اپنی پروٹوکول کے ساتھ. [♫ تیز الیکٹرانک موسیقی ♫] وہ ڈاؤن لوڈ، اتارنا فائر والز کی دنیا میں آئے، راوٹرز uncaring، اور ابھی تک موت سے بدتر خطرات. وہ تیز ہے. وہ مضبوط ہے. وہ TCP / IP ہے، اور انہوں نے آپ کا پتہ مل گیا ہے. نیٹ کے اول. [Malan] اگلے ہفتے، پھر. انٹرنیٹ ویب پروگرامنگ. یہ CS50 ہے. [CS50.TV]