[موسیقی بجانے] [ویڈیو پلے بیک] -انہوں نے کہا کہ جھوٹ بول رہا ہے. کیا -کے بارے میں؟ -مجھ نہیں پتہ. ہم کیا جانتے ہیں -تو؟ 9:15، رے یعنی Santoya ATM پر تھا. ہاں. تو سوال، کیا وہ 9:16 بجے کر رہا تھا؟ کچھ میں 9 ملیمیٹر -Shooting. شاید وہ سپنر دیکھا. یا اس کے ساتھ کام کر رہا تھا. رکو. ایک واپس چلے جاؤ. تم کیا دیکھ رہے ہو؟ فل سکرین ان کے چہرے لاو. -His شیشے. عکاس-ہے. -یہ Nuevitas بیس بال ٹیم ہے. یہ ان علامت (لوگو) ہے. -اور وہ بات کر رہا ہے جو کہ جیکٹ پہنے ہوئے ہے. [END پلے بیک] DAVID MALAN: ٹھیک ہے. یہ CS50 ہے اور یہ تھوڑا سا زیادہ ہے کے [اشراوی] جس کے ساتھ تم مسئلہ کے ساتھ dabbling چار. آج ہم ایک چھوٹا سا زیادہ دیکھنے کے لئے شروع دل کی گہرائیوں سے اشارہ بلایا ان چیزوں کو، یہ ہے اگرچہ جس ایک خوبصورت جادو موضوع، یہ جا رہا ہے کہ باہر کر دیتا ہے ذرائع ہونا ہے جس سے ہم کی تعمیر اور جمع شروع کر سکتے ہیں بہت زیادہ پیچیدہ پروگراموں. لیکن ہم نے گزشتہ بدھ کے روز یہ کیا پہلے کچھ claymation کی راہ کی طرف سے. تو یہ، یاد، ہے Binky کی اور ہم نے اسے استعمال کیا جاتا ہے پروگرام پر ایک نظر لینے کے لئے کہ سچ میں کچھ دلچسپ نہیں کیا، لیکن یہ ایک چند مسائل ظاہر کیا. تو کیوں نہ ہم چل نہیں کرتے، آج شروع کرنے کے لئے فوری طور پر ان اقدامات میں سے چند ایک کے ذریعے، انسان کی شرائط میں کشید کرنے کی کوشش کریں بالکل وہی جو یہاں کیا ہو رہا ہے اور کیوں یہ برا ہے، اور پھر اس پر منتقل اور اصل میں کچھ کی تعمیر شروع اس ٹیکنالوجی کے ساتھ؟ تو ان سے پہلے تھے اس پروگرام میں دو لائنیں اور عام آدمی کی شرائط، میں کیا ان دو لائنوں کر رہے ہیں؟ معقول حد تک آرام دہ اور پرسکون ہے کسی ایسے شخص کیا سکرین پر اعلان کر دیا ہے کے ساتھ؟ کر ان دو لائنوں کیا ہیں؟ یہ سب نہیں ہے کہ ایک ہفتے سے مختلف، لیکن کچھ نئے خصوصی علامت ہے. جی ہاں؟ وہاں واپس. سامعین: اشارہ قرار دیا؟ DAVID MALAN: پھر سے کہو؟ سامعین: اشارہ قرار دیا؟ DAVID MALAN: اعلان اشارہ اور کی تھوڑا سا زیادہ اس کو بہتر بنانے. سامعین: [اشراوی] ایڈریس X اور Y تو. DAVID MALAN: اور پھر حل. تو خاص طور پر ہم کیا کر رہے ہیں ہم دو متغیر کا اعلان کر رہے ہیں. ان متغیرات میں، اگرچہ، جا رہے ہیں قسم int سٹار، کی ہو جو مزید خاص طور پر کا مطلب ہے انہوں نے دکان پر جا رہے ہیں ایک int کا پتہ، بالترتیب، X اور Y. اب کسی بھی اقدار موجود ہیں؟ ان میں کسی بھی اصل پتے موجود ہیں وقت میں اس نقطہ پر دو متغیر؟ نہیں. یہ صرف ردی کی ٹوکری میں اقدار نام نہاد ہے. آپ اصل میں ایک تفویض نہیں کرتے ہیں تو RAM میں تھا جو کچھ بھی متغیر، پہلے سے zeros کے ساتھ بھرنے کے لئے کی جا رہی ہے اور لوگ ان متغیرات میں سے دونوں. لیکن ہم ابھی تک نہیں جانتے وہ کیا ہیں اور یہ کہ کیوں Binky کی کی کلید ہونے جا رہا گزشتہ ہفتے اس کے سر کھو. تو اس claymation کی تھی اس کا اوتار جس کے تحت آپ کو صرف دو متغیر ہے، مٹی کی بہت کم سرکلر ٹکڑے ٹکڑے، کہ متغیر ذخیرہ، لیکن کے طور پر کر سکتے ہیں لپیٹ تیر کا مشورہ، وہ اصل کی طرف اشارہ نہیں کر رہے ہیں کہیں SE فی جانا. تو پھر ہم اس لائن تھا، اور اس میموری کے لئے تھا نئے گزشتہ ہفتے، malloc کے صرف ایک فینسی طریقہ ہے جس میں تین ہلاک، آپریٹنگ سسٹم کہہ، لینکس کے یا میک OS یا ونڈوز، ارے، مجھے کچھ یاد دینے، اور آپ کو سب کو بتانا آپریٹنگ سسٹم میموری کے لئے اس سے پوچھ جب کیا ہے. یہ کیا دیکھ بھال کرنے والا نہیں ہے تم اس کے ساتھ کیا کرنے جا رہے لیکن آپ کے آپریٹنگ بتانے کی ضرورت نہیں کیا malloc کے راہ کی طرف سے نظام. جی ہاں؟ سامعین: کتنا؟ DAVID MALAN: کتنا؟ کتنا بائٹس میں، اور اسی طرح، اس، ایک بار پھر، ایک contrived مثال، صرف، کہہ رہا ہے مجھے ایک int کے سائز دے. ایک int اب، سائز چار بائٹس یا 32 بٹس ہے. تو اس کی صرف ایک طریقہ ہے کہہ، ارے، آپریٹنگ سسٹم، مجھے یاد کے چار بائٹس دے میں نے اپنے کو ضائع کرنے میں استعمال کر سکتے ہیں، اور خاص طور پر، کیا کرتا ہے احترام کے ساتھ malloc کے واپسی چار بائٹس کے اس حصہ کرنے کے لئے؟ سامعین: پتہ؟ DAVID MALAN: ایڈریس. چار بائٹس کے اس حصہ کا پتہ. بالکل. اور تو ہے کہ بالآخر ذخیرہ رہا ہے ہم واقعی نہیں ہے یہی وجہ ہے X میں اور یہ کہ دیکھ بھال کیا ہے کہ کی تعداد یہ ox1 یا ox2 چاہے ایڈریس، ہے یا کسی خفیہ شش اعشاری ایڈریس. ہم صرف pictorially کا پرواہ اس متغیر X اب یہ ہے کہ میموری کے اس حصہ کی طرف اشارہ. تیر تصویریں تاکہ ایک پوائنٹر کی نمائندگی کرتا ہے، یا مزید خاص طور پر، ایک میموری ایڈریس. لیکن ایک بار پھر، ہم عام طور پر کی پرواہ نہیں کرتے ان اصل پتے ہیں. اب، اس لائن کا کہنا ہے کہ کیا عام آدمی کی شرائط میں؟ سٹار ایکس 42 نیم وقفہ ہو جاتا ہے. اس کا کیا مطلب ہے؟ تم جانا چاہتے ہو؟ اپنی گردن فیرنا نہیں. سامعین: ایکس کا پتہ 42 ہے. DAVID MALAN: ایکس کا پتہ 42 ہے. بالکل نہیں. تو قریب، لیکن کافی نہیں، کیونکہ وہاں اس X prefixing کی ہے کہ ایک ستارہ. تو ہم نے ایک تھوڑا سا موافقت کی ضرورت ہے. جی ہاں؟ سامعین: قیمت اس پوائنٹر X 42 ہے کی طرف اشارہ ہے. DAVID MALAN: ٹھیک ہے. پوائنٹر X ہے کہ قیمت 42،، کا کہنا ہے کہ کرنے کی اجازت دینا گا طرف اشارہ کرتے ہوئے، یا، ایک ستارہ ایک اور طریقہ ڈال X جو پتے پر جائیں، کا کہنا ہے کہ 1 آکسفورڈ چاہے، ایکس میں ہے سٹریٹ یا 33 آکسفورڈ سٹریٹ یا ox1 یا ox33، جو ، عددی پتہ ہے کہ سٹار ایکس ایکس کے محولہ لقب ضبطی ہے. تو اس پتے پر جائیں اور پھر وہاں تعداد 42 ڈال. تو ہو جائے گا ایک کہہ رہے ہیں کہ کے برابر راہ. تو ہے کہ سب ٹھیک ہے اور پھر ہم تصویر کی نمائندگی کریں گے ہم نے مندرجہ ذیل اضافہ کر دیا ہے جہاں چار کے اس حصہ 42 ، دائیں ہاتھ کی طرف پر بائٹس لیکن چیزیں ٹیڑھا چلے گئے جہاں اس لکیر تھی اور Binky آن کے سر کھولے اس نقطہ پر دور، بری چیزیں جب ہونے کی وجہ سے آپ ردی کی ٹوکری میں اقدار dereference ہے جعلی dereference ہے آپ یا اشارہ، اور میں باطل کا کہنا ہے کہ کیونکہ میں اس نقطہ پر کہانی، Y کے اندر کیا ہے؟ بنیاد Y کی قدر کیا ہے گزشتہ چند اقدامات پر؟ جی ہاں؟ وہ کیا ہے؟ سامعین: ایک ایڈریس. DAVID MALAN: ایک ایڈریس. یہ ایک ایڈریس ہونا چاہئے لیکن میں نے اس سے initialized ہے؟ تو میں نے ابھی تک نہیں ہے. تو وہاں میں ہونا معلوم ہے؟ یہ کچھ ردی کی ٹوکری کی قیمت ہے. یہ صفر سے کسی بھی ایڈریس ہو سکتا ہے 2 ارب آپ RAM کے دو gigs ہے تو، یا صفر 4 ارب کے لئے آپ کو ہے تو RAM کے چار گیگا بائٹس. یہ کچھ ردی کی ٹوکری کی قیمت ہے لیکن مسئلہ یہ ہے آپریٹنگ سسٹم ہے، یہ آپ کو نہیں دیا ہے میموری کے اس حصہ خاص طور پر آپ کو جانے کی کوشش کر رہے ہیں کہ، یہ عام طور پر کیا جا رہا ہے کی وجہ سے ہم ایک انقطاع غلطی کے طور پر دیکھا ہے. تو حقیقت میں، تم میں سے کوئی ہے جو دفتری اوقات میں مسائل پر جدوجہد یا مسائل میں ہے کہ زیادہ ہے عام طور پر پتہ لگانے کی کوشش کر کے ساتھ انقطاع غلطی، کہ عام طور پر مطلب یہ ہے کہ تم میں سے ایک طبقہ کو چھو رہے ہیں آپ نہیں ہونا چاہئے کہ میموری. آپ کو میموری کو چھو رہے ہیں کہ آپریٹنگ سسٹم نہیں ہے یہ ہے کہ آیا، آپ کو چھو کرنے کی اجازت آپ کی صف میں بہت دور جا کر یا چاہے، اب شروع آپ کو چھو رہے ہیں کی وجہ سے ہے صرف کچھ ردی کی ٹوکری کی قیمت ہے کہ میموری. تو یہاں سٹار ایکس کر جانچ رویے کی طرح. تم نے اسے مشکلات کی وجہ سے کبھی نہیں کرنا چاہیے ، پروگرام صرف کریش ہوا جا رہا ہے کر رہے ہیں، تم کہہ رہے ہیں کیونکہ، اس پتے پر جائیں اور آپ کو کوئی اندازہ نہیں ہے جہاں اس ایڈریس اصل میں ہے. تو آپریٹنگ سسٹم کا امکان ہے آپ کے پروگرام کریش ہوا جا رہا نتیجے کے طور پر اور بے شک، ہے کیا کرو وہاں ہوا. تو بالآخر، Binky آن مقرر اس کے ساتھ مسئلہ. اس پروگرام تو خود ناقص تھی. لیکن آپ کی طرح آگے بڑھانے تو اور اس کی بجائے اس لائن پر عمل، Y صرف X برابر کا مطلب جو کچھ بھی ایڈریس ایک ایکس ہے، بھی Y میں ڈال دیا. اور اس طرح pictorially کا، ہم نے دو تیر کے ساتھ اس کی نمائندگی X اور Y کی طرف اشارہ سے ایک ہی جگہ پر. تو semantically بنانا، X برابر ہے Y کرنے کے لئے ان دونوں کی وجہ سے اسی ذخیرہ کرنے ہیں ایڈریس، لہذا، 42 کی طرف اشارہ اور اب، جب آپ کا کہنا ہے کہ ایک ستارہ Y،، Y میں پتے پر جائیں یہ ایک دلچسپ ضمنی اثر ہے. تو Y میں ایڈریس ہے X میں پتے کے طور پر ایک ہی بات. اگر ایسا ہے تو آپ کو پتہ پر جانے کا کہنا ہے اور Y میں 13 کی قیمت کو تبدیل کرنے، جو کسی اور متاثر ہوتا ہے؟ ایکس، نقطہ D، تو بات کرنے کے لئے ہے کے طور پر اچھی طرح سے متاثر کیا جانا چاہئے. اور بے شک، کہ کس طرح نک اس تصویر متوجہ claymation کی میں بالکل تھا. ہم پوائنٹر کی پیروی اگرچہ Y، ہم ایک ہی جگہ میں ختم اور اسی طرح ہم پرنٹ کرنے کے لئے تھے تو X یا Y کی pointee باہر، تو ہم 13 کی قیمت دیکھ کر کرے گا. اب، میں pointee ہو کا کہنا ہے کہ ویڈیو کے ساتھ مسلسل. پروگرامرس، کرنے کے لئے میری علم، اصل میں کبھی نہیں لفظ pointee کہنا، اشارہ کیا جاتا ہے جو میں، لیکن مستقل مزاجی کے لئے ویڈیو کے ساتھ، احساس کہ تھا کہ تمام ہے اس صورت حال میں مطلب. claymation کی پر تو کوئی سوالات یا اشارہ یا malloc کے ابھی تک؟ نہیں؟ بالکل ٹھیک. تو مزید بغیر ado کے، ایک نظر ڈالیں یہ اصل میں ہے جہاں میں کچھ وقت کے لئے استعمال کیا گیا. تو ہم نے اس CS50 لائبریری پڑا ہے کہ ان افعال میں سے سب ہے. ہم،، میں GetInt GetString کی ایک بہت استعمال کیا ہے شاید پہلے GetLongLong میرے pset میں ایک یا اس، لیکن اصل میں کیا چل رہا ہے؟ ٹھیک ہے، ایک فوری نظر ڈالیں پروگرام میں ہڈ کے نیچے ہے کہ ہم آپ CS50 دے یہی وجہ ہے کی حوصلہ افزائی لائبریری، اور بے شک گزشتہ ہفتے کے طور پر، ہم ان لینے شروع کر دیا تربیت پہیوں دور. تو یہ اب کے مطابق ہے کے پوسٹ مارٹم کی کس چل رہا ہے CS50 لائبریری کے اندر، اب ہم آگے بڑھ رہے ہیں شروع ہو جائے گا، اگرچہ اس سے دور سب سے زیادہ پروگراموں کے لئے. تو یہ 0 اگر scanf نامی ایک پروگرام ہے. یہ انتہائی مختصر ہے. یہ صرف ان لائنوں ہے، لیکن یہ ایک تقریب میں بلایا scanf کا متعارف کرایا ہم اصل میں دیکھنے کے لئے جا رہے ہیں CS50 لائبریری کے اندر ایک لمحے، ایک تھوڑا سا مختلف شکل میں ہی سہی. 16 لائن پر لہذا اس پروگرام ایک متغیر X قرار دیا ہے. تو مجھے ایک int کے لئے چار بائٹس دے. یہ صارف سے کہہ دیا گیا ہے تعداد براہ مہربانی، اور پھر یہ ایک دلچسپ لائن ہے اصل میں گزشتہ ہفتے ایک دوسرے کے ساتھ تعلقات اور یہ. اگر scanf، اور پھر یہ ایک لیتا نوٹس شکل سٹرنگ، صرف printf طرح، میں نے ایک int کا مطلب ہے، اور اس کے بعد یہ ایک لیتا ہے ایک چھوٹا سا لگ رہا ہے جس دوسری دلیل Funky کی. یہ ایمپرسینڈ X ہے، اور یاد کرنے کے لئے، ہم صرف اس بار گزشتہ ہفتے دیکھا. ایمپرسینڈ X نمائندگی کرتا ہے؟ ایمپرسینڈ C میں کیا کرتا ہے؟ جی ہاں؟ سامعین: کا پتہ. DAVID MALAN: کا پتہ. تو اس کے برعکس ہے سٹار آپریٹر کی، اسٹار آپریٹر کا کہنا ہے کہ جبکہ، کے لئے جانا اس پتے، ایمپرسینڈ آپریٹر پتہ، کا کہنا ہے کہ اس متغیر کا پتہ، اور تو اس کی وجہ سے، کی کلید ہے زندگی میں اگر scanf کا مقصد صارف کی اسکین کرنا ہے بورڈ کی طرف سے ان پٹ، جو کچھ بھی پر منحصر ہے وہ اقسام، اور پھر اس صارف کی ان پٹ پڑھ ایک متغیر میں، لیکن ہم گزشتہ دو ہفتوں میں دیکھا کہ سویپ تقریب کہ ہم لاگو کرنے کے لئے سہولت کی کوشش صرف ٹوٹ گیا تھا. سویپ تقریب کے ساتھ یاد ہے کہ، ہم صرف ints کے طور پر A اور B کا اعلان کر دیا ہے، ہم نے کامیابی سے تبادلہ کیا تبدیل کردہ لسٹ کے اندر دو متغیر صرف دودھ اور OJ کے ساتھ پسند، لیکن تبدیل کردہ لسٹ، واپس کے طور پر جلد کے طور پر احترام کے ساتھ نتیجہ کیا نکلا X اور Y کے لئے، اصل اقدار؟ کچھ بھی نہیں. جی ہاں. کیونکہ کچھ بھی نہیں، اس وقت ہوا سویپ، صرف اپنے مقامی کاپیاں تبدیل ، تمام کہنا ہے جو اس وقت، جب ہم نے دلائل میں گزر گیا افعال کے لئے، ہم ہیں صرف ان دلائل کی کاپیاں گزر. تم اس کے ساتھ کیا کر سکتے ہیں آپ کو ان کے ساتھ کرنا چاہتے ہیں جو کچھ بھی، لیکن وہ کوئی ضرورت کے لئے جا رہے ہیں اصل اقدار پر اثر. تو یہ آپ تو مسئلہ ہے scanf کی طرح ایک تقریب کرنا چاہتے ہیں زندگی میں، جس کا مقصد کو اسکین کرنے کے لئے ہے بورڈ کی طرف سے صارف کی ان پٹ اور پھر تو، خالی میں بھرنے بات یہ ہے کہ، X کی طرح ایک متغیر دے ایک قدر، میں تھے کیونکہ اگر صرف scanf پر ایکس کو منتقل کرنے، آپ نے گزشتہ کی منطق پر غور کریں تو ہفتے، scanf کا یہ چاہتا ہے جو کچھ بھی کر سکتے ہیں ایکس کی ایک کاپی کے ساتھ، لیکن یہ نہیں کر سکتا ہم دے جب تک مستقل طور پر ایکس تبدیل ، تو بات کرنے کی، ایک ایسا خزانہ کا نقشہ اگر scanf ایکس جگہ پرتیک جہاں، جس کے تحت ہم ایسا ایکس کا پتہ میں منتقل اگر scanf وہاں اور اصل تبدیلی جا سکتے ہیں X کی قدر. اور یقینا، تمام اس پروگرام کرتا ہے میں اپنے منبع میں نے scanf 0، بنا دیں تو 5M ڈائریکٹری، اگر scanf 0 بنانے، ڈاٹ سلیش scanf کا، تعداد 50 براہ مہربانی، 50 کے لئے شکریہ. تو یہ، تمام دلچسپ ہے کہ نہیں ہے لیکن واقعی کیا ہو رہا ہے جیسے ہی میں نے فون کے طور پر ہے ، یہاں X کی قدر scanf کا مستقل طور پر تبدیل کر دیا گیا کیا جا رہا ہے. اب، یہ اچھا لگتا ہے اور اچھا، اور میں حقیقت، اس ہم واقعی کی ضرورت نہیں ہے کی طرح لگتا ہے تمام اب میں CS50 لائبریری. مثال کے طور پر، چلانے یہاں اس ایک بار سے زیادہ. مجھے ایک دوسرے کے لئے دوبارہ کھول دو. کی ایک بڑی تعداد کی کوشش کرتے ہیں اور براہ مہربانی بجائے پہلے کی طرح 50 کہہ کے، صرف کوئی کہتے ہیں. ٹھیک ہے، کہ ایک چھوٹا سا عجیب ہے. ٹھیک ہے. یہاں اور کچھ قسم کی معمولی ہدایات. تو اس کے لئے نہیں لگ رہا ہے غلط حالات کو ہینڈل. تو ہم شروع کم از کم کرنے کی ضرورت ہے کچھ غلطی چیکنگ انہوں نے مزید کہا صارف ہے کہ بات کو یقینی بنانا 50 کی طرح ایک حقیقی تعداد میں ٹائپ، بظاہر ٹائپ الفاظ کی وجہ سے مشکلات کے طور پر پتہ نہیں ہے، لیکن یہ شاید ہونا چاہئے. اب ہے کہ اس ورژن پر نظر آتے ہیں میری کوشش GetString کے reimplement کرنے. اگر scanf یہ سب ہے تو فعالیت، میں تعمیر ہم کیوں ان کے ساتھ dabbling کیا گیا ہے GetString طرح تربیت پہیوں؟ ٹھیک ہے، یہاں شاید میری اپنی ہے GetString کی سادہ ورژن جس کے تحت ایک ہفتے پہلے، میں نے کہا ہے ہو سکتا ہے، مجھے ایک تار دے اور اسے بفر کال. آج، میں نے صرف شروع کرنے کے لئے جا رہا ہوں ، چار ستارہ، جس، یاد کہہ یہ صرف مترادف ہے. یہ scarier کے لگتا ہے لیکن یہ ہے بالکل وہی بات ہے. تو مجھے ایک متغیر کہا جاتا بفر دے کہ ایک تار ذخیرہ کرنے کے لئے جا رہا ہے، ، صارف سٹرنگ بتاو اور اس کے بعد، پہلے کی طرح، اس سبق قرضے کرنے کی کوشش کریں اگر scanf ٪ s کو اس وقت اور پھر بفر میں منتقل. اب، ایک فوری وویک چیک. میں کیوں نہیں کہہ رہا ہوں ایمپرسینڈ اس وقت بفر؟ گزشتہ مثال سے اندازہ. سامعین: چار سٹار ایک پوائنٹر ہے. DAVID MALAN: بالکل، اس وقت، چار کیونکہ سٹار، پہلے سے ہی ایک پوائنٹر، ایک پتہ ہے وہاں کیا جا رہا ہے کہ اسٹار کی تعریف کی طرف سے. اور scanf ایک ایڈریس کی توقع رکھتا ہے تو، یہ صرف بفر میں منتقل کرنے کے لئے کافی ہے. میں ایمپرسینڈ بفر کہنے کی ضرورت نہیں. شوقین کے لئے، آپ کر سکتے تھے اس طرح کچھ کرنا. یہ مختلف معنی ہوگا. یہ آپ کو ایک پوائنٹر دے گی اصل میں ہے جس میں ایک پوائنٹر، کرنے کے لئے C میں، لیکن اس کے لئے ایک درست بات اب، اسے سادہ رکھیں اور مسلسل کہانی رکھنے. میں صرف میں منتقل کرنے جا رہا ہوں بفر اور یہ صحیح ہے. مسئلہ اگرچہ یہ ہے. مجھ سے آگے بڑھو اور اس کے چلانے دو اس کی تالیف کے بعد پروگرام. اگر scanf 1 بنائیں. ارے، میرے سنکلک کی میری غلطی کو پکڑنے. مجھے ایک دوسری دو. بجنا. کی اگر scanf-1.c کا کہنا ہے کہ. ٹھیک ہے. ہم وہاں جا رہے. مجھے اس کی ضرورت ہے. CS50 کی شناخت مختلف ہے ترتیب کی ترتیبات کہ اپنے خلاف آپ کی حفاظت. میں کی طرف سے ان کو غیر فعال کرنے کی ضرورت ہے دستی طور پر اس وقت بجنا چلانے. تو سٹرنگ کریں. میں آگے بڑھو اور ٹائپ کرنے جا رہا ہوں میرا پسندیدہ ہیلو دنیا میں. شہوت انگیز null، ٹھیک ہے. یہی ہے جو میں ٹائپ کیا نہیں ہے. تو یہ کی نشاندہی ہے کچھ غلط ہونے کی وجہ سے. مجھے آگے بڑھو اور ٹائپ کریں ایک بہت طویل سٹرنگ میں. شہوت انگیز null کے لئے شکریہ اور مجھے نہیں معلوم تو میں یہ کریش کرنے کے قابل ہو جا رہا ہوں. کی ایک چھوٹی سی کاپی کی کوشش کرتے ہیں چسپاں کر دیں اور اس کی مدد کرتا ہے کو دیکھنے کے. بس اس کی ایک بہت چسپاں کر دیں. یہ یقینی طور پر ایک بڑا ہے معمول سے زیادہ سٹرنگ. صرف واقعی یہ لکھتے ہیں. نہیں. لعنت ہے. حکم نہیں ملا. تاکہ غیر متعلقہ ہے. میں چسپاں کی وجہ سے ہے کچھ بری حروف، لیکن یہ باہر کر دیتا ہے کام کرنے کے لئے نہیں جا رہا ہے. ، کیونکہ یہ ایک بار سے زیادہ کی کوشش کرتے ہیں ہم اصل میں یہ کریش تو یہ زیادہ مزہ ہے. یہ ٹائپ کریں اور اب، میں ہوں ایک بہت طویل سٹرنگ کاپی کرنے کے لئے جا رہا اور اب تو دیکھتے ہیں ہم اس بات کو کریش کر سکتے ہیں. میں خالی جگہوں لپ اور نوٹس نئی لائنوں اور سیمیکالن اور تمام میں Funky حروف. درج. اور اب نیٹ ورک صرف سست کیا جا رہا ہے. میں واضح طور پر، بہت طویل کمانڈ وی نیچے منعقد. لعنت ہے! حکم نہیں ملا. ٹھیک ہے. ویسے، نقطہ ہے بہر حال مندرجہ ذیل. تو اصل میں کیا ہو رہا ہے اس اعلامیہ کے ساتھ 16 لائن پر چار ستارہ بفر کی؟ تو میں نے حاصل کیا ہوں میں نے ایک پوائنٹر اعلان جب؟ میں ہو رہی ہے سب ایک چار بائٹ قیمت ہے بفر بلایا، لیکن اس کے اندر کیا ہے فی الحال؟ یہ کچھ ردی کی ٹوکری کی قیمت ہے. کسی بھی وقت کی وجہ سے آپ کو ایک متغیر کا اعلان C میں، یہ صرف کچھ ردی کی ٹوکری کی قیمت ہے، اور ہم شروع کر رہے ہیں اس حقیقت سے زیادہ سفر. اب، میں scanf بتا جب، اس پتے پر جائیں اور میں جو کچھ بھی صارف اقسام ڈال. میں صارف کی اقسام اگر ہیلو دنیا، اچھی طرح سے، میں یہ کہاں رکھنی چاہئیے؟ بفر ایک ردی کی ٹوکری کی قیمت ہے. تو ہے کہ ایک تیر کی طرح قسم کی ہے کہ جہاں جانتا ہے جو طرف اشارہ ہے. ہو سکتا ہے کہ اس کی طرف اشارہ ہے یہیں میری یاد میں. اور اس طرح جب صارف ہیلو دنیا میں اقسام، پروگرام ڈال کرنے کے لئے کی کوشش کرتا ہے سٹرنگ ہیلو دنیا الٹا سلیش 0 میموری کے اس حصہ میں. لیکن زیادہ امکان کے ساتھ، لیکن واضح طور پر نہیں 100٪ امکانات، کمپیوٹر پھر کریش ہوا جا رہا ہے پروگرام نہیں ہے کیونکہ میموری کو چھو کرنے کی اجازت دی جانی چاہئے. تو مختصر میں، اس پروگرام ہے بالکل اس کی وجہ سے ناقص. میں بنیادی طور پر کام نہیں کر رہا ہوں؟ کیا اقدامات میں، جیسا کہ لپ ہے ہم پر Binky کی پہلی مثال کے طور پر لپ؟ جی ہاں؟ سامعین: میموری مختص کرنے؟ DAVID MALAN: میموری مختص. میں واقعی نہیں مختص ہے اس سٹرنگ کے لئے کسی بھی میموری. تو ہم طریقوں میں سے ایک جوڑے میں اسے درست کر سکتے ہیں. ایک، ہم یہ آسان رکھ سکتے ہیں اور حقیقت میں، اب آپ ہیں ایک blurring کے دیکھنے کے لئے شروع کرنے کے لئے جا کیا کے درمیان لائنوں کی ایک سرنی، ایک تار کیا ہے، کیا ہے چار ستارہ حروف کے کیا ایک سرنی، ہے ہے. یہاں ایک دوسری مثال ہے ڈور اور نوٹس شامل تمام میں لائن پر کیا ہے 16 کہنے کی بجائے، ہے کہ بفر ایک چار ہونے جا رہا ہے سٹار، میموری کا ایک حصہ کے لئے ایک پوائنٹر، مجھے بہت مستعدی دینے جا رہا ہوں 16 حروف کے لئے اپنے آپ کو ایک بفر، اور حقیقت میں، آپ واقف ہیں تو اصطلاح بفرن کے ساتھ، شاید ویڈیوز کی دنیا سے، ایک ویڈیو بفرن، بفرن ہے جہاں، بفرن. ویسے، کنکشن یہاں کیا ہے؟ یو ٹیوب سے اچھی طرح، کے اندر اور ویڈیو کے کھلاڑیوں کے اندر عام طور پر ایک صف ہے 16 سے بھی بڑا ہے. یہ سائز میں سے ایک کی ایک سرنی ہو سکتا ہے میگا بائٹ، شاید 10 میگا بائٹ، اور اس صف میں اپنے براؤزر کرتا ہے ، بائٹس کی ایک پوری چڑھانے ڈاؤن لوڈ، اتارنا کے میگا بائٹ کے پورے گچرچھی ویڈیو، اور ویڈیو پلیئر، YouTube کی یا جو بھی ہے، شروع ہوتا ہے اس صف سے بائٹس پڑھنے، اور کسی بھی وقت آپ کو دیکھ کر لفظ بفرن، بفرن، کہ کھلاڑی ہے کا مطلب اس صف کے آخر میں ہو. نیٹ ورک نہیں ہے تاکہ سست ہے مزید بائٹس کے ساتھ صف بھرا اور تو آپ بٹس سے باہر ہیں صارف کو ظاہر کرنے کے لئے. تو بفر ایک مناسب اصطلاح ہے کہ میں یہاں ہے یہ صرف ایک سرنی، میموری کا ایک حصہ ہے. یہ اسے درست کریں گے یہ باہر کر دیتا ہے کیونکہ آپ arrays کے علاج کر سکتے ہیں اگرچہ کے طور پر وہ بھی بفر اگرچہ، پتے ہیں صرف ایک علامت، یہ ایک ہے ہے حروف کی ترتیب، بفر، کہ میرے لئے مفید ہے، پروگرامر، آپ کے ارد گرد اس کے نام منتقل کر سکتی ہیں یہ تھے کے طور پر اگرچہ ایک پوائنٹر، کے طور پر اگرچہ ایک حصہ کا پتہ تھے 16 حروف کے لئے میموری کا. کا کہنا ہے کہ کرنے کے لئے ہے تو، میں منتقل کر سکتے ہیں بالکل اگر scanf کہ لفظ اور تو اب، میں اس پروگرام بنا دیں تو، اگر scanf 2 بنانے، ڈاٹ سلیش scanf 2، اور میں ٹائپ ہیلو دنیا، ، کہ ہیں وقت درج ہمم، کیا ہوا؟ سلک کریں. میں نے کیا غلط کیا؟ ہیلو دنیا، بفر. ہیلو دنیا. آہ، میں نے یہ کیا کر رہی ہے جانتے ہیں. ٹھیک ہے. تو یہ پڑھ رہا ہے پہلی خلائی تک. تو صرف ایک لمحے کے لئے دھوکہ دو اور میں صرف کچھ ٹائپ کرنا چاہتا تھا کا کہنا ہے کہ واقعی طویل یہ ایک طویل سزا ہے جیسے ہے کہ ایک، دو، تین، چار، پانچ، چھ، سات، آٹھ، نو، 10، 11، 12، 13، 14، 15، 16. ٹھیک ہے. یہ واقعی ایک طویل سزا ہے. تو اس کی سزا ہے زیادہ 16 حروف اور اس لئے میں، درج کریں مارا جب کیا ہونے جا رہا ہے؟ ٹھیک ہے، اس صورت میں کہانی، میں اعلان کیا تھا بفر اصل میں ایک صف ہونے کے جانے کے لئے 16 حروف کے لئے تیار. تو ایک، دو، تین، چار، پانچ، چھ، سات، آٹھ، نو، 10، 11، 12، 13، 14، 15، 16. تو 16 حروف، اور اب، جب میں یہ ایک طویل ہے جیسے کچھ میں پڑھا سزا، کیا ہونے جا رہا ہے میں اس میں پڑھنے کے لئے جا رہا ہوں کہ ایک طویل ہے ایس ای این ٹی ای این سی ای، سزا. تو اس نے جان بوجھ کر ہے ایک بری بات یہ ہے کہ میں آگے لکھنا رکھنے میری سرنی کی حدود، میرے بفر کی حدود سے باہر. میں خوش قسمت اور پروگرام حاصل کر سکتے ہیں دیکھ بھال چل رہا ہے پر رکھنے کے لئے اور نہیں کرے گا، لیکن عام طور پر، اس بات بے شک میرا پروگرام کریش گا، اور اس میں ایک مسئلے سے ہے میری میں قدم کوڈ حدود سے باہر اس صف کی، کیونکہ مجھے پچھلی رات یہ تو نہیں جانتے ضروری کریش ہوا جا رہا یا میں صرف خوش کرنے کے لئے جا رہا ہوں تو. تو یہ مسئلہ ہے کیونکہ اس صورت میں، یہ کام کرنے لگتا ہے اور اگرچہ، یہاں قسمت للچانا دو IDE بہت تھوڑا سا برداشت کرنے لگتا ہے of-- ہم وہاں جا رہے. آخر میں. لہذا میں نے یہ دیکھ سکتے ہیں کہ صرف ایک ہی ہوں. تو میں صرف مزہ ٹائپنگ کی ایک بہت تھا ایک بہت طویل اصل جملہ باہر یہ یقینی طور پر حد سے تجاوز کر کہ 16 بائٹس، کیونکہ مجھے پچھلی رات اس پاگل طویل کثیر لائن میں ٹائپ جملہ اور اس کے بعد کیا ہوا محسوس. پروگرام یہ پرنٹنگ کی کوشش اور پھر ایک انقطاع غلطی ہے اور انقطاع گناہ ہے جب کچھ اس طرح ہوتا ہے اور آپریٹنگ سسٹم کا کہنا ہے کہ کوئی، کہ میموری کو چھو نہیں سکتے. ہم کو مارنے کے لئے جا رہے ہیں مکمل طور پر پروگرام. تو یہ مشکلات لگتا ہے. میں نے پروگرام ہے جس کے تحت بہتر ہے کم از کم، کچھ یاد ہے لیکن یہ محدود لگ رہے ہو گے حاصل کرنے کے لئے تقریب GetString کچھ تبدوست لمبائی 16 کی ڈور. آپ کو اب کی حمایت کرنا چاہتے ہیں تو 16 حروف سے زیادہ کے طور پر سزائیں، آپ کیا کرتے ہیں؟ ٹھیک ہے، تم کو بڑھا سکتے ہیں 32 کے لیے اس بفر کے سائز یا اس طرح کے مختصر لگتا ہے. کیوں ہم صرف نہ کرو یہ 1،000 لیکن واپس دھکا. intuitively پر کا رد عمل کیا ہے صرف بنانے کی طرف سے اس مسئلہ سے گریز 1،000 حروف کی طرح، بڑے اپنے بفر؟ اس طرح جو GetString کو لاگو کرنے کی طرف سے. یہاں اچھا ہے یا برا؟ جی ہاں؟ سامعین: آپ کو ایک بہت پابند تو جگہ کی اور آپ اس کا استعمال نہیں کرتے، پھر آپ کو اس کی جگہ reallocate نہیں کر سکتے ہیں. DAVID MALAN: بالکل. آپ ایسا نہیں کرتے insofar کے طور پر اگر یہ بیکار ہے اصل میں ان بائٹس کی 900 کی ضرورت ہے اور ابھی تک آپ کے لئے پوچھ رہے ہیں ویسے بھی میں کل 1،000، آپ کو صرف پر زیادہ میموری خرچ کر رہے ہیں آپ کی ضرورت کے مقابلے میں صارف کے کمپیوٹر، اور سب کچھ کے بعد آپ نے پہلے ہی سامنا کرنا پڑا ہے زندگی میں ہیں جب کہ پروگرام کے بہت سے چل رہا ہے اور وہ، میموری کے بہت سے اپ کھا رہے ہیں یہ اصل میں کارکردگی پر اثر انداز کر سکتے ہیں اور صارف کے تجربے کمپیوٹر پر. اس طرح اس طرح ایک آلسی حل ہے، اس بات کا یقین کے لئے، اور اس کے برعکس، یہ نہ صرف بیکار ہے، کیا مسئلہ ہے اب میں اپنے بفر بنانے یہاں تک کہ اگر، رہتا ہے 1،000؟ جی ہاں؟ سامعین: سٹرنگ کی لمبائی 1،001 ہے. DAVID MALAN: بالکل. آپ سٹرنگ کی لمبائی 1،001 ہے تو، آپ کو عین مطابق ایک ہی مسئلہ ہے، اور میری دلیل کی طرف سے، میں کروں گا صرف اس صورت میں یہ 2000 ء بنانے، لیکن آپ میں نہیں جانتے یہ ہونا چاہئے کتنا بڑا پیشگی، اور ابھی تک، میں نے اپنے پروگرام مرتب کرنا ہے لوگوں کو استعمال کرنے دیتا پہلے ڈاؤن لوڈ، اتارنا یہ. تو اس کے بالکل قسم ہے چیزیں CS50 لائبریری کی کوشش کرتا ہے کے ساتھ میں مدد ملے اور ہم صرف نظر آئے گا بنیادی عمل میں سے کچھ اوپر یہاں، لیکن اس CS50 ڈاٹ سی ہے CS50 IDE پر کیا گیا ہے کہ فائل ہے آپ استعمال کر رہا ہوں کہ ان تمام ہفتوں. یہ پری مرتب ہے اور آپ نے خود کار طریقے سے استعمال کیا گیا ہونے کی نوعیت کی طرف بجنا کے ساتھ ایل CS50 پرچم ڈیش، لیکن میں کے تمام کے ذریعے نیچے سکرال ان کے افعال، یہاں GetString کے ہے، اور صرف آپ کو ایک دینے کے لئے کیا کا ذائقہ، چل رہا ہے کی پر ایک فوری نظر ڈالیں رشتہ دار پیچیدگی. یہ ایک طویل سپر ہے تقریب، لیکن ہم نے نہیں کیا تمام مشکل کے بارے میں سوچنا پڑے کس طرح ڈور حاصل کرنے کے بارے میں جانے کے لئے. تو یہاں اپنی بفر اور میں ہے بظاہر اس کی ابتدا شہوت انگیز null. یہ، کورس کے، ہے چار سٹار کے طور پر ایک ہی بات، لیکن میں میں فیصلہ CS50 لائبریری پر عمل درآمد ہم جا رہے ہیں کہ اگر ، مکمل طور پر متحرک ہونا میں ایک کی کتنی بڑی پیشگی نہیں جانتے سٹرنگ صارفین کو حاصل کرنے کے لئے چاہتے ہیں کے لئے جا رہے ہیں. تو میں شروع کرنے کے لئے جا رہا ہوں صرف ایک خالی سٹرنگ کے ساتھ اور میں اس کے زیادہ سے زیادہ کی تعمیر کے لئے جا رہا ہوں میموری میں صارف سٹرنگ فٹ ہونے کے لئے ضرورت کے طور پر اور میں نہیں ہے تو کافی، میں کہنے جا رہا ہوں زیادہ میموری کے لئے آپریٹنگ سسٹم. میں نے ان کے سٹرنگ منتقل کرنے کے لئے جا رہا ہوں میموری کا ایک بڑا حصہ میں اور میں رہائی یا آزاد کرنے جا رہا ہوں میموری کی ناکافی بڑے حصہ اور ہم صرف جا رہے ہیں iteratively دیتے ایسا کرنے. تو ایک فوری نظر، یہاں صرف ایک متغیر ہے جس کے ساتھ میں ٹریک رکھنے کے لئے جا رہا ہوں میرے بفر کی صلاحیت. مجھے کتنے بائٹس فٹ کر سکتے ہیں؟ یہاں ایک متغیر (ن) کے ساتھ ہے میں رکھنے کے لئے جا رہا ہوں جس اصل میں کتنے بائٹس کی ٹریک صارف ٹائپ ہے یا یہ کہ بفر. تم سے پہلے اس کو نہیں دیکھا ہے تو، آپ وضاحت کر سکتے ہیں کہ ایک int کی طرح ایک متغیر ، نام سے پتہ چلتا ہے جس، اہستاکشرت ہے مطلب یہ غیر منفی ہے، اور کیوں کرے گا میں نے کبھی وضاحت پریشان کرنا چاہتے ہیں ایک int صرف ایک int نہیں ہے، لیکن یہ ایک اہستاکشرت int ہے؟ یہ ایک غیر منفی int ہے. [اشراوی] کیا مطلب ہے؟ سامعین: یہ رقم بیان ہے میموری کی [اشراوی] ہو سکتا ہے. DAVID MALAN: جی ہاں. اہستاکشرت میں کہتے ہیں اگر ایسا ہے تو، یہ اصل میں ہے آپ کو اضافی میموری کا ایک تھوڑا سا دینے آپ تو یہ پاگل کی طرح لگتا ہے، لیکن ، کہ اضافی میموری کا ایک تھوڑا سا ہے تم نے بہت سے کے طور پر دو بار کا مطلب ہے آپ کی نمائندگی کر سکتے ہیں اقدار، یہ ایک 0 یا 1 ہو سکتا ہے کیونکہ. تو ڈیفالٹ کی طرف سے، ایک int تقریبا ہو سکتا ہے منفی 2 ارب تمام طریقہ مثبت 2 ارب تک. وہ لوگ بڑے کی حدود ہیں، لیکن یہ اب بھی قسم کے بیکار ہے آپ کو صرف بارے میں پرواہ ہے سائز، جس میں صرف intuitively پر غیر منفی ہونا چاہئے یا مثبت یا 0، تو پھر، کیوں آپ کو 2 ارب برباد کر رہے ہیں منفی تعداد کے لئے ممکن اقدار آپ کو کبھی نہیں ان کا استعمال کرنے جا رہے ہیں؟ تو کر سکتے ہیں اہستاکشرت، اب میری INT کہہ کر 4 ارب 0 درمیان اور تقریبا ہو. تو یہاں وجوہات کی بنا پر صرف ایک int سی ہم صرف اب کے طور پر میں نہیں ملے گا اس کی بجائے ایک int ہے کیوں ایک چار کی، لیکن یہاں ہے کیا ہو رہا ہے کا خلاصہ تم میں سے، اور کچھ پر مثال کے طور پر، کا استعمال کرتے ہوئے کیا جا سکتا ہے، یہاں تک کہ pset کے چار میں fgetc تقریب یا اس کے بعد، ہم اسے دیکھ لیں گے پھر مسئلہ میں پانچ، قائم fgetc کیونکہ نام کے طور پر اچھا ہے قسم کے، کی طرح arcanely، سے پتہ چلتا ہے یہ ایک تقریب ہے کہ ، ایک کردار ہو جاتا ہے اور تو کیا بنیادی طور پر مختلف ہے ہم GetString میں کیا کر رہے ہیں کے بارے میں ہم استعمال نہیں کر رہے ہے اسی طرح میں نے scanf. ہم صرف قدم بہ قدم ساتھ creeping کر رہے ہیں جو زیادہ صارف میں ٹائپ ہے، ہم نے ہمیشہ ایک مختص کر سکتے ہیں کی وجہ سے چار، اور تو ہم نے ہمیشہ محفوظ طریقے سے کر سکتے ہیں ایک وقت میں ایک چار دیکھو، اور یہاں جادو ہونے سے شروع ہوتا. میں نیچے سکرال کرنے جا رہا ہوں اس تقریب کے وسط صرف مختصر طور پر اس تقریب کو متعارف کرانے. زیادہ سے زیادہ ایک ہے جیسے malloc کا تقریب، ہے ایک realloc تقریب جہاں realloc آپ میموری کا ایک حصہ reallocate کی اجازت دیتا اور یہ بڑے یا چھوٹے بنانے کے. اتنی لمبی کہانی مختصر کے ساتھ آج کے لئے میرے ہاتھ کی ایک لہر، کہ کیا GetString کے جانتے ہیں کر رہا ہے اس کی ترتیب ہے کی جادوئی بڑھتی ہوئی یا صارف کے طور پر بفر سکڑ اس کا یا اس سٹرنگ میں اقسام. اگر ایسا ہے تو صارف کے مختصر سٹرنگ، اس کوڈ صرف کافی مختص میموری سٹرنگ فٹ ہونے کے لئے. صارف ٹائپنگ رہتا ہے میں نے بار بار یہ کیا کے طور پر اور ایک بار پھر، ٹھیک ہے، اگر بفر کی ابتدائی طور پر اس بڑے اور پروگرام میں، احساس ایک منٹ رکو، میں جگہ سے باہر ہوں، اسے دوگنا کرنے جا رہا ہے بفر کا سائز اور پھر بفر کے سائز دوگنا اور دوہراکرن کرتا ہے کوڈ، ہم اسے یہاں پر نظر ڈالیں تو، یہ ہے صرف اس ہوشیار ایک لائنر. آپ کو اس نحو دیکھا ہے نہیں ہو سکتا ہے پہلے، لیکن آپ ایک ستارہ کے برابر ہے کا کہنا ہے کہ، یہ وہی چیز ہے کہ صلاحیت 2 مرتبہ کہہ. تو یہ صرف دگنا رکھتا بفر کی صلاحیت اور پھر realloc کہہ دینا خود کہ بہت زیادہ میموری. اب، کے طور پر ایک طرف، وہاں یہاں میں دیگر افعال ہیں ہم کسی بھی تفصیل میں نہیں نظر آئے گا کہ GetInt میں ظاہر کرنے کے لئے کے مقابلے میں دیگر، ہم GetInt میں GetString استعمال کرتے ہیں. ہم یہ نہیں ہے چیک کریں کہ شہوت انگیز null، جس میں، یاد، خصوصی قیمت ہے کچھ غلط ہو گیا ہے. ہم میموری سے باہر ہیں. بہتر ہے کے لئے چیک کریں. اور ہم نے ایک پرہری کی قیمت واپس. لیکن میں کے طور پر تبصرے کے لئے ملتوی کریں گے کیوں اور پھر ہم scanf کی اس کزن استعمال sscanf کی بلایا اور اسے باہر کر دیتا ہے کہ sscanf، یا سٹرنگ scanf کا، آپ کو لائن پر ایک نظر ڈالیں کی اجازت دیتا ہے کہ صارف میں ٹائپ کریں اور آپ کو دو ہے بنیادی طور پر اس کا تجزیہ اور میں ہوں یہاں کیا کر رہے میں sscanf کی کہہ رہا ہوں ہے، صارف ہے جو تجزیہ میں ٹائپ اور یقین ہے کہ میں نے کر دے، اس میں ایک عدد صحیح ہے، اور ہم نہیں کریں گے وہاں بھی ہے بالکل کیوں آج میں حاصل ایک مختصر میں یہاں C، لیکن اس کی اجازت دیتا ہے صارف ٹائپ ہے تو ہمیں پتہ لگانے کے لئے بڑی تعداد کے بعد بوگس کچھ میں. تو اس کی وجہ ہے کہ GetInt اور GetString دوبارہ کوشش کریں، دوبارہ کوشش کرنے کے لئے آپ کو بتا، دوبارہ کوشش کریں کی وجہ سے سب سے ہے ہم نے لکھا ہے کہ کوڈ، اس قسم کی صارف کی ان پٹ میں لگ رہا ہے بات کو یقینی بنانے میں یہ مکمل طور پر عددی ہے یا یہ ایک اصل فلوٹنگ ہے نقطہ قیمت یا جیسے، کیا قیمت پر منحصر ہے آپ استعمال کر رہے کام. واہ. ٹھیک ہے. یہ ایک گراس تھا لیکن بات یہاں ہے کہ ہم نے کی وجہ سے ان کی تربیت پہیوں پر ، کیونکہ سب سے کم سطح پر ہے صرف اتنی ساری چیزیں ہے کہ وہاں ہم چاہتے تھے کہ غلط جا سکتے ہیں کہ preemptively کو ہینڈل کرنے میں میں یقینی طور پر ان چیزوں کلاس کے ابتدائی ہفتوں، لیکن اب pset کے چار اور pset پانچ کے ساتھ اور باہر آپ کو اس کے پاس زیادہ ہے کہ دیکھیں گے آپ بلکہ آپ کو زیادہ صلاحیت رکھتے ہیں کے مسائل کی ان اقسام کو حل کرنے خود. GetString کے یا GetInt کا کوئی سوال؟ جی ہاں؟ سامعین: آپ کیوں دوگنا کرے گا بفر کی صلاحیت بلکہ صرف میں اضافہ کے مقابلے میں یہ عین مطابق رقم کی طرف سے؟ DAVID MALAN: اچھا سوال ہے. کیوں ہم صلاحیت کو دوگنا کرے گا بفر کے طور پر کی مخالفت صرف اس میں اضافہ کرنے کے کچھ مسلسل قیمت کی طرف سے؟ یہ ایک ڈیزائن فیصلہ تھا. ہم صرف اس کے لئے جاتا ہے کیونکہ اس کا فیصلہ کیا وقت وار مہنگی تھوڑا سے پوچھنا ایک ہو آپریٹنگ سسٹم میموری کے لئے، ہم نے نہیں کیا میں ہو رہی ہے کو ختم کرنا چاہتے ہیں بڑے ڈور کے لئے ایک ایسی صورت حال ہم پوچھ رہے تھے کہ بار بار آپریٹنگ سسٹم اور بار بار میں میموری کے لئے تیزی سے جانشینی. تو ہم صرف کسی حد تک، فیصلہ منمانے لیکن ہم معقول حد تک امید ہے، کہ، آپ کو، چلو پتہ ہے کیا آگے خود حاصل کرنے کی کوشش اور صرف اس لئے کہ یہ دگنا رکھنے ہم نے وقت کی رقم کو کم سے کم ہم malloc بلانا پڑے یا realloc، لیکن کل قیامت جاننے کی غیر موجودگی میں کہتے ہیں صارفین میں ٹائپ کرنا چاہتے ہو سکتا ہے. دونوں طریقوں قابل بحث ہو سکتا ہے. arguably سب اچھا. تو ایک جوڑے پر ایک نظر ڈالیں میموری کے دیگر ضمنی اثرات، غلط جا سکتے ہیں کہ چیزیں اور اوزار کہ آپ کر سکتے ہیں غلطیوں کی ان اقسام کو پکڑنے کے لئے استعمال کرتے ہیں. یہ اگرچہ، تم سب کے سب باہر کر دیتا ہے check50، تم جتنا کچھ نہیں بتایا چھوٹی گاڑی لکھ دیا گیا ہے ایک ہفتے کے بعد کوڈ، یہاں تک کہ تمام check50 ٹیسٹ ہیں منظور، اور یہاں تک کہ اگر آپ اور آپ TF کہ سپر پراعتماد ہیں مقصد کے طور پر آپ کے کوڈ کام. آپ کے کوڈ چھوٹی گاڑی گیا ہے یا آپ کے اس میں غلطی، CS50 لائبریری کا استعمال کرتے ہوئے، میموری لیک کر دیا گیا ہے. آپ کے آپریٹنگ سسٹم پوچھ رہا ہوں پروگراموں کی سب سے زیادہ میں میموری کے لئے آپ نے لکھا ہے، لیکن آپ نے اصل میں یہ واپس دیا کبھی نہیں. آپ GetString کے بلایا ہے اور GetInt اور GetFloat، لیکن GetString کے ساتھ، آپ نے unGetString یا دینے کبھی پکارا ہی نہ سلک واپس یا جیسے، لیکن ہم نے دیکھا ہے GetString کے میموری مختص کرتا ہے malloc کے راستہ یا اس کی طرف سے صرف ہے جس کی تقریب realloc، روح میں بہت ہی اسی طرح، اور ابھی تک، ہم کیا گیا ہے کے لئے آپریٹنگ سسٹم پوچھ میموری اور میموری بار بار لیکن اس کے واپس دینے کبھی نہیں. اب، ایک طرف ایک کے طور پر، یہ ہے کہ باہر کر دیتا ہے پروگرام، میموری کی سب سے مستعفی جب خود کار طریقے سے آزاد کر دیا ہے. تو یہ ایک بہت بڑا سودا نہیں کیا گیا ہے. اس کو توڑنے کے لئے نہیں جا رہا IDE یا سست چیزوں کو، لیکن جب پروگرام کرتے عام طور پر میموری لیک اور انہوں نے ایک طویل وقت کے لئے چلا رہے ہیں. کیا تم نے کبھی پاگل تھوڑا دیکھا ہے میک OS یا ریت گھڑی میں ساحل سمندر کی گیند ونڈوز پر اس قسم کی ہے جہاں سست یا سوچ یا سوچ یا صرف واقعی شروع ہوتا ہے ایک کرال کے لئے سست کرنے کے لئے، یہ بہت ممکنہ طور پر ہو سکتا ہے ایک میموری لیک کا نتیجہ. لکھا جو پروگرامرز آپ استعمال کر رہے سافٹ ویئر میموری کے لئے آپریٹنگ سسٹم سے دعا گو ہیں ہر چند منٹ، ہر گھنٹے. لیکن آپ چلا رہے ہیں یہ ہے یہاں تک کہ اگر سافٹ ویئر، آپ کے کمپیوٹر میں کم سے کم اختتام پر گھنٹوں یا دنوں کے لئے، آپ زیادہ سے زیادہ کے لئے پوچھ کیا جا سکتا ہے میموری اور اصل میں کبھی نہیں اس کا استعمال اور تو اپنے کوڈ ہو، یا ہو سکتا ہے پروگرام، میموری لیک کیا جا سکتا ہے اور آپ میموری لیک کے لئے شروع تو، دوسرے پروگراموں کے لئے کم میموری ہے، اور اثر کرنے کے لئے ہے سب کچھ سست. اب، اس دور میں سے ایک کی طرف سے ہے سب سے زیادہ ظالمانہ پروگرام آپ کو مواقع پڑے گا CS50 میں چلانے کے لئے insofar کے اس کی پیداوار سے بھی زیادہ باطنی ہے بجنا یا بنانے یا کمانڈ کے کسی بھی ہم نے پہلے چلائے گئے لائن پروگراموں لیکن شکر ہے، اس کی پیداوار میں سرایت کچھ سپر مددگار تجاویز ہے کہ مفید یا تو pset کے چار لئے ہو جائے گا یا یقینی طور پر پانچ pset کے. تو Valgrind ایک آلہ ہے کہ کو دیکھنے کے لئے استعمال کیا جا سکتا آپ کے پروگرام میں میموری لیک کے لئے. چلانے کے لئے نسبتا آسان ہے. تم نے یہ بھی، جس Valgrind اور پھر چلانے یہ تھوڑا شبدبہل ہے اگرچہ، ڈیش لیک چیک مکمل برابر، اور پھر ڈاٹ سلیش اور آپ کے پروگرام کا نام. تو Valgrind تو آپ کے پروگرام چلایا جائے گا اور آپ کے پروگرام کے آخر میں اسے چھوڑ سے پہلے چل رہا ہے اور ، آپ کو ایک فوری طور پر فراہم کرتا ہے اس کا تجزیہ کرنے جا رہا ہے آپ پروگرام چل رہا ہے جبکہ اور آپ کو لیک کیا بتائیں بہتر ابھی تک کسی بھی میموری اور، آپ کو میموری کو چھو تھا کہ آپ کا تعلق نہیں تھا؟ یہ سب کچھ نہیں پکڑ سکتے ہیں، لیکن یہ سب سے زیادہ چیزوں کو پکڑنے میں بہت اچھا. تو یہاں اپنی ہونے رن کی ایک مثال ہے اس پروگرام، رن Valgrind کے ہونے، نامی ایک پروگرام پر میموری، اور میں جا رہا ہوں ہیں کہ لائنوں کو اجاگر کرنے کے بالآخر ہمیں سود کی. تو بھی مزید خلفشار ہے میں سلائڈ سے خارج کر دیا ہے کہ. لیکن کیا یہ دیکھتے ہیں پروگرام ہمیں یہ بتانے کی صلاحیت رکھتا ہے. یہ ہم چیزوں کو بتانے کے قابل ہے 4 سائز کے جعلی لکھنے کی طرح. دوسرے الفاظ میں، آپ کو میموری کو چھو لیا ہے، میموری کی خاص طور پر 4 بائٹس آپ کو نہیں کرنا چاہئے کہ، Valgrind کے آپ کو بتا سکتا. 4 سائز کے باطل کے لکھنا. تم نے چار بائٹس کو چھو آپ کی ضرورت نہیں ہے کہ. کہ تم کہاں سے کیا؟ یہ خوبصورتی ہے. یاد داشت ڈاٹ C لائن 21 جہاں آپ ہے مصیبت اور یہ مفید ہے یہی وجہ ہے کہ. بہت GDB طرح، اس کی مدد کر سکتے ہیں اصل خرابی میں آپ کی طرف اشارہ. اب، یہ ایک چھوٹا سا زیادہ ہے شبدبہل، مبہم نہیں ہے تو. 1 بلاکس میں 40 بائٹس یقینی طور پر ہیں ہار کا ریکارڈ 1 کے 1 میں کھو. اس کا کیا مطلب ہے؟ ویسے، یہ صرف آپ کے لئے پوچھا مطلب 40 بائٹس اور آپ کو اسے واپس نہیں دیا. آپ malloc کہا جاتا ہے یا آپ کو بلایا GetString اور آپریٹنگ سسٹم آپ کو 40 بائٹس، لیکن آپ کو کبھی نہیں دیا آزاد یا کہ میموری جاری، اور منصفانہ ہو، ہم ظاہر نہیں ہے آپ کو کس طرح یاد واپس دینے کے لئے. ایک سپر ہے باہر کر دیتا ہے سادہ تقریب مفت بلایا. ایک دلیل، بات لیتا ہے آپ، مفت یا واپس دینے کے لئے چاہتے ہیں لیکن 40 بائٹس، بظاہر، اس پروگرام میں لائن پر کھو گیا ہے میموری کی 20 C ڈاٹ. تو اس پروگرام دیکھتے ہیں. یہ سپر بیکار ہے. یہ صرف ظاہر کرتا ہے یہ خاص طور پر خرابی. تو ایک نظر ڈالیں. یہاں اہم اور اہم، نوٹس، بلاتا ہے ایک دالہ f اور پھر واپسی بلایا. تو یہ سب دلچسپ ہے کہ نہیں. F کیا کرتا ہے؟ میں ایک پروٹوٹائپ کے ساتھ کی زحمت نہیں تھا نوٹس. میں نے کوڈ رکھنا چاہتی تھی جتنا ممکن ہو کم سے کم. تو اگر میں اہم اوپر F ڈال دیا اور کہ، یقینی طور پر، ٹھیک ہے اس طرح مختصر پروگرام کے لئے. تو F کچھ بھی واپس اور نہیں ہے کچھ بھی نہیں لے، لیکن یہ ایسا ہے. یہ بہت کی طرح، کا اعلان Binky کی مثال میں، ہے کہ ایکس نامی ایک پوائنٹر جا رہا ہے ایک int کا پتہ ذخیرہ کرنے کے لئے. تو ہے کہ بائیں ہاتھ کی طرف ہے. انگریزی میں، کیا ہے کر دائیں ہاتھ کی طرف؟ کوئی ہے؟ یہ ہمارے لئے کیا کر رہی ہے؟ جی ہاں؟ سامعین: [اشراوی] اوقات ایک int کے سائز ہے جس میں 10 گنا زیادہ ہے [اشراوی] DAVID MALAN: اچھا اور مجھے مختصر دو. 10 integers کے لئے کافی جگہ مختص یا 10، ایک int کے سائز کیا ہے، یہ 4 ہے چار بائٹس، 10 اوقات 40، میں نے کہ دائیں ہاتھ کی طرف تو جھلکیاں مجھے 40 بائٹس دے ہے اور پہلے بائٹ کا پتہ ذخیرہ X میں. اور اب آخر میں، اور یہاں ہے جہاں اس پروگرام چھوٹی گاڑی، ہے ہے لائن 21 کے ساتھ غلط ہے کہ منطق کی بنیاد پر؟ کیا لائن 21 کے ساتھ غلط ہے؟ جی ہاں؟ سامعین: آپ نہیں کر سکتے ہیں [اشراوی] X میں انڈیکس. DAVID MALAN: جی ہاں. میں اس طرح X میں انڈیکس نہیں کرنا چاہئے. تو syntactically ہے، یہ ٹھیک ہے. کیا اچھی بات ہے آپ کی طرح زیادہ سے زیادہ، ہے ایک صف کے نام علاج کر سکتے ہیں اگرچہ کے طور پر اسی طرح، ایک پوائنٹر ہے یہ ہے کے طور پر اگرچہ آپ کو ایک پوائنٹر علاج کر سکتے ہیں ایک صف، اور اس لئے میں syntactically ہے کر سکتے ہیں X بریکٹ کچھ کہنا، X بریکٹ میں، لیکن 10 مسئلہ ہے. کیوں؟ سامعین: اس کے اندر نہیں ہے کیونکہ. DAVID MALAN: یہ نہیں ہے میموری کے اس حصہ کے اندر. سب سے بڑی قیمت مجھے کیا چاہئے ان مربع بریکٹ میں ڈال دیا جائے؟ 9 کے ذریعے 9، 0. صفر تخکرمن کی وجہ سے. تو 9 کے ذریعے 0 ٹھیک ہو جائے گا. بریکٹ 10 اچھا نہیں ہے اور لیکن، ہر وقت اگرچہ یاد میں CS50 IDE بنانے کی کوشش کرنے لگتے ہیں بوگس اقدار میں ٹائپ کی طرف سے حادثے، یہ ہمیشہ، تعاون نہیں کرتا ہے اور بے شک، آپ اکثر خوش قسمت حاصل صرف اس وجہ سے آپریٹنگ سسٹم نہیں ہے نوٹس کہ آپ کو کبھی تو تھوڑا سا میموری میں سے کچھ حصہ گزر، آپ کو تکنیکی کے اندر اندر رہے کیونکہ آپ طبقہ، لیکن اس پر ایک آپریٹنگ سسٹم کلاس میں، اس طرح اور تو کچھ بہت آسانی سے undetected جا سکتا ہے. آپ کے پروگرام نہیں کریش ہوا جا رہا ہے مسلسل لیکن شاید ایک بار تھوڑی دیر میں. اور اس کی جس Valgrind کی کوشش کریں اس پر، اور یہاں ہم کہاں ابیبھوت حاصل کریں گے لمحے پیداوار کی طرف سے. تو میموری ہے جس Valgrind لیک چیک بنانا مکمل ڈاٹ سلیش میموری برابر. میں وعدہ کرتا ہوں اور یہی وجہ ہے یہاں ہے اس کو مغلوب کرے گا. یہاں جس Valgrind، یہاں کیا کیا ہے ایک پروگرامر، کچھ سال ago- یہ ایک اچھا خیال ہو گا فیصلہ کی طرح پیداوار نظر کرنے کے لئے. تو اس کا احساس کرنے کی اجازت. بائیں ہاتھ پر تو تمام راستے کوئی اچھی وجہ کے لئے کی طرف پروگرام کے عمل کی شناخت ہے ہم صرف، منفرد شناخت چلانے پروگرام کے لئے ہم صرف بھاگ گیا. ہم سے خارج کر دیا سلائڈ، لیکن وہاں یہاں میں کچھ مفید معلومات ہے. کی سب سے اوپر کرنے کے لئے سکرال. ہم شروع کر دیا جہاں یہاں ہے. تو یہ سب اتنا پیداوار نہیں ہے. یہاں اس باطل کے لکھنا ہے 21 لائن پر 4 سائز کے. ویسے، لائن 21 کیا تھا؟ لائن 21 بالکل تھا یہ اور یہ سمجھ میں آتا ہے میں صدارتی میں ہوں میں ہوں کیونکہ 4 بائٹس لکھنے اس عددی ڈال کرنے کی کوشش، جو، کچھ بھی ہو سکتا یہ صرف ہو صفر، لیکن میں کوشش کر رہا ہوں ایک جگہ پر ڈال کرنے کے لئے کہ مجھ سے متعلق نہیں ہے. میں اس کے علاوہ، یہاں نیچے، 40 بائٹس بلاکس کو یقینی طور پر ریکارڈ 1 میں کھو جاتے ہیں. کہ میں malloc فون جب وجہ سے ہے یہاں، میں نے اصل میں میموری آزاد نہیں. تو ہم کس طرح اس کو ٹھیک کر سکتے ہیں؟ مجھ سے آگے جانے دو اور ایک چھوٹا سا زیادہ محفوظ ہو اور وہاں 9 کرتے ہیں اور یہاں مفت X مجھے دو. یہ آج کے لئے نئے تقریب ہے. مجھے اب یاد ڈاٹ سلیش بنانے rerun تو، ، اسے دوبارہ پر Valgrind چلاتے ہیں میری ونڈو کو زیادہ سے زیادہ اور درج کریں مارا. اب، یہ اچھی بات ہے. وہ اچھی خبر دفن اس کی پیداوار کے تمام میں. تمام ڈھیر بلاکس آزاد تھے. ہم کیا ڈھیر کرنے کے لئے واپس آ جائیں گے ہے، لیکن کوئی لیک ممکن ہیں. تو یہ صرف ایک اور مثال ہے آپ کے آلے کے کٹ کے لئے آلے جس کے ساتھ آپ کو شروع کر سکتے ہیں اب اس طرح کی غلطیوں کو تلاش. لیکن چلو دیکھتے ظالم یہاں جا سکتے ہیں. اب کی منتقلی اصل میں ایک مسئلہ کو حل کرنے. ایک طرف ایک کے طور پر، یہ ایک دور کریں گے تو الجھن یا کشیدگی کا تھوڑا سا، اب یہ مضحکہ خیز ہے. جی ہاں. یہ بہت اچھی بات ہے. اشارہ ہیں پتوں اور پتے کنونشن کی طرف سے عام طور پر ہیں شش اعشاری کے ساتھ لکھا. ہا، ہا، اب یہ مضحکہ خیز ہے. پھر بھی، تو اب چلو اصل میں ایک مسئلہ کو حل. یہ، سپر کیا گیا ہے سپر اس طرح اب تک کم سطح، اور ہم اصل میں مفید کر سکتے ہیں یہ کم سطح کی تفصیلات کے ساتھ چیزوں کو. تو ہم نے چند ہفتے متعارف کرایا پہلے ایک صف کے تصور. ایک صف اچھا تھا کیونکہ یہ ہمارے کوڈ کو صاف کرنے کے لئے مشکل ہے ہم ایک لکھنا چاہتا تھا کیونکہ اگر ایک سے زیادہ کے طالب علموں کے ساتھ پروگرام یا ایک سے زیادہ نام اور گھروں اور ڈورمیٹری اور کالجوں اور اس کے تمام، ہم سب کچھ زیادہ محفوظ کر سکتے ہیں سفائیپسند ایک صف کے اندر. لیکن ایک منفی پہلو کی تجویز ایک صف کی طرح اب تک. آپ خود کا سامنا کرنا پڑا نہیں ہے یہاں تک کہ اگر ایک پروگرام میں، صرف آسان، ایک بری چیز ہے ایک سرنی کے بارے، شاید؟ میں نے کچھ murmurs سے سنا. سامعین: یہ مشکل ہے سائز تبدیل کرنے کے. DAVID MALAN: یہ مشکل ہے سائز تبدیل کرنے کے. آپ کے سائز کو تبدیل نہیں کر سکتے ہیں ایک صف کے، حقیقت میں، SE فی C. میں آپ ایک سرنی مختص کر سکتے ہیں، پرانے ایک سے سب کچھ منتقل اب نئے، اور میں کچھ اضافی جگہ ہے، لیکن یہ ایک نہیں ہے Java یا ازگر کی طرح زبان یا دوسرے کی کسی بھی تعداد جس کے ساتھ زبانوں تم میں سے بعض واقف ہو سکتا ہے جہاں آپ صرف چیزوں کو رکھ سکتے ہیں انہوں نے مزید کہا ایک صف کے اختتام پر اشتھاراتی nauseam. تم میں سے ایک صف ہے جب اس کے سائز ہے کہ سائز 6،، اور خیال پہلے کی طرح اتنا ایک خاص سائز کی ایک بفر ہونے، آپ دروازے سے باہر اندازہ کرنا پڑتا ہے کیا سائز آپ یہ کرنا چاہتے ہیں؟ آپ بہت بڑا لگتا ہے، آپ کی جگہ برباد کر رہے ہو. آپ بہت چھوٹا لگتا ہے، آپ کم از کم، کہ اعداد و شمار کو محفوظ نہیں کر سکتے ہیں بہت زیادہ کام کے بغیر. اشارہ تو آج، شکریہ، ہم کر سکتے ہیں ایک دوسرے کے ساتھ ہماری اپنی مرضی کے سلائی شروع ڈیٹا ڈھانچے، اور میں حقیقت یہ ہے کہ، یہاں کچھ ہے کہ ایک چھوٹا سا زیادہ لگ رہا ہے پہلی نظر میں خفیہ، لیکن یہ ہم نے ایک سے منسلک فون کروں گا کیا ہے فہرست، اور خلاصہ کے اس کا نام قسم یہ. اس میں اعداد کی ایک فہرست ہے، یا اس صورت میں، اعداد کی ایک فہرست، لیکن یہ کچھ کی ایک فہرست ہو، لیکن کر سکتے ہیں یہ ایک دوسرے کے ساتھ تیر کی راہ کی طرف سے منسلک ہے اور صرف ایک اندازہ لے کیا ٹیکنالوجی کے ساتھ ہم قابل ہو جائے کرنے کے لئے جا رہے ہیں ایک دوسرے کے ساتھ سلائی کرنے، قسم کی ایک دھاگے کے ساتھ پاپکارن کی طرح، یہاں فہرستوں مستطیل منسلک؟ کی تعداد؟ بنیادی زبان خاصیت کیا ہے؟ سامعین: ایک پوائنٹر. DAVID MALAN: ایک پوائنٹر. تو ان میں سے ہر ایک تیر یہاں کی نمائندگی کرتا ہے ایک پوائنٹر یا صرف ایک ایڈریس. تو دوسرے الفاظ میں، اگر میں چاہتا ہوں اعداد کی ایک فہرست ذخیرہ کرنے کے لئے، اگر میں چاہتا ہوں میں نے صرف اسے محفوظ نہیں کیا جا سکتا اگاتے ہیں اور سکڑ کرنے کی صلاحیت ایک صف میں میرے اعداد و شمار کے ڈھانچے. تو میں تھوڑا حاصل کرنے کی ضرورت زیادہ نفاست، لیکن یہ ہے کہ نوٹس تصویر کی قسم سے پتہ چلتا ہے آپ صرف چھوٹی سی موضوعات مل گیا ہے کہ اگر سب کچھ ایک ساتھ منسلک، شاید جگہ بنانے کے لئے مشکل نہیں ہے ان rectangles میں درمیان میں دو یا ان مراکز میں سے دو، کے طور پر ہم شروع کریں گے ایک نیا نوڈ میں ڈال دیا، انہیں بلا، اور پھر کچھ نئے دھاگے کے ساتھ، صرف تین نوڈس چھوڑ، سب سے پہلے، گزشتہ ایک، اور ایک آپ کو صرف وسط میں داخل ہے. اور یقینا ایک لنک کی فہرست، ایک صف کے برعکس، متحرک ہے. اس میں اضافہ کر سکتے ہیں اور یہ کر سکتے ہیں سکڑ اور تم نہیں جانتے جانتے ہیں یا پیشگی کس طرح میں دیکھ بھال کرنے کی ضرورت ہے زیادہ ڈیٹا آپ کو ذخیرہ کرنے جا رہے ہیں، لیکن یہ ہم نے ایک چھوٹا سا ہونا پڑے گا باہر کر دیتا ہے اس پر عمل درآمد کرنے کے بارے میں ہوشیار رہنا. تو سب سے پہلے ہم پر عملدرآمد کس طرح غور کریں ان چھوٹی rectangles میں سے ایک. یہ ایک int لاگو کرنے کے لئے آسان ہے. اگر آپ نے ابھی int ن اور کہتے ہیں آپ کو ایک int 4 بائٹس حاصل، لیکن میں ایک int حاصل کرتے ہیں کہ کس طرح،، (ن) یہ کہتے ہیں اور پھر ایک پوائنٹر، کے اگلے کہتے ہیں. ہم ان کہہ سکتے ہیں چیزیں کچھ ہم چاہتے ہیں لیکن میں نے ایک اپنی مرضی کے آنکڑا ڈھانچہ کی ضرورت ہے. جی ہاں؟ سامعین: ایمپرسینڈ [اشراوی]. DAVID MALAN: تو ایمپرسینڈ ہم استعمال کریں گے ممکنہ طور پر ایک نوڈ کا پتہ ملتا ہے. لیکن ہم دوسرے کی ضرورت ہے سی کی خصوصیت ترتیب میں مجھے تخلیق کرنے کی صلاحیت دینے کے لئے یہ اپنی مرضی کے مستطیل، اس اپنی مرضی کے مطابق متغیر آپ کو یاد میں، اگر. سامعین: ایک struct. DAVID MALAN: ایک struct. گزشتہ ہفتے سے یاد، ہم متعارف کرایا struct کے، یہ نسبتا آسان مطلوبہ الفاظ کہ ہمیں اس طرح کی چیزوں کو بنانے کی اجازت دیتا ہے. C ایک ڈیٹا کے ساتھ نہیں آیا تھا ساخت طالب علم کو بلایا. یہ int اور فلوٹ اور چار کے ساتھ آتا ہے اس طرح، لیکن یہ طالب علم کے ساتھ نہیں آیا ہے، لیکن ہم ایک طالب علم کے ڈیٹا کی قسم تشکیل دے سکتے ہیں، اس نحو کے ساتھ ایک طالب علم کی ساخت، یہاں. اور آپ کو بار بار یہ دیکھ لیں گے. تو اس کے بارے میں فکر نہ کرو مطلوبہ الفاظ حفظ، لیکن ضروری ہے کہ مطلوبہ الفاظ کی ہے ہم نے کہا کہ صرف حقیقت struct کے اور پھر ہم اس طالب علم سے ملاقات کی اور اندر طالب علم کا نام اور ایک گھر تھا ایک چھاترالی یا جیسے یا. اور اس طرح اب آج، چلو، اس تجویز. میں نے چند الفاظ شامل، لیکن اگر میں چاہتا ہوں ہے کہ اس مستطیل لاگو کرنے کے لئے ایک int اور ایک دونوں مل گیا پوائنٹر، آپ، میں کیا ہوں نوڈ کہا جاتا ایک struct کا اعلان کرنے جا. میں کہنے جا رہا، اس کے اندر، بھی ہوں ایک نوڈ، اس مستطیل، ایک int ہے کہ اور ہم نے اسے فون کروں گا (ن) اور یہ ایک اگلے پوائنٹر ہے. اور یہ ایک چھوٹا سا شبدبہل ہے لیکن آپ اس کے بارے میں لگتا ہے کہ اگر، تصویر میں تھے کہ تیر ایک لمحے پہلے کیا ڈیٹا کی قسم کے ہیں؟ جہاں ان تیر میں سے ہر ایک کی طرف اشارہ ہے آنکڑا ڈھانچہ کس قسم کے؟ یہ SE فی ایک int کی طرف اشارہ نہیں ہے. یہ کرنے کے لئے کی طرف اشارہ ہے پورے آئتاکار بات اور یہ کہ آئتاکار بات، ہم ایک نوڈ کہا جاتا ہے، نے کہا. اور اس طرح ہم اس قسم کی کے لئے کرنا پڑے تکراری طور پر اس طرح کی وضاحت ایک نوڈ ہے، ہم کہیں گے کہا جاتا ن ایک int پر مشتمل ہوگا اور ایک پوائنٹر اگلے اور کہا جاتا ہے جس میں آنکڑا ڈھانچہ کی قسم اس پوائنٹر پوائنٹس بظاہر ہے struct نوڈ کو ہونے جا رہا. تو اس کی اس annoyingly شبدبہل ہے اور صرف، pedantic ہونا وجہ ہم نہیں کر سکتے صرف یہ کہنا، جس بے تکلفی ، ایک بہت زیادہ پڑھنے کے قابل لگتا ہے یاد پڑھنے C کی وجہ سے ہے چیزیں اوپر سے نیچے، بائیں سے دائیں. ہم نیم وقفہ ملتا ہے جب تک یہ نہیں ہے مطلوبہ الفاظ نوڈ اصل میں موجود ہے. ہم اس طرح کی ہے کرنا چاہتے ہیں تو اعداد و شمار کے اندر چکریی حوالہ ساخت، ہم ایسا کرنے کی ضرورت ہے، جہاں ہم سب سے اوپر، میں struct نوڈ کا کہنا ہے کہ ہمیں اس بیان کی ایک طویل راستہ فراہم کرتا ہے بات، ہم struct نوڈ کا کہنا ہے کہ اس وقت کے اندر، اور اس کے بعد آخری لائن پر ہم کہتے ہیں، ٹھیک ہے، C، راہ کی طرف سے، صرف اس پوری لات کال بات ایک نوڈ اور کو روکنے کے مکمل طور پر مطلوبہ الفاظ struct کے استعمال کر رہے ہیں. تو یہ صرف قسم کی ایک نحوی ہے بالآخر ہمیں تخلیق کی اجازت دیتا ہے کہ چال بالکل اس طرح لگ رہا ہے کہ کچھ. اب ہم فرض تو ہم کر سکتے ہیں تو C میں اس بات کو لاگو، کس طرح اصل میں ہم کرتے اس کی traversing شروع؟ ویسے، اصل میں، ہمیں کیا کرنا ہے ہے درست کرنے کے لئے اور صرف بائیں سے iterate قسم کے نوڈس داخل یا نوڈس خارج یا ہم چاہتے ہیں جہاں چیزوں کے لئے تلاش، لیکن ایسا کرنے، آگے بڑھو اور بنا دو چیزیں تھوڑا زیادہ حقیقی اس کی وجہ سے اس طرح اب تک سپر کم سطح کیا گیا ہے. کسی لفظی سب سے پہلے ہونا پسند کریں گے؟ ٹھیک ہے. اپ چلو. آپ کا نام کیا ہے؟ DAVID: ڈیوڈ. DAVID MALAN: ڈیوڈ. آپ سے مل کر خوشی ہوئی. میں بھی. بالکل ٹھیک. اور ہم نے ایک بڑی تعداد کی ضرورت ہے 9. کے طور پر اچھا نہیں پہلے کے طور پر، شاید. ٹھیک ہے، نمبر 9. ایک بڑی تعداد 17، براہ مہربانی. مجھے تھوڑا دور واپس جانے دو. نمبر 22، براہ مہربانی، اور کس طرح دور واپس کے بارے میں میں کسی بھی ہاتھ دیکھ سکتے ہیں تمام روشنی یا کوئی. کسی وہیں رضاکارانہ طور پر کیا جا رہا ہے. آپ کو آنے کے لئے چاہتے ہیں؟ آپ بازو زبردستی بڑھ رہی ہے. ، 17 ٹھیک ہے. 22. 26 نیچے آ رہی ہے. کسی اور کے لئے چاہوں گا forcefully-- اپ چلو. ایک حقیقی رضاکار. تو بہت جلد، تو تم لوگوں کا بندوبست کر سکتے اپنے صرف پسند سکرین پر مراکز. آپ کا شکریہ. اور آپ کو 26 ہو جائے گا. ٹھیک اور فوری تعارف. تو میں داؤد ہوں اور آپ بھی ہیں؟ DAVID: ڈیوڈ. DAVID MALAN: اور تم کون ہو؟ جیک: جیک. مقدمہ: مقدمہ. ALEX: یلیکس. رفیل: رافیل. ٹیلر: ٹیلر. DAVID MALAN: ٹیلر. بہترین. تو یہ ہمارے رضاکار ہوتے ہیں کے لئے آج اور آگے بڑھو اور، اس طرح ایک چھوٹی سی منتقل اور بس آگے بڑھو اور رکھنے تم ہو یا آپ کے طور پر آپ کی تعداد انعقاد پہلی علامت اور اپنے بائیں ہاتھ کا استعمال کرتے ہوئے، آگے بڑھو اور صرف لاگو یہ تیر، صرف آپ کے بائیں ہاتھ لفظی ہے تاکہ آپ کی طرف اشارہ چاہئے جو کچھ بھی کی طرف اشارہ ، اور میں اپنے آپ کو تاکہ کچھ کمرہ دے ہم ضعف اصل میں آپ کی باہوں میں دیکھ سکتے ہیں طرف اشارہ کرتے ہوئے، اور آپ کو صرف اشارہ کر سکتے ہیں قسم کے میدان میں ٹھیک ہے. تو یہاں ہم ایک کی ایک لنک کی فہرست ہے دو، تین، چار، پانچ نوڈس ابتدائی، اور ہم اس خاص ہے نوٹس جو شروع میں پوائنٹر اہم ہم ٹریک رکھنے کے لئے ہے کیونکہ پوری لمبائی فہرست کسی نہ کسی طرح. انہوں نے چھوڑ دیا کر رہے ہیں، اگرچہ یہ لوگ، درست کرنے کے لئے، واپس یاد میں واپس کرنے کے لئے، وہ اصل میں کہیں بھی ہو سکتا کمپیوٹر کی میموری میں. تو ان لوگوں کو ہو سکتا ہے اسٹیج پر کہیں کھڑے اور یہ کہ جب تک کہ وہ ہیں کے طور پر، ٹھیک ہے اصل میں ایک دوسرے کی طرف اشارہ، لیکن چیزیں رکھنے کے لئے صاف اور سادہ، ہم کریں گے صرف ان کو اپنی طرف متوجہ کی طرح بائیں سے دائیں اس، لیکن بڑے پیمانے پر فرق ہو سکتا ہے ان مراکز کے درمیان میں. اب، میں اصل میں کچھ داخل کرنا چاہتے ہیں نئی قیمت، آگے بڑھو اور اس کے کیا. اب ہم ایک موقع ہے دوسرے نوڈ منتخب کرنے کے لئے. کی 55 mallocing کے ساتھ شروع کر دیں کہو. کسی malloc کے کیا جا رہا ہے کوئی اعتراض کریں گے؟ ٹھیک ہے، پر آتے ہیں. آپ کا نام کیا ہے؟ رینبو: رینبو. DAVID MALAN: رینبو؟ بالکل ٹھیک. malloc کے رینبو. اپ چلو. تو اب ہم نے خود سے پوچھنا پڑے algorithmically ہے ہم 55 ڈال کر سکتے ہیں جہاں. تو ہم میں سے سب جانتے ہیں، ظاہر ہے، جہاں وہ شاید ہم کوشش کر رہے ہیں سے تعلق رکھتا ہے اس کے مطابق رکھنے کے لئے اور تم لوگوں کو ایک لے سکتا ہے تو واپس قدم تو ہم گر نہیں مرحلے، کہ بہت اچھا ہو گا. تو اصل میں، رینبو، میرے ساتھ یہاں سے شروع، کیونکہ اب ہم کر سکتے ہیں کمپیوٹر کے طور پر ایک وقت میں صرف ایک متغیر دیکھیں. یہ پہلا نوڈ ہے اگر ایسا ہے تو. ، وہ ایک نوڈ نہیں ہے نوٹس وہ صرف ایک پوائنٹر ہے وہ ہو جائے کرنے کے لئے تیار ہے یہی وجہ ہے کہ ایک پوائنٹر کے صرف سائز، نہیں ان میں سے ایک مکمل مستطیل. تو ہم میں سے ہر ایک کی جانچ پڑتال کرنے کے لئے جا رہے ہیں تکرار 9 سے 55 سے کم ہے؟ نہیں. 17 کے مقابلے میں 55 سے بھی کم ہے؟ نہیں. 22 سے بھی کم؟ 26 سے بھی کم؟ 34 سے بھی کم؟ اور تو اب، ظاہر ہے رینبو آخر میں تعلق. لہذا واضح کیا، اور کیا آپ کا نام، ٹیلر تھا؟ ٹیلر: ٹیلر. DAVID MALAN: ٹیلر کے درمیان بہت بائیں ہاتھ اور یہاں اندردخش کے ہاتھوں، جس کے ہاتھ میں کیا کی طرف اشارہ کرنے کی ضرورت ہے اس فہرست میں 55 ڈالنے کے لئے؟ ہم کیا کرنے کی ضرورت ہے؟ جی ہاں؟ سامعین: ٹیلر کے ہاتھ بائیں کی طرف اشارہ کرنے کی ضرورت ہے. DAVID MALAN: بالکل. تو ایک نوڈ داخل فہرست کے آخر میں بہت آسان ہے کیونکہ ٹیلر بس میدان میں بجائے، کی طرف اشارہ کرنے کے لئے ہے یا ہم، شہوت انگیز null اسے فون کروں گا شہوت انگیز null کی غیر موجودگی کی طرح ہے ایک پوائنٹر یا ایک خصوصی صفر پوائنٹر، تم آپ کے بائیں کے ساتھ اشارہ کرنے جا رہا ہاتھ رینبو اور پھر رینبو میں، جہاں اپنے بائیں چاہئے ہاتھ شاید اشارہ؟ نیچے. اس کے ہاتھ طرح ہے تو یہ اچھا نہیں ہے یہاں یا قسم کے کسی دور کی طرف اشارہ کر کے جس راہ. یہ تصور کیا جائے گا ایک ردی کی ٹوکری کی قیمت، لیکن وہ کی طرف اشارہ ہے تو کچھ نام سے جانا جاتا قیمت، ہم کریں گے صفر یا شہوت انگیز null یہ کہتے ہیں، یہ ٹھیک ہے ہم اس میں ایک اصطلاح ہے کیونکہ اور ہم فہرست اب مکمل ہے. تو کیا ایک ہے نسبتا آسان مقدمہ؟ ہم 5 malloc سے کر سکتے ہیں؟ اپ چلو. آپ کا نام کیا ہے؟ واپس اوپر واپس: واپس اوپر واپس. DAVID MALAN: میں معافی چاہتا ہوں؟ واپس اوپر واپس: واپس اوپر واپس. DAVID MALAN: واپس اوپر واپس. بالکل ٹھیک. واپس اوپر واپس اس malloced کر دیا گیا ہے قیمت 5. اپ چلو. یہ ایک، بھی نسبتا آسان ہے لیکن اب آپریشن کے حکم پر غور کریں. یہ بہت آسان تھا آخر میں ٹیلر کے ساتھ. نمبر 5، کورس سے کم 9 کی طرف سے ہے اور تو ہم واپس اوپر ہے، ڈیوڈ ہے اور تمہارا نام کیا تھا؟ جیک: جیک. DAVID MALAN: جیک. واپس اوپر واپس، جیک، اور داؤد. جس کے ہاتھ سے پہلے اپ ڈیٹ کیا جانا چاہئے؟ تم یہاں کیا کرنا چاہتے ہیں؟ ایک جوڑے ممکن طریقے، نہیں ہے لیکن ایک یا ایک سے زیادہ غلط طریقے بھی موجود ہے. سامعین: کہ leftmost کے ساتھ شروع کریں. DAVID MALAN: کہ leftmost کے ساتھ شروع کریں. جو اس وقت یہاں کہ leftmost ہے؟ سامعین: سب سے پہلے. DAVID MALAN: ٹھیک ہے. تو سب سے پہلے کے ساتھ شروع کریں اور آپ کہاں داؤد کے ہاتھ ہو کو اپ ڈیٹ کرنا چاہتے ہیں؟ سامعین: 5 طرف. DAVID MALAN: ٹھیک ہے. پانچ سو داؤد، نقطہ یا واپس اوپر واپس یہاں، اور اب؟ سامعین: واپس اوپر واپس 9 کی طرف اشارہ ہے؟ DAVID MALAN: کامل، Binky آن ہے سوائے سر صرف قسم کے دائیں، سے گر گیا؟ کے ساتھ کیا غلط ہے کیونکہ لفظی اس تصویر؟ سامعین: کچھ بھی نہیں اشارہ کر رہا ہے. DAVID MALAN: کچھ بھی نہیں ہے اب جیک کی طرف اشارہ. ہم لفظی 9 یتیم ہے اور 17، اور ہم لفظی ہے ، اس میموری کے تمام لیک کی طرف سے کی وجہ سے پہلے داؤد کے ہاتھ کو اپ ڈیٹ کرنے، ہے یہ درست طریقے سے کے طور پر insofar کے ٹھیک اب واپس اوپر واپس کی طرف اشارہ، لیکن کوئی ایک تھا تو جیک کی طرف اشارہ کرنے دوردرشتا، تو ہم کھو دیا ہے اس فہرست کے مکمل. تو رد اجازت. تو یہ ایک اچھی بات کرنے کے لئے تھا سفر ختم لیکن اب درست دو. کیا ہم اس کی بجائے کرنا چاہیے؟ جی ہاں؟ سامعین: واپس اوپر واپس 9 کی طرف اشارہ کرنا چاہئے؟ DAVID MALAN: میں نہیں کر سکتا آپ کو اس کے قریب ملتا ہے. 9 میں کون طرف اشارہ کرنا چاہئے؟ سامعین: واپس اوپر واپس. DAVID MALAN: ٹھیک ہے. تو واپس اوپر واپس 9 پہلا نقطہ چاہئے. تو واپس اوپر واپس لینا چاہئے ایک جیسی قیمت پر داؤد سے، جو ایسا لگتا ہے ایک لمحے کے لئے بے کار، لیکن اس دوسری، کیونکہ اب ٹھیک ہے قدم، ہم نے داؤد کے ہاتھ کو اپ ڈیٹ کر سکتے ہیں واپس اوپر واپس اوپر، اور اس کے بعد تو اشارہ کرنے کے لئے ہم صرف کی قسم کے صاف چیزیں اس موسم بہار کی طرح کی طرح ہے کے طور پر اگرچہ، اب وہ ایک درست اندراج ہے. تو بہترین. تو اب ہم وہاں تقریبا رہے ہیں. کی ایک آخری داخل ہیں قیمت 20 کی طرح قدر. ہم ایک حتمی رضاکار malloc سے کر سکتے ہیں؟ اپ چلو. تو یہ ایک چھوٹا سا زیادہ مشکل ہے. لیکن واقعی، کوڈ ہم ہیں تحریری طور پر، زبانی طور پر ہی سہی، صرف ایک گروپ کی طرح ہے اب حالات، ٹھیک ہے؟ ہم اگر ایک شرط تھی اس سے تعلق رکھتا ہے تو جانچ پڑتال آخر، ہو سکتا ہے کہ شروع میں. ہم لوپ کے کچھ قسم کی ضرورت ہے وسط میں جگہ تلاش. تو آپ کا نام کیا ہے کے ساتھ ایسا کرتے ہیں؟ ERIC: ایرک. DAVID MALAN: ایرک؟ ایرک. آپ سے مل کر خوشی ہوئی. تو ہم 20 ہے. پانچ سے بھی کم؟ نہیں. نو سے بھی کم؟ نہیں. 17 سے بھی کم؟ نہیں. ٹھیک ہے. وہ یہاں ہے اور تمہارا نام ایک بار پھر ہیں؟ مقدمہ: مقدمہ. DAVID MALAN: مقدمہ. ALEX: یلیکس. DAVID MALAN: مقدمہ، یلیکس، اور؟ ERIC: ایرک. DAVID MALAN: ایرک. جس کے ہاتھ سے پہلے اپ ڈیٹ حاصل کرنے کے لئے کی ضرورت ہے؟ سامعین: ایرک. ٹھیک ہے. تو ایرک جہاں کی طرف اشارہ کرنا چاہئے؟ 22 میں. اچھا. اور اب اس کے بعد کیا ہے؟ مقدمہ پھر ایرک کی طرف اشارہ کر سکتے ہیں اور اب، اگر آپ لوگ صرف ٹھیک ہے جو کچھ کمرے، بنانے ضعف، اب ہم اندراج کیا ہے. تو اب ایک سوال پر غور لیکن ہمارے رضاکاروں کے لئے آپ کا بہت بہت شکریہ. بہت اچھا کیا. اگر آپ چاہیں تو، لوگوں پر رکھ سکتے. اور ہم نے ایک خوبصورت جدائی تحفہ تو ہے آپ کو ہر ایک کشیدگی گیند لینے کے لئے چاہوں گا. مجھے صرف اس کے نیچے گزرنے دو. لہذا اس پروگرام کی takeaway ہے کیا ہے؟ یہ حیرت انگیز ہو رہا ہے اب ہم ہیں insofar کے طور پر ایک کے لئے ایک متبادل پیش کیا تو محدود نہیں ہے اس صف کچھ مقررہ سائز کی ایک سرنی. وہ متحرک طور بڑھ کر سکتے ہیں. لیکن ہم جیسے بہت ہفتوں میں دیکھا ہے ماضی، ہم مفت کے لئے کچھ نہیں ملے کی طرح ضرور یہاں ایک تجارتی آف ہے. ایک لنک کی ایک الٹا ساتھ تو فہرست، اس تحرک ہے؟ یہ صلاحیت، واضح طور سے بڑھنے اور ہم کو خارج کیا جا سکتا ہے ضرورت کے مطابق اور ہم سکڑ کر سکتے ہیں. ہم کیا قیمت ادا کر رہے ہیں؟ دو مرتبہ سب سے پہلے زیادہ سے زیادہ جگہ، کے طور پر. آپ کی تصویر میں نظر آتے ہیں، اب کوئی ہوں integers کی ایک فہرست ذخیرہ. میں کی ایک فہرست ذخیرہ کرنے رہا ہوں integers کے علاوہ اشارہ. تو میں جگہ کی رقم کو دگنا کر رہا ہوں. اب، ہو سکتا ہے کہ اس طرح نہیں ہے ایک بڑا سودا 4 بائٹس، 8 بائٹس، لیکن یہ یقینی طور پر شامل کر سکتے ہیں بڑی ڈیٹا سیٹ کے لئے سائن اپ. ایک اور منفی پہلو کیا ہے؟ جی ہاں؟ سامعین: ہم کرنا پڑے ان میں سے ایک کی طرف سے ایک گزرنا. DAVID MALAN: جی ہاں. ہم ان میں سے ایک کی طرف سے ایک سے گزرنا ہے. تم نے اس سپر چھوڑ دیا کیا، معلوم مربع بریکٹ کے آسان خصوصیت سنکیتن، زیادہ مناسب طریقے سے رینڈم رسائی کے طور پر جانا، ہم صرف کود کر سکتے ہیں جہاں ایک انفرادی عنصر لیکن اب میں اب بھی تھا تو یہاں اپنے رضاکاروں، میں تلاش کرنے کے لئے کرنا چاہتا تھا تو نمبر 22، میں نے صرف نہیں کر سکتے ہیں بریکٹ کچھ کچھ کرنے کے لئے کود. میں زیادہ، فہرست پر نظر پڑے خطی ہماری تلاشی مثالوں کی طرح، نمبر 22 تلاش کرنے کے لئے. تو ہم وہاں ایک قیمت ادا کی ہے لگ رہے ہو. لیکن ہم کر سکتے ہیں کے باوجود دیگر مسائل کو حل کرنے. اصل میں، مجھے متعارف کرانے انداز کے صرف ایک جوڑے. آپ نیچے گیا ہے تو ماتھر کے ڈائننگ ہال حال ہی میں، آپ کہ یاد کریں گے ان اس طرح ٹرے کی stacks، ہم سے ان ادھار کلاس سے پہلے Annenberg. تو ٹرے کی یہ اسٹیک، اگرچہ، نمائندے اصل میں ہے کمپیوٹر سائنس کے اعداد و شمار کے ڈھانچے کی. ایک آنکڑا ڈھانچہ نہیں ہے کمپیوٹر سائنس میں ایک اسٹیک کے طور پر جانا جاتا ہے جس میں بہت اچھی طرح سے بالکل اس بصری کے لئے خود کو ڈھال لیتا ہے. ان ٹرے میں سے ہر ایک نہیں ہے تو ٹرے لیکن ایک نمبر کی طرح اور میں چاہتا تھا تعداد ذخیرہ کرنے کے لئے، میں یہاں ایک نیچے رکھ سکتا ہے، اور میں، یہاں ایک اور نیچے رکھ سکتا ہے اور اعداد stacking کے جاری ایک دوسرے، اور کیا سب سے اوپر پر اس کے بارے میں ممکنہ طور پر مددگار کیا مطلب ہے کہ ہے یہ اعداد و شمار کے ڈھانچے کی؟ میں باہر ھیںچو کر سکتے ہیں جس کی تعداد سب سے زیادہ آسانی سے؟ وہاں پر سب سے زیادہ حال ہی میں ایک ڈال. تو یہ ہے کہ ہم میں فون کیا ہے کمپیوٹر سائنس ایک LIFO آنکڑا ڈھانچہ. ، میں سب سے پہلے باہر تک. اور ہم طویل کیوں پہلے دیکھیں گے کہ اب مفید لیکن ہو سکتا ہے صرف جائیداد پر غور. آپ کو لگتا ہے تو یہ پاگل کی طرح ڈائننگ ہال یہ کرتا ہے کہ کس طرح کے بارے میں. ہر بار وہ صاف ٹرے اور سب سے اوپر پر تازہ ہیں ڈال، آپ کو پہلے سے صاف کر سکتے ہیں لیکن آخر میں بہت گندا اور دھول بہت نچلے حصے میں ٹرے اگر آپ اصل میں کبھی نہیں اس کے سب سے نیچے حاصل کرنے کے لئے اسٹیک، آپ کی وجہ سے صرف نئے ڈال رکھنے کے لئے اور اس کے سب سے اوپر پر صاف ہیں. ایک ہی بات ہو سکتا ہے ایک سپر مارکیٹ میں بھی. آپ کو ایک ڈسپلے کیس ہے، تو دودھ اور ہر وقت CVS کے یا اس سے زیادہ دودھ ملتا ہے جو، آپ کو صرف milks ہے دھکا آپ نے پہلے ہی واپس کرنے کے لئے ہے اور آپ کے سامنے نئے ڈال آپ کو کچھ بہت گندی لئے جا رہے ہیں آنکڑا ڈھانچہ کے آخر میں دودھ، یہ نچلے حصے میں ہمیشہ ہے کیونکہ مساوانہ اسے واپس میں ہمیشہ ہے. لیکن اس کے بارے میں سوچنے کے لئے ایک راستہ نہیں ہے اعداد و شمار اور مثال کے طور پر، اس کی استر. اگر آپ ان لوگوں میں سے ایک ہیں جنہوں نے پسند کرتا ہے ایپل کے اسٹورز کے باہر لائن جب ایک نئی مصنوعات آتا ہے باہر، آپ کو شاید ہو ایک اسٹیک ڈیٹا کا استعمال نہیں کر ساخت آپ کی وجہ سے ہر کسی کون ہے الگ تھلگ گا پرت کچھ نئے کھلونا خریدنے کے لئے. بلکہ، آپ کو شاید استعمال کر رہے ہیں آنکڑا ڈھانچہ کس قسم کی نظام کی یا کس قسم حقیقی دنیا میں؟ امید ہے کہ یہ ایک لکیر ہے، یا اس سے زیادہ مناسب طریقے سے یا اس سے زیادہ برطانوی کی طرح، ایک قطار. اور یہ ایک قطار بھی ایک ہے باہر کر دیتا ہے کمپیوٹر سائنس میں آنکڑا ڈھانچہ، لیکن ایک قطار ایک بہت ہے مختلف جائیداد. یہ LIFO نہیں ہے. ، میں سب سے پہلے باہر تک. خدا نہ کرے. اس کی بجائے فیفو ہے. سب سے پہلے سب سے پہلے باہر، میں. اور یہ کہ ایک اچھی بات ہے انصاف کی خاطر یقینی طور پر جب آپ کو استر کر رہے ہیں صبح سپر ابتدائی. آپ، آپ سب سے پہلے وہاں حاصل کرنے کے تو پہلے کے طور پر اچھی طرح سے حاصل کرنا چاہتے ہیں. اور اس طرح یہ اعداد و شمار کے تمام ڈھانچے، قطار اور پوٹ اور دوسروں کے bunches، آپ باہر کر دیتا ہے اس کے طور پر صرف ایک سرنی کے بارے میں سوچ کر سکتے ہیں. یہ ہو سکتا ہے، ایک صف ہے ایک مقررہ سائز 4، لیکن یہ چاہوں ہم صرف ڈھیر کر سکتا ہے تو اچھی قسم کا ہونا ٹرے تقریبا infinitely قد اگر ہم کہ بہت سے ٹرے یا تعداد ہے. تو شاید ہم چاہتے ہیں یہاں ایک لنک کی فہرست کا استعمال کرتے ہیں، لیکن تجارتی آف ہونے جا رہا ہے ممکنہ طور پر ہم زیادہ سے زیادہ میموری کی ضرورت ہے، ایک چھوٹا سا زیادہ وقت لیتا ہے، لیکن ہم اسٹیک کے عروج کو محدود نہیں، زیادہ ماتھر کے ڈسپلے کیس کی طرح اسٹیک کے سائز کو محدود ہو سکتا ہے، اور اسی طرح ان ڈیزائن کے فیصلوں ہیں یا بالآخر ہمارے لئے دستیاب اختیارات. ان اعداد و شمار کے ساتھ تو ڈھانچے، ہم شروع کر دیا ہے ممکنہ طور پر نئے اوپری حد دیکھ کیا ماضی میں سپر روزہ تھا اور ہم چھوڑ دیں گے جہاں بند آج اور جہاں ہم حاصل کرنے کے لئے امید ہے کہ گے بدھ کے روز ہے، ہم کریں گے ایک ڈیٹا کو دیکھنے کے لئے شروع ہمیں تلاش کرنے کی اجازت دیتا ہے کہ ساخت لاگ آخر وقت میں اعداد و شمار کے ذریعے ایک بار پھر. اور ہم ہفتے صفر میں، یاد، دیکھا کہ بائنری تلاش یا تقسیم کے ساتھ اور ایک اور فتح. یہ، ابھی تک واپس اور بہتر آ رہا ہے اس بدھ کے مقدس grail ساتھ آنے کے لئے ہو جائے گا صحیح معنوں میں چلتا ہے کہ آنکڑا ڈھانچہ یا نظریاتی طور پر میں مسلسل وقت، جس کے تحت اس میں کتنے کوئی فرق نہیں پڑتا لاکھوں یا چیزوں کی اربوں ہم اعداد و شمار کے ڈھانچے میں ہے، یہ ہم مسلسل وقت لے، شاید ایک قدم یا دو قدم یا 10 اقدامات، لیکن اقدامات کی مسلسل تعداد کہ اعداد و شمار کی ساخت کے ذریعے تلاش کرنے کے لئے. کہ بے شک حضور Grail ہو جائے گا لیکن بدھ کے روز اس پر مزید. پھر ملیں گے. [موسیقی بجانے]