[موسیقی بجانے] ڈیوڈ جے MALAN: ٹھیک ہے. [ہنسی] واپسی پر خوش آمدید. یہ CS50 ہے. اور اس ہفتے کے آخر میں پانچ. اور اب تک، ہم نے بہت زیادہ ہے حاصل کی جاچکی کے لئے لے رہی ہے کہ وہاں آپ نے اس سنکلک، بجنا، موجود ہے اس کی راہ کی طرف invoking گیا دوسرے کے آلے کے ہے کہ کسی نہ کسی طرح بنائیں بلایا جادوئی آپ کے منبع کوڈ میں بدلتا ہے آبجیکٹ کوڈ، zeros اور پیاروں میں کہ آپ کے کمپیوٹر CPU، مرکزی پروسیسنگ یونٹ، اصل میں سمجھتی ہے. ہے کہ ایک بڑی تعداد ہے لیکن یہ باہر کر دیتا ہے میں ہڈ کے نیچے چل رہی ان پٹ اور آؤٹ پٹ کے درمیان. اور میں کہ ہم گوشت تجویز کرنا چاہوں گا تھوڑی سی مزید تفصیل میں میں کہ ان چار مراحل پر، کہا جاتا کچھ ہے پری پروسیسنگ، کچھ ہم نے دیکھا ہے جس کی تالیف،، کہا جاتا ہے کچھ جمع کہا جاتا ہے، اور کچھ ملانے والی ملاقات کی. تو اب تک، ہمارے میں سے کچھ میں پروگراموں، ہم تیزی سے شامل کر لیا ہے. حال ہی میں ہم نے کچھ تیز تھا constants کی وضاحت کرتا ہے. تو یہ باہر کر دیتا ہے ان چیزوں کو کہ ہیش کی علامت یا prefixed کر رہے ہیں پونڈ علامت پری پروسیسر ہیں ہدایات. یہ صرف یہ کہہ کے پسند طریقہ ہے اصل میں ہے کہ کوڈ کی ایک لائن اس سے پہلے کہ کسی اور چیز میں تبدیل کمپیوٹر بھی تبدیل کرنے کی کوشش کریں آپ کے zeros اور پیاروں میں پروگرام. مثال کے طور پر، تیز سٹینڈرڈ میں شامل ہیں I / O. H، بہت زیادہ صرف جانے کا مطلب ہے کہ آگے ہے، فائلوں کے مندرجات پر قبضہ stdio.h اور وہاں ان کے چسپاں کر دیں. تو کوئی zeros اور پیاروں ابھی اس نقطہ پر. یہ واقعی صرف ایک متبادل ہے. اور اس کے نام نہاد کے دوران کیا ہے پری پروسیسنگ کے مرحلے، جب آپ اصل میں خاص طور پر بجنا چلانے یا زیادہ تر مقدمات میں بنائیں. تو یہ سب کچھ ہو رہا کر دیا گیا ہے سب سے پہلے خود کار طریقے سے اس طرح اب تک. پھر تالیف مرحلہ آتا ہے. لیکن ہم oversimplified گیا ہے تالیف. ایک پروگرام مرتب واقعی مطلب ، سی کچھ اس طرح سے اسے لے لو ماخذ کوڈ سے ہم نیچے، لکھ دیا گیا ہے کچھ اسمبلی کہا جاتا ہے. اسمبلی زبان کی کم سطح ہے زبان، کہ شکر ہے، ہم نہیں کریں گے زیادہ سے زیادہ کرنے کے لئے موقع ہے اس سمسٹر لکھتے ہیں. لیکن اس میں سب سے کم سطح پر ہے آپ لفظی لکھنا شروع اس معنی شامل کریں اور منہا کریں اور ضرب اور لوڈ میموری اور میموری بچانے کے لئے، بہت بنیادی ہدایات ہے کہ ایک کمپیوٹر، ہڈ کے نیچے، اصل میں سمجھتی ہے. آخر میں، جمع اس زبان لیتا ہے ہم کیا گیا ہے کہ zeros اور پیاروں پر اس طرح اب تک بیان. اور واقعی آخر میں، نام نہاد ہے مرحلے سے منسلک، جو ہم دیں گے یکجا جس میں صرف ایک لمحے، میں دیکھ آپ zeros اور zeros کے ساتھ والوں اور اس سے پہلے والے دوسرے لوگوں کو تمہیں پیدا کیا ہے. تو یہ سپر سادہ پروگرام پر غور کریں. یہ ہفتہ 1 سے تھا. یہ صرف، عالمی خوش آمدید، انہوں نے کہا کہ سکرین پر. ہم بجنا کے ذریعے اس بھاگ گیا. یا پھر ہم اس کے ذریعے بنائیں بھاگ گیا جس بجنا بھاگ گیا. اور وقت outputted جہاں کچھ zeros اور ہیں. ہے لیکن یہ باہر کر دیتا ہے ایک انٹرمیڈیٹ قدم ہے. مجھے یہاں جانا ہے - افوہ، نہیں کیا ابھی تک اسے دیکھنے کے لئے چاہتے ہیں. میں اپنے آلہ کرنے کے لئے یہاں جاتے ہیں اور میں hello.c، یہاں کھول اسی پروگرام ہے. اور کیا میں اپنے ٹرمینل میں کیا کرنے جا رہا ہوں یہاں ونڈو میں کرنے جا رہا ہوں کیا جاتا ہے ، بجنا چلانے کے بجائے جو بنائیں کے چاروں automates ہمارے لئے ان اقدامات. اور میں بجنا ایس کیا کرنے والے اور رہا ہوں داخل تو hello.c اور پھر. اور میں ایک ٹمٹمانے فوری طور پر حاصل ایک بار پھر، جو اچھا ہے. اور اب ایک قدرے بڑی ونڈو میں، میں یہاں gedit کو کھولنے کے لئے جا رہا ہوں. اور میں، کہ ایک فائل کو کھولنے کے لئے جا رہا ہوں باہر کر دیتا ہے، hello.s یہ کہا جاتا ہے کہ اسمبلی کی زبان پر مشتمل ہے میں نے پہلے کہا جاتا ہے. اور یہ اسمبلی کہا جاتا ہے کیا ہے زبان، منصفانہ کم سطح ہدایات کہ آپ انٹیل CPU یا جو کچھ بھی اس کے اندر ہے یہ ہے کہ سمجھتی ہے. اور MOV اقدام کے لئے ہے. کال کے لئے ہے ، ایک بہت کم سطح تقریب بلا. ذیلی منہا کے لئے ہے. آپ کے اندر ایک خاص طور پر سی پی یو ہے تو جب آپ کے کمپیوٹر کے، کیا کرتا ہے پر واضح، بمقابلہ دوسرے CPUs مارکیٹ ہے جس کی ہدایات پر یہ سمجھتا ہے اور اکثر کس طرح موثر یہ یہ کسی عمل پر ہے کتنی تیزی سے، ہے ان ہدایات کی. اب اس پر زیادہ کے لئے، آپ کو لے جا سکتے ہیں کالج میں اگلے موسم خزاں CS61. لیکن یہاں ہم کچھ، مثال کے طور پر، ہے واقف نظر آتے ہیں کہ شناخت. hello.c پروگرام کا نام ہے. . متن - دلچسپی کے زیادہ وہاں نہیں ہے ابھی، یاد ہے کہ متن جہاں میں طبقہ، پیر کے طور پر، ہے میموری آپ کے پروگرام اصل میں اپ ختم ہوتا ہے. تاکہ کم از کم vaguely ہے وہاں واقف. یہاں، کورس کے، ایک ذکر ہے ہمارے مرکزی تقریب کی. نیچے طومار کر رہا ہے، ان چیزوں کا حوالہ دیتے ہیں نام نہاد کے رجسٹر، کے بہت چھوٹے حصوں آپ کا اصل CPU کی یاد کے اندر. اور میں بھی ذیل میں سکرال اگر مزید، میں کسی قسم کو دیکھ ASCII کا بالواسطہ ذکر. اور، یقینا، کہ سٹرنگ ہے، ہیلو، کوما، دنیا. اتنی لمبی کہانی مختصر ہے، یہ کیا گیا ہے ، خود کار طریقے سے، آپ کے لئے ہو رہا ہڈ کے نیچے اس وقت کے تمام. اور کیا ہو رہا ہے واقعی میں ایک بار ہے آپ بجنا چلانے کے، یا اس کی راہ کی طرف سے ہے ، آپ سب سے پہلے ہو رہی ہے، بنائیں ماخذ کوڈ کی طرف سے، اسمبلی زبان کے نام نہاد. پھر بجنا اس اسمبلی کو تبدیل کیا جاتا ہے نیچے zeros اور پیاروں کے لئے زبان. اور یہ ہم شروع سلائڈ ہے پر ہفتے 0 میں ہماری بحث - اور پھر اس پر ہفتہ 1. اور پھر آخر میں، ان لوگوں کے zeros اور پیاروں zeros اور لوگوں کے ساتھ مل کر کر رہے ہیں ان لائبریریوں سے ہم لے رہی ہے سٹینڈرڈ I / O یا طرح حاصل کی جاچکی کے لئے سلک لائبریری یا اس سے بھی CS50 لائبریری. تو مزید اس تصویر پینٹ ضعف، ہم hello.c ہے. اور یہ، کورس کے، printf کا استعمال کرتا ہے دنیا، ہیلو کہنے کے لئے کام کرتے ہیں. تالیف مرحلے پر اس کو نیچے لے جاتا ہے وہ فائل ہم صرف یہاں تک کہ، hello.s دیکھا عام طور پر خارج کر دیا ہے کہ اگرچہ خود کار طریقے سے آپ کے لئے. لیکن اس اسمبلی کوڈ ہے درمیانی مرحلہ میں. اور پھر ہم اسمبلی جمع جب جب آپ زبان،، تو بات کرنے ہے ان zeros اور پیاروں ملتا ہے. تو ہم پر آج موثر انداز میں یکبر ہے کیا حاصل کی جاچکی کے لئے لے جا رہا ہے کہ ہم کیا گیا ہے، ماخذ کوڈ جا کا مطلب ہے کوڈ اعتراض کرنے. لیکن آخر میں، اب اسی تصویر - یہ ختم کرنے کے لئے دھکا چلو بائیں ہاتھ کی طرف. اور یاد رکھیں کہ اوپر میں میں stdio.h کا ذکر کیا. کہ ہم نے شامل کر دیا ہے کہ ایک فائل ہے تقریبا تمام کے ہم نے لکھا ہے پروگرام. اور یہ کہ جس کے مندرجات فائل ہے کاپی پیسٹ ہو، مؤثر طریقے سے آپ کے کوڈ کو اوپر. لیکن یہ ہے کہ، ایک کمپیوٹر پر باہر کر دیتا ہے نظام کہیں، شاید ایک ہے کسی سال میں لکھا ہے کہ stdio.c فائل پہلے اس کے تمام لاگو اعلان کیا گیا کہ کام کرتا ہے stdio.h میں. اب حقیقت میں اس پر شاید نہیں ہے یا یہاں تک کہ میں اپنے میک یا اپنے کمپیوٹر کی CS50 آلات ایک خام سی کوڈ ہے. کسی نے پہلے ہی مرتب کیا اور شامل اے آبجیکٹ کوڈ کے لئے فائل یا ایک ایک مشترکہ لائبریری سے مراد جس فائل، کہ پہلے سے نصب کیا ہے اور کر رہا ہے آپ کے لئے پہلے سے مرتب کیا. لیکن بے شک وہاں موجود ہے لگتا ہے متوازی میں ہمارے کمپیوٹر stdio.c پر بجنا کے ساتھ. آپ کے کوڈ کو مرتب کیا جا رہا ہے اور جمع. stdio.c کے کوڈ کو مرتب کیا ہے اور کیا جا رہا ہے جمع، تو یہ بہت ہی آخری ہے کہ یہاں نیچے، قدم، ہم کسی نہ کسی طرح کرنا ہے لنک، تو بات کرنے کے لئے، آپ کی zeros اور پیاروں ایک میں اس کا یا اس zeros اور لوگوں کے ساتھ بالآخر یہ ہے کہ سادہ پروگرام خوش صرف ملاقات کی. تو یہ ہے کہ جادو کی تمام ہے اس طرح اب تک جو کچھ ہو رہا کر دیا گیا. اور یہ لینے کے لئے جاری رہے گی عمل کے لئے حاصل کی جاچکی ہے، لیکن احساس رسیلی تفصیلات کی ایک بہت کچھ ہے وہاں کے نیچے چل رہی. اور یہ بناتا ہے کیا ہے آپ کی انٹیل کے اندر کے ساتھ کمپیوٹر خاص طور پر مختلف. تو یاد رکھیں کہ پر، اگر آپ چاہیں تو پر اس جمعہ کو دوپہر کے کھانے کے لئے ہمارے ساتھ شامل، جاتے ہو ہمیشہ کی طرح جگہ cs50.net/rsvp کرنے کے لئے، 1:15 PM اس جمعہ. اور اب چند ایک کے اعلانات. تو ہم نے کچھ اچھی خبر ہے. اور ہم نے کچھ بری خبر ہے. یہاں کچھ اچھی خبر کے ساتھ شروع کریں. [کراہنا] ٹھیک ہے. ٹھیک ہے، یہ ایسا ہے، تو تکنیکی طور پر چھٹی ہے اس نے ہمیں بہت سے ایک تحفہ نہیں ہے. کورس کی لیکن پھر بری خبر. [کراہنا] میں نے وقت کی ایک بہت خرچ یہ متحرک تصاویر پر. [ہنسی] ایک کا جائزہ لینے کے سیشن ہو گا یہ پیر کو آنے والے. یہ 5:30 بجے ہونے جا رہا ہے. ہم ان تمام تفصیلات کی آپ کو یاد دلاتی رہے گی کورس کی پر ای میل کے ذریعے دن کے وقت کے صرف ایک جوڑے میں ویب سائٹ. یہ فلمایا اور دستیاب بنایا جائے گا جلد ہی اس کے بعد. اگر آپ نہیں کر سکتے اس لئے کہ اگر پیر کو رات سلاٹ، فکر نہ کرو. حصے اس آنے والے ہفتے بھی کرے گا گئے تمام سوالات کے لئے جائزہ لینے پر توجہ مرکوز. اپنا سیکشن ہے جو پیر، پر ہے تو بے شک یونیورسٹی کی چھٹی، ہم کریں گے اب بھی حصے میں ملتے ہیں. آپ کو صرف اس بنا نہیں کر سکتے ہیں سیکشن آپ جا رہے ہیں کیونکہ دور، ٹھیک ہے. اتوار یا منگل کے سیکشن یا میں شرکت جیسن کے حصے دھن میں، جس میں ہے آن لائن دستیاب. تو، زیادہ بری خبر. تو نصاب کے مطابق، ہم اگلے جمعہ لیکچر ہے. لیکن اچھی خبر - واضح طور پر، میں اس پر بہت زیادہ وقت گزارا. [ہنسی] ہم نے جمعہ کی اگلے لیکچر منسوخ کر دیں گے. تو وہ ہمارے لئے ایک تحفہ ہو جائے گا، لہذا آپ واقعی ایک اچھا مہلت میں ہو سکتا ہے اس ہفتے اور اس وجہ سے دو ہفتے کے درمیان. کوئی لیکچر اگلے ہفتے، صرف ایک چھوٹا سا تو تم ہونا چاہئے جس کے لئے تھوڑا سا کوئز، تیزی سے حوصلہ افزائی ہو رہی ہے. تو اب ہماری طرف موڑ دو بے شک زیادہ بصری ہے کہ کچھ اور اس سے زیادہ دلچسپ اور اسٹیج قائم کرنے کے لئے افق پر ہونے جا رہا ہے اس کے لیے ہفتے کے وقت کے صرف ایک جوڑے میں. سب سے پہلے گئے تمام سوالات کے بعد، ہم تبدیل کر دونگا ہمارا مسئلہ سیٹ کی ایک اور پر توجہ مرکوز ڈومین مخصوص مسئلہ ہے، اس کے زیادہ عام طور پر عدالتی یا سیکورٹی. اس مسئلہ کے ساتھ اصل میں، روایت سیٹ میرے لئے میں سے ایک ہے بھر میں چلنے کے ساتھی یا مصدقین تعلیم میں سے کچھ تصاویر لینے کے کیمپس غیر واضح طور پر قابل شناخت ہے لیکن لوگوں، پھر جگہوں پر، یا چیزوں کو، ہر سال میں کسی نہ کسی طرح اتفاقی طور پر خارج کر دیں کا انتظام یا ڈیجیٹل میڈیا کارڈ خراب کہ ہماری کیمرے کے اندر ہے. لیکن کوئی بڑی بات نہیں. میں آگے بڑھو اور پلگ کر سکتے ہیں میرے کمپیوٹر میں ہے. میں ایسا ہے، تو اس کا ایک فارنسک تصویر بنا سکتے ہیں zeros کاپی کی طرف سے بولتے ہیں اور کرنے کے لئے کہ میموری کارڈ کے لوگ بند، چاہے اس کی ایک ایسڈی کارڈ یا کامپیکٹ فلیش کارڈ یا آپ کے ساتھ جو کچھ بھی واقف ہو. اور پھر ہم اس سے باہر کے حوالے کر سکتے ہیں. اور اس طرح دوسرے کے درمیان آنے والے چیلنج، آپ کے لئے چیزیں لکھنے کے لئے ہو جائے گا کے پورے گچرچھی ٹھیک ہو سی کوڈ میرے لئے JPEGs اور ظاہر کیا جائے گا ان لوگوں، مقامات، یا چیزیں. اور ہم بھی اس مسئلہ میں، میں بات کروں گا سیٹ اور دنوں میں کے بارے میں، میں آنے کے لئے زیادہ عام طور پر گرافکس. ہم، ایک کورس ان کا استعمال کیا ہے باہر کو توڑنے کے لئے. حاصل کی جاچکی کے لئے لیکن آپ ایسا کر لیا ہے ان اعلی سطحی تصور وہاں موجود ہے rectangles اور ovals کی. لیکن ہڈ کے نیچے پکسلز موجود ہیں. اور آپ کو شروع کرنے کے لئے تھا ان لوگوں کے بارے میں سوچ. یا آپ P-سیٹ 4 سوچنا پڑے گا کے لئے اپنے اینٹوں کے درمیان فرق کے بارے میں، کہ کس طرح فوری طور پر آپ کو گیند بھر میں آگے بڑھ رہا ہے کر رہے ہیں کے لئے سکرین کے باہر توڑ. اس لئے کے اس اصول کی ہے کہ آپ کی سکرین پر بندیاں پہلے سے ہی کھیل میں آتے ہیں. اب تم دیکھ کیا، اگرچہ، کیا ہے اگر آپ ایک کمپیوٹر سکرین پر ملتی ہے. کیا تم نے کبھی کچھ اچھا ہے یا دیکھا ہے تو برا ٹی وی، مشکلات وہ بہت زیادہ ہیں technophobes طرح سامعین کا علاج جو واقعی نہیں کرتے بہت کچھ کمپیوٹنگ کے بارے میں جاننا. اور اس طرح یہ کام پولیس کے لئے بہت آسان ہے کہنے کے لئے جاسوسی، آپ کر سکتے ہیں میرے لئے اس کو صاف؟ یا دائیں، کو بہتر بنانے کے؟ بڑھانے میں Buzz لفظ کی طرح ہے سب سے زیادہ کسی بھی جرم سے متعلق شو. آپ کو ایک بہت لے اور اگر حقیقت ہے کر ایک مشتبہ شخص کی تصویر blurry کچھ برا، کیا تم نہیں کر سکتے ہیں صرف اس کو بہتر بنانے کے. آپ infinitely میں زوم نہیں ہو سکتا. اگر آپ کسی کی چمک میں نہیں دیکھ سکتا اس کا ارتکاب کیا جو آنکھ کے باوجود خاص طور پر جرم، ٹی وی پر اس کی کوریج. اور اس طرح اس کی حوصلہ افزائی کرتے ہیں کے ساتھ اس آئندہ ہونے والے مسئلہ میں ایک جھلک کے ساتھ قائم کچھ پتہ چلتا ہے جس کے ساتھ آپ واقف ہو سکتا ہے. [ویڈیو پلے بیک] -ٹھیک ہے. اب، تم میں ایک اچھی طرح سے دیکھ لیں. اسے پکڑو. کہ واپس چلائیں. ایک منٹ انتظار کریں. دائیں دیکھیں. -آمدید. کہ منجمد. اسکرین مکمل. -ٹھیک ہے. کہ منجمد. ہاں، اس پر اپ کو سخت کرے گا؟ اس لڑکے پر میں ویکٹر واپس وہیل کی طرف سے. اس موقع پر یہیں پر میں زوم. کے ساتھ حق کا سامان، imaged وسیع اور تیز کیا جا سکتا ہے. کیا ہے؟ یہ اضافہ پروگرام ہے. -سکتا ہے آپ کو کسی بھی اپ کہ واضح؟ میں نہیں جانتے. اس میں اضافہ کرتے ہیں. سیکشن A-6-بہتر بنائیں. میں تفصیل سے بڑھا اور - میں اضافہ کرنے کے لئے کافی ہے. میری سکرین پر اس کی رہائی. اس کی آنکھوں میں عکاسی-بہتر بنائیں. کی اس کے ذریعے چلانے-چلو ویڈیو اضافہ. -ایڈگر، آپ اس میں اضافہ کر سکتے ہیں؟ پر رکو. -I've اس کی عکاسی پر کام کر رہا. -کسی کی عکاسی. -عکاسی. عکاس-ہے آدمی کے چہرے کا. -عکاسی. -آمدید عکاس ہے. آئینے پر میں زوم. -آپ کو ایک عکس دیکھ سکتے ہیں. -سکتے ہیں اگر آپ کو یہاں سے تصویر کو بہتر بنانے کے؟ -سکتا ہوں تم یہیں اس میں اضافہ؟ -سکتا ہے تم اس میں اضافہ؟ -سکتا ہے تم اس میں اضافہ؟ -سکتے ہیں ہم نے اس میں اضافہ؟ -سکتا ہے تم اس میں اضافہ؟ ایک دوسرے پر ذرا رکو، میں بڑھانے ہوں گے. دروازے پر میں زوم. -X10. -زوم. [ہنسی] رکنیت-منتقل کریں کو روکنے کے، انتظار کریں. سٹاپ. اسے روک دیں. کے ارد گرد ایک 75 ڈگری-گھمائیں عمودی براہ مہربانی. [ہنسی] حصہ واپس سٹاپ، اور دروازے کے بارے میں ایک بار پھر. ایک تصویر enhancer-ملا کہ بٹ نقشہ کر سکتے ہیں؟ -شاید ہم پردیپ سین استعمال کر سکتے ہیں طریقہ ونڈوز میں دیکھنے کے لئے. -یہ سافٹ ویئر آرٹ کی ریاست ہے. -آئکن قیمت بند ہے. کے ساتھ صحیح مجموعہ یلگوردمز کی. -وہ الیومینیشن یلگوردمز لیا ہے اگلے درجے اور میں ان کا استعمال کر سکتے ہیں اس تصویر کو بہتر بنانے کے. پر لاک کریں اور Z محور کو وسعت. -بہتر بنائیں. -بہتر بنائیں. -بہتر بنائیں. -منجمد اور بہتر بنانے کے. [END ویڈیو پلے بیک] ڈیوڈ جے MALAN: تو مسئلہ سیٹ کریں 5 وہاں سامنے کیا ہے. تو ہم جلد ہی ایک بہتر تفہیم مل جائے گا کب اور کیوں آپ کر سکتے ہیں کے اور ہمارے اس راہ میں میں اضافہ نہیں کر سکتے. لیکن اس سے پہلے کی ہماری توجہ کو واپس دو ہم کروں گا عمارت کے بلاکس میں سے کچھ کرنے کے لئے اس کہانی کو بتانے کے قابل ہو جائے کرنے کی ضرورت ہے. تو ہم اس تصویر پر مبذول کرائی کہ یاد پیر اور تھوڑا سا گزشتہ ہفتے. اور یہ چیزوں کی ترتیب کی وضاحت آپ کے کمپیوٹر کی میموری میں جب کچھ پروگرام چلا رہا. اوپر ٹیک طبقہ، یاد، مراد اصل zeros اور پیاروں پر کہ آپ کے پروگرام کو تحریر کریں. آمدید، کہ ذیل میں ہے، کچھ initialized یا غیر ابتدا شدہ اعداد و شمار، جو عام طور پر یا constants جیسی چیزوں سے مراد ڈور یا ہے کہ عالمی متغیر پیشگی اعلان کر دیا گیا. وہاں ڈھیر ہے، لیکن ہم آ جائیں گے واپس تھوڑا سا میں اس پر. اور پھر اسٹیک ہے. بہت سے ٹرے کی ایک اسٹیک کی طرح میموری ہو جاتا ہے جہاں کیفیٹیریا، یہ ہے پرتوں اور جب پرتوں آپ کو ایک پروگرام میں کیا کروں؟ کے لئے اسٹیک استعمال کیا ہے؟ جی ہاں؟ تقریب کی کال کریں. اگر آپ کو ایک تقریب فون کسی بھی وقت، ہے اس کے لیے میموری کی sliver کو دی مقامی متغیر یا اس کے پیرامیٹرز. اور pictorially، ہم دیکھتے ہیں کہ ہر ایک کے ساتھ جب ایک مسلسل تقریب، سے ملاقات کی کالیں بی سی کالز کالوں ڈی، وہ اسٹیک پر پرتوں جاتے ہیں. اور ان سلائسین میں سے ہر ایک کے اندر اندر میموری بنیادی طور پر ایک منفرد گنجائش ہے اس تقریب کے لئے، جو ظاہر ہے، آپ کے حوالے کرنا چاہتے ہیں تو پریشانی ہے ایک تقریب سے دوسرے ایک ٹکڑا پر آپ یہ چاہتے ہیں کہ اعداد و شمار کے mutate یا تبدیل کرنے کے لئے. اس لئے کو چالو کرنے کے کرنے کے لئے ہمارے حل کیا تھا ایک اسٹیک کی طرف سے نمائندگی ایک تقریب اندر میموری تبدیل کرنے کے لئے تیار ایک اور اسٹیک فریم کے؟ کس طرح ایک دوسرے سے ان دو باتیں کرتے ہیں؟ تو اشارہ یا پتوں کی راہ کی طرف سے، جہاں میں جس میں، ایک بار پھر، صرف وضاحت ایک مخصوص کی یاد، کی طرف سے جس طرح سے کاٹنے تعداد میں، خاص طور پر قیمت پایا جا سکتا ہے. تو بھی ہم جاری آخری بار یاد ایک میں کہانی اور دیکھا کافی چھوٹی گاڑی کے پروگرام. اور اس پروگرام سے چند ایک کے لئے چھوٹی گاڑی ہے وجوہات کی بناء پر، لیکن سب سے زیادہ تشویش کی بات سے ایک ہے یہ کیا دیکھنے کے لیے ناکام ہو جاتا ہے کی وجہ سے؟ جی ہاں، یہ ان پٹ کی جانچ پڑتال کرنے میں ناکام ہے. معذرت؟ یہ 12 حروف سے زیادہ ہے تو. بہت چالاکی، memcopy بلا جب، جس میں، نام سے پتہ چلتا ہے کے طور پر، صرف اپنی دوسری دلیل سے کاپیاں میموری اس کی پہلی دلیل میں. تیسری دلیل، بہت چالاکی سے، ہے تم نہیں اس بات کو یقینی بنانے کے لئے کی جانچ پڑتال ، اس معاملے میں، لمبائی سے زیادہ کی کاپی بار کے، حروف کی تعداد منزل میں، جس میں یہ ہے سرنی سی لیکن مسئلہ یہ ہے کہ کیا سی خود کافی بڑا نہیں ہے تو اس کو ہینڈل کرنے میں؟ آپ کی تعداد میں کاپی کرنے کے لئے جا رہے ہیں آپ کو دی گئی ہے کہ بائٹس. لیکن آپ نے واقعی اور کیا ہے آپ کے لئے کمرے ہے سے زیادہ رائج؟ ٹھیک ہے، اس پروگرام کے بہت بیوقوفی صرف آنکھ بند کر کے یہ جو کچھ بھی لے جانے کے لئے آمدنی دیا، ہیلو الٹا سلیش 0 ہے سٹرنگ مختصر ہے عظیم ہے تو کافی، پانچ حروف کی طرح. لیکن یہ اصل میں 12 حروف ہے یا اگر 1،200 حروف، ہم آخری بار دیکھا آپ کو صرف مکمل طور پر کرنے کے لئے جا رہے ہیں کہ میموری ادلیکھت کہ آپ کا تعلق نہیں ہے. اور سب سے بری مقدمہ، آپ ادلیکھت کہ اگر ہمیں کہا جاتا ہے کہ وہاں سرخ حصے ایڈریس واپس - یہ صرف جہاں کمپیوٹر خود کار طریقے سے، آپ کے لئے، پیچھے دور مناظر، tucks ایک 32 بٹ کی قیمت ہے کہ یہ کیا پتے پر یاد دلاتی ہے واپس جب FOO، یہ دوسری تقریب، عمل کیا جاتا ہے. یہ ایک طرح کی روٹی crumb ہے جو اسے واپس کرنے کے لئے. اگر آپ ممکنہ طور پر، کہ ادلیکھت تو تم برے آدمی ہو، کر سکتے ہیں کر سکتے تھے ممکنہ طور پر قبضہ کسی کے کمپیوٹر. اور تم سب سے زیادہ یقینی طور پر کروں گا زیادہ تر مقدمات میں کریش ہوا. اب یہ مسئلہ صرف جارہی گیا تھا ہم میموری کے بارے میں بات کرنا شروع کر دیا کے طور پر زیادہ عام طور پر انتظام. اور malloc، میموری آونٹن کے لئے، ہے ہم مختص کرنے کے لئے استعمال کر سکتے ہیں کی تقریب ہم پہلے سے نہیں جانتے جب میموری ہم نے کچھ ضرورت ہو سکتی ہے. لہذا مثال کے طور پر، میں واپس جانا تو یہاں آلات کے لئے. اور میں نے آخری بار hello2.c سے کھول دیکھا جو یہاں اس پروگرام، یاد اس طرح کچھ، صرف تین لائنوں - آپ کا نام، تو سٹرنگ کا نام، ریاست بائیں طرف، getstring برابر ہے. اور پھر ہم نے اسے باہر پرنٹ صارف کا نام. تو یہ ایک سپر سادہ پروگرام تھا. واضح کرنے کے لئے، مجھے آگے جانے دو اور ہیلو-2 بناتے ہیں. میں ڈاٹ سلیش خوش-2 کرنے کے لئے جا رہا ہوں. اپنا نام بتاو - ڈیوڈ. درج کریں. ڈیوڈ خوش. یہ ٹھیک ہے کام کرنے کے لئے لگ رہا ہے. لیکن کیا واقعی میں ہو رہا ہے یہاں ہڈ کے نیچے؟ سب سے پہلے چلو کچھ تہوں واپس چھیل. سلک ہم نے صرف ایک متبادل ہے اس کے لئے احساس ہوا؟ چار ستارہ. تو اس کا ایک چھوٹا سا زیادہ arcane کرنے دو لیکن تکنیکی طور پر درست یہ ہے کہ مطلب یہ ہے کہ جس کی وجہ سے چار ستارہ ہے، نام، جی ہاں، ایک متغیر ہے. لیکن کس نام اسٹورز کی ایڈریس ہے ایک چھوٹا سا عجیب لگ رہا ہے جس کی وجہ سے چار، میں ایک تار واپس ہو رہی ہے کیونکہ. میں واپس ایک سے زیادہ ہو رہی ہے حروف ایک چار نہیں. لیکن کورس کے، آپ صرف پہلی ضرورت یاد کرنے کی چار کا پتہ جہاں کیونکہ اسی وجہ سے پوری سٹرنگ ہے؟ آپ کو کیسے پتہ ہے جہاں کے اختتام سٹرنگ آغاز علم ہے؟ الٹا سلیش صفر. تو ان دونوں سراگ کے ساتھ آپ کو پتہ شروع اور ختم ہونے سے پہلے کسی بھی سٹرنگ وہ لوگ اتنے لمبے وقت تک کے طور پر، کر رہے ہیں مناسب طریقے سے کہ انگیز null سے قائم ٹرمنیٹر، کہ الٹا سلیش صفر. لیکن یہ getstring بلا رہا ہے. اور یہ کہ getstring باہر کر دیتا ہے یہ سب وقت قسم کی تھی ہمارے لئے دھوکہ دے. یہ اس بات کا یقین کرنے کے لئے، اس کی مزدوری کر رہا ہے صارف کی طرف سے ایک تار ہو رہی ہے. لیکن اس کی یاداشت کہاں ہے سے آ گیا؟ ہم یہاں تصویر پر واپس جائیں اور اگر صرف ایک طرف سے تعریف کا اطلاق لمحے پہلے، کہ اسٹیک ہے کہاں افعال کو کہا جاتا ہے جب میموری، جاتا ہے اس منطق کی طرف سے، آپ کو getstring فون جب اور پھر میں ٹائپ کریں D-A-V-I-D، درج ہے کہاں D-A-V-میں نے ڈی الٹا سلیش صفر کی بنیاد پر ذخیرہ کہانی ہم نے اب تک ہمیں بتایا ہے؟ اس میں لگ رہے ہو گے اسٹیک، ہے نا؟ آپ سٹرنگ حاصل کال جب آپ کو ایک حاصل اسٹیک پر میموری کا تھوڑا سا ٹکڑا. تو یہ ہے کہ D-A-V-میں ڈی کی وجہ سے کھڑا ہے الٹا سلیش صفر محفوظ کیا جاتا ہے وہاں اسٹیک میں. لیکن واپسی getstring، ایک منٹ رکو کہ سٹرنگ، تو بات کرنے کے لیے، جس کا مطلب ہے یہ کیفیٹیریا سے ٹرے ہے اسٹیک اتار لیا جاتا ہے. اور ہم اس کے طور پر جلد ہی کے طور پر آخری بار کا کہنا ہے کہ تقریب کی واپسی، اور آپ کو لے کہ اسٹیک بند ٹرے،، تو بات کرنے، کیا آپ کی باقیات کے بارے میں فرض کر سکتے ہیں کہ میموری؟ میں قسم کے سوال نمبروں کے طور پر ان کی redrew وہ مؤثر طریقے سے بننے کی وجہ سے نامعلوم اقدار. جب کچھ وہ دوبارہ استعمال کیا جا سکتا ہے اگلے کی تقریب میں کہا جاتا ہے. دوسرے الفاظ میں، ہم ہو تو ذخیرہ کیا جائے گا - میں نے ایک فوری تصویر اپنی طرف متوجہ کریں گے یہاں اسٹیک کی. ہم نیچے ڈرائنگ کرنے کے لئے ہو تو میری برقرار طبقہ کی، اور ہم کہیں گے یہ میموری کی جگہ ہے بنیادی اور شاید ARG سی اور کی طرف سے قبضہ کر لیا ARG V اور پروگرام میں کچھ اور، getstring کہا جاتا ہے جب، شاید getstring ہو جاتا ہے یہاں میموری کا ایک حصہ. اور پھر D-A-V-D-میں کسی نہ کسی طرح اس تقریب میں ختم ہوتا ہے. اور میں oversimplify کرنے جا رہا ہوں. لیکن کی فرض کرتے ہیں اس کے D-A-V-میں ڈی ہے کہ الٹا سلیش صفر. تو یہ بہت سے بائٹس میں استعمال کیا جاتا ہے getstring کے لئے فریم. لیکن جیسے ہی getstring کی واپسی کے طور پر، ہم آخری بار نے کہا کہ میں اس کی یاد یہاں تمام ہو جاتا ہے - woops! - تمام مؤثر طریقے سے ختم ہو جاتا ہے. اور ہم سوال کے طور پر اب اس کے بارے میں سوچ کر سکتے ہیں نمبروں کون جانتا ہے کیونکہ کیا میموری بننے جا رہی ہے. بے شک، میں بہت کثرت سے کام کرتا ہے فون getstring کے مقابلے میں دوسرے. اور جیسے ہی مجھے کوئی اور فون کے طور پر getstring سے زائد تقریب، ہو سکتا ہے نہیں میں ہم نے ابھی دیکھا اس مخصوص پروگرام لیکن کچھ دوسرے، ضرور کچھ دوسرے میں تقریب میں دی جا رہی ختم ہو سکتا ہے اسٹیک میں اگلے جگہ. تو یہ ہے کہ getstring اسٹورز نہیں ہو سکتا اسٹیک پر D-A-V-میں ڈی میں کیونکہ فوری طور پر اس تک رسائی سے محروم ہوجاتے ہیں. لیکن ہم جانتے ہیں کہ وہ getstring صرف وہی واپس؟ یہ واپس لوٹنے نہیں ہے مجھے چھ حروف. یہ حقیقی معنوں میں کیا آ رہا ہے ہم نے آخری بار یہ نتیجہ اخذ؟ سب سے پہلے ایڈریس. تو کسی نہ کسی طرح، آپ getstring کہا جاتا ہے جب، اس کے لئے میموری کا ایک حصہ مختص ہے سٹرنگ کہ صارفین کی قسم اور اس کے پھر واپس لوٹنے ایڈریس. اور یہ آپ کے لئے جب چاہتے ہیں باہر کر دیتا ہے اس میں میموری مختص کام راستہ اور کہا جاتا ہے اس شخص پر واپسی کہ تقریب، کا پتہ میموری کے اس حصہ، آپ بالکل میں اسٹیک میں ڈال نہیں کر سکتے ہیں نیچے، کیونکہ فعل کے یہ صرف ہے بہت تمہارا نہیں بن جا فوری طور پر، لہذا آپ کو شاید اندازہ لگا سکتا ہوں جہاں ہم شاید ٹاس کرنے کے لئے جا رہے ہیں اس کی بجائے، نام نہاد ڈھیر. تو آپ کی میموری کی کے سب سے نیچے کے درمیان ترتیب اور آپ کی میموری کی کے سب سے اوپر ترتیب طبقات کے پورے گچرچھی ہیں. ایک اسٹیک ہے، اور حق اس کے اوپر ڈھیر ہے. اور ڈھیر صرف ایک مختلف حصہ ہے کام کرتا ہے کے لئے استعمال نہیں ہے کہ میموری کہا جاتا ہے کہ وہ کر رہے ہیں جب. یہ جب طویل مدت کے میموری کے لئے استعمال کیا جاتا ہے آپ کو ایک تقریب کے کچھ پر قبضہ کرنا چاہتے ہیں میموری اور اس پر پھانسی دینے کے قابل ہو جائے اس پر کنٹرول کھونے کے بغیر. اب آپ شاید فوری طور پر کر سکتے تھے یہ نہیں ہے کہ اس کو دیکھ کر ایک کامل ڈیزائن ضروری. آپ کے پروگرام پر میموری مختص طور پر اسٹیک، یا اگر آپ فون کے طور پر زیادہ سے زیادہ کام کرتا ہے، یا آپ کے طور پر مختص کے طور پر بند malloc کے ساتھ ڈھیر پر میموری getstring کر، واضح طور پر کیا جاتا ہے ناگزیر مسئلہ لگتا ہے؟ ٹھیک ہے. حقیقت یہ ہے کہ ان کی طرح تیر ایک دوسرے کی طرف اشارہ کر رہے ہیں اچھی نہیں ہے. اور یقینا، ہم بہت جلد کریش کر سکتے ہیں طریقوں میں سے کسی بھی تعداد میں ایک پروگرام. اصل میں، مجھے لگتا ہے کہ ہم کر سکتے ہیں یہ اتفاقی طور پر ایک بار کیا. یا نہیں تو یہ کرتے ہیں جان بوجھ کر اب. مجھ سے آگے بڑھو اور فوری طور پر سپر لکھ دو ایک پروگرام dontdothis.c ملاقات کی. اور اب میں یہاں جاؤ اور گے تیز stdio.h شامل ہے. تقریب FOO لیتا اعلان چلو کوئی دلائل، جس میں ہے صفر کی طرف سے اچھی طرح سے کے طور پر ظاہر. اور FOO کرنے کے لئے جا رہا ہے صرف ایک ہی چیز ہے شاید نہیں ہے جس میں کال FOO، سب سے ہوشیار خیال ہے، لیکن تو ٹھیک ہے. ENT اہم صفر. اب سب سے اہم رہا ہے صرف ایک ہی چیز ایسا کرنے کے ساتھ ساتھ FOO فون ہے. اور صرف کک کے لئے، میں جا رہا ہوں یہاں سے آگے اور خوش "printf کا کہنا ہے کہ FOO. " ٹھیک ہے. میں نے کوئی غلطی نہیں کی اگر ایسا ہے تو dontdothis ڈاٹ سلیش بنائیں. اور دو کی ایک بڑی ونڈو میں یہ کروں - ڈاٹ سلیش، dontdothis. چلو. اوہ اہ. ظاہر ہے، اگر آپ یہ کر سکتے ہیں. ارے. ٹھیک ہے. انتظار کریں. کی طرف سے کھڑے ہو جاؤ. ہم نے کیا - ہم بنائیں کے ساتھ اس کا استعمال کیا تھا. [SIGHS] میں جانتا ہوں لیکن مجھے لگتا ہے کہ ہم صرف اس لئے کہ خارج کر دیا. اہ، جی ہاں. ارے. یہ روب حل. کیا خیال ہے؟ یہ بہت آسان ہے. جی ہاں، ہم اصلاح بند کر دیا گیا. ٹھیک ہے، الوداع کھڑے ہیں. اب میں بہتر محسوس. ٹھیک ہے. ٹھیک ہے. تو اس کی recompile دو - آپ dontdothis بنائیں. آپ کے لئے اس کا نام تبدیل کرنے کے لئے ہو سکتا ہے صرف ایک لمحے میں dothis.c. وہاں ہم چلے. آپ کا شکریہ. ٹھیک ہے. تو میں پرنٹ کیا گیا تھا حقیقت یہ ہے کہ کچھ باہر صرف اصل میں تھا عمل سست ہے جس کے ذریعے ہم اس نقطہ پہنچ چکے ہوتے. ٹھیک ہے. وفف! تو کیا اصل میں کیا چل رہا ہے؟ صرف ایک ایک طرف کے طور پر وہاں کی وجہ سے، ہے، ان پٹ کے معاملے میں کچھ بھی کرنے اور پیداوار سست ہو جاتا ہے کیونکہ آپ نے کرنے کے لئے حروف لکھنا ہے سکرین، یہ سکرال ہے. اتنی لمبی کہانی مختصر ہے، میں اصل میں تھا اتنے ادیر ہوا، ہم ہوگا اس کے ساتھ ساتھ اس مقصد کے نتیجہ دیکھا. میں پرنٹ اپس کا سفر شروع کیا، اب وہ ہم ابھی دیکھتے ہیں. تو کیوں ہو رہا ہے. ٹھیک ہے، کورس کی سادہ وضاحت،، کہ FOO شاید نہیں کرنا چاہئے ہے خود کو بلا جائے. اب عام الفاظ میں، یہ تکرار ہے. اور ہم نے ایک جوڑے ہفتوں سوچا پہلے پنراورتی اچھا ہے. تکرار کے اس جادو طریقہ ہے succinctly سپر خود اظہار. اور یہ صرف کام کرتا ہے. لیکن سب کی ایک اہم خصوصیت ہے ہم نے بات کی ہے پنراورتی پروگراموں کے بارے میں اور کی طرف دیکھا اور اس طرح اب تک جو وہ کیا تھا کہ تھا؟ کچھ مشکل کوڈت تھا جو ایک بنیاد کیس، کچھ حالات میں کہا ہے کہ اس صورت واضح طور پر ہے جو FOO، فون مت کرنا یہاں نہیں کیس. تو کیا واقعی میں ہو رہا ہے اس تصویر کے لحاظ سے؟ ٹھیک ہے، جب اہم FOO، اسے بلاتا ہے میموری کا ایک ٹکڑا ہو جاتا ہے. FOO FOO بلاتا ہے تو وہ ہو جاتا ہے میموری کا ایک ٹکڑا. FOO FOO بلاتا ہے تو، یہ ایک ٹکڑا ہو جاتا ہے. یہ ایک ٹکڑا ہو جاتا ہے. یہ ایک ٹکڑا ہو جاتا ہے. FOO آرہے ہیں کبھی نہیں ہے. ہم نے ان میں سے ایک صفائی کبھی نہیں رہے ہیں اسٹیک کی طرف سے فریم. تو ہم، ڈھیر کے ذریعے نہیں اڑا رہے ہیں کون اور کیا جانتا ہے، اور ذکر کرنا ہم اپنی حد کے overstepping رہے ہیں میموری کا طبقہ نام نہاد. انقطاع جھوٹے جانے میں خرابی. تو ہے حل واضح طور پر ایسا نہیں ہے. لیکن بڑے مطلب ہے کہ، جی ہاں، ہے بالکل کچھ کی حد ہے، یہ اچھی طرح کس طرح، کی وضاحت نہیں ہے یہاں تک کہ اگر میں آپ کو ایک فون کر سکتے ہیں بہت سے کام کرتا ہے پروگرام، کتنی بار ایک تقریب خود کال کر سکتے ہیں. ہم تکرار کی تبلیغ کیا تو اگرچہ یہ ممکنہ طور پر جادو بات یہ ہے کے طور پر ایک سگما کے لئے ہفتے پہلے جوڑے تقریب، اور جب ہم معلومات حاصل ڈھانچے اور CS50، آپ دوسرے کو دیکھ لیں گے اس کے لئے ایپلی کیشنز، یہ نہیں ہے ضروری نہیں کہ سب سے اچھی بات. ایک تقریب خود کو بلاتا ہے، کیونکہ اگر ایک بنیاد ہے، چاہے خود کو بلاتا ہے کیس، آپ اس کی بنیاد کیس نہ مارو، اگر 1،000 کالز یا 10،000 کالوں کے لئے، کی طرف سے آپ کو کمرے سے باہر چلانے کے لئے ہو سکتا ہے اس وقت آپ کی نام نہاد اسٹیک اور ہٹ پر میموری کی کچھ دیگر طبقات. تو یہ بھی ایک ڈیزائن تجارت بند ہے خوبصورتی کے درمیان اور کے درمیان آپ کی خاص طور پر کے نظام کو طاقت عمل. تو ایک اور منفی پہلو یا وہاں ہے ہم نے جو ایک اور پکڑ لیا اس طرح اب تک کرتے رہے. میں getstring کہا جاتا ہے جب - مجھے خوش-2 میں واپس چلتے ہیں. ، میں getstring بلا رہا ہوں یہ نوٹس جس میں ایک ایڈریس واپس آ رہا ہے. اور ہم آج کا دعوی ہے کہ ایڈریس ڈھیر کی طرف سے ہے. اور اب میں باہر پرنٹ کر رہا ہوں اس پتے پر سٹرنگ. لیکن ہم نے کہا جاتا ہے کبھی نہیں getstring کے برعکس. ہم جیسے ایک تقریب calll کرنا پڑا کبھی نہیں جہاں آپ کے ہاتھ واپس ungetstring، کہ میموری. لیکن واضح طور سے ہم شاید ہونا چاہیے تھا. کیونکہ ہم کمپیوٹر پوچھ رہے تو جیسے کسی کی یاد کے لئے، کی طرف سے جس طرح سے getstring لیکن یقینا اسے واپس کبھی نہیں دے وہ بھی کرنے کے لئے کی قیادت کرنے کے پابند ہیں. ہم میموری سے باہر چلانے کے جس کے تحت مسائل. اور حقیقت میں، ہم ان کے لئے دیکھ سکتے ہیں جن کے استعمال کے نئے آلے کے ساتھ مسائل ٹائپ کرنے کے لئے ایک چھوٹا سا خفیہ ہے. لیکن میرے آگے بڑھیں اور اسے اپ سپلیش دو صرف ایک لمحے میں سکرین پر. میں آگے بڑھو اور Valgrind کو چلانے کے لئے جا رہا ہوں جس کا سب سے پہلے کمانڈ پیرامیٹر کے ساتھ لائن دلیل کا نام ہے اس پروگرام خوش-2 کے. اور بدقسمتی یہ ہے پیداوار atrociously ہے کوئی اچھی وجہ کے لئے پیچیدہ. تو ہم سب اس گندگی دیکھ رہے ہیں. ڈیوڈ میرا نام ریاست ہے. تاکہ پروگرام ہے اصل میں چل رہا ہے. اور اب ہم اس پیداوار میں ملتا ہے. تو Valgrind اسی طرح کی ہے GDB کی روح. یہ SE فی ایک debugger نہیں ہے. لیکن یہ ایک میموری چیکر ہے. یہ آپ کے چلائے جائیں گے کہ ایک پروگرام ہے پروگرام اور آپ کو ایک سے پوچھا تو آپ کو بتا میموری کے لئے کمپیوٹر اور کبھی اس کے حوالے کر دیا واپس، اس طرح آپ کے پاس کیا اس کے معنی ایک میموری لیک. اور میموری لیک برا ہونے کے لئے ہوتے ہیں. اور تم کمپیوٹر کے صارفین کی ہیں ہے شاید یہ آپ کے ایک ہے، چاہے محسوس میک یا پی سی کے. کیا تم نے کبھی آپ کے کمپیوٹر کے لئے استعمال کیا ہے اور کئی میں rebooted نہیں جبکہ دنوں، یا اگر آپ صرف کی ایک بہت کچھ مل گیا ہے چلانے کے پروگراموں، اور چیز ایک پیسنے رک سست، یا کم از کم اس کی وجہ سے، استعمال کرنے کے لئے سپر پریشان کن ہے سب کچھ سپر سست ہو گیا. اب اس کی وجوہات کی کسی بھی تعداد ہو سکتی ہے. یہ ایک لامتناہی لوپ میں ایک مسئلے سے ہو سکتا ہے کسی کی کوڈ، یا، زیادہ صرف یہ آپ کو زیادہ استعمال کر رہے ہیں اس کا مطلب یہ کر سکتے ہیں اپنے سے زیادہ میموری، یا کرنے کی کوشش کر، کمپیوٹر کی اصل ہے. اور شاید کچھ پروگرام میں ایک بگ ہے میموری کے لئے پوچھتے رہتے ہیں. سال کے لئے براؤزر کے لئے بدنام زمانہ تھے یہ زیادہ سے زیادہ میموری کا مطالبہ لیکن اسے واپس حوالے کبھی نہیں. یقینا، آپ کو صرف ایک محدود ہے، تو میموری کی رقم، تم سے پوچھنا نہیں کر سکتے ہیں کے لئے infinitely کئی بار اس میموری میں سے کچھ. اور اس لئے تم، اگرچہ یہاں دیکھ کر کیا دوبارہ Valgrind کی پیداوار ہے میں اچٹتی نظر سے دیکھنا کرنے کے لئے بیکار میں پیچیدہ پہلی، یہ دلچسپ حصہ ہے. ڈھیر - باہر نکلیں استعمال میں. تو یہاں کتنی میموری تھا ہے میں ڈھیر میں استعمال میں وقت اپنے پروگرام سے باہر - ایک بلاک میں بظاہر چھ بائٹس. تو میں نے اپنے ہاتھ لہر جا رہا ہوں کیا میں ایک بلاک ہے. ایک سے زیادہ، یہ صرف ایک حصہ ہے کے بارے میں سوچو حصہ کے لئے تکنیکی لفظ. چھ بائٹس لیکن - کہ چھ رائج کیا ہیں استعمال میں اب بھی کر رہے تھے؟ بالکل ٹھیک. D-A-V-میں ڈی الٹا سلیش صفر، پانچ خط نام کے علاوہ ٹرمنیٹر شہوت انگیز null. لہذا اس پروگرام دیکھا Valgrind کہ میں کی طرف سے، بظاہر، چھ بائٹس کے لئے پوچھا getstring کی راہ، لیکن کبھی نہیں انہیں واپس دی. اور حقیقت میں، ایسا نہیں ہوگا میرا پروگرام تین نہیں ہے واضح تو لائنز، لیکن یہ 300 لائنز ہے. تو ہم اصل میں ایک اور حکم دے سکتے ہیں لائن دلیل کو Valgrind پر یہ زیادہ شبدبہل بناتے ہیں. یہ یاد رکھنا تھوڑا پریشان کن ہے. لیکن میں کرتے ہیں تو - چلو دیکھتے ہیں. لیک - یہ لیک کیا گیا تھا - مجھے بھی یاد نہیں ہے یہ ہاتھ کیا ہے. - لیک-چیک مکمل برابر ہے. جی ہاں، شکریہ. - لیک-چیک مکمل برابر ہے. درج کریں. اسی پروگرام چلا رہا ہے. پھر ڈیوڈ میں ٹائپ کریں. اب میں تھوڑا تفصیل سے دیکھتے ہیں. لیکن ڈھیر خلاصہ ذیل میں، جو چار ایک جیسی ہے - آہ، یہ اچھی قسم کا ہے. اب Valgrind اصل لگ رہا ہے اپنے کوڈ میں مشکل تھوڑا. اور یہ، بظاہر، جو کہہ رہا ہے لائن پر malloc - ہم باہر زوم. میں لائن - ہم نے یہ کیا ہے لائن نظر نہیں آتا. لیکن malloc پہلا مجرم ہے. malloc میں ایک بلاگ ہے. ٹھیک ہے؟ ٹھیک ہے، نہیں. ٹھیک ہے؟ میں getstring ملاقات کی. getstring بظاہر malloc کہلاتی ہے. تو کیا کوڈ کی لائن بظاہر ہے کرنے کے لئے غلطی یہ میموری مختص؟ چلو جو بھی malloc نے لکھا ہے کہ فرض کافی وقت تک یہ ہے کہ ارد گرد کیا گیا ہے نہیں ان کی غلطی. تو یہ شاید میرا ہے. cs50.c میں getstring - ایک ہے تاکہ کمپیوٹر پر کہیں دائر - لائن میں 286 مجرم ہونا ہے. اب cs50 رہا ہے کہ فرض کرتے ہیں لہذا وقت کی مہذب رقم کے لئے کے ارد گرد ہم بھی معصوم ہیں. اور تو اس getstring میں شاید نہیں ہے بگ جھوٹ، بلکہ میں ہیلو-2.c لائن 18. تو کی پر ایک نظر ڈالیں دو اس لائن کو 18 کیا تھا. اوہ. کسی نہ کسی طرح اس لائن ضروری نہیں ہے چھوٹی گاڑی، فی SE، لیکن یہ وجہ ہے کہ میموری لیک کے پیچھے. تو سپر صرف، کیا intuitively گے یہاں حل ہو؟ ہم میموری کے لئے پوچھ رہے ہیں، تو کبھی نہیں تھے اسے واپس دے، اور یہ کہ ایک ہونا ہے مسئلہ کی وجہ سے وقت میرے کمپیوٹر سے زائد میموری سے باہر چلانے کے لئے ہو سکتا ہے، سست ہو سکتا ہے نیچے، بری چیزوں کو، اچھی طرح سے، ہو سکتا ہے سادہ بدیہی حل کیا ہے؟ بس اسے واپس دے. تمہیں یہ کس طرح میموری کو آزاد کروں؟ ٹھیک ہے، شکر ہے کہ یہ بہت آسان ہے صرف مفت نام کہنا. اور ہم نے اس سے پہلے کبھی نہیں کیا. لیکن اگر آپ بنیادی طور پر کے بارے میں سوچ کر سکتے ہیں malloc کے مخالف کے طور پر مفت. مفت کے برعکس ہے میموری مختص. تو اب مجھے اس recompile ہیں. ہیلو-2 بنائیں. مجھے اسے دوبارہ چلانے ہیں. ہیلو-2 داؤد. تو اس میں کام کرنے لگتا ہے بالکل اسی طرح. لیکن میں Valgrind پر واپس جائیں اور دوبارہ چلانے اگر میری نو پر اسی کمانڈ مرتب پروگرام، ٹائپنگ پہلے کی طرح میرا نام میں - اچھا. ڈھیر کا خلاصہ - - باہر نکلیں استعمال میں صفر بلاکس میں صفر بائٹس. اور یہ سپر اچھا، ہے ڈھیر بلاکس کو آزاد کیا گیا تھا. کوئی لیک ممکن ہیں. تو، نہیں مسئلہ مرتب کریں 4 کے ساتھ آ رہا لیکن مسئلہ یہ سیٹ 5، عدالتی ساتھ اور آگے ہے، یہ بھی ایک بن جائے گا آپ کی درست کی پیمائش تمہارے پاس ہے یا نہیں پروگرام یا میموری لیک نہیں ہے. لیکن شکر ہے کہ آپ کی وجہ سے نہ صرف کر سکتے ہیں ان intuitively، جس کے ذریعے چھوٹے پروگراموں کے لئے آسان، arguably، ہے لیکن بڑے پروگراموں کے لئے مشکل، ، ان لوگوں کو بڑے پروگراموں کے لئے، Valgrind آپ کی شناخت میں مدد کر سکتے ہیں خاص طور پر مسئلہ. لیکن ایک دوسرے مسئلہ ہے جو پیدا ہو سکتا ہے. ، ہے، مجھے یہاں اس فائل کو کھول دو ایک بار پھر، ایک کسی حد تک سادہ مثال کے طور پر. لیکن لشکر طیبہ کی کیا پر توجہ مرکوز اس پروگرام کرتا ہے. یہ memory.c کہا جاتا ہے. ہم نے اس کے بعد آج پوسٹ کروں گا آج کی ماخذ کوڈ کے زپ. اور میں ملاقات کی ایک تقریب ہے کہ نوٹس دلائل اور کوئی لیتا ہے کہ F کچھ بھی نہیں واپس. لائن 20 میں، میں بظاہر ایک اعلان رہا ہوں ایک INT اور اسے ایکس بلا پر پوائنٹر. میں نے بتائے ہوں واپسی ہے malloc کی قدر. اور صرف میں ہوں کتنے بائٹس، واضح رہنا میں شاید malloc سے واپس ہو رہی ہے اس صورت حال میں؟ شاید 40. تم کہاں سے ملتا ہے؟ ٹھیک ہے، اگر آپ کو ایک INT اکثر یہ ہے کہ یاد ہو 4 بائٹس، کم از کم اس میں ہے آلات، گنا 4 10 40 ظاہر ہے. تو malloc کا ایک ایڈریس واپس آ رہا ہے ایک میموری کا حصہ اور محفوظ ہے کہ X میں بالآخر خطاب. لہذا واضح کیا اس وقت کیا ہو رہا ہے؟ ٹھیک ہے، مجھے واپس سوئچ کرتے ہیں یہاں ہماری تصویر. مجھے صرف میری کے سب سے نیچے اپنی طرف متوجہ نہیں کرتے ہیں کے کمپیوٹر کی میموری، مجھ سے آگے جانے اور پوری مستطیل اپنی طرف متوجہ کہ میری RAM کے سب کی نمائندگی کرتا ہے. ہم کہیں گے کہ اسٹیک سب سے نیچے پر ہے. اور ایک متن کے علاقے میں موجود ہے غیر ابتدا شدہ اعداد و شمار. لیکن میں صرف تجریدی ان لوگوں کے لئے جا رہا ہوں دور ڈاٹ، ڈاٹ ڈاٹ کے طور پر دوسری چیزوں کے. میں صرف اس کا حوالہ دیتے جا رہا ہوں سب سے اوپر پر ڈھیر کے طور پر. اور پھر اس تصویر کے نچلے حصے میں، اہم کی نمائندگی کے لئے، میں جا رہا ہوں یہ ایک سلائسین میموری دینے کے لئے اسٹیک پر. F لئے، میں نے اسے ایک ٹکڑا دینے کے لئے جا رہا ہوں اسٹیک پر میموری کی. اب، میں اپنے سے مشورہ کرنا ہے پھر ماخذ کوڈ. اہم کے لئے مقامی متغیر کیا ہیں؟ بظاہر کچھ نہیں ہے، تا کہ ٹکڑا ہے مؤثر طریقے سے خالی ہے یا نہیں بھی بڑا میں نے اسے تیار کیا ہے کے طور پر. لیکن چ میں، میں، ایک مقامی متغیر ہے جس X کہا جاتا ہے. تو میں نے آگے بڑھو اور F دینے کے لئے جا رہا ہوں یہ X بلا میموری کا ایک حصہ،. ، 10 بار 4 اور اب malloc کہ کہاں ہے malloc 40، تو میموری کی طرف سے آ رہے ہو؟ ہم ایک تصویر تیار نہیں ہے اس سے پہلے کہ یہ پسند ہے. لیکن اس کی موثر انداز میں ہے کہ فرض کرتے ہیں تو ایک، یہاں سے آ رہا ہے، دو، تین، چار، پانچ. اور اب میں ان میں سے 40 کی ضرورت ہے. تو میں صرف تجویز ڈاٹ، ڈوٹ، ڈوٹ کروں گا اس سے بھی زیادہ میموری نہیں ہے کہ ڈھیر سے واپس آ رہے ہیں. اب ایڈریس کیا ہے؟ چلو ہمارے صوابدیدی کا انتخاب کے طور پر ہمیشہ سے خطاب - شاید یہ جا رہا ہے حالانکہ Ox123، مکمل طور پر کچھ مختلف ہو. اس میں سب سے پہلے بائٹ کا پتہ ہے میں نے کے لئے malloc پوچھ رہا ہوں میموری ہے. اس لئے مختصر، ایک بار لائن میں 20، executes لفظی کیا ہے یہاں ایکس کے اندر ذخیرہ؟ Ox123. Ox123. اور بیل uninteresting ہے. یہ صرف یہاں کا مطلب ہے ایک شش اعشاری تعداد. لیکن جو اہم ہے میں سٹور کیا ہے X میں، جس میں ایک مقامی متغیر ہے. لیکن اس کے اعداد و شمار کی قسم، ایک بار پھر، ایک INT کا ایڈریس ہے. اچھا، مجھے Ox123 ذخیرہ کرنے کے لئے جا رہا ہوں. لیکن پھر ایک چھوٹا سا بھی ہے کہ اگر میں سکرال، اگر بیکار میں پیچیدہ واپس، ہم اس دور خلاصہ کر سکتے ہیں بہت معقول اور صرف کا کہنا ہے کہ ایکس ہے میموری کے اس حصہ پر پوائنٹر. ٹھیک ہے. اب ہاتھ میں سوال مندرجہ ذیل ہے - لائن 21، یہ باہر کر دیتا ہے، چھوٹی گاڑی ہے. کیوں؟ معذرت؟ یہ نہیں ہے - ایک بار پھر کہنا ہے کہ. ٹھیک ہے، یہ مفت نہیں ہے. تو یہ دوسری ہے لیکن. تو دیگر لیکن خاص طور پر ایک ہی ہے لائن 21 پر. بالکل ٹھیک. کوڈ کا یہ سادہ لائن صرف ایک ہے بفر اتپرواہ، ایک بفر overrun. ایک بفر میموری کا صرف ایک حصہ ہے. لیکن میموری کے اس حصہ کے سائز کی ہے 10، 10 integers، جس کا مطلب ہے کہ اگر ہم syntactic چینی کا استعمال کرتے ہوئے اس میں انڈیکس سرنی سنکیتن کا، مربع بریکٹ، آپ تک رسائی حاصل ہے X بریکٹ 0 X بریکٹ 1 X، بریکٹ ڈاٹ، ڈوٹ، ڈوٹ. X بریکٹ 9 سب سے بڑا میں سے ایک ہے. میں نے ایکس بریکٹ 10، کرتے ہیں تو اگر جہاں میں واقعی یاد میں جا رہا ہوں؟ ٹھیک ہے، میں 10 INT ہے تو - چلو اصل میں سب اپنی طرف متوجہ یہاں ان میں سے باہر. تاکہ پہلے پانچ تھی. یہاں دوسرے پانچ ints ہے. تو X بریکٹ 0 یہیں ہے. X بریکٹ 1 ہے یہاں. X بریکٹ 9 یہاں ہے. X بریکٹ 10 یہاں ہے، جس میں، میں کہہ رہا ہوں اس کا مطلب لائن 21 میں، کمپیوٹر ڈال تعداد کہاں؟ تعداد 0 کہاں؟ ٹھیک ہے، یہ، ہاں، 0 ہے. لیکن حقیقت یہ ہے کہ اس کے 0 ایک اتفاق کی قسم ہے. یہ تعداد میں ہو سکتا ہے 50، ہم سب کے لئے دیکھ بھال. لیکن ہم ایکس بریکٹ میں ڈال کرنے کی کوشش کر رہے ہیں جہاں یہ ہے جو 10، سوالیہ نشان، تیار کی ہے جس میں ایک اچھی بات نہیں ہے. یہ پروگرام بہت اچھی طرح سے ہو سکتا نتیجے کے طور پر کریش. اب، آگے بڑھو اور دیکھتے ہیں یہ تو ، بے شک، کیا ہوتا ہے. میموری بنائیں، کے بعد سے فائل memory.c کہا جاتا ہے. چلو آگے بڑھو اور چلانے کے پروگرام میموری. تو ہم خوش قسمت ہو گیا، اصل میں، ایسا لگتا ہے. ہم خوش قسمت ہو گیا. لیکن اب ہم Valgrind چلاتے ہیں تو دیکھتے ہیں. پہلی نظر میں، اپنے پروگرام شاید بالکل صحیح لگ رہے ہو. لیکن ساتھ Valgrind مجھے چلانے دو - لیک-چیک میموری پر مکمل برابر ہے. اور اب میں اس کو چلانے کے جب - دلچسپ. باطل میں سائز 4 لکھنا memory.c کی لائن 21. memory.c لائن 21 جس میں سے ایک ہے؟ اوہ، دلچسپ. لیکن انتظار کریں. سائز 4، کا حوالہ دیتے ہوئے کہ کیا ہے؟ مجھے صرف ایک ہی، لکھا تھا لیکن اس کا سائز 4 ہے. یہ کیوں 4 ہے؟ یہ جو INT، کیونکہ یہ ہے ایک بار پھر، چار بائٹس ہے. تو Valgrind ایک مسئلے کا پتہ چلا ہے کہ میں نے، اپنے کوڈ میں glancing، نہیں کیا. اور شاید آپ TF کرے گا یا نہیں کرے گا. لیکن اس بات کا یقین مل گیا اس کے لیے Valgrind کیا ہم بھی، وہاں ایک غلطی ہوئی ہے ہم خوش قسمت ہے، اور اگرچہ کمپیوٹر کا فیصلہ کیا، ہاں، میں کریش نہیں جا رہا ہوں آپ کو ایک بائٹ، ایک چھو صرف اس وجہ سے تم نے نہیں کیا ہے کہ میموری کی INT کی مالیت اصل میں خود. ٹھیک ہے، یہاں چھوٹی گاڑی اور کیا ہے. ایڈریس - یہ ایک پاگل لگ پتہ ہے شش اعشاری میں. صرف کہیں ڈھیر میں ہے مطلب یہ ہے کہ 40 سائز کا ایک بلاک کے بعد صفر بائٹس مختص کیا جاتا ہے. مجھے یہاں باہر زوم اور دیکھتے ہیں اگر یہ ایک چھوٹا سا زیادہ مددگار ہے. دلچسپ. 40 بائٹس کو یقینی طور سے کھو رہے ہیں 1 کے نقصان پر ریکارڈ کے 1 میں. ایک بار پھر، سے زیادہ الفاظ یہاں مفید ہے. لیکن، پر روشنی ڈالی کی اقسام پر مبنی جہاں میں شاید توجہ دینی چاہیے میرا ایک اور مسئلے کی طرف توجہ؟ memory.c کی ایک سطر 20 کی طرح لگتا ہے. ہم لائن 20 پر واپس جانا اگر ایسا ہے، کہ ہے تم نے پہلے کی نشاندہی کی کہ ایک. اور یہ چھوٹی گاڑی ضروری نہیں ہے. لیکن ہم یہ اس کے اثرات الٹ ہے. تو کس طرح میں کم از کم درست ہے ان غلطیوں میں سے ایک؟ میں لائن 21 کے بعد کیا کر سکتے تھے؟ میں بہت، ایکس کی مفت ہے کر سکتے ہیں اس یاداشت واپس دینے کے لئے. اور میں اس مسئلے کو کس طرح ٹھیک کروں؟ میں ضرور جانا چاہیے کوئی دور 0 سے. تو مجھے کوشش کرنے اور اس کو دوبارہ چلانے کے ہیں. معذرت، ضرور جائیں کوئی دور 9 کے مقابلے میں. میموری بنائیں. Valgrind مجھے rerun دو ایک بڑی ونڈو میں. اور اب لگ رہی ہو. اچھا. تمام ڈھیر بلاکس کو آزاد کیا گیا تھا. کوئی لیک ممکن ہیں. اور یہاں سے اوپر، کوئی ذکر نہیں ہے باطل حق کے کسی بھی زیادہ. بس لالچی ہو جاؤ، اور لشکر طیبہ کی پر دیکھ تو ایک اور مظاہرہ کے طور پر ارادہ نہیں جا رہا ہے - میں ایک پل کے پہلے خوش قسمت ملی. اور یہ 0 یہ حقیقت ہے کہ شاید ہے بیکار میں گمراہ کن. صرف 50، ایک کسی حد تک من مانی کرتے ہیں کی تعداد، میموری ڈاٹ سلیش میموری بنانے کے لئے - اب بھی خوش ہو جاؤ. کچھ بھی نہیں اجلاس ہونے کے تناظر ہے. میں صرف واقعی کچھ کرنا فرض بے وقوف، اور میں 100 ہے. ، مجھے یاد ریمیک دو ڈاٹ سلیش میموری - پھر سے خوش ہو گیا. 1،000 کس طرح کے بارے میں؟ سے باہر ints، موٹے طور پر، جہاں میں ہونا چاہئے؟ میموری بنائیں - اوہ. [ہنسی] ٹھیک ہے. کی اب گڑبڑ نہیں ہیں. میموری Rerun. وہاں ہم چلے. ٹھیک ہے. تو بظاہر آپ انڈیکس 100،000 ints آپ میں ہونا چاہیے تھا جہاں سے باہر میموری، بری چیزوں ہو. تو یہ ظاہر ہے نہیں ہے ایک مشکل، روزہ حکمرانی. میں مقدمے کی سماعت کا استعمال کرتے ہوئے کی طرح تھا اور غلطی وہاں حاصل کرنے کے لئے. لیکن یہ،، کیونکہ لمبی کہانی مختصر ہے آپ کے کمپیوٹر کی میموری میں بھی تقسیم کیا گیا ہے ان چیزوں میں طبقات سے ملاقات کی. اور کبھی کبھی، کمپیوٹر اصل میں اگر آپ تھوڑا زیادہ میموری دیا ہے آپ کے لئے دعا گو ہیں. لیکن کارکردگی کے لئے، یہ صرف آسان ہے مزید میموری ملے لیکن صرف آپ کو بتا تم اس کا ایک حصہ مل رہا ہے کہ. اور تم کبھی کبھی خوش قسمت حاصل ہو، لہذا، آپ کو چھو کرنے کے قابل ہو سکتا ہے کہ میموری آپ کا تعلق نہیں ہے. آپ کو کوئی ضمانت نہیں ہے کہ کیا قیمت اگر آپ وہاں رہیں گے ڈال دیا کیونکہ کمپیوٹر اب بھی یہ نہیں ہے سوچتا ہے تمہارا، لیکن یہ ضروری نہیں جا رہا ہے میں میموری کا ایک اور طبقہ مارا کمپیوٹر اور ایک غلطی کی طرح دلانا یہاں یہ ایک. ٹھیک ہے. پھر کوئی سوال میموری پر نہیں ہیں؟ ٹھیک ہے. میں، پھر، یہاں دیکھنے دو ہم نے کے لئے لے جا رہا تھا کچھ کچھ وقت کے لئے حاصل کی جاچکی ہے، جس cs50.h. کہا جاتا ہے اس فائل میں ہے تو یہ ایک فائل ہے. ان میں صرف ایک پورے گچرچھی ہیں اوپر تبصرے کی. اور تم نے یہ تو دیکھا ہو گا آپ کو آلات پر کے ارد گرد poked. لیکن یہ ہے کہ ہر وقت باہر کر دیتا ہے ہم نے ایک کے طور پر سٹرنگ کا استعمال کرنے کے لئے استعمال کیا جاتا ہے جب متبادل، ہم نے اعلان کر دیا ہے جس کے ذریعے ذرائع کہ متبادل اس کے ساتھ تھا قسم کی تعریف کے لئے typedef مطلوبہ الفاظ،. اور ہم نے بنیادی طور پر کہہ رہے ہیں، بنانے کے چار ستارہ کے لئے ایک متبادل سٹرنگ. اس کا مطلب ہے جس کے ذریعے اسٹیک کے طور پر جانا ان کی تربیت پہیوں پیدا کیا سٹرنگ. اب یہاں صرف ایک پروٹوٹائپ ہے getchar کے لئے. ہم نے اس سے پہلے دیکھا ہے ہو سکتا ہے، لیکن یہ ہے بے شک کیا یہ کرتا ہے. getchar ، کوئی بحث نہیں لیتا ہے ایک چار بتائےگا. getdouble، کوئی بحث نہیں لیتا ہے ایک ڈبل واپس. getfloat دلائل نہیں، منافع لیتا ہے ایک فلوٹ، اور تو آگے. getint یہاں میں ہے. getlonglong یہاں میں ہے. اور getstring یہاں میں ہے. اور بس. یہ جامنی لائن ایک اور پریپروسیسر ہے کیونکہ اس کی ہدایت اس کے شروع میں hashtag. ٹھیک ہے. تو اب مجھے cs50.c. میں جانے دو اور ہمیں اس پر بہت طویل بات نہیں کریں گے. لیکن تم نے کیا ہے کی ایک جھلک دینے کے لئے یہ سب کچھ ہو رہا کر دیا گیا وقت نے مجھ سے چلتے ہیں - چلو getchar کرتے ہیں. تو getchar زیادہ تر تبصرے ہے. لیکن یہ اس طرح لگ رہا ہے. تو یہ اصل دالہ ہے ہم کیا گیا ہے کہ getchar حاصل کی جاچکی کے لئے لے جا رہا ہے. اور ہم اس سے ایک کا استعمال نہیں ہے اگرچہ اکثر، اگر کبھی یہ کم از کم ہے کہ نسبتا آسان. تو یہ لینے کے قابل ہے یہاں پر فوری نظر. تو getchar، ایک لامتناہی لوپ ہے جان بوجھ کر تو بظاہر. یہ تو بلاتا ہے - اور یہ ایک قسم کا ہے کوڈ کا اچھا دوبارہ استعمال ہم نے خود لکھا. یہ getstring کہلاتی ہے. یہ کیا کرتا ہے کیونکہ ایک چار حاصل کرنے کے لئے کیا مطلب ہے؟ ٹھیک ہے، تم اس کے ساتھ ساتھ ایک حاصل کرنے کے لئے کوشش کر سکتے ہیں پورے صارف سے متن کی لائن اور اس کے بعد صرف ایک طرف دیکھو ان حروف کی. لائن 60 میں، یہاں ایک چھوٹی سی ہے ایک وویک چیک کی سا. getstring اتارنا null واپس آئے، تو کی آگے بڑھنے نہیں ہیں. کچھ غلط ہو گیا. اب یہ کسی حد تک پریشان کن ہے لیکن شاید سی چار زیادہ سے زیادہ میں روایتی کی نمائندگی کرتا ہے کیا صرف اس کے نام کی بنیاد پر؟ یہ ایک مسلسل ہے. اس کی عددی قیمت کی طرح ہے آپ کے ساتھ کی نمائندگی کر سکتے چار سب سے بڑا شاید نمبر ہے جس میں ایک کاٹنے، سب سے بڑی تعداد ہے جو آپ کو 255، ، آٹھ بٹس کی نمائندگی کرتے ہیں صفر سے شروع ہونے والے. تو میں نے جب اس تقریب میں، اس کا استعمال کیا ہے صرف اس لیے کیونکہ، اس کوڈ لکھنے کچھ getchar میں غلط ہو جاتا ہے لیکن اگر زندگی میں اس کا مقصد ایک کو واپس کرنے کے لئے ہے چار، آپ کو کسی نہ کسی طرح کے قابل ہو جائے کرنے کی ضرورت ہے کہ صارف کو اشارہ کرنے کے لئے کچھ غلط ہوگیا. ہم شہوت انگیز null نہیں لوٹا سکتا. یہ نیا null ایک پوائنٹر ہے کہ باہر کر دیتا ہے. اور پھر، getchar ہے ایک چار واپس لوٹنے کے لئے. تو کنونشن، کچھ تو غلط، آپ پروگرامر، یا میں، ہے اس کیس، مجھے لائبریری کے ساتھ، میں تھا ایک منصفانہ، اگر منمانے کا فیصلہ کچھ غلط ہو جاتا ہے، میں جا رہا ہوں صحیح معنوں میں ہے جس کی تعداد 255، واپس ہم صارف کی قسم نہیں کر سکتے ہیں نہیں کر سکتے ہیں کا مطلب ہے کہ کی طرف سے نمائندگی کردار ہم نے کی وجہ سے نمبر 255 ایک اسے چرا کرنے کے لئے ایک نام نہاد پرہری کی قیمت کے طور پر ایک مسئلہ کی نمائندگی کرتے ہیں. اب یہ باہر کر دیتا ہے کہ کردار 255 تم پر ٹائپ کر سکتے ہیں کچھ نہیں ہے اپنے کی بورڈ، تو یہ کوئی بڑی بات نہیں. صارف محسوس نہیں کرتا میں نے اس کردار کو چرا لیا ہے. لیکن کیا تم نے کبھی ایک پر انسان کے صفحات میں دیکھ تو ایک کمپیوٹر سسٹم پر کچھ حوالہ ، کا کہنا ہے کہ مسلسل اس طرح تمام بڑے حروف غلطی یہ مسلسل طاقت کے مقدمات میں واپس آ جائے، اس نے سب کچھ انسان ہے سال پہلے منمانے کرنے کا فیصلہ کیا گیا تھا اس خصوصی قیمت اور واپس اس صورت میں ایک مسلسل فون کچھ غلط ہو جاتا ہے. اب جادو یہاں نیچے ہوتا ہے. سب سے پہلے، میں نے لائن 67 میں اعلان کر رہا ہوں دو حروف، C1 اور C2. اور پھر لائن 68 میں، اصل میں ہے کی یاد تازہ ہے کے کوڈ کا ایک لائن ہمارے دوست printf، دیا کہ یہ واوین میں فیصد سرفنگ ہے. لیکن یہاں کیا ہو رہا ہے توجہ. sscanf سٹرنگ اسکین کا مطلب - ایک فارمیٹ کو اسکین کا مطلب سٹرنگ، لہذا sscanf. اس کا کیا مطلب ہے؟ یہ آپ کو ایک تار sscanf پر گزر کا مطلب ہے. اور لائن جو کچھ بھی ہے صارف رکنیت کی اقسام آپ کو ایک کی شکل سٹرنگ کی طرح sscanf پر منظور کیا ہیں scanf بتاتی ہے کہ اس آپ کو صارف کے اندر ٹائپ کر دیا ہے امید اس کے بعد آپ گزر میں دو کے پتے اس کیس میں میموری کی مقدار،، میں نے دو جگہ دار ہے کیونکہ. تو میں نے اس کا پتہ دینے کے لئے جا رہا ہوں C1 اور C2 کے پتے کا. اور تم ایک تقریب دے کہ یاد کچھ متغیر کی پتہ، کیا ہے نہتارت؟ اس تقریب کے نتیجے کے طور پر کیا کر سکتے ہیں یہ ایک کا پتہ دینے کی تغیر پذیر کے طور پر کی مخالفت متغیر ہی؟ یہ درست ہے، اسے تبدیل کر سکتے ہیں؟ اگر آپ کسی جسمانی کرنے کے لئے ایک نقشہ تھا تو پتہ، وہ وہاں جا کر کر سکتے ہیں انہوں نے اس پتے پر جو چاہو. یہاں بھی یہی خیال ہے. ہم sscanf، دونوں میں سے پتہ پر گزرتے تو بھی میموری کی مقدار، ان چھوٹے میموری، C1 اور C2 کی تھوڑی سی مقدار، لیکن ہم، یہ ان کا پتہ بتا sscanf اسے تبدیل کر سکتے ہیں. زندگی میں sscanf کا مقصد تو، ہم پڑھتے ہیں تو آدمی کے صفحہ، پڑھنے کے لئے کیا ہے صارف میں ٹائپ، رکھنے کے صارف کے لیے امید ایک کردار میں ٹائپ اور شاید ایک اور کردار، اور جو کچھ بھی صارف ٹائپ، حرف جاتا ہے یہاں، دوسرا کردار یہاں جاتا ہے. اب، ایک ایک طرف کے طور پر، اس، اور آپ گے صرف، دستاویزات سے یہ پتہ میں وہاں ایک خالی خلا ڈال دیا حقیقت یہ ہے کہ صرف مجھے پرواہ نہیں ہے مطلب یہ ہے کہ اگر صارف خلائی بار چند مار دیتی ہے وہ یا وہ ایک لیتا ہے اوقات سے پہلے کردار میں نظر انداز کرنے جا رہا ہوں کسی بھی سفید جگہ. تاکہ میں سے جانتے ہیں دستاویزات. ایک دوسری٪ ج ہے حقیقت یہ ہے کہ سفید جگہ کے بعد اصل میں ہے جان بوجھ کر. میں پتہ لگانے کے لئے کے قابل ہو جائے کرنا چاہتے ہیں تو صارف اپ خراب یا تعاون نہیں کیا. تو میں صارف صرف ٹائپ امید ہے کہ رہا ہوں ایک کردار میں، اس لئے میں امید کر رہا ہوں کہ sscanf صرف واپس کرنے کے لئے جا رہی ہے قیمت 1 میں نے پڑھا ہے، تو پھر، کیونکہ دستاویزات، sscanf کا مقصد میں زندگی کی تعداد کو واپس کرنے کے لئے ہے بھرے ہوئے تھے کہ متغیر صارف ان پٹ کے ساتھ. میں نے دو متغیر میں منظور پتے، C1 اور C2. میں سمجھتا ہوں کہ، اگرچہ، امید کر رہا ہوں صرف ایک انہیں مار دیا جاتا ہے کیونکہ اگر sscanf ریٹرن 2، شاید کیا ہے منطقی طور پر نہتارت؟ صارف بس مجھے ایک نہیں دیا کہ کردار کی طرح میں نے اسے کہا یا اس کے. وہ شاید میں ٹائپ کم از کم دو حروف. میں نے اس کی بجائے دوسرے کی ضرورت نہیں تھی اگر ایسا ہے تو ٪ C، میں صرف ایک تھا جو واضح طور سے زیادہ بدیہی ہو گا نقطہ نظر، میں نے ایک پہلی نظر لگتا ہے، آپ کا پتہ لگانے کے قابل ہو جائے کرنے کے لئے نہیں جا رہے ہیں صارف آپ کو زیادہ دے دیا گیا ہے تو آپ اصل میں چاہتا تھا کے مقابلے میں ان پٹ. تو یہ ایک واضح شکل ہے غلطی چیکنگ کی. لیکن میں یہاں کیا کرتی محسوس. ایک بار میں صارف مجھے ایک دیا یقین ہے کہ کردار میں کر، اوپر مفت getstring کے برعکس، جس کے نتیجے میں میں واپس اس کے بعد malloc استعمال کرتا ہے، اور C1، میں امید ظاہر کی ہے کہ کردار صارف فراہم کی اور صرف فراہم کی. تو ایک فوری صرف جھلک، لیکن getchar پر کوئی سوال؟ ہم نے دوسروں میں سے کچھ واپس آ جائیں گے. ٹھیک ہے، مجھے آگے بڑھو اور اس کے کرتے ہیں - صرف حوصلہ افزائی کرنے، اب لگتا ہے ہمارے ایک ہفتے سے زیادہ وقت میں بات چیت، یہ structs.h نامی ایک فائل ہے. اور پھر، یہ صرف ایک ذائقہ ہے سامنے ہے کہ کچھ. لیکن اس نوٹس کے کہ بہت اس تبصرے ہے. تو مجھے اجاگر کرتے ہیں صرف اب کے لئے دلچسپ حصہ ہے. typedef - اسی مطلوبہ الفاظ کی دوبارہ ہے. typedef ہم سٹرنگ کا اعلان کرنے کے لئے استعمال ایک خاص قسم کے طور پر اعداد و شمار. آپ نئے برانڈ بنانے کے لئے استعمال کر سکتے ہیں typedef جب موجود ہی نہیں تھی کہ اعداد و شمار اقسام سی ایجاد کیا گیا. مثال کے طور پر، INT سی چار کے ساتھ آتا ہے ڈبل سی سی کے ساتھ آتا ہے کے ساتھ آتا ہے لیکن ایک طالب علم کا کوئی تصور نہیں ہے. اور ابھی تک یہ ہونا بہت مفید ہو گی ذخیرہ ہے کہ ایک پروگرام لکھنے کے قابل ایک متغیر میں ایک طالب علم کی ID نمبر، ان کے نام اور ان کے گھر. دوسرے الفاظ میں، تین ٹکڑے ٹکڑے اعداد و شمار کے ایک INT اور پسند سٹرنگ اور ایک اور سٹرنگ. typedef کے ساتھ، کیا خوبصورت طاقتور ہے کے لئے یہ اور مطلوبہ الفاظ sturct کے بارے میں ساخت، آپ کو، 2013 ء میں پروگرامر، اصل میں اپنی خود کی وضاحت کر سکتے ہیں سال موجود ہی نہیں تھی کہ اعداد و شمار اقسام پہلے لیکن یہ اپنے مقاصد کے مطابق. اور اس طرح یہاں، 19 کے ذریعے کی لائنز 13 میں، ہم جیسے ایک نئے اعداد و شمار کی قسم کا اعلان کر رہے ہیں ایک INT، لیکن یہ طالب علم کو بلا. اور اندر اس متغیر کی جا رہی ہے ایک INT، ایک تار، - تین چیزوں ہو اور ایک تار. تو کیا تم واقعی میں کیا ہے کے بارے میں سوچ کر سکتے ہیں یہ ہے، اگرچہ یہاں ہوا وہ ایک آج کے لئے ایک آسان بنانے کے تھوڑا سا، ایک طالب علم بنیادی طور پر چل رہا ہے اس طرح دیکھنے کے لئے. اس کا ایک حصہ بننے جا رہی ایک ID کے ساتھ میموری، ایک کا نام میدان، اور ایک گھر فیلڈ. اور ہم نے ان حصوں کا استعمال کرنے کے قابل ہو جائے گا میموری اور ان تک رسائی حاصل کے طور پر مندرجہ ذیل ہے. میں struct0.c میں جانا ہے تو، یہاں ایک ہے نسبتا طویل، لیکن بعد کوڈ کا پیٹرن، کہ اس نئی چال کا استعمال کرتا ہے. تو سب سے پہلے، مجھے آپ کی توجہ اپنی طرف متوجہ کرتے ہیں اوپر دلچسپ حصوں. تیز طلباء 3 کی وضاحت کرتا ہے، ایک اعلان مسلسل کہا جاتا ہے طالب علموں کو اور دیتا ہے یہ صرف منمانے نمبر 3، تو میں نے استعمال کرتے ہوئے تین طالب علموں کو ہے اب کے لئے اس پروگرام. یہاں مین آتا ہے. اور نوٹس، میں کس طرح کا اعلان کرتے ہیں طالب علموں کی ایک سرنی؟ ٹھیک ہے، میں نے صرف ایک ہی نحو کا استعمال کرتے ہیں. طالب علم کا لفظ واضح طور پر نئی ہے. لیکن طالب علم، کلاس، بریکٹ کے طالب علموں کو. تو بدقسمتی سے ایک بہت کچھ ہے یہاں کی شرائط کے دوبارہ استعمال کے. یہ تو صرف ایک نمبر ہے. تو یہ تین کہہ طرح ہے. کلاس میں چاہتا کیا ہے متغیر کو فون کرنے کی. میں اس کے طالب علموں کو کہہ سکتے ہیں. لیکن کلاس، یہ ایک میں ایک کلاس نہیں ہے آبجیکٹ اورینٹڈ جاوا قسم کے راستے سے. یہ صرف طالب علموں کی ایک کلاس ہے. اور ہر عنصر کے اعداد و شمار کی قسم کہ سرنی میں طالب علم ہے. تو یہ تھوڑا سا مختلف ہے اور کچھ کہنے سے اس طرح، یہ صرف ہے - مجھے تین طالب علموں کو دے کہہ رہا ہوں اور یہ کہ سرنی کلاس کہتے ہیں. ٹھیک ہے. اب یہاں ایک چار لوپ ہے. اس لڑکے کی واقف - iterate اپ پر صفر سے تین. اور یہاں نحو کی نئی ٹکڑا ہے. پروگرام، مجھے فوری طور پر جا رہا ہے یہ ایک طالب علم دینے کی انسانی، ایک INT ہے جو ID،. اور یہاں پر آپ کر سکتے ہیں جس کے ساتھ نحو ہے میں آئی ڈی میدان میں کچھ ذخیرہ مقام کلاس بریکٹ میں تو یہ نحو نیا نہیں ہے. یہ صرف مجھ سے آٹھویں دینے کا مطلب ہے کہ کلاس میں طالب علم. لیکن یہ علامت نیا ہے. اب تک، ہم، ڈوٹ استعمال نہیں کر سکتے ہیں ہے اس طرح کم از کم میں کوڈ. اس کا مطلب ہے کے طور پر جانا struct کے پاس جاؤ ایک طالب علم اور وہاں کچھ ڈال دیا. اسی طرح، یہ اگلی لائن میں 31، جانا آگے ڈال دیا اور جو کچھ بھی صارف کی اقسام یہاں ایک نام کے لئے اور کیا وہ ایک کے لئے کیا گھر، ایک ہی بات، آگے بڑھو اور . گھر میں رکھ دیا. لہذا اس پروگرام کیا ہے بالآخر کرتے ہیں؟ تم نے وہاں ایک چھوٹی سی چھیڑ دیکھ سکتے ہیں. مجھ سے آگے بڑھو اور structs 0 بنانے کرتے ہیں ڈاٹ سلیش struct 0، طالب علم کی ID 1، ڈیوڈ Mather، 2 طالب علم آئی ڈی کا کہنا ہے کہ. روب Kirkland کے، طالب علم آئی ڈی 3. لارین Leverit - اور اس پروگرام نے صرف ایک ہی چیز، جس، صرف مکمل طور پر صوابدیدی ہے میں، اس کے اعداد و شمار کے ساتھ کچھ کرنا چاہتا تھا میں نے کس طرح ہمیں سکھایا ہے کہ اب structs کا استعمال کرتے ہیں، میں صرف پڑا ہے یہاں یہ اضافی لوپ. میں طالب علموں کی سرنی سے زیادہ iterate. میں نے اپنے، شاید اب واقف دوست، استعمال کیا جاتا ہے سٹرنگ پر، stircomp موازنہ چیک 8th طالب علم کا گھر ہے Mather کے برابر؟ اور اگر ایسا ہے تو، صرف کچھ پرنٹ منمانے پسند ہے، جی ہاں، یہ ہے. لیکن پھر مجھے صرف مواقع دے اور استعمال کرنے کے لئے اور دوبارہ استعمال کرنے کے لئے اس نئے نقطہ سنکیتن دوبارہ استعمال. تو کون صحیح، پرواہ کرتا ہے؟ ایک طالب علم کے پروگرام کے ساتھ آ رہا ہے کسی حد تک من مانی، لیکن یہ باہر کر دیتا ہے ہم سے مفید چیزوں کو کر سکتا ہے کہ یہ مثال کے طور پر کے طور پر مندرجہ ذیل ہے. یہ ایک بہت زیادہ پیچیدہ struct ہے سی میں یہ ایک درجن یا اس سے زیادہ شعبوں ہے کسی حد تک cryptically کا نام دیا. لیکن کیا تم نے کبھی ایک گرافکس کے بارے میں سنا ہے تو کہا جاتا بٹ نقشہ فائل کی شکل، BMP، یہ باہر کر دیتا ہے کہ بٹ نقشہ فائل کی شکل بہت زیادہ ہے کہ اس کی طرح لگتا ہے. یہ ایک پاگل تھوڑا جذباتیہ ہے. یہ میں یکبر ہے کہ ایک چھوٹی سی تصویر ہے بہت بڑا پر میں ہر ایک دیکھ سکتا ہے تاکہ انفرادی نقطہ یا پکسلز کی. ہم نے ایک نمائندگی کر سکتے ہیں باہر اب، یہ دیتا ہے تعداد 0، کا کہنا ہے کہ، کے ساتھ کالا ٹیکہ. نمبر 1 کے ساتھ اور ایک سفید نقطہ. تو دوسرے الفاظ میں، اگر آپ چاہیں تو ایک اپنی طرف متوجہ کرنے جذباتیہ اور ایک میں اس تصویر کو بچانے کے کمپیوٹر، اس zeros ذخیرہ اور کافی اس طرح نظر آئے کہ لوگ، جہاں، پھر لوگ سفید ہیں اور zeros سیاہ فام ہیں. اور ایک دوسرے کے ساتھ، آپ کو مؤثر طریقے سے ہو تو والوں اور zeros کے gird ایک، آپ کو ایک ہے پکسلز کے گرڈ، اور آپ کو پوشیدہ ہے تو انہیں باہر، آپ کو ایک پیارا ہے تھوڑا جذباتیہ. اب، بٹ نقشہ فائل کی شکل، BMP، ہے مؤثر طریقے سے کہ ہڈ کے نیچے، لیکن زیادہ پکسلز طرزعمل کے ساتھ کہ آپ اصل رنگ کی نمائندگی کر سکتے ہیں. لیکن آپ کو زیادہ بہتر ہے جب BMP اور JPEG اور GIF فائل کی شکل کی طرح جس کے ساتھ آپ کو ان سے واقف ہو سکتا ہے ڈسک پر فائلوں کو عام طور پر نہ صرف zeros اور پکسلز کے لئے والے ہیں، لیکن وہ اس کے ساتھ ساتھ کچھ میٹاڈیٹا ہے - واقعی نہیں ہے اس معنی میں META اعداد و شمار لیکن یہ ہے کے لئے مفید ہے. تو یہاں ان خانوں کو اشارہ، اور کر رہے ہیں ہم P-سیٹ میں مزید تفصیل سے یہ دیکھیں گے 5، کہ zeros اور لوگ اس سے پہلے ایک تصویر میں پکسلز کی نمائندگی کرتے ہیں میٹا ڈیٹا کا ایک گروپ کی طرح ہے تصویر کا سائز اور تصویر کی چوڑائی. اور میں نے کچھ دور توڑ رہا ہوں نوٹس یہاں صوابدیدی چیزیں - چوڑائی اور اونچائی. بٹ شمار اور کچھ دوسری چیزوں کے. تو ایک فائل میں کچھ میٹاڈیٹا ہے. لیکن فائلوں چڑھائی کر رہے ہیں کہ کس طرح سمجھنے کی طرف سے اس طرح میں، آپ اصل میں کر سکتے ہیں پھر تصاویر جوڑتوڑ، تصاویر کی وصولی ڈسک سے تصاویر کا سائز تبدیل کریں. لیکن آپ کو ضروری نہیں کر سکتے ہیں ان کو بہتر بنانے کے. میں نے ایک تصویر کی ضرورت ہے. تو میں نے آپ کو دیکھا جو یہاں آرجی واپس چلے گئے کچھ عرصے پہلے کی سکرین پر. میں یہاں کلیدی کھولنے اور اگر یہ ہے کیا آپ میں زوم کرنے کی کوشش کریں، اگر ایسا ہوتا ہے اور آرجی کو بہتر بنانے کے. وہ واقعی کسی بھی بہتر نہیں مل رہا ہے. اب کلیدی یہ ایک blurring کی قسم ہے تھوڑا سا، صرف ختم ٹیکہ پر آرجی خاص طور پر حاصل نہیں کرتا ہے حقیقت یہ ہے کہ تم اندر زوم جب میں اضافہ اور یہ اس طرح کرتے ہیں تو، چوکوں دیکھ رہے ہو؟ جی ہاں، آپ کو یقینی طور پر دیکھ سکتے ہیں ایک پروجیکٹر پر چوکوں. کہ آپ کو بہتر بنانے کے جب آپ کو ملتا ہے. لیکن سمجھ میں کس طرح ہمارے آرجی یا جذباتیہ لاگو کیا جاتا ہے ہمیں دیں گے اصل میں manipulates کہ کوڈ لکھنے ان چیزوں کو. اور میں کے ساتھ، میں اس نوٹ پر ختم سوچا ایک سے 55 پر، اس میں اضافہ میں نہیں بلکہ گمراہ کن کا کہنا ہے کہ، ہمت. [ویڈیو پلے بیک] -وہ جھوٹ بول رہا ہے. کس کے بارے میں، مجھے پتہ نہیں ہے. تو ہم کیا جانتے ہیں؟ کہ 9:15 رے Santoya میں اے ٹی ایم پر تھا. تو سوال کیا ہے وہ 9:16 بجے کر رہا تھا؟ شوٹنگ نو ملیمیٹر کچھ میں. ہو سکتا ہے وہ سپنر دیکھا. یا اس کے ساتھ کام کر رہا تھا. -انتظار کریں. ایک واپس چلے جاؤ. کیا تم نے دیکھا؟ ، مکمل سکرین پر اس کا چہرہ اپ لاو. -ان کے شیشے. -آمدید عکاس ہے. کہ Neuvitas بیس بال کی ٹیم ہے. کہ ان کی علامت (لوگو) ہے. اور وہ ہے جو شخص سے بات کر رہا کہ جیکٹ پہننا. [END ویڈیو پلے بیک] ڈیوڈ جے MALAN: یہ کریں گے مسئلہ سیٹ کریں 5 ہو. ہم اگلے ہفتے آپ کو نظر آئے گا. MALE سپیکر: اگلے CS50 میں. [CRICKETS چہچہاہٹ] [موسیقی بجانے]