1 00:00:00,000 --> 00:00:10,970 >> [موسیقی بجانے] 2 00:00:10,970 --> 00:00:12,536 >> ڈیوڈ جے MALAN: ٹھیک ہے. 3 00:00:12,536 --> 00:00:13,392 >> [ہنسی] 4 00:00:13,392 --> 00:00:14,240 >> واپسی پر خوش آمدید. 5 00:00:14,240 --> 00:00:14,990 یہ CS50 ہے. 6 00:00:14,990 --> 00:00:16,890 اور اس ہفتے کے آخر میں پانچ. 7 00:00:16,890 --> 00:00:20,020 اور اب تک، ہم نے بہت زیادہ ہے حاصل کی جاچکی کے لئے لے رہی ہے کہ وہاں 8 00:00:20,020 --> 00:00:23,480 آپ نے اس سنکلک، بجنا، موجود ہے اس کی راہ کی طرف invoking گیا 9 00:00:23,480 --> 00:00:27,100 دوسرے کے آلے کے ہے کہ کسی نہ کسی طرح بنائیں بلایا جادوئی آپ کے منبع کوڈ میں بدلتا ہے 10 00:00:27,100 --> 00:00:31,350 آبجیکٹ کوڈ، zeros اور پیاروں میں کہ آپ کے کمپیوٹر CPU، مرکزی 11 00:00:31,350 --> 00:00:33,410 پروسیسنگ یونٹ، اصل میں سمجھتی ہے. 12 00:00:33,410 --> 00:00:36,770 ہے کہ ایک بڑی تعداد ہے لیکن یہ باہر کر دیتا ہے میں ہڈ کے نیچے چل رہی 13 00:00:36,770 --> 00:00:38,690 ان پٹ اور آؤٹ پٹ کے درمیان. 14 00:00:38,690 --> 00:00:41,800 >> اور میں کہ ہم گوشت تجویز کرنا چاہوں گا تھوڑی سی مزید تفصیل میں میں کہ 15 00:00:41,800 --> 00:00:45,130 ان چار مراحل پر، کہا جاتا کچھ ہے پری پروسیسنگ، کچھ 16 00:00:45,130 --> 00:00:48,300 ہم نے دیکھا ہے جس کی تالیف،، کہا جاتا ہے کچھ جمع کہا جاتا ہے، اور 17 00:00:48,300 --> 00:00:49,420 کچھ ملانے والی ملاقات کی. 18 00:00:49,420 --> 00:00:53,270 تو اب تک، ہمارے میں سے کچھ میں پروگراموں، ہم تیزی سے شامل کر لیا ہے. 19 00:00:53,270 --> 00:00:56,650 حال ہی میں ہم نے کچھ تیز تھا constants کی وضاحت کرتا ہے. 20 00:00:56,650 --> 00:01:00,660 تو یہ باہر کر دیتا ہے ان چیزوں کو کہ ہیش کی علامت یا prefixed کر رہے ہیں 21 00:01:00,660 --> 00:01:04,150 پونڈ علامت پری پروسیسر ہیں ہدایات. 22 00:01:04,150 --> 00:01:07,960 یہ صرف یہ کہہ کے پسند طریقہ ہے اصل میں ہے کہ کوڈ کی ایک لائن 23 00:01:07,960 --> 00:01:12,280 اس سے پہلے کہ کسی اور چیز میں تبدیل کمپیوٹر بھی تبدیل کرنے کی کوشش کریں آپ کے 24 00:01:12,280 --> 00:01:13,800 zeros اور پیاروں میں پروگرام. 25 00:01:13,800 --> 00:01:19,000 >> مثال کے طور پر، تیز سٹینڈرڈ میں شامل ہیں I / O. H، بہت زیادہ صرف جانے کا مطلب ہے کہ 26 00:01:19,000 --> 00:01:24,010 آگے ہے، فائلوں کے مندرجات پر قبضہ stdio.h اور وہاں ان کے چسپاں کر دیں. 27 00:01:24,010 --> 00:01:25,880 تو کوئی zeros اور پیاروں ابھی اس نقطہ پر. 28 00:01:25,880 --> 00:01:27,470 یہ واقعی صرف ایک متبادل ہے. 29 00:01:27,470 --> 00:01:30,790 اور اس کے نام نہاد کے دوران کیا ہے پری پروسیسنگ کے مرحلے، جب آپ 30 00:01:30,790 --> 00:01:34,230 اصل میں خاص طور پر بجنا چلانے یا زیادہ تر مقدمات میں بنائیں. 31 00:01:34,230 --> 00:01:36,950 تو یہ سب کچھ ہو رہا کر دیا گیا ہے سب سے پہلے خود کار طریقے سے اس طرح اب تک. 32 00:01:36,950 --> 00:01:38,800 >> پھر تالیف مرحلہ آتا ہے. 33 00:01:38,800 --> 00:01:40,920 لیکن ہم oversimplified گیا ہے تالیف. 34 00:01:40,920 --> 00:01:45,060 ایک پروگرام مرتب واقعی مطلب ، سی کچھ اس طرح سے اسے لے لو 35 00:01:45,060 --> 00:01:48,430 ماخذ کوڈ سے ہم نیچے، لکھ دیا گیا ہے کچھ اسمبلی کہا جاتا ہے. 36 00:01:48,430 --> 00:01:52,900 اسمبلی زبان کی کم سطح ہے زبان، کہ شکر ہے، ہم نہیں کریں گے 37 00:01:52,900 --> 00:01:55,480 زیادہ سے زیادہ کرنے کے لئے موقع ہے اس سمسٹر لکھتے ہیں. 38 00:01:55,480 --> 00:01:59,100 لیکن اس میں سب سے کم سطح پر ہے آپ لفظی لکھنا شروع اس معنی 39 00:01:59,100 --> 00:02:04,270 شامل کریں اور منہا کریں اور ضرب اور لوڈ میموری اور میموری بچانے کے لئے، 40 00:02:04,270 --> 00:02:08,259 بہت بنیادی ہدایات ہے کہ ایک کمپیوٹر، ہڈ کے نیچے، 41 00:02:08,259 --> 00:02:09,639 اصل میں سمجھتی ہے. 42 00:02:09,639 --> 00:02:14,930 >> آخر میں، جمع اس زبان لیتا ہے ہم کیا گیا ہے کہ zeros اور پیاروں پر 43 00:02:14,930 --> 00:02:16,190 اس طرح اب تک بیان. 44 00:02:16,190 --> 00:02:19,270 اور واقعی آخر میں، نام نہاد ہے مرحلے سے منسلک، جو ہم دیں گے 45 00:02:19,270 --> 00:02:22,360 یکجا جس میں صرف ایک لمحے، میں دیکھ آپ zeros اور zeros کے ساتھ والوں اور 46 00:02:22,360 --> 00:02:24,870 اس سے پہلے والے دوسرے لوگوں کو تمہیں پیدا کیا ہے. 47 00:02:24,870 --> 00:02:26,660 >> تو یہ سپر سادہ پروگرام پر غور کریں. 48 00:02:26,660 --> 00:02:27,560 یہ ہفتہ 1 سے تھا. 49 00:02:27,560 --> 00:02:29,610 یہ صرف، عالمی خوش آمدید، انہوں نے کہا کہ سکرین پر. 50 00:02:29,610 --> 00:02:30,920 ہم بجنا کے ذریعے اس بھاگ گیا. 51 00:02:30,920 --> 00:02:33,200 یا پھر ہم اس کے ذریعے بنائیں بھاگ گیا جس بجنا بھاگ گیا. 52 00:02:33,200 --> 00:02:36,170 اور وقت outputted جہاں کچھ zeros اور ہیں. 53 00:02:36,170 --> 00:02:38,100 ہے لیکن یہ باہر کر دیتا ہے ایک انٹرمیڈیٹ قدم ہے. 54 00:02:38,100 --> 00:02:40,460 مجھے یہاں جانا ہے - افوہ، نہیں کیا ابھی تک اسے دیکھنے کے لئے چاہتے ہیں. 55 00:02:40,460 --> 00:02:44,800 میں اپنے آلہ کرنے کے لئے یہاں جاتے ہیں اور میں hello.c، یہاں کھول 56 00:02:44,800 --> 00:02:46,160 اسی پروگرام ہے. 57 00:02:46,160 --> 00:02:48,600 اور کیا میں اپنے ٹرمینل میں کیا کرنے جا رہا ہوں یہاں ونڈو میں کرنے جا رہا ہوں کیا جاتا ہے 58 00:02:48,600 --> 00:02:51,430 ، بجنا چلانے کے بجائے جو بنائیں کے چاروں automates 59 00:02:51,430 --> 00:02:52,870 ہمارے لئے ان اقدامات. 60 00:02:52,870 --> 00:02:58,620 اور میں بجنا ایس کیا کرنے والے اور رہا ہوں داخل تو hello.c اور پھر. 61 00:02:58,620 --> 00:03:00,590 >> اور میں ایک ٹمٹمانے فوری طور پر حاصل ایک بار پھر، جو اچھا ہے. 62 00:03:00,590 --> 00:03:05,280 اور اب ایک قدرے بڑی ونڈو میں، میں یہاں gedit کو کھولنے کے لئے جا رہا ہوں. 63 00:03:05,280 --> 00:03:09,610 اور میں، کہ ایک فائل کو کھولنے کے لئے جا رہا ہوں باہر کر دیتا ہے، hello.s یہ کہا جاتا ہے 64 00:03:09,610 --> 00:03:11,870 کہ اسمبلی کی زبان پر مشتمل ہے میں نے پہلے کہا جاتا ہے. 65 00:03:11,870 --> 00:03:15,060 اور یہ اسمبلی کہا جاتا ہے کیا ہے زبان، منصفانہ کم سطح 66 00:03:15,060 --> 00:03:18,470 ہدایات کہ آپ انٹیل CPU یا جو کچھ بھی اس کے اندر ہے یہ ہے کہ 67 00:03:18,470 --> 00:03:19,350 سمجھتی ہے. 68 00:03:19,350 --> 00:03:24,480 اور MOV اقدام کے لئے ہے. کال کے لئے ہے ، ایک بہت کم سطح تقریب بلا. 69 00:03:24,480 --> 00:03:26,380 ذیلی منہا کے لئے ہے. 70 00:03:26,380 --> 00:03:30,370 >> آپ کے اندر ایک خاص طور پر سی پی یو ہے تو جب آپ کے کمپیوٹر کے، کیا کرتا ہے 71 00:03:30,370 --> 00:03:34,300 پر واضح، بمقابلہ دوسرے CPUs مارکیٹ ہے جس کی ہدایات پر یہ 72 00:03:34,300 --> 00:03:39,460 سمجھتا ہے اور اکثر کس طرح موثر یہ یہ کسی عمل پر ہے کتنی تیزی سے، ہے 73 00:03:39,460 --> 00:03:40,380 ان ہدایات کی. 74 00:03:40,380 --> 00:03:45,150 اب اس پر زیادہ کے لئے، آپ کو لے جا سکتے ہیں کالج میں اگلے موسم خزاں CS61. 75 00:03:45,150 --> 00:03:48,170 لیکن یہاں ہم کچھ، مثال کے طور پر، ہے واقف نظر آتے ہیں کہ شناخت. 76 00:03:48,170 --> 00:03:50,150 hello.c پروگرام کا نام ہے. 77 00:03:50,150 --> 00:03:51,070 >> . متن - 78 00:03:51,070 --> 00:03:54,190 دلچسپی کے زیادہ وہاں نہیں ہے ابھی، یاد ہے کہ متن 79 00:03:54,190 --> 00:03:59,190 جہاں میں طبقہ، پیر کے طور پر، ہے میموری آپ کے پروگرام اصل میں اپ ختم ہوتا ہے. 80 00:03:59,190 --> 00:04:01,330 تاکہ کم از کم vaguely ہے وہاں واقف. 81 00:04:01,330 --> 00:04:03,730 یہاں، کورس کے، ایک ذکر ہے ہمارے مرکزی تقریب کی. 82 00:04:03,730 --> 00:04:07,220 نیچے طومار کر رہا ہے، ان چیزوں کا حوالہ دیتے ہیں نام نہاد کے رجسٹر، کے بہت چھوٹے حصوں 83 00:04:07,220 --> 00:04:09,190 آپ کا اصل CPU کی یاد کے اندر. 84 00:04:09,190 --> 00:04:12,930 اور میں بھی ذیل میں سکرال اگر مزید، میں کسی قسم کو دیکھ 85 00:04:12,930 --> 00:04:14,240 ASCII کا بالواسطہ ذکر. 86 00:04:14,240 --> 00:04:17,120 اور، یقینا، کہ سٹرنگ ہے، ہیلو، کوما، دنیا. 87 00:04:17,120 --> 00:04:20,079 >> اتنی لمبی کہانی مختصر ہے، یہ کیا گیا ہے ، خود کار طریقے سے، آپ کے لئے ہو رہا 88 00:04:20,079 --> 00:04:22,140 ہڈ کے نیچے اس وقت کے تمام. 89 00:04:22,140 --> 00:04:26,450 اور کیا ہو رہا ہے واقعی میں ایک بار ہے آپ بجنا چلانے کے، یا اس کی راہ کی طرف سے ہے 90 00:04:26,450 --> 00:04:29,150 ، آپ سب سے پہلے ہو رہی ہے، بنائیں ماخذ کوڈ کی طرف سے، 91 00:04:29,150 --> 00:04:30,700 اسمبلی زبان کے نام نہاد. 92 00:04:30,700 --> 00:04:35,210 پھر بجنا اس اسمبلی کو تبدیل کیا جاتا ہے نیچے zeros اور پیاروں کے لئے زبان. 93 00:04:35,210 --> 00:04:38,340 اور یہ ہم شروع سلائڈ ہے پر ہفتے 0 میں ہماری بحث - 94 00:04:38,340 --> 00:04:39,840 اور پھر اس پر ہفتہ 1. 95 00:04:39,840 --> 00:04:44,030 اور پھر آخر میں، ان لوگوں کے zeros اور پیاروں zeros اور لوگوں کے ساتھ مل کر کر رہے ہیں 96 00:04:44,030 --> 00:04:47,190 ان لائبریریوں سے ہم لے رہی ہے سٹینڈرڈ I / O یا طرح حاصل کی جاچکی کے لئے 97 00:04:47,190 --> 00:04:50,010 سلک لائبریری یا اس سے بھی CS50 لائبریری. 98 00:04:50,010 --> 00:04:54,200 >> تو مزید اس تصویر پینٹ ضعف، ہم hello.c ہے. 99 00:04:54,200 --> 00:04:57,220 اور یہ، کورس کے، printf کا استعمال کرتا ہے دنیا، ہیلو کہنے کے لئے کام کرتے ہیں. 100 00:04:57,220 --> 00:05:01,810 تالیف مرحلے پر اس کو نیچے لے جاتا ہے وہ فائل ہم صرف یہاں تک کہ، hello.s دیکھا 101 00:05:01,810 --> 00:05:04,290 عام طور پر خارج کر دیا ہے کہ اگرچہ خود کار طریقے سے آپ کے لئے. 102 00:05:04,290 --> 00:05:06,050 لیکن اس اسمبلی کوڈ ہے درمیانی مرحلہ میں. 103 00:05:06,050 --> 00:05:09,750 اور پھر ہم اسمبلی جمع جب جب آپ زبان،، تو بات کرنے ہے 104 00:05:09,750 --> 00:05:10,830 ان zeros اور پیاروں ملتا ہے. 105 00:05:10,830 --> 00:05:13,920 تو ہم پر آج موثر انداز میں یکبر ہے کیا حاصل کی جاچکی کے لئے لے جا رہا ہے کہ ہم کیا گیا ہے، 106 00:05:13,920 --> 00:05:16,430 ماخذ کوڈ جا کا مطلب ہے کوڈ اعتراض کرنے. 107 00:05:16,430 --> 00:05:18,850 >> لیکن آخر میں، اب اسی تصویر - یہ ختم کرنے کے لئے دھکا چلو 108 00:05:18,850 --> 00:05:20,020 بائیں ہاتھ کی طرف. 109 00:05:20,020 --> 00:05:22,880 اور یاد رکھیں کہ اوپر میں میں stdio.h کا ذکر کیا. 110 00:05:22,880 --> 00:05:25,030 کہ ہم نے شامل کر دیا ہے کہ ایک فائل ہے تقریبا تمام کے 111 00:05:25,030 --> 00:05:26,250 ہم نے لکھا ہے پروگرام. 112 00:05:26,250 --> 00:05:28,830 اور یہ کہ جس کے مندرجات فائل ہے کاپی پیسٹ ہو، 113 00:05:28,830 --> 00:05:30,350 مؤثر طریقے سے آپ کے کوڈ کو اوپر. 114 00:05:30,350 --> 00:05:34,170 لیکن یہ ہے کہ، ایک کمپیوٹر پر باہر کر دیتا ہے نظام کہیں، شاید ایک ہے 115 00:05:34,170 --> 00:05:39,150 کسی سال میں لکھا ہے کہ stdio.c فائل پہلے اس کے تمام لاگو 116 00:05:39,150 --> 00:05:41,870 اعلان کیا گیا کہ کام کرتا ہے stdio.h میں. 117 00:05:41,870 --> 00:05:45,465 >> اب حقیقت میں اس پر شاید نہیں ہے یا یہاں تک کہ میں اپنے میک یا اپنے کمپیوٹر کی 118 00:05:45,465 --> 00:05:47,660 CS50 آلات ایک خام سی کوڈ ہے. 119 00:05:47,660 --> 00:05:52,710 کسی نے پہلے ہی مرتب کیا اور شامل اے آبجیکٹ کوڈ کے لئے فائل یا ایک 120 00:05:52,710 --> 00:05:56,020 ایک مشترکہ لائبریری سے مراد جس فائل، کہ پہلے سے نصب کیا ہے اور کر رہا ہے 121 00:05:56,020 --> 00:05:57,240 آپ کے لئے پہلے سے مرتب کیا. 122 00:05:57,240 --> 00:06:01,950 لیکن بے شک وہاں موجود ہے لگتا ہے متوازی میں ہمارے کمپیوٹر stdio.c پر 123 00:06:01,950 --> 00:06:02,650 بجنا کے ساتھ. 124 00:06:02,650 --> 00:06:04,960 آپ کے کوڈ کو مرتب کیا جا رہا ہے اور جمع. 125 00:06:04,960 --> 00:06:09,200 stdio.c کے کوڈ کو مرتب کیا ہے اور کیا جا رہا ہے جمع، تو یہ بہت ہی آخری ہے کہ 126 00:06:09,200 --> 00:06:13,730 یہاں نیچے، قدم، ہم کسی نہ کسی طرح کرنا ہے لنک، تو بات کرنے کے لئے، آپ کی zeros اور پیاروں 127 00:06:13,730 --> 00:06:18,430 ایک میں اس کا یا اس zeros اور لوگوں کے ساتھ بالآخر یہ ہے کہ سادہ پروگرام 128 00:06:18,430 --> 00:06:20,540 خوش صرف ملاقات کی. 129 00:06:20,540 --> 00:06:23,340 >> تو یہ ہے کہ جادو کی تمام ہے اس طرح اب تک جو کچھ ہو رہا کر دیا گیا. 130 00:06:23,340 --> 00:06:26,430 اور یہ لینے کے لئے جاری رہے گی عمل کے لئے حاصل کی جاچکی ہے، لیکن احساس 131 00:06:26,430 --> 00:06:28,750 رسیلی تفصیلات کی ایک بہت کچھ ہے وہاں کے نیچے چل رہی. 132 00:06:28,750 --> 00:06:31,920 اور یہ بناتا ہے کیا ہے آپ کی انٹیل کے اندر کے ساتھ کمپیوٹر 133 00:06:31,920 --> 00:06:33,940 خاص طور پر مختلف. 134 00:06:33,940 --> 00:06:37,020 >> تو یاد رکھیں کہ پر، اگر آپ چاہیں تو پر اس جمعہ کو دوپہر کے کھانے کے لئے ہمارے ساتھ شامل، جاتے ہو 135 00:06:37,020 --> 00:06:41,570 ہمیشہ کی طرح جگہ cs50.net/rsvp کرنے کے لئے، 1:15 PM اس جمعہ. 136 00:06:41,570 --> 00:06:43,400 اور اب چند ایک کے اعلانات. 137 00:06:43,400 --> 00:06:44,670 تو ہم نے کچھ اچھی خبر ہے. 138 00:06:44,670 --> 00:06:45,970 اور ہم نے کچھ بری خبر ہے. 139 00:06:45,970 --> 00:06:47,260 یہاں کچھ اچھی خبر کے ساتھ شروع کریں. 140 00:06:47,260 --> 00:06:52,038 141 00:06:52,038 --> 00:06:54,510 >> [کراہنا] 142 00:06:54,510 --> 00:06:54,710 >> ٹھیک ہے. 143 00:06:54,710 --> 00:06:56,670 ٹھیک ہے، یہ ایسا ہے، تو تکنیکی طور پر چھٹی ہے اس نے ہمیں بہت سے ایک تحفہ نہیں ہے. 144 00:06:56,670 --> 00:06:58,030 کورس کی لیکن پھر بری خبر. 145 00:06:58,030 --> 00:07:00,550 146 00:07:00,550 --> 00:07:01,880 >> [کراہنا] 147 00:07:01,880 --> 00:07:03,530 >> میں نے وقت کی ایک بہت خرچ یہ متحرک تصاویر پر. 148 00:07:03,530 --> 00:07:04,690 >> [ہنسی] 149 00:07:04,690 --> 00:07:07,000 >> ایک کا جائزہ لینے کے سیشن ہو گا یہ پیر کو آنے والے. 150 00:07:07,000 --> 00:07:08,340 یہ 5:30 بجے ہونے جا رہا ہے. 151 00:07:08,340 --> 00:07:11,210 ہم ان تمام تفصیلات کی آپ کو یاد دلاتی رہے گی کورس کی پر ای میل کے ذریعے 152 00:07:11,210 --> 00:07:13,470 دن کے وقت کے صرف ایک جوڑے میں ویب سائٹ. 153 00:07:13,470 --> 00:07:16,610 یہ فلمایا اور دستیاب بنایا جائے گا جلد ہی اس کے بعد. 154 00:07:16,610 --> 00:07:19,200 اگر آپ نہیں کر سکتے اس لئے کہ اگر پیر کو رات سلاٹ، فکر نہ کرو. 155 00:07:19,200 --> 00:07:22,270 حصے اس آنے والے ہفتے بھی کرے گا گئے تمام سوالات کے لئے جائزہ لینے پر توجہ مرکوز. 156 00:07:22,270 --> 00:07:25,670 اپنا سیکشن ہے جو پیر، پر ہے تو بے شک یونیورسٹی کی چھٹی، ہم کریں گے 157 00:07:25,670 --> 00:07:26,920 اب بھی حصے میں ملتے ہیں. 158 00:07:26,920 --> 00:07:28,890 آپ کو صرف اس بنا نہیں کر سکتے ہیں سیکشن آپ جا رہے ہیں کیونکہ 159 00:07:28,890 --> 00:07:29,860 دور، ٹھیک ہے. 160 00:07:29,860 --> 00:07:33,710 اتوار یا منگل کے سیکشن یا میں شرکت جیسن کے حصے دھن میں، جس میں ہے 161 00:07:33,710 --> 00:07:35,110 آن لائن دستیاب. 162 00:07:35,110 --> 00:07:37,490 >> تو، زیادہ بری خبر. 163 00:07:37,490 --> 00:07:41,960 تو نصاب کے مطابق، ہم اگلے جمعہ لیکچر ہے. 164 00:07:41,960 --> 00:07:43,690 لیکن اچھی خبر - 165 00:07:43,690 --> 00:07:44,860 واضح طور پر، میں اس پر بہت زیادہ وقت گزارا. 166 00:07:44,860 --> 00:07:45,280 >> [ہنسی] 167 00:07:45,280 --> 00:07:47,140 >> ہم نے جمعہ کی اگلے لیکچر منسوخ کر دیں گے. 168 00:07:47,140 --> 00:07:50,590 تو وہ ہمارے لئے ایک تحفہ ہو جائے گا، لہذا آپ واقعی ایک اچھا مہلت میں ہو سکتا ہے 169 00:07:50,590 --> 00:07:52,990 اس ہفتے اور اس وجہ سے دو ہفتے کے درمیان. 170 00:07:52,990 --> 00:07:57,460 کوئی لیکچر اگلے ہفتے، صرف ایک چھوٹا سا تو تم ہونا چاہئے جس کے لئے تھوڑا سا کوئز، 171 00:07:57,460 --> 00:07:59,030 تیزی سے حوصلہ افزائی ہو رہی ہے. 172 00:07:59,030 --> 00:08:03,870 >> تو اب ہماری طرف موڑ دو بے شک زیادہ بصری ہے کہ کچھ 173 00:08:03,870 --> 00:08:06,990 اور اس سے زیادہ دلچسپ اور اسٹیج قائم کرنے کے لئے افق پر ہونے جا رہا ہے اس کے لیے 174 00:08:06,990 --> 00:08:08,420 ہفتے کے وقت کے صرف ایک جوڑے میں. 175 00:08:08,420 --> 00:08:12,160 سب سے پہلے گئے تمام سوالات کے بعد، ہم تبدیل کر دونگا ہمارا مسئلہ سیٹ کی ایک اور پر توجہ مرکوز 176 00:08:12,160 --> 00:08:16,710 ڈومین مخصوص مسئلہ ہے، اس کے زیادہ عام طور پر عدالتی یا سیکورٹی. 177 00:08:16,710 --> 00:08:19,550 >> اس مسئلہ کے ساتھ اصل میں، روایت سیٹ میرے لئے میں سے ایک ہے 178 00:08:19,550 --> 00:08:24,850 بھر میں چلنے کے ساتھی یا مصدقین تعلیم میں سے کچھ تصاویر لینے کے کیمپس 179 00:08:24,850 --> 00:08:29,450 غیر واضح طور پر قابل شناخت ہے لیکن لوگوں، پھر جگہوں پر، یا چیزوں کو، ہر سال میں 180 00:08:29,450 --> 00:08:34,520 کسی نہ کسی طرح اتفاقی طور پر خارج کر دیں کا انتظام یا ڈیجیٹل میڈیا کارڈ خراب 181 00:08:34,520 --> 00:08:35,720 کہ ہماری کیمرے کے اندر ہے. 182 00:08:35,720 --> 00:08:36,860 لیکن کوئی بڑی بات نہیں. 183 00:08:36,860 --> 00:08:39,200 میں آگے بڑھو اور پلگ کر سکتے ہیں میرے کمپیوٹر میں ہے. 184 00:08:39,200 --> 00:08:43,010 میں ایسا ہے، تو اس کا ایک فارنسک تصویر بنا سکتے ہیں zeros کاپی کی طرف سے بولتے ہیں اور کرنے کے لئے 185 00:08:43,010 --> 00:08:46,830 کہ میموری کارڈ کے لوگ بند، چاہے اس کی ایک ایسڈی کارڈ یا کامپیکٹ فلیش کارڈ یا 186 00:08:46,830 --> 00:08:48,100 آپ کے ساتھ جو کچھ بھی واقف ہو. 187 00:08:48,100 --> 00:08:49,300 اور پھر ہم اس سے باہر کے حوالے کر سکتے ہیں. 188 00:08:49,300 --> 00:08:53,190 >> اور اس طرح دوسرے کے درمیان آنے والے چیلنج، آپ کے لئے چیزیں لکھنے کے لئے ہو جائے گا 189 00:08:53,190 --> 00:08:58,630 کے پورے گچرچھی ٹھیک ہو سی کوڈ میرے لئے JPEGs اور ظاہر کیا جائے گا 190 00:08:58,630 --> 00:09:00,190 ان لوگوں، مقامات، یا چیزیں. 191 00:09:00,190 --> 00:09:03,340 اور ہم بھی اس مسئلہ میں، میں بات کروں گا سیٹ اور دنوں میں کے بارے میں، میں آنے کے لئے 192 00:09:03,340 --> 00:09:04,440 زیادہ عام طور پر گرافکس. 193 00:09:04,440 --> 00:09:06,140 ہم، ایک کورس ان کا استعمال کیا ہے باہر کو توڑنے کے لئے. 194 00:09:06,140 --> 00:09:09,080 حاصل کی جاچکی کے لئے لیکن آپ ایسا کر لیا ہے ان اعلی سطحی تصور وہاں موجود ہے 195 00:09:09,080 --> 00:09:10,680 rectangles اور ovals کی. 196 00:09:10,680 --> 00:09:12,450 لیکن ہڈ کے نیچے پکسلز موجود ہیں. 197 00:09:12,450 --> 00:09:14,370 اور آپ کو شروع کرنے کے لئے تھا ان لوگوں کے بارے میں سوچ. 198 00:09:14,370 --> 00:09:18,800 یا آپ P-سیٹ 4 سوچنا پڑے گا کے لئے اپنے اینٹوں کے درمیان فرق کے بارے میں، کہ کس طرح 199 00:09:18,800 --> 00:09:21,990 فوری طور پر آپ کو گیند بھر میں آگے بڑھ رہا ہے کر رہے ہیں کے لئے سکرین کے باہر توڑ. 200 00:09:21,990 --> 00:09:24,830 اس لئے کے اس اصول کی ہے کہ آپ کی سکرین پر بندیاں 201 00:09:24,830 --> 00:09:26,290 پہلے سے ہی کھیل میں آتے ہیں. 202 00:09:26,290 --> 00:09:29,430 >> اب تم دیکھ کیا، اگرچہ، کیا ہے اگر آپ ایک کمپیوٹر سکرین پر ملتی ہے. 203 00:09:29,430 --> 00:09:33,680 کیا تم نے کبھی کچھ اچھا ہے یا دیکھا ہے تو برا ٹی وی، مشکلات وہ بہت زیادہ ہیں 204 00:09:33,680 --> 00:09:36,280 technophobes طرح سامعین کا علاج جو واقعی نہیں کرتے 205 00:09:36,280 --> 00:09:37,630 بہت کچھ کمپیوٹنگ کے بارے میں جاننا. 206 00:09:37,630 --> 00:09:40,840 اور اس طرح یہ کام پولیس کے لئے بہت آسان ہے کہنے کے لئے جاسوسی، آپ کر سکتے ہیں 207 00:09:40,840 --> 00:09:41,710 میرے لئے اس کو صاف؟ 208 00:09:41,710 --> 00:09:42,710 یا دائیں، کو بہتر بنانے کے؟ 209 00:09:42,710 --> 00:09:45,550 بڑھانے میں Buzz لفظ کی طرح ہے سب سے زیادہ کسی بھی جرم سے متعلق شو. 210 00:09:45,550 --> 00:09:49,240 آپ کو ایک بہت لے اور اگر حقیقت ہے کر ایک مشتبہ شخص کی تصویر blurry 211 00:09:49,240 --> 00:09:51,620 کچھ برا، کیا تم نہیں کر سکتے ہیں صرف اس کو بہتر بنانے کے. 212 00:09:51,620 --> 00:09:53,080 آپ infinitely میں زوم نہیں ہو سکتا. 213 00:09:53,080 --> 00:09:56,350 اگر آپ کسی کی چمک میں نہیں دیکھ سکتا اس کا ارتکاب کیا جو آنکھ 214 00:09:56,350 --> 00:09:59,860 کے باوجود خاص طور پر جرم، ٹی وی پر اس کی کوریج. 215 00:09:59,860 --> 00:10:04,110 >> اور اس طرح اس کی حوصلہ افزائی کرتے ہیں کے ساتھ اس آئندہ ہونے والے مسئلہ میں ایک جھلک کے ساتھ قائم 216 00:10:04,110 --> 00:10:05,765 کچھ پتہ چلتا ہے جس کے ساتھ آپ واقف ہو سکتا ہے. 217 00:10:05,765 --> 00:10:06,500 >> [ویڈیو پلے بیک] 218 00:10:06,500 --> 00:10:07,835 >> -ٹھیک ہے. 219 00:10:07,835 --> 00:10:09,956 اب، تم میں ایک اچھی طرح سے دیکھ لیں. 220 00:10:09,956 --> 00:10:17,060 221 00:10:17,060 --> 00:10:17,766 >> اسے پکڑو. 222 00:10:17,766 --> 00:10:18,658 کہ واپس چلائیں. 223 00:10:18,658 --> 00:10:19,550 >> ایک منٹ انتظار کریں. 224 00:10:19,550 --> 00:10:21,580 دائیں دیکھیں. 225 00:10:21,580 --> 00:10:21,800 >> -آمدید. 226 00:10:21,800 --> 00:10:22,690 کہ منجمد. 227 00:10:22,690 --> 00:10:23,692 >> اسکرین مکمل. 228 00:10:23,692 --> 00:10:23,846 >> -ٹھیک ہے. 229 00:10:23,846 --> 00:10:24,154 کہ منجمد. 230 00:10:24,154 --> 00:10:25,140 >> ہاں، اس پر اپ کو سخت کرے گا؟ 231 00:10:25,140 --> 00:10:27,090 >> اس لڑکے پر میں ویکٹر واپس وہیل کی طرف سے. 232 00:10:27,090 --> 00:10:29,730 >> اس موقع پر یہیں پر میں زوم. 233 00:10:29,730 --> 00:10:33,700 >> کے ساتھ حق کا سامان، imaged وسیع اور تیز کیا جا سکتا ہے. 234 00:10:33,700 --> 00:10:34,490 >> کیا ہے؟ 235 00:10:34,490 --> 00:10:35,870 >> یہ اضافہ پروگرام ہے. 236 00:10:35,870 --> 00:10:36,793 >> -سکتا ہے آپ کو کسی بھی اپ کہ واضح؟ 237 00:10:36,793 --> 00:10:38,560 >> میں نہیں جانتے. 238 00:10:38,560 --> 00:10:39,090 اس میں اضافہ کرتے ہیں. 239 00:10:39,090 --> 00:10:41,690 >> سیکشن A-6-بہتر بنائیں. 240 00:10:41,690 --> 00:10:43,510 >> میں تفصیل سے بڑھا اور - 241 00:10:43,510 --> 00:10:44,456 >> میں اضافہ کرنے کے لئے کافی ہے. 242 00:10:44,456 --> 00:10:45,402 میری سکرین پر اس کی رہائی. 243 00:10:45,402 --> 00:10:47,300 >> اس کی آنکھوں میں عکاسی-بہتر بنائیں. 244 00:10:47,300 --> 00:10:49,330 >> کی اس کے ذریعے چلانے-چلو ویڈیو اضافہ. 245 00:10:49,330 --> 00:10:50,340 >> -ایڈگر، آپ اس میں اضافہ کر سکتے ہیں؟ 246 00:10:50,340 --> 00:10:52,320 >> پر رکو. 247 00:10:52,320 --> 00:10:54,290 >> -I've اس کی عکاسی پر کام کر رہا. 248 00:10:54,290 --> 00:10:55,560 >> -کسی کی عکاسی. 249 00:10:55,560 --> 00:10:56,440 >> -عکاسی. 250 00:10:56,440 --> 00:10:57,940 >> عکاس-ہے آدمی کے چہرے کا. 251 00:10:57,940 --> 00:10:58,860 >> -عکاسی. 252 00:10:58,860 --> 00:10:59,710 >> -آمدید عکاس ہے. 253 00:10:59,710 --> 00:11:00,900 >> آئینے پر میں زوم. 254 00:11:00,900 --> 00:11:03,500 >> -آپ کو ایک عکس دیکھ سکتے ہیں. 255 00:11:03,500 --> 00:11:04,700 >> -سکتے ہیں اگر آپ کو یہاں سے تصویر کو بہتر بنانے کے؟ 256 00:11:04,700 --> 00:11:05,700 >> -سکتا ہوں تم یہیں اس میں اضافہ؟ 257 00:11:05,700 --> 00:11:06,500 >> -سکتا ہے تم اس میں اضافہ؟ 258 00:11:06,500 --> 00:11:07,380 >> -سکتا ہے تم اس میں اضافہ؟ 259 00:11:07,380 --> 00:11:08,190 >> -سکتے ہیں ہم نے اس میں اضافہ؟ 260 00:11:08,190 --> 00:11:08,940 >> -سکتا ہے تم اس میں اضافہ؟ 261 00:11:08,940 --> 00:11:10,280 >> ایک دوسرے پر ذرا رکو، میں بڑھانے ہوں گے. 262 00:11:10,280 --> 00:11:11,570 >> دروازے پر میں زوم. 263 00:11:11,570 --> 00:11:12,180 >> -X10. 264 00:11:12,180 --> 00:11:13,052 >> -زوم. 265 00:11:13,052 --> 00:11:13,197 >> [ہنسی] 266 00:11:13,197 --> 00:11:14,360 >> رکنیت-منتقل کریں 267 00:11:14,360 --> 00:11:15,100 >> کو روکنے کے، انتظار کریں. 268 00:11:15,100 --> 00:11:15,740 >> سٹاپ. 269 00:11:15,740 --> 00:11:16,290 >> اسے روک دیں. 270 00:11:16,290 --> 00:11:19,390 >> کے ارد گرد ایک 75 ڈگری-گھمائیں عمودی براہ مہربانی. 271 00:11:19,390 --> 00:11:19,886 >> [ہنسی] 272 00:11:19,886 --> 00:11:24,350 >> حصہ واپس سٹاپ، اور دروازے کے بارے میں ایک بار پھر. 273 00:11:24,350 --> 00:11:26,330 >> ایک تصویر enhancer-ملا کہ بٹ نقشہ کر سکتے ہیں؟ 274 00:11:26,330 --> 00:11:28,990 >> -شاید ہم پردیپ سین استعمال کر سکتے ہیں طریقہ ونڈوز میں دیکھنے کے لئے. 275 00:11:28,990 --> 00:11:30,680 >> -یہ سافٹ ویئر آرٹ کی ریاست ہے. 276 00:11:30,680 --> 00:11:31,676 >> -آئکن قیمت بند ہے. 277 00:11:31,676 --> 00:11:34,166 >> کے ساتھ صحیح مجموعہ یلگوردمز کی. 278 00:11:34,166 --> 00:11:38,399 >> -وہ الیومینیشن یلگوردمز لیا ہے اگلے درجے اور میں ان کا استعمال کر سکتے ہیں 279 00:11:38,399 --> 00:11:38,648 اس تصویر کو بہتر بنانے کے. 280 00:11:38,648 --> 00:11:42,050 >> پر لاک کریں اور Z محور کو وسعت. 281 00:11:42,050 --> 00:11:42,760 >> -بہتر بنائیں. 282 00:11:42,760 --> 00:11:43,060 >> -بہتر بنائیں. 283 00:11:43,060 --> 00:11:43,760 >> -بہتر بنائیں. 284 00:11:43,760 --> 00:11:45,010 >> -منجمد اور بہتر بنانے کے. 285 00:11:45,010 --> 00:11:47,470 286 00:11:47,470 --> 00:11:47,910 >> [END ویڈیو پلے بیک] 287 00:11:47,910 --> 00:11:51,470 >> ڈیوڈ جے MALAN: تو مسئلہ سیٹ کریں 5 وہاں سامنے کیا ہے. 288 00:11:51,470 --> 00:11:55,260 تو ہم جلد ہی ایک بہتر تفہیم مل جائے گا کب اور کیوں آپ کر سکتے ہیں کے 289 00:11:55,260 --> 00:11:57,300 اور ہمارے اس راہ میں میں اضافہ نہیں کر سکتے. 290 00:11:57,300 --> 00:12:00,090 لیکن اس سے پہلے کی ہماری توجہ کو واپس دو ہم کروں گا عمارت کے بلاکس میں سے کچھ کرنے کے لئے 291 00:12:00,090 --> 00:12:02,250 اس کہانی کو بتانے کے قابل ہو جائے کرنے کی ضرورت ہے. 292 00:12:02,250 --> 00:12:05,580 >> تو ہم اس تصویر پر مبذول کرائی کہ یاد پیر اور تھوڑا سا گزشتہ ہفتے. 293 00:12:05,580 --> 00:12:09,970 اور یہ چیزوں کی ترتیب کی وضاحت آپ کے کمپیوٹر کی میموری میں جب 294 00:12:09,970 --> 00:12:11,000 کچھ پروگرام چلا رہا. 295 00:12:11,000 --> 00:12:14,310 اوپر ٹیک طبقہ، یاد، مراد اصل zeros اور پیاروں پر 296 00:12:14,310 --> 00:12:16,000 کہ آپ کے پروگرام کو تحریر کریں. 297 00:12:16,000 --> 00:12:19,340 آمدید، کہ ذیل میں ہے، کچھ initialized یا غیر ابتدا شدہ اعداد و شمار، جو عام طور پر 298 00:12:19,340 --> 00:12:22,910 یا constants جیسی چیزوں سے مراد ڈور یا ہے کہ عالمی متغیر 299 00:12:22,910 --> 00:12:24,200 پیشگی اعلان کر دیا گیا. 300 00:12:24,200 --> 00:12:26,500 وہاں ڈھیر ہے، لیکن ہم آ جائیں گے واپس تھوڑا سا میں اس پر. 301 00:12:26,500 --> 00:12:27,410 >> اور پھر اسٹیک ہے. 302 00:12:27,410 --> 00:12:30,660 بہت سے ٹرے کی ایک اسٹیک کی طرح میموری ہو جاتا ہے جہاں کیفیٹیریا، یہ ہے 303 00:12:30,660 --> 00:12:33,610 پرتوں اور جب پرتوں آپ کو ایک پروگرام میں کیا کروں؟ 304 00:12:33,610 --> 00:12:36,380 305 00:12:36,380 --> 00:12:37,730 کے لئے اسٹیک استعمال کیا ہے؟ 306 00:12:37,730 --> 00:12:39,320 >> جی ہاں؟ 307 00:12:39,320 --> 00:12:40,000 >> تقریب کی کال کریں. 308 00:12:40,000 --> 00:12:42,890 اگر آپ کو ایک تقریب فون کسی بھی وقت، ہے اس کے لیے میموری کی sliver کو دی 309 00:12:42,890 --> 00:12:45,020 مقامی متغیر یا اس کے پیرامیٹرز. 310 00:12:45,020 --> 00:12:48,810 اور pictorially، ہم دیکھتے ہیں کہ ہر ایک کے ساتھ جب ایک مسلسل تقریب، سے ملاقات کی 311 00:12:48,810 --> 00:12:52,520 کالیں بی سی کالز کالوں ڈی، وہ اسٹیک پر پرتوں جاتے ہیں. 312 00:12:52,520 --> 00:12:55,630 اور ان سلائسین میں سے ہر ایک کے اندر اندر میموری بنیادی طور پر ایک منفرد گنجائش ہے 313 00:12:55,630 --> 00:12:58,590 اس تقریب کے لئے، جو ظاہر ہے، آپ کے حوالے کرنا چاہتے ہیں تو پریشانی ہے 314 00:12:58,590 --> 00:13:01,850 ایک تقریب سے دوسرے ایک ٹکڑا پر آپ یہ چاہتے ہیں کہ اعداد و شمار کے 315 00:13:01,850 --> 00:13:03,500 mutate یا تبدیل کرنے کے لئے. 316 00:13:03,500 --> 00:13:08,060 >> اس لئے کو چالو کرنے کے کرنے کے لئے ہمارے حل کیا تھا ایک اسٹیک کی طرف سے نمائندگی ایک تقریب 317 00:13:08,060 --> 00:13:11,390 اندر میموری تبدیل کرنے کے لئے تیار ایک اور اسٹیک فریم کے؟ 318 00:13:11,390 --> 00:13:14,590 کس طرح ایک دوسرے سے ان دو باتیں کرتے ہیں؟ 319 00:13:14,590 --> 00:13:18,510 تو اشارہ یا پتوں کی راہ کی طرف سے، جہاں میں جس میں، ایک بار پھر، صرف وضاحت 320 00:13:18,510 --> 00:13:22,280 ایک مخصوص کی یاد، کی طرف سے جس طرح سے کاٹنے تعداد میں، خاص طور پر 321 00:13:22,280 --> 00:13:23,830 قیمت پایا جا سکتا ہے. 322 00:13:23,830 --> 00:13:26,860 تو بھی ہم جاری آخری بار یاد ایک میں کہانی اور دیکھا 323 00:13:26,860 --> 00:13:28,280 کافی چھوٹی گاڑی کے پروگرام. 324 00:13:28,280 --> 00:13:32,900 اور اس پروگرام سے چند ایک کے لئے چھوٹی گاڑی ہے وجوہات کی بناء پر، لیکن سب سے زیادہ تشویش کی بات سے ایک ہے 325 00:13:32,900 --> 00:13:34,620 یہ کیا دیکھنے کے لیے ناکام ہو جاتا ہے کی وجہ سے؟ 326 00:13:34,620 --> 00:13:39,111 327 00:13:39,111 --> 00:13:40,450 >> جی ہاں، یہ ان پٹ کی جانچ پڑتال کرنے میں ناکام ہے. 328 00:13:40,450 --> 00:13:41,870 معذرت؟ 329 00:13:41,870 --> 00:13:43,880 >> یہ 12 حروف سے زیادہ ہے تو. 330 00:13:43,880 --> 00:13:47,260 بہت چالاکی، memcopy بلا جب، جس میں، نام سے پتہ چلتا ہے کے طور پر، صرف 331 00:13:47,260 --> 00:13:50,630 اپنی دوسری دلیل سے کاپیاں میموری اس کی پہلی دلیل میں. 332 00:13:50,630 --> 00:13:54,730 تیسری دلیل، بہت چالاکی سے، ہے تم نہیں اس بات کو یقینی بنانے کے لئے کی جانچ پڑتال 333 00:13:54,730 --> 00:13:59,400 ، اس معاملے میں، لمبائی سے زیادہ کی کاپی بار کے، حروف کی تعداد 334 00:13:59,400 --> 00:14:03,810 منزل میں، جس میں یہ ہے سرنی سی لیکن مسئلہ یہ ہے کہ کیا 335 00:14:03,810 --> 00:14:07,230 سی خود کافی بڑا نہیں ہے تو اس کو ہینڈل کرنے میں؟ 336 00:14:07,230 --> 00:14:09,900 آپ کی تعداد میں کاپی کرنے کے لئے جا رہے ہیں آپ کو دی گئی ہے کہ بائٹس. 337 00:14:09,900 --> 00:14:13,040 لیکن آپ نے واقعی اور کیا ہے آپ کے لئے کمرے ہے سے زیادہ رائج؟ 338 00:14:13,040 --> 00:14:16,770 >> ٹھیک ہے، اس پروگرام کے بہت بیوقوفی صرف آنکھ بند کر کے یہ جو کچھ بھی لے جانے کے لئے آمدنی 339 00:14:16,770 --> 00:14:20,650 دیا، ہیلو الٹا سلیش 0 ہے سٹرنگ مختصر ہے عظیم ہے تو 340 00:14:20,650 --> 00:14:22,040 کافی، پانچ حروف کی طرح. 341 00:14:22,040 --> 00:14:26,470 لیکن یہ اصل میں 12 حروف ہے یا اگر 1،200 حروف، ہم آخری بار دیکھا 342 00:14:26,470 --> 00:14:29,380 آپ کو صرف مکمل طور پر کرنے کے لئے جا رہے ہیں کہ میموری ادلیکھت کہ 343 00:14:29,380 --> 00:14:30,470 آپ کا تعلق نہیں ہے. 344 00:14:30,470 --> 00:14:34,390 اور سب سے بری مقدمہ، آپ ادلیکھت کہ اگر ہمیں کہا جاتا ہے کہ وہاں سرخ حصے 345 00:14:34,390 --> 00:14:35,380 ایڈریس واپس - 346 00:14:35,380 --> 00:14:38,370 یہ صرف جہاں کمپیوٹر خود کار طریقے سے، آپ کے لئے، پیچھے 347 00:14:38,370 --> 00:14:43,130 دور مناظر، tucks ایک 32 بٹ کی قیمت ہے کہ یہ کیا پتے پر یاد دلاتی ہے 348 00:14:43,130 --> 00:14:47,080 واپس جب FOO، یہ دوسری تقریب، عمل کیا جاتا ہے. 349 00:14:47,080 --> 00:14:49,320 یہ ایک طرح کی روٹی crumb ہے جو اسے واپس کرنے کے لئے. 350 00:14:49,320 --> 00:14:52,490 اگر آپ ممکنہ طور پر، کہ ادلیکھت تو تم برے آدمی ہو، کر سکتے ہیں کر سکتے تھے 351 00:14:52,490 --> 00:14:54,750 ممکنہ طور پر قبضہ کسی کے کمپیوٹر. 352 00:14:54,750 --> 00:14:58,020 اور تم سب سے زیادہ یقینی طور پر کروں گا زیادہ تر مقدمات میں کریش ہوا. 353 00:14:58,020 --> 00:15:01,690 >> اب یہ مسئلہ صرف جارہی گیا تھا ہم میموری کے بارے میں بات کرنا شروع کر دیا کے طور پر 354 00:15:01,690 --> 00:15:03,010 زیادہ عام طور پر انتظام. 355 00:15:03,010 --> 00:15:07,150 اور malloc، میموری آونٹن کے لئے، ہے ہم مختص کرنے کے لئے استعمال کر سکتے ہیں کی تقریب 356 00:15:07,150 --> 00:15:11,260 ہم پہلے سے نہیں جانتے جب میموری ہم نے کچھ ضرورت ہو سکتی ہے. 357 00:15:11,260 --> 00:15:13,960 لہذا مثال کے طور پر، میں واپس جانا تو یہاں آلات کے لئے. 358 00:15:13,960 --> 00:15:21,010 اور میں نے آخری بار hello2.c سے کھول دیکھا جو یہاں اس پروگرام، یاد 359 00:15:21,010 --> 00:15:23,500 اس طرح کچھ، صرف تین لائنوں - 360 00:15:23,500 --> 00:15:27,940 آپ کا نام، تو سٹرنگ کا نام، ریاست بائیں طرف، getstring برابر ہے. 361 00:15:27,940 --> 00:15:29,690 اور پھر ہم نے اسے باہر پرنٹ صارف کا نام. 362 00:15:29,690 --> 00:15:31,170 >> تو یہ ایک سپر سادہ پروگرام تھا. 363 00:15:31,170 --> 00:15:34,870 واضح کرنے کے لئے، مجھے آگے جانے دو اور ہیلو-2 بناتے ہیں. 364 00:15:34,870 --> 00:15:36,680 میں ڈاٹ سلیش خوش-2 کرنے کے لئے جا رہا ہوں. 365 00:15:36,680 --> 00:15:37,750 اپنا نام بتاو - 366 00:15:37,750 --> 00:15:38,140 ڈیوڈ. 367 00:15:38,140 --> 00:15:38,840 درج کریں. 368 00:15:38,840 --> 00:15:39,540 ڈیوڈ خوش. 369 00:15:39,540 --> 00:15:41,060 یہ ٹھیک ہے کام کرنے کے لئے لگ رہا ہے. 370 00:15:41,060 --> 00:15:43,140 لیکن کیا واقعی میں ہو رہا ہے یہاں ہڈ کے نیچے؟ 371 00:15:43,140 --> 00:15:44,670 سب سے پہلے چلو کچھ تہوں واپس چھیل. 372 00:15:44,670 --> 00:15:48,380 سلک ہم نے صرف ایک متبادل ہے اس کے لئے احساس ہوا؟ 373 00:15:48,380 --> 00:15:49,110 چار ستارہ. 374 00:15:49,110 --> 00:15:52,740 تو اس کا ایک چھوٹا سا زیادہ arcane کرنے دو لیکن تکنیکی طور پر درست یہ ہے کہ 375 00:15:52,740 --> 00:15:55,570 مطلب یہ ہے کہ جس کی وجہ سے چار ستارہ ہے، نام، جی ہاں، ایک متغیر ہے. 376 00:15:55,570 --> 00:15:59,920 لیکن کس نام اسٹورز کی ایڈریس ہے ایک چھوٹا سا عجیب لگ رہا ہے جس کی وجہ سے چار، 377 00:15:59,920 --> 00:16:01,050 میں ایک تار واپس ہو رہی ہے کیونکہ. 378 00:16:01,050 --> 00:16:03,580 میں واپس ایک سے زیادہ ہو رہی ہے حروف ایک چار نہیں. 379 00:16:03,580 --> 00:16:07,400 >> لیکن کورس کے، آپ صرف پہلی ضرورت یاد کرنے کی چار کا پتہ جہاں 380 00:16:07,400 --> 00:16:08,870 کیونکہ اسی وجہ سے پوری سٹرنگ ہے؟ 381 00:16:08,870 --> 00:16:12,700 آپ کو کیسے پتہ ہے جہاں کے اختتام سٹرنگ آغاز علم ہے؟ 382 00:16:12,700 --> 00:16:13,630 الٹا سلیش صفر. 383 00:16:13,630 --> 00:16:17,260 تو ان دونوں سراگ کے ساتھ آپ کو پتہ شروع اور ختم ہونے سے پہلے 384 00:16:17,260 --> 00:16:20,280 کسی بھی سٹرنگ وہ لوگ اتنے لمبے وقت تک کے طور پر، کر رہے ہیں مناسب طریقے سے کہ انگیز null سے قائم 385 00:16:20,280 --> 00:16:22,110 ٹرمنیٹر، کہ الٹا سلیش صفر. 386 00:16:22,110 --> 00:16:24,520 >> لیکن یہ getstring بلا رہا ہے. 387 00:16:24,520 --> 00:16:28,020 اور یہ کہ getstring باہر کر دیتا ہے یہ سب وقت قسم کی تھی 388 00:16:28,020 --> 00:16:28,820 ہمارے لئے دھوکہ دے. 389 00:16:28,820 --> 00:16:32,460 یہ اس بات کا یقین کرنے کے لئے، اس کی مزدوری کر رہا ہے صارف کی طرف سے ایک تار ہو رہی ہے. 390 00:16:32,460 --> 00:16:34,580 لیکن اس کی یاداشت کہاں ہے سے آ گیا؟ 391 00:16:34,580 --> 00:16:38,440 ہم یہاں تصویر پر واپس جائیں اور اگر صرف ایک طرف سے تعریف کا اطلاق 392 00:16:38,440 --> 00:16:42,610 لمحے پہلے، کہ اسٹیک ہے کہاں افعال کو کہا جاتا ہے جب میموری، جاتا ہے 393 00:16:42,610 --> 00:16:45,370 اس منطق کی طرف سے، آپ کو getstring فون جب اور پھر میں ٹائپ کریں 394 00:16:45,370 --> 00:16:50,900 D-A-V-I-D، درج ہے کہاں D-A-V-میں نے ڈی الٹا سلیش صفر کی بنیاد پر ذخیرہ 395 00:16:50,900 --> 00:16:53,480 کہانی ہم نے اب تک ہمیں بتایا ہے؟ 396 00:16:53,480 --> 00:16:55,190 >> اس میں لگ رہے ہو گے اسٹیک، ہے نا؟ 397 00:16:55,190 --> 00:16:58,120 آپ سٹرنگ حاصل کال جب آپ کو ایک حاصل اسٹیک پر میموری کا تھوڑا سا ٹکڑا. 398 00:16:58,120 --> 00:17:01,630 تو یہ ہے کہ D-A-V-میں ڈی کی وجہ سے کھڑا ہے الٹا سلیش صفر محفوظ کیا جاتا ہے 399 00:17:01,630 --> 00:17:02,770 وہاں اسٹیک میں. 400 00:17:02,770 --> 00:17:07,680 لیکن واپسی getstring، ایک منٹ رکو کہ سٹرنگ، تو بات کرنے کے لیے، جس کا مطلب ہے 401 00:17:07,680 --> 00:17:11,700 یہ کیفیٹیریا سے ٹرے ہے اسٹیک اتار لیا جاتا ہے. 402 00:17:11,700 --> 00:17:14,560 اور ہم اس کے طور پر جلد ہی کے طور پر آخری بار کا کہنا ہے کہ تقریب کی واپسی، اور آپ کو لے کہ 403 00:17:14,560 --> 00:17:20,109 اسٹیک بند ٹرے،، تو بات کرنے، کیا آپ کی باقیات کے بارے میں فرض کر سکتے ہیں 404 00:17:20,109 --> 00:17:21,819 کہ میموری؟ 405 00:17:21,819 --> 00:17:25,160 میں قسم کے سوال نمبروں کے طور پر ان کی redrew وہ مؤثر طریقے سے بننے کی وجہ سے 406 00:17:25,160 --> 00:17:26,250 نامعلوم اقدار. 407 00:17:26,250 --> 00:17:29,500 جب کچھ وہ دوبارہ استعمال کیا جا سکتا ہے اگلے کی تقریب میں کہا جاتا ہے. 408 00:17:29,500 --> 00:17:31,870 >> دوسرے الفاظ میں، ہم ہو تو ذخیرہ کیا جائے گا - 409 00:17:31,870 --> 00:17:34,350 میں نے ایک فوری تصویر اپنی طرف متوجہ کریں گے یہاں اسٹیک کی. 410 00:17:34,350 --> 00:17:38,690 ہم نیچے ڈرائنگ کرنے کے لئے ہو تو میری برقرار طبقہ کی، اور ہم کہیں گے 411 00:17:38,690 --> 00:17:42,230 یہ میموری کی جگہ ہے بنیادی اور شاید ARG سی اور کی طرف سے قبضہ کر لیا 412 00:17:42,230 --> 00:17:46,790 ARG V اور پروگرام میں کچھ اور، getstring کہا جاتا ہے جب، 413 00:17:46,790 --> 00:17:51,120 شاید getstring ہو جاتا ہے یہاں میموری کا ایک حصہ. 414 00:17:51,120 --> 00:17:53,940 اور پھر D-A-V-D-میں کسی نہ کسی طرح اس تقریب میں ختم ہوتا ہے. 415 00:17:53,940 --> 00:17:55,320 اور میں oversimplify کرنے جا رہا ہوں. 416 00:17:55,320 --> 00:18:00,050 لیکن کی فرض کرتے ہیں اس کے D-A-V-میں ڈی ہے کہ الٹا سلیش صفر. 417 00:18:00,050 --> 00:18:03,500 تو یہ بہت سے بائٹس میں استعمال کیا جاتا ہے getstring کے لئے فریم. 418 00:18:03,500 --> 00:18:08,270 >> لیکن جیسے ہی getstring کی واپسی کے طور پر، ہم آخری بار نے کہا کہ میں اس کی یاد 419 00:18:08,270 --> 00:18:11,340 یہاں تمام ہو جاتا ہے - woops! - 420 00:18:11,340 --> 00:18:14,270 تمام مؤثر طریقے سے ختم ہو جاتا ہے. 421 00:18:14,270 --> 00:18:17,220 اور ہم سوال کے طور پر اب اس کے بارے میں سوچ کر سکتے ہیں نمبروں کون جانتا ہے کیونکہ 422 00:18:17,220 --> 00:18:18,720 کیا میموری بننے جا رہی ہے. 423 00:18:18,720 --> 00:18:22,130 بے شک، میں بہت کثرت سے کام کرتا ہے فون getstring کے مقابلے میں دوسرے. 424 00:18:22,130 --> 00:18:24,750 اور جیسے ہی مجھے کوئی اور فون کے طور پر getstring سے زائد تقریب، ہو سکتا ہے نہیں میں 425 00:18:24,750 --> 00:18:28,860 ہم نے ابھی دیکھا اس مخصوص پروگرام لیکن کچھ دوسرے، ضرور کچھ دوسرے میں 426 00:18:28,860 --> 00:18:34,180 تقریب میں دی جا رہی ختم ہو سکتا ہے اسٹیک میں اگلے جگہ. 427 00:18:34,180 --> 00:18:39,410 >> تو یہ ہے کہ getstring اسٹورز نہیں ہو سکتا اسٹیک پر D-A-V-میں ڈی میں کیونکہ 428 00:18:39,410 --> 00:18:41,040 فوری طور پر اس تک رسائی سے محروم ہوجاتے ہیں. 429 00:18:41,040 --> 00:18:43,720 لیکن ہم جانتے ہیں کہ وہ getstring صرف وہی واپس؟ 430 00:18:43,720 --> 00:18:47,220 یہ واپس لوٹنے نہیں ہے مجھے چھ حروف. 431 00:18:47,220 --> 00:18:51,090 یہ حقیقی معنوں میں کیا آ رہا ہے ہم نے آخری بار یہ نتیجہ اخذ؟ 432 00:18:51,090 --> 00:18:52,480 سب سے پہلے ایڈریس. 433 00:18:52,480 --> 00:18:56,650 تو کسی نہ کسی طرح، آپ getstring کہا جاتا ہے جب، اس کے لئے میموری کا ایک حصہ مختص ہے 434 00:18:56,650 --> 00:18:59,620 سٹرنگ کہ صارفین کی قسم اور اس کے پھر واپس لوٹنے ایڈریس. 435 00:18:59,620 --> 00:19:02,930 اور یہ آپ کے لئے جب چاہتے ہیں باہر کر دیتا ہے اس میں میموری مختص کام 436 00:19:02,930 --> 00:19:08,390 راستہ اور کہا جاتا ہے اس شخص پر واپسی کہ تقریب، کا پتہ 437 00:19:08,390 --> 00:19:11,870 میموری کے اس حصہ، آپ بالکل میں اسٹیک میں ڈال نہیں کر سکتے ہیں 438 00:19:11,870 --> 00:19:14,750 نیچے، کیونکہ فعل کے یہ صرف ہے بہت تمہارا نہیں بن جا 439 00:19:14,750 --> 00:19:17,800 فوری طور پر، لہذا آپ کو شاید اندازہ لگا سکتا ہوں جہاں ہم شاید ٹاس کرنے کے لئے جا رہے ہیں 440 00:19:17,800 --> 00:19:20,130 اس کی بجائے، نام نہاد ڈھیر. 441 00:19:20,130 --> 00:19:25,290 >> تو آپ کی میموری کی کے سب سے نیچے کے درمیان ترتیب اور آپ کی میموری کی کے سب سے اوپر 442 00:19:25,290 --> 00:19:26,820 ترتیب طبقات کے پورے گچرچھی ہیں. 443 00:19:26,820 --> 00:19:29,270 ایک اسٹیک ہے، اور حق اس کے اوپر ڈھیر ہے. 444 00:19:29,270 --> 00:19:33,680 اور ڈھیر صرف ایک مختلف حصہ ہے کام کرتا ہے کے لئے استعمال نہیں ہے کہ میموری 445 00:19:33,680 --> 00:19:34,770 کہا جاتا ہے کہ وہ کر رہے ہیں جب. 446 00:19:34,770 --> 00:19:38,100 یہ جب طویل مدت کے میموری کے لئے استعمال کیا جاتا ہے آپ کو ایک تقریب کے کچھ پر قبضہ کرنا چاہتے ہیں 447 00:19:38,100 --> 00:19:42,700 میموری اور اس پر پھانسی دینے کے قابل ہو جائے اس پر کنٹرول کھونے کے بغیر. 448 00:19:42,700 --> 00:19:45,550 >> اب آپ شاید فوری طور پر کر سکتے تھے یہ نہیں ہے کہ اس کو دیکھ کر 449 00:19:45,550 --> 00:19:48,060 ایک کامل ڈیزائن ضروری. 450 00:19:48,060 --> 00:19:51,350 آپ کے پروگرام پر میموری مختص طور پر اسٹیک، یا اگر آپ فون کے طور پر زیادہ سے 451 00:19:51,350 --> 00:19:55,540 زیادہ کام کرتا ہے، یا آپ کے طور پر مختص کے طور پر بند malloc کے ساتھ ڈھیر پر میموری 452 00:19:55,540 --> 00:20:00,690 getstring کر، واضح طور پر کیا جاتا ہے ناگزیر مسئلہ لگتا ہے؟ 453 00:20:00,690 --> 00:20:00,860 >> ٹھیک ہے. 454 00:20:00,860 --> 00:20:03,150 حقیقت یہ ہے کہ ان کی طرح تیر ایک دوسرے کی طرف اشارہ کر رہے ہیں 455 00:20:03,150 --> 00:20:04,380 اچھی نہیں ہے. 456 00:20:04,380 --> 00:20:08,630 اور یقینا، ہم بہت جلد کریش کر سکتے ہیں طریقوں میں سے کسی بھی تعداد میں ایک پروگرام. 457 00:20:08,630 --> 00:20:12,050 اصل میں، مجھے لگتا ہے کہ ہم کر سکتے ہیں یہ اتفاقی طور پر ایک بار کیا. 458 00:20:12,050 --> 00:20:14,020 یا نہیں تو یہ کرتے ہیں جان بوجھ کر اب. 459 00:20:14,020 --> 00:20:21,330 مجھ سے آگے بڑھو اور فوری طور پر سپر لکھ دو ایک پروگرام dontdothis.c ملاقات کی. 460 00:20:21,330 --> 00:20:26,730 اور اب میں یہاں جاؤ اور گے تیز stdio.h شامل ہے. 461 00:20:26,730 --> 00:20:32,620 تقریب FOO لیتا اعلان چلو کوئی دلائل، جس میں ہے 462 00:20:32,620 --> 00:20:34,040 صفر کی طرف سے اچھی طرح سے کے طور پر ظاہر. 463 00:20:34,040 --> 00:20:37,830 >> اور FOO کرنے کے لئے جا رہا ہے صرف ایک ہی چیز ہے شاید نہیں ہے جس میں کال FOO، 464 00:20:37,830 --> 00:20:39,100 سب سے ہوشیار خیال ہے، لیکن تو ٹھیک ہے. 465 00:20:39,100 --> 00:20:40,490 ENT اہم صفر. 466 00:20:40,490 --> 00:20:45,270 اب سب سے اہم رہا ہے صرف ایک ہی چیز ایسا کرنے کے ساتھ ساتھ FOO فون ہے. 467 00:20:45,270 --> 00:20:51,050 اور صرف کک کے لئے، میں جا رہا ہوں یہاں سے آگے اور خوش "printf کا کہنا ہے کہ 468 00:20:51,050 --> 00:20:52,340 FOO. " 469 00:20:52,340 --> 00:20:52,890 >> ٹھیک ہے. 470 00:20:52,890 --> 00:21:00,160 میں نے کوئی غلطی نہیں کی اگر ایسا ہے تو dontdothis ڈاٹ سلیش بنائیں. 471 00:21:00,160 --> 00:21:01,960 اور دو کی ایک بڑی ونڈو میں یہ کروں - 472 00:21:01,960 --> 00:21:03,210 ڈاٹ سلیش، dontdothis. 473 00:21:03,210 --> 00:21:07,590 474 00:21:07,590 --> 00:21:08,840 چلو. 475 00:21:08,840 --> 00:21:10,940 476 00:21:10,940 --> 00:21:11,890 اوہ اہ. 477 00:21:11,890 --> 00:21:13,100 ظاہر ہے، اگر آپ یہ کر سکتے ہیں. 478 00:21:13,100 --> 00:21:15,190 ارے. 479 00:21:15,190 --> 00:21:16,190 ٹھیک ہے. 480 00:21:16,190 --> 00:21:16,580 انتظار کریں. 481 00:21:16,580 --> 00:21:17,370 کی طرف سے کھڑے ہو جاؤ. 482 00:21:17,370 --> 00:21:18,270 ہم نے کیا - 483 00:21:18,270 --> 00:21:20,110 ہم بنائیں کے ساتھ اس کا استعمال کیا تھا. 484 00:21:20,110 --> 00:21:22,050 >> [SIGHS] 485 00:21:22,050 --> 00:21:25,110 >> میں جانتا ہوں لیکن مجھے لگتا ہے کہ ہم صرف اس لئے کہ خارج کر دیا. 486 00:21:25,110 --> 00:21:28,410 اہ، جی ہاں. 487 00:21:28,410 --> 00:21:30,660 ارے. 488 00:21:30,660 --> 00:21:32,640 یہ روب حل. 489 00:21:32,640 --> 00:21:34,678 کیا خیال ہے؟ 490 00:21:34,678 --> 00:21:35,928 یہ بہت آسان ہے. 491 00:21:35,928 --> 00:21:43,820 492 00:21:43,820 --> 00:21:47,360 جی ہاں، ہم اصلاح بند کر دیا گیا. 493 00:21:47,360 --> 00:21:48,970 ٹھیک ہے، الوداع کھڑے ہیں. 494 00:21:48,970 --> 00:21:49,950 اب میں بہتر محسوس. 495 00:21:49,950 --> 00:21:51,390 ٹھیک ہے. 496 00:21:51,390 --> 00:21:51,780 ٹھیک ہے. 497 00:21:51,780 --> 00:21:53,430 >> تو اس کی recompile دو - 498 00:21:53,430 --> 00:21:55,880 آپ dontdothis بنائیں. 499 00:21:55,880 --> 00:22:00,090 آپ کے لئے اس کا نام تبدیل کرنے کے لئے ہو سکتا ہے صرف ایک لمحے میں dothis.c. 500 00:22:00,090 --> 00:22:00,710 وہاں ہم چلے. 501 00:22:00,710 --> 00:22:01,240 آپ کا شکریہ. 502 00:22:01,240 --> 00:22:02,050 ٹھیک ہے. 503 00:22:02,050 --> 00:22:05,480 تو میں پرنٹ کیا گیا تھا حقیقت یہ ہے کہ کچھ باہر صرف اصل میں تھا 504 00:22:05,480 --> 00:22:08,150 عمل سست ہے جس کے ذریعے ہم اس نقطہ پہنچ چکے ہوتے. 505 00:22:08,150 --> 00:22:08,510 ٹھیک ہے. 506 00:22:08,510 --> 00:22:08,870 وفف! 507 00:22:08,870 --> 00:22:11,180 >> تو کیا اصل میں کیا چل رہا ہے؟ 508 00:22:11,180 --> 00:22:14,440 صرف ایک ایک طرف کے طور پر وہاں کی وجہ سے، ہے، ان پٹ کے معاملے میں کچھ بھی کرنے اور 509 00:22:14,440 --> 00:22:17,270 پیداوار سست ہو جاتا ہے کیونکہ آپ نے کرنے کے لئے حروف لکھنا ہے 510 00:22:17,270 --> 00:22:18,600 سکرین، یہ سکرال ہے. 511 00:22:18,600 --> 00:22:21,720 اتنی لمبی کہانی مختصر ہے، میں اصل میں تھا اتنے ادیر ہوا، ہم ہوگا 512 00:22:21,720 --> 00:22:23,260 اس کے ساتھ ساتھ اس مقصد کے نتیجہ دیکھا. 513 00:22:23,260 --> 00:22:26,220 میں پرنٹ اپس کا سفر شروع کیا، اب وہ ہم ابھی دیکھتے ہیں. 514 00:22:26,220 --> 00:22:28,410 تو کیوں ہو رہا ہے. 515 00:22:28,410 --> 00:22:31,300 ٹھیک ہے، کورس کی سادہ وضاحت،، کہ FOO شاید نہیں کرنا چاہئے ہے 516 00:22:31,300 --> 00:22:32,500 خود کو بلا جائے. 517 00:22:32,500 --> 00:22:34,470 >> اب عام الفاظ میں، یہ تکرار ہے. 518 00:22:34,470 --> 00:22:36,970 اور ہم نے ایک جوڑے ہفتوں سوچا پہلے پنراورتی اچھا ہے. 519 00:22:36,970 --> 00:22:40,330 تکرار کے اس جادو طریقہ ہے succinctly سپر خود اظہار. 520 00:22:40,330 --> 00:22:41,400 اور یہ صرف کام کرتا ہے. 521 00:22:41,400 --> 00:22:45,060 لیکن سب کی ایک اہم خصوصیت ہے ہم نے بات کی ہے پنراورتی پروگراموں 522 00:22:45,060 --> 00:22:48,260 کے بارے میں اور کی طرف دیکھا اور اس طرح اب تک جو وہ کیا تھا کہ تھا؟ 523 00:22:48,260 --> 00:22:52,610 کچھ مشکل کوڈت تھا جو ایک بنیاد کیس، کچھ حالات میں کہا ہے کہ اس صورت 524 00:22:52,610 --> 00:22:56,210 واضح طور پر ہے جو FOO، فون مت کرنا یہاں نہیں کیس. 525 00:22:56,210 --> 00:22:58,920 >> تو کیا واقعی میں ہو رہا ہے اس تصویر کے لحاظ سے؟ 526 00:22:58,920 --> 00:23:01,790 ٹھیک ہے، جب اہم FOO، اسے بلاتا ہے میموری کا ایک ٹکڑا ہو جاتا ہے. 527 00:23:01,790 --> 00:23:04,150 FOO FOO بلاتا ہے تو وہ ہو جاتا ہے میموری کا ایک ٹکڑا. 528 00:23:04,150 --> 00:23:06,430 FOO FOO بلاتا ہے تو، یہ ایک ٹکڑا ہو جاتا ہے. 529 00:23:06,430 --> 00:23:07,080 یہ ایک ٹکڑا ہو جاتا ہے. 530 00:23:07,080 --> 00:23:08,120 یہ ایک ٹکڑا ہو جاتا ہے. 531 00:23:08,120 --> 00:23:09,460 FOO آرہے ہیں کبھی نہیں ہے. 532 00:23:09,460 --> 00:23:12,160 ہم نے ان میں سے ایک صفائی کبھی نہیں رہے ہیں اسٹیک کی طرف سے فریم. 533 00:23:12,160 --> 00:23:15,930 تو ہم، ڈھیر کے ذریعے نہیں اڑا رہے ہیں کون اور کیا جانتا ہے، اور ذکر کرنا 534 00:23:15,930 --> 00:23:19,600 ہم اپنی حد کے overstepping رہے ہیں میموری کا طبقہ نام نہاد. 535 00:23:19,600 --> 00:23:21,790 انقطاع جھوٹے جانے میں خرابی. 536 00:23:21,790 --> 00:23:24,110 >> تو ہے حل واضح طور پر ایسا نہیں ہے. 537 00:23:24,110 --> 00:23:28,830 لیکن بڑے مطلب ہے کہ، جی ہاں، ہے بالکل کچھ کی حد ہے، 538 00:23:28,830 --> 00:23:32,470 یہ اچھی طرح کس طرح، کی وضاحت نہیں ہے یہاں تک کہ اگر میں آپ کو ایک فون کر سکتے ہیں بہت سے کام کرتا ہے 539 00:23:32,470 --> 00:23:34,970 پروگرام، کتنی بار ایک تقریب خود کال کر سکتے ہیں. 540 00:23:34,970 --> 00:23:38,430 ہم تکرار کی تبلیغ کیا تو اگرچہ یہ ممکنہ طور پر جادو بات یہ ہے کے طور پر ایک 541 00:23:38,430 --> 00:23:41,870 سگما کے لئے ہفتے پہلے جوڑے تقریب، اور جب ہم معلومات حاصل 542 00:23:41,870 --> 00:23:45,270 ڈھانچے اور CS50، آپ دوسرے کو دیکھ لیں گے اس کے لئے ایپلی کیشنز، یہ نہیں ہے 543 00:23:45,270 --> 00:23:46,500 ضروری نہیں کہ سب سے اچھی بات. 544 00:23:46,500 --> 00:23:50,070 ایک تقریب خود کو بلاتا ہے، کیونکہ اگر ایک بنیاد ہے، چاہے خود کو بلاتا ہے 545 00:23:50,070 --> 00:23:54,860 کیس، آپ اس کی بنیاد کیس نہ مارو، اگر 1،000 کالز یا 10،000 کالوں کے لئے، کی طرف سے 546 00:23:54,860 --> 00:23:58,800 آپ کو کمرے سے باہر چلانے کے لئے ہو سکتا ہے اس وقت آپ کی نام نہاد اسٹیک اور ہٹ پر 547 00:23:58,800 --> 00:24:00,400 میموری کی کچھ دیگر طبقات. 548 00:24:00,400 --> 00:24:03,950 تو یہ بھی ایک ڈیزائن تجارت بند ہے خوبصورتی کے درمیان اور کے درمیان 549 00:24:03,950 --> 00:24:06,920 آپ کی خاص طور پر کے نظام کو طاقت عمل. 550 00:24:06,920 --> 00:24:10,780 >> تو ایک اور منفی پہلو یا وہاں ہے ہم نے جو ایک اور پکڑ لیا 551 00:24:10,780 --> 00:24:11,720 اس طرح اب تک کرتے رہے. 552 00:24:11,720 --> 00:24:12,980 میں getstring کہا جاتا ہے جب - 553 00:24:12,980 --> 00:24:15,120 مجھے خوش-2 میں واپس چلتے ہیں. 554 00:24:15,120 --> 00:24:18,170 ، میں getstring بلا رہا ہوں یہ نوٹس جس میں ایک ایڈریس واپس آ رہا ہے. 555 00:24:18,170 --> 00:24:20,730 اور ہم آج کا دعوی ہے کہ ایڈریس ڈھیر کی طرف سے ہے. 556 00:24:20,730 --> 00:24:24,480 اور اب میں باہر پرنٹ کر رہا ہوں اس پتے پر سٹرنگ. 557 00:24:24,480 --> 00:24:27,000 لیکن ہم نے کہا جاتا ہے کبھی نہیں getstring کے برعکس. 558 00:24:27,000 --> 00:24:30,850 ہم جیسے ایک تقریب calll کرنا پڑا کبھی نہیں جہاں آپ کے ہاتھ واپس ungetstring، 559 00:24:30,850 --> 00:24:31,610 کہ میموری. 560 00:24:31,610 --> 00:24:33,250 لیکن واضح طور سے ہم شاید ہونا چاہیے تھا. 561 00:24:33,250 --> 00:24:37,390 کیونکہ ہم کمپیوٹر پوچھ رہے تو جیسے کسی کی یاد کے لئے، کی طرف سے جس طرح سے 562 00:24:37,390 --> 00:24:40,830 getstring لیکن یقینا اسے واپس کبھی نہیں دے وہ بھی کرنے کے لئے کی قیادت کرنے کے پابند ہیں. 563 00:24:40,830 --> 00:24:42,970 ہم میموری سے باہر چلانے کے جس کے تحت مسائل. 564 00:24:42,970 --> 00:24:46,140 >> اور حقیقت میں، ہم ان کے لئے دیکھ سکتے ہیں جن کے استعمال کے نئے آلے کے ساتھ مسائل 565 00:24:46,140 --> 00:24:47,640 ٹائپ کرنے کے لئے ایک چھوٹا سا خفیہ ہے. 566 00:24:47,640 --> 00:24:50,960 لیکن میرے آگے بڑھیں اور اسے اپ سپلیش دو صرف ایک لمحے میں سکرین پر. 567 00:24:50,960 --> 00:24:56,940 میں آگے بڑھو اور Valgrind کو چلانے کے لئے جا رہا ہوں جس کا سب سے پہلے کمانڈ پیرامیٹر کے ساتھ 568 00:24:56,940 --> 00:25:00,260 لائن دلیل کا نام ہے اس پروگرام خوش-2 کے. 569 00:25:00,260 --> 00:25:02,650 اور بدقسمتی یہ ہے پیداوار atrociously ہے 570 00:25:02,650 --> 00:25:04,290 کوئی اچھی وجہ کے لئے پیچیدہ. 571 00:25:04,290 --> 00:25:06,280 تو ہم سب اس گندگی دیکھ رہے ہیں. 572 00:25:06,280 --> 00:25:07,530 ڈیوڈ میرا نام ریاست ہے. 573 00:25:07,530 --> 00:25:09,760 تاکہ پروگرام ہے اصل میں چل رہا ہے. 574 00:25:09,760 --> 00:25:11,180 اور اب ہم اس پیداوار میں ملتا ہے. 575 00:25:11,180 --> 00:25:13,400 >> تو Valgrind اسی طرح کی ہے GDB کی روح. 576 00:25:13,400 --> 00:25:14,950 یہ SE فی ایک debugger نہیں ہے. 577 00:25:14,950 --> 00:25:16,270 لیکن یہ ایک میموری چیکر ہے. 578 00:25:16,270 --> 00:25:20,140 یہ آپ کے چلائے جائیں گے کہ ایک پروگرام ہے پروگرام اور آپ کو ایک سے پوچھا تو آپ کو بتا 579 00:25:20,140 --> 00:25:23,860 میموری کے لئے کمپیوٹر اور کبھی اس کے حوالے کر دیا واپس، اس طرح آپ کے پاس کیا اس کے معنی 580 00:25:23,860 --> 00:25:24,570 ایک میموری لیک. 581 00:25:24,570 --> 00:25:26,240 اور میموری لیک برا ہونے کے لئے ہوتے ہیں. 582 00:25:26,240 --> 00:25:29,120 اور تم کمپیوٹر کے صارفین کی ہیں ہے شاید یہ آپ کے ایک ہے، چاہے محسوس 583 00:25:29,120 --> 00:25:30,300 میک یا پی سی کے. 584 00:25:30,300 --> 00:25:33,730 کیا تم نے کبھی آپ کے کمپیوٹر کے لئے استعمال کیا ہے اور کئی میں rebooted نہیں جبکہ 585 00:25:33,730 --> 00:25:36,820 دنوں، یا اگر آپ صرف کی ایک بہت کچھ مل گیا ہے چلانے کے پروگراموں، اور چیز 586 00:25:36,820 --> 00:25:42,360 ایک پیسنے رک سست، یا کم از کم اس کی وجہ سے، استعمال کرنے کے لئے سپر پریشان کن ہے 587 00:25:42,360 --> 00:25:44,350 سب کچھ سپر سست ہو گیا. 588 00:25:44,350 --> 00:25:46,260 >> اب اس کی وجوہات کی کسی بھی تعداد ہو سکتی ہے. 589 00:25:46,260 --> 00:25:49,600 یہ ایک لامتناہی لوپ میں ایک مسئلے سے ہو سکتا ہے کسی کی کوڈ، یا، زیادہ صرف یہ 590 00:25:49,600 --> 00:25:53,250 آپ کو زیادہ استعمال کر رہے ہیں اس کا مطلب یہ کر سکتے ہیں اپنے سے زیادہ میموری، یا کرنے کی کوشش کر، 591 00:25:53,250 --> 00:25:54,920 کمپیوٹر کی اصل ہے. 592 00:25:54,920 --> 00:25:57,770 اور شاید کچھ پروگرام میں ایک بگ ہے میموری کے لئے پوچھتے رہتے ہیں. 593 00:25:57,770 --> 00:26:02,480 سال کے لئے براؤزر کے لئے بدنام زمانہ تھے یہ زیادہ سے زیادہ میموری کا مطالبہ 594 00:26:02,480 --> 00:26:03,870 لیکن اسے واپس حوالے کبھی نہیں. 595 00:26:03,870 --> 00:26:07,220 یقینا، آپ کو صرف ایک محدود ہے، تو میموری کی رقم، تم سے پوچھنا نہیں کر سکتے ہیں 596 00:26:07,220 --> 00:26:09,990 کے لئے infinitely کئی بار اس میموری میں سے کچھ. 597 00:26:09,990 --> 00:26:13,070 >> اور اس لئے تم، اگرچہ یہاں دیکھ کر کیا دوبارہ Valgrind کی پیداوار ہے 598 00:26:13,070 --> 00:26:17,490 میں اچٹتی نظر سے دیکھنا کرنے کے لئے بیکار میں پیچیدہ پہلی، یہ دلچسپ حصہ ہے. 599 00:26:17,490 --> 00:26:18,890 ڈھیر - 600 00:26:18,890 --> 00:26:20,060 باہر نکلیں استعمال میں. 601 00:26:20,060 --> 00:26:22,810 تو یہاں کتنی میموری تھا ہے میں ڈھیر میں استعمال میں 602 00:26:22,810 --> 00:26:24,300 وقت اپنے پروگرام سے باہر - 603 00:26:24,300 --> 00:26:27,280 ایک بلاک میں بظاہر چھ بائٹس. 604 00:26:27,280 --> 00:26:28,710 تو میں نے اپنے ہاتھ لہر جا رہا ہوں کیا میں ایک بلاک ہے. 605 00:26:28,710 --> 00:26:31,270 ایک سے زیادہ، یہ صرف ایک حصہ ہے کے بارے میں سوچو حصہ کے لئے تکنیکی لفظ. 606 00:26:31,270 --> 00:26:33,140 چھ بائٹس لیکن - 607 00:26:33,140 --> 00:26:36,870 کہ چھ رائج کیا ہیں استعمال میں اب بھی کر رہے تھے؟ 608 00:26:36,870 --> 00:26:37,390 >> بالکل ٹھیک. 609 00:26:37,390 --> 00:26:41,520 D-A-V-میں ڈی الٹا سلیش صفر، پانچ خط نام کے علاوہ ٹرمنیٹر شہوت انگیز null. 610 00:26:41,520 --> 00:26:46,350 لہذا اس پروگرام دیکھا Valgrind کہ میں کی طرف سے، بظاہر، چھ بائٹس کے لئے پوچھا 611 00:26:46,350 --> 00:26:48,950 getstring کی راہ، لیکن کبھی نہیں انہیں واپس دی. 612 00:26:48,950 --> 00:26:52,030 اور حقیقت میں، ایسا نہیں ہوگا میرا پروگرام تین نہیں ہے واضح تو 613 00:26:52,030 --> 00:26:53,590 لائنز، لیکن یہ 300 لائنز ہے. 614 00:26:53,590 --> 00:26:56,920 تو ہم اصل میں ایک اور حکم دے سکتے ہیں لائن دلیل کو Valgrind پر 615 00:26:56,920 --> 00:26:58,290 یہ زیادہ شبدبہل بناتے ہیں. 616 00:26:58,290 --> 00:26:59,760 یہ یاد رکھنا تھوڑا پریشان کن ہے. 617 00:26:59,760 --> 00:27:01,580 لیکن میں کرتے ہیں تو - 618 00:27:01,580 --> 00:27:01,930 چلو دیکھتے ہیں. 619 00:27:01,930 --> 00:27:03,540 لیک - 620 00:27:03,540 --> 00:27:05,030 یہ لیک کیا گیا تھا - 621 00:27:05,030 --> 00:27:07,580 مجھے بھی یاد نہیں ہے یہ ہاتھ کیا ہے. 622 00:27:07,580 --> 00:27:08,550 >> - لیک-چیک مکمل برابر ہے. 623 00:27:08,550 --> 00:27:10,180 جی ہاں، شکریہ. 624 00:27:10,180 --> 00:27:12,520 - لیک-چیک مکمل برابر ہے. 625 00:27:12,520 --> 00:27:13,800 درج کریں. 626 00:27:13,800 --> 00:27:14,940 اسی پروگرام چلا رہا ہے. 627 00:27:14,940 --> 00:27:16,180 پھر ڈیوڈ میں ٹائپ کریں. 628 00:27:16,180 --> 00:27:17,660 اب میں تھوڑا تفصیل سے دیکھتے ہیں. 629 00:27:17,660 --> 00:27:20,890 لیکن ڈھیر خلاصہ ذیل میں، جو چار ایک جیسی ہے - آہ، 630 00:27:20,890 --> 00:27:22,120 یہ اچھی قسم کا ہے. 631 00:27:22,120 --> 00:27:25,460 اب Valgrind اصل لگ رہا ہے اپنے کوڈ میں مشکل تھوڑا. 632 00:27:25,460 --> 00:27:29,580 اور یہ، بظاہر، جو کہہ رہا ہے لائن پر malloc - 633 00:27:29,580 --> 00:27:30,580 ہم باہر زوم. 634 00:27:30,580 --> 00:27:31,980 میں لائن - 635 00:27:31,980 --> 00:27:32,930 ہم نے یہ کیا ہے لائن نظر نہیں آتا. 636 00:27:32,930 --> 00:27:35,110 لیکن malloc پہلا مجرم ہے. 637 00:27:35,110 --> 00:27:38,630 malloc میں ایک بلاگ ہے. 638 00:27:38,630 --> 00:27:39,810 >> ٹھیک ہے؟ 639 00:27:39,810 --> 00:27:40,450 ٹھیک ہے، نہیں. 640 00:27:40,450 --> 00:27:40,940 ٹھیک ہے؟ 641 00:27:40,940 --> 00:27:42,520 میں getstring ملاقات کی. 642 00:27:42,520 --> 00:27:44,460 getstring بظاہر malloc کہلاتی ہے. 643 00:27:44,460 --> 00:27:47,800 تو کیا کوڈ کی لائن بظاہر ہے کرنے کے لئے غلطی 644 00:27:47,800 --> 00:27:49,050 یہ میموری مختص؟ 645 00:27:49,050 --> 00:27:51,560 646 00:27:51,560 --> 00:27:55,540 چلو جو بھی malloc نے لکھا ہے کہ فرض کافی وقت تک یہ ہے کہ ارد گرد کیا گیا ہے 647 00:27:55,540 --> 00:27:56,390 نہیں ان کی غلطی. 648 00:27:56,390 --> 00:27:57,520 تو یہ شاید میرا ہے. 649 00:27:57,520 --> 00:28:02,000 cs50.c میں getstring - ایک ہے تاکہ کمپیوٹر پر کہیں دائر - 650 00:28:02,000 --> 00:28:05,210 لائن میں 286 مجرم ہونا ہے. 651 00:28:05,210 --> 00:28:08,140 اب cs50 رہا ہے کہ فرض کرتے ہیں لہذا وقت کی مہذب رقم کے لئے کے ارد گرد 652 00:28:08,140 --> 00:28:09,720 ہم بھی معصوم ہیں. 653 00:28:09,720 --> 00:28:14,080 اور تو اس getstring میں شاید نہیں ہے بگ جھوٹ، بلکہ میں 654 00:28:14,080 --> 00:28:17,810 ہیلو-2.c لائن 18. 655 00:28:17,810 --> 00:28:20,670 >> تو کی پر ایک نظر ڈالیں دو اس لائن کو 18 کیا تھا. 656 00:28:20,670 --> 00:28:21,130 اوہ. 657 00:28:21,130 --> 00:28:27,130 کسی نہ کسی طرح اس لائن ضروری نہیں ہے چھوٹی گاڑی، فی SE، لیکن یہ وجہ ہے 658 00:28:27,130 --> 00:28:28,630 کہ میموری لیک کے پیچھے. 659 00:28:28,630 --> 00:28:32,140 تو سپر صرف، کیا intuitively گے یہاں حل ہو؟ 660 00:28:32,140 --> 00:28:34,710 ہم میموری کے لئے پوچھ رہے ہیں، تو کبھی نہیں تھے اسے واپس دے، اور یہ کہ ایک ہونا ہے 661 00:28:34,710 --> 00:28:37,940 مسئلہ کی وجہ سے وقت میرے کمپیوٹر سے زائد میموری سے باہر چلانے کے لئے ہو سکتا ہے، سست ہو سکتا ہے 662 00:28:37,940 --> 00:28:42,110 نیچے، بری چیزوں کو، اچھی طرح سے، ہو سکتا ہے سادہ بدیہی حل کیا ہے؟ 663 00:28:42,110 --> 00:28:43,140 بس اسے واپس دے. 664 00:28:43,140 --> 00:28:44,770 >> تمہیں یہ کس طرح میموری کو آزاد کروں؟ 665 00:28:44,770 --> 00:28:49,970 ٹھیک ہے، شکر ہے کہ یہ بہت آسان ہے صرف مفت نام کہنا. 666 00:28:49,970 --> 00:28:51,260 اور ہم نے اس سے پہلے کبھی نہیں کیا. 667 00:28:51,260 --> 00:28:55,890 لیکن اگر آپ بنیادی طور پر کے بارے میں سوچ کر سکتے ہیں malloc کے مخالف کے طور پر مفت. 668 00:28:55,890 --> 00:28:58,030 مفت کے برعکس ہے میموری مختص. 669 00:28:58,030 --> 00:28:59,540 تو اب مجھے اس recompile ہیں. 670 00:28:59,540 --> 00:29:02,050 ہیلو-2 بنائیں. 671 00:29:02,050 --> 00:29:04,620 مجھے اسے دوبارہ چلانے ہیں. ہیلو-2 داؤد. 672 00:29:04,620 --> 00:29:07,290 تو اس میں کام کرنے لگتا ہے بالکل اسی طرح. 673 00:29:07,290 --> 00:29:11,180 لیکن میں Valgrind پر واپس جائیں اور دوبارہ چلانے اگر میری نو پر اسی کمانڈ 674 00:29:11,180 --> 00:29:14,720 مرتب پروگرام، ٹائپنگ پہلے کی طرح میرا نام میں - 675 00:29:14,720 --> 00:29:15,370 اچھا. 676 00:29:15,370 --> 00:29:16,760 ڈھیر کا خلاصہ - 677 00:29:16,760 --> 00:29:17,740 - باہر نکلیں استعمال میں 678 00:29:17,740 --> 00:29:19,370 صفر بلاکس میں صفر بائٹس. 679 00:29:19,370 --> 00:29:21,840 اور یہ سپر اچھا، ہے ڈھیر بلاکس کو آزاد کیا گیا تھا. 680 00:29:21,840 --> 00:29:23,480 کوئی لیک ممکن ہیں. 681 00:29:23,480 --> 00:29:27,200 >> تو، نہیں مسئلہ مرتب کریں 4 کے ساتھ آ رہا لیکن مسئلہ یہ سیٹ 5، عدالتی ساتھ 682 00:29:27,200 --> 00:29:30,740 اور آگے ہے، یہ بھی ایک بن جائے گا آپ کی درست کی پیمائش 683 00:29:30,740 --> 00:29:33,630 تمہارے پاس ہے یا نہیں پروگرام یا میموری لیک نہیں ہے. 684 00:29:33,630 --> 00:29:36,900 لیکن شکر ہے کہ آپ کی وجہ سے نہ صرف کر سکتے ہیں ان intuitively، جس کے ذریعے 685 00:29:36,900 --> 00:29:40,430 چھوٹے پروگراموں کے لئے آسان، arguably، ہے لیکن بڑے پروگراموں کے لئے مشکل، 686 00:29:40,430 --> 00:29:43,860 ، ان لوگوں کو بڑے پروگراموں کے لئے، Valgrind آپ کی شناخت میں مدد کر سکتے ہیں 687 00:29:43,860 --> 00:29:45,360 خاص طور پر مسئلہ. 688 00:29:45,360 --> 00:29:47,500 >> لیکن ایک دوسرے مسئلہ ہے جو پیدا ہو سکتا ہے. 689 00:29:47,500 --> 00:29:51,245 ، ہے، مجھے یہاں اس فائل کو کھول دو ایک بار پھر، ایک کسی حد تک سادہ مثال کے طور پر. 690 00:29:51,245 --> 00:29:53,760 لیکن لشکر طیبہ کی کیا پر توجہ مرکوز اس پروگرام کرتا ہے. 691 00:29:53,760 --> 00:29:55,190 یہ memory.c کہا جاتا ہے. 692 00:29:55,190 --> 00:29:58,380 ہم نے اس کے بعد آج پوسٹ کروں گا آج کی ماخذ کوڈ کے زپ. 693 00:29:58,380 --> 00:30:01,610 اور میں ملاقات کی ایک تقریب ہے کہ نوٹس دلائل اور کوئی لیتا ہے کہ F 694 00:30:01,610 --> 00:30:02,800 کچھ بھی نہیں واپس. 695 00:30:02,800 --> 00:30:07,240 لائن 20 میں، میں بظاہر ایک اعلان رہا ہوں ایک INT اور اسے ایکس بلا پر پوائنٹر. 696 00:30:07,240 --> 00:30:09,570 میں نے بتائے ہوں واپسی ہے malloc کی قدر. 697 00:30:09,570 --> 00:30:14,590 اور صرف میں ہوں کتنے بائٹس، واضح رہنا میں شاید malloc سے واپس ہو رہی ہے 698 00:30:14,590 --> 00:30:17,080 اس صورت حال میں؟ 699 00:30:17,080 --> 00:30:18,040 >> شاید 40. 700 00:30:18,040 --> 00:30:18,840 تم کہاں سے ملتا ہے؟ 701 00:30:18,840 --> 00:30:22,410 ٹھیک ہے، اگر آپ کو ایک INT اکثر یہ ہے کہ یاد ہو 4 بائٹس، کم از کم اس میں ہے 702 00:30:22,410 --> 00:30:25,110 آلات، گنا 4 10 40 ظاہر ہے. 703 00:30:25,110 --> 00:30:28,920 تو malloc کا ایک ایڈریس واپس آ رہا ہے ایک میموری کا حصہ اور محفوظ ہے کہ 704 00:30:28,920 --> 00:30:30,800 X میں بالآخر خطاب. 705 00:30:30,800 --> 00:30:32,570 لہذا واضح کیا اس وقت کیا ہو رہا ہے؟ 706 00:30:32,570 --> 00:30:34,990 ٹھیک ہے، مجھے واپس سوئچ کرتے ہیں یہاں ہماری تصویر. 707 00:30:34,990 --> 00:30:38,150 مجھے صرف میری کے سب سے نیچے اپنی طرف متوجہ نہیں کرتے ہیں کے کمپیوٹر کی میموری، مجھ سے آگے جانے اور 708 00:30:38,150 --> 00:30:42,990 پوری مستطیل اپنی طرف متوجہ کہ میری RAM کے سب کی نمائندگی کرتا ہے. 709 00:30:42,990 --> 00:30:44,790 >> ہم کہیں گے کہ اسٹیک سب سے نیچے پر ہے. 710 00:30:44,790 --> 00:30:47,010 اور ایک متن کے علاقے میں موجود ہے غیر ابتدا شدہ اعداد و شمار. 711 00:30:47,010 --> 00:30:49,880 لیکن میں صرف تجریدی ان لوگوں کے لئے جا رہا ہوں دور ڈاٹ، ڈاٹ ڈاٹ کے طور پر دوسری چیزوں کے. 712 00:30:49,880 --> 00:30:53,470 میں صرف اس کا حوالہ دیتے جا رہا ہوں سب سے اوپر پر ڈھیر کے طور پر. 713 00:30:53,470 --> 00:30:57,070 اور پھر اس تصویر کے نچلے حصے میں، اہم کی نمائندگی کے لئے، میں جا رہا ہوں 714 00:30:57,070 --> 00:30:59,880 یہ ایک سلائسین میموری دینے کے لئے اسٹیک پر. 715 00:30:59,880 --> 00:31:03,150 F لئے، میں نے اسے ایک ٹکڑا دینے کے لئے جا رہا ہوں اسٹیک پر میموری کی. 716 00:31:03,150 --> 00:31:05,140 اب، میں اپنے سے مشورہ کرنا ہے پھر ماخذ کوڈ. 717 00:31:05,140 --> 00:31:07,170 اہم کے لئے مقامی متغیر کیا ہیں؟ 718 00:31:07,170 --> 00:31:10,710 بظاہر کچھ نہیں ہے، تا کہ ٹکڑا ہے مؤثر طریقے سے خالی ہے یا نہیں بھی بڑا 719 00:31:10,710 --> 00:31:11,600 میں نے اسے تیار کیا ہے کے طور پر. 720 00:31:11,600 --> 00:31:15,730 لیکن چ میں، میں، ایک مقامی متغیر ہے جس X کہا جاتا ہے. 721 00:31:15,730 --> 00:31:20,410 تو میں نے آگے بڑھو اور F دینے کے لئے جا رہا ہوں یہ X بلا میموری کا ایک حصہ،. 722 00:31:20,410 --> 00:31:24,680 >> ، 10 بار 4 اور اب malloc کہ کہاں ہے malloc 40، تو 723 00:31:24,680 --> 00:31:25,430 میموری کی طرف سے آ رہے ہو؟ 724 00:31:25,430 --> 00:31:27,530 ہم ایک تصویر تیار نہیں ہے اس سے پہلے کہ یہ پسند ہے. 725 00:31:27,530 --> 00:31:31,140 لیکن اس کی موثر انداز میں ہے کہ فرض کرتے ہیں تو ایک، یہاں سے آ رہا ہے، 726 00:31:31,140 --> 00:31:33,170 دو، تین، چار، پانچ. 727 00:31:33,170 --> 00:31:34,680 اور اب میں ان میں سے 40 کی ضرورت ہے. 728 00:31:34,680 --> 00:31:37,540 تو میں صرف تجویز ڈاٹ، ڈوٹ، ڈوٹ کروں گا اس سے بھی زیادہ میموری نہیں ہے کہ 729 00:31:37,540 --> 00:31:39,350 ڈھیر سے واپس آ رہے ہیں. 730 00:31:39,350 --> 00:31:40,710 اب ایڈریس کیا ہے؟ 731 00:31:40,710 --> 00:31:42,620 چلو ہمارے صوابدیدی کا انتخاب کے طور پر ہمیشہ سے خطاب - 732 00:31:42,620 --> 00:31:46,310 شاید یہ جا رہا ہے حالانکہ Ox123، مکمل طور پر کچھ مختلف ہو. 733 00:31:46,310 --> 00:31:50,420 اس میں سب سے پہلے بائٹ کا پتہ ہے میں نے کے لئے malloc پوچھ رہا ہوں میموری ہے. 734 00:31:50,420 --> 00:31:53,630 >> اس لئے مختصر، ایک بار لائن میں 20، executes لفظی کیا ہے 735 00:31:53,630 --> 00:31:57,170 یہاں ایکس کے اندر ذخیرہ؟ 736 00:31:57,170 --> 00:31:58,730 Ox123. 737 00:31:58,730 --> 00:32:00,370 Ox123. 738 00:32:00,370 --> 00:32:01,550 اور بیل uninteresting ہے. 739 00:32:01,550 --> 00:32:03,200 یہ صرف یہاں کا مطلب ہے ایک شش اعشاری تعداد. 740 00:32:03,200 --> 00:32:06,490 لیکن جو اہم ہے میں سٹور کیا ہے X میں، جس میں ایک مقامی متغیر ہے. 741 00:32:06,490 --> 00:32:10,260 لیکن اس کے اعداد و شمار کی قسم، ایک بار پھر، ایک INT کا ایڈریس ہے. 742 00:32:10,260 --> 00:32:12,710 اچھا، مجھے Ox123 ذخیرہ کرنے کے لئے جا رہا ہوں. 743 00:32:12,710 --> 00:32:16,610 لیکن پھر ایک چھوٹا سا بھی ہے کہ اگر میں سکرال، اگر بیکار میں پیچیدہ 744 00:32:16,610 --> 00:32:21,490 واپس، ہم اس دور خلاصہ کر سکتے ہیں بہت معقول اور صرف کا کہنا ہے کہ ایکس ہے 745 00:32:21,490 --> 00:32:23,910 میموری کے اس حصہ پر پوائنٹر. 746 00:32:23,910 --> 00:32:24,070 >> ٹھیک ہے. 747 00:32:24,070 --> 00:32:26,230 اب ہاتھ میں سوال مندرجہ ذیل ہے - 748 00:32:26,230 --> 00:32:29,910 لائن 21، یہ باہر کر دیتا ہے، چھوٹی گاڑی ہے. 749 00:32:29,910 --> 00:32:31,160 کیوں؟ 750 00:32:31,160 --> 00:32:34,890 751 00:32:34,890 --> 00:32:36,930 >> معذرت؟ 752 00:32:36,930 --> 00:32:38,640 یہ نہیں ہے - 753 00:32:38,640 --> 00:32:40,390 ایک بار پھر کہنا ہے کہ. 754 00:32:40,390 --> 00:32:41,240 ٹھیک ہے، یہ مفت نہیں ہے. 755 00:32:41,240 --> 00:32:42,350 تو یہ دوسری ہے لیکن. 756 00:32:42,350 --> 00:32:45,000 تو دیگر لیکن خاص طور پر ایک ہی ہے لائن 21 پر. 757 00:32:45,000 --> 00:32:49,480 758 00:32:49,480 --> 00:32:50,040 >> بالکل ٹھیک. 759 00:32:50,040 --> 00:32:54,980 کوڈ کا یہ سادہ لائن صرف ایک ہے بفر اتپرواہ، ایک بفر overrun. 760 00:32:54,980 --> 00:32:57,050 ایک بفر میموری کا صرف ایک حصہ ہے. 761 00:32:57,050 --> 00:33:01,520 لیکن میموری کے اس حصہ کے سائز کی ہے 10، 10 integers، جس کا مطلب ہے کہ اگر ہم 762 00:33:01,520 --> 00:33:05,350 syntactic چینی کا استعمال کرتے ہوئے اس میں انڈیکس سرنی سنکیتن کا، مربع 763 00:33:05,350 --> 00:33:09,220 بریکٹ، آپ تک رسائی حاصل ہے X بریکٹ 0 X بریکٹ 1 X، 764 00:33:09,220 --> 00:33:10,390 بریکٹ ڈاٹ، ڈوٹ، ڈوٹ. 765 00:33:10,390 --> 00:33:13,270 X بریکٹ 9 سب سے بڑا میں سے ایک ہے. 766 00:33:13,270 --> 00:33:17,680 میں نے ایکس بریکٹ 10، کرتے ہیں تو اگر جہاں میں واقعی یاد میں جا رہا ہوں؟ 767 00:33:17,680 --> 00:33:19,120 >> ٹھیک ہے، میں 10 INT ہے تو - 768 00:33:19,120 --> 00:33:21,070 چلو اصل میں سب اپنی طرف متوجہ یہاں ان میں سے باہر. 769 00:33:21,070 --> 00:33:22,700 تاکہ پہلے پانچ تھی. 770 00:33:22,700 --> 00:33:24,660 یہاں دوسرے پانچ ints ہے. 771 00:33:24,660 --> 00:33:29,580 تو X بریکٹ 0 یہیں ہے. X بریکٹ 1 ہے یہاں. X بریکٹ 9 یہاں ہے. X بریکٹ 772 00:33:29,580 --> 00:33:37,960 10 یہاں ہے، جس میں، میں کہہ رہا ہوں اس کا مطلب لائن 21 میں، کمپیوٹر ڈال 773 00:33:37,960 --> 00:33:39,400 تعداد کہاں؟ 774 00:33:39,400 --> 00:33:42,010 تعداد 0 کہاں؟ 775 00:33:42,010 --> 00:33:43,380 ٹھیک ہے، یہ، ہاں، 0 ہے. 776 00:33:43,380 --> 00:33:45,460 لیکن حقیقت یہ ہے کہ اس کے 0 ایک اتفاق کی قسم ہے. 777 00:33:45,460 --> 00:33:47,140 یہ تعداد میں ہو سکتا ہے 50، ہم سب کے لئے دیکھ بھال. 778 00:33:47,140 --> 00:33:50,480 لیکن ہم ایکس بریکٹ میں ڈال کرنے کی کوشش کر رہے ہیں جہاں یہ ہے جو 10، 779 00:33:50,480 --> 00:33:53,700 سوالیہ نشان، تیار کی ہے جس میں ایک اچھی بات نہیں ہے. 780 00:33:53,700 --> 00:33:57,070 یہ پروگرام بہت اچھی طرح سے ہو سکتا نتیجے کے طور پر کریش. 781 00:33:57,070 --> 00:33:59,400 >> اب، آگے بڑھو اور دیکھتے ہیں یہ تو ، بے شک، کیا ہوتا ہے. 782 00:33:59,400 --> 00:34:02,600 میموری بنائیں، کے بعد سے فائل memory.c کہا جاتا ہے. 783 00:34:02,600 --> 00:34:05,950 چلو آگے بڑھو اور چلانے کے پروگرام میموری. 784 00:34:05,950 --> 00:34:08,239 تو ہم خوش قسمت ہو گیا، اصل میں، ایسا لگتا ہے. 785 00:34:08,239 --> 00:34:09,340 ہم خوش قسمت ہو گیا. 786 00:34:09,340 --> 00:34:11,060 لیکن اب ہم Valgrind چلاتے ہیں تو دیکھتے ہیں. 787 00:34:11,060 --> 00:34:14,170 پہلی نظر میں، اپنے پروگرام شاید بالکل صحیح لگ رہے ہو. 788 00:34:14,170 --> 00:34:18,010 لیکن ساتھ Valgrind مجھے چلانے دو - لیک-چیک میموری پر مکمل برابر ہے. 789 00:34:18,010 --> 00:34:20,110 >> اور اب میں اس کو چلانے کے جب - 790 00:34:20,110 --> 00:34:21,030 دلچسپ. 791 00:34:21,030 --> 00:34:26,800 باطل میں سائز 4 لکھنا memory.c کی لائن 21. 792 00:34:26,800 --> 00:34:29,284 memory.c لائن 21 جس میں سے ایک ہے؟ 793 00:34:29,284 --> 00:34:30,340 اوہ، دلچسپ. 794 00:34:30,340 --> 00:34:31,080 لیکن انتظار کریں. 795 00:34:31,080 --> 00:34:32,389 سائز 4، کا حوالہ دیتے ہوئے کہ کیا ہے؟ 796 00:34:32,389 --> 00:34:34,969 مجھے صرف ایک ہی، لکھا تھا لیکن اس کا سائز 4 ہے. 797 00:34:34,969 --> 00:34:36,889 یہ کیوں 4 ہے؟ 798 00:34:36,889 --> 00:34:39,280 یہ جو INT، کیونکہ یہ ہے ایک بار پھر، چار بائٹس ہے. 799 00:34:39,280 --> 00:34:42,510 تو Valgrind ایک مسئلے کا پتہ چلا ہے کہ میں نے، اپنے کوڈ میں glancing، نہیں کیا. 800 00:34:42,510 --> 00:34:45,040 اور شاید آپ TF کرے گا یا نہیں کرے گا. 801 00:34:45,040 --> 00:34:48,469 لیکن اس بات کا یقین مل گیا اس کے لیے Valgrind کیا ہم بھی، وہاں ایک غلطی ہوئی ہے 802 00:34:48,469 --> 00:34:52,719 ہم خوش قسمت ہے، اور اگرچہ کمپیوٹر کا فیصلہ کیا، ہاں، میں کریش نہیں جا رہا ہوں 803 00:34:52,719 --> 00:34:57,470 آپ کو ایک بائٹ، ایک چھو صرف اس وجہ سے تم نے نہیں کیا ہے کہ میموری کی INT کی مالیت 804 00:34:57,470 --> 00:34:58,550 اصل میں خود. 805 00:34:58,550 --> 00:35:00,380 >> ٹھیک ہے، یہاں چھوٹی گاڑی اور کیا ہے. 806 00:35:00,380 --> 00:35:01,180 ایڈریس - 807 00:35:01,180 --> 00:35:03,190 یہ ایک پاگل لگ پتہ ہے شش اعشاری میں. 808 00:35:03,190 --> 00:35:06,890 صرف کہیں ڈھیر میں ہے مطلب یہ ہے کہ 40 سائز کا ایک بلاک کے بعد صفر بائٹس 809 00:35:06,890 --> 00:35:07,620 مختص کیا جاتا ہے. 810 00:35:07,620 --> 00:35:10,610 مجھے یہاں باہر زوم اور دیکھتے ہیں اگر یہ ایک چھوٹا سا زیادہ مددگار ہے. 811 00:35:10,610 --> 00:35:11,410 دلچسپ. 812 00:35:11,410 --> 00:35:15,600 40 بائٹس کو یقینی طور سے کھو رہے ہیں 1 کے نقصان پر ریکارڈ کے 1 میں. 813 00:35:15,600 --> 00:35:17,840 ایک بار پھر، سے زیادہ الفاظ یہاں مفید ہے. 814 00:35:17,840 --> 00:35:21,350 لیکن، پر روشنی ڈالی کی اقسام پر مبنی جہاں میں شاید توجہ دینی چاہیے میرا 815 00:35:21,350 --> 00:35:24,070 ایک اور مسئلے کی طرف توجہ؟ 816 00:35:24,070 --> 00:35:26,570 memory.c کی ایک سطر 20 کی طرح لگتا ہے. 817 00:35:26,570 --> 00:35:30,990 >> ہم لائن 20 پر واپس جانا اگر ایسا ہے، کہ ہے تم نے پہلے کی نشاندہی کی کہ ایک. 818 00:35:30,990 --> 00:35:33,030 اور یہ چھوٹی گاڑی ضروری نہیں ہے. 819 00:35:33,030 --> 00:35:35,160 لیکن ہم یہ اس کے اثرات الٹ ہے. 820 00:35:35,160 --> 00:35:38,790 تو کس طرح میں کم از کم درست ہے ان غلطیوں میں سے ایک؟ 821 00:35:38,790 --> 00:35:42,240 میں لائن 21 کے بعد کیا کر سکتے تھے؟ 822 00:35:42,240 --> 00:35:47,110 میں بہت، ایکس کی مفت ہے کر سکتے ہیں اس یاداشت واپس دینے کے لئے. 823 00:35:47,110 --> 00:35:49,230 اور میں اس مسئلے کو کس طرح ٹھیک کروں؟ 824 00:35:49,230 --> 00:35:52,120 میں ضرور جانا چاہیے کوئی دور 0 سے. 825 00:35:52,120 --> 00:35:53,670 تو مجھے کوشش کرنے اور اس کو دوبارہ چلانے کے ہیں. 826 00:35:53,670 --> 00:35:56,080 معذرت، ضرور جائیں کوئی دور 9 کے مقابلے میں. 827 00:35:56,080 --> 00:35:57,510 میموری بنائیں. 828 00:35:57,510 --> 00:36:00,650 Valgrind مجھے rerun دو ایک بڑی ونڈو میں. 829 00:36:00,650 --> 00:36:01,580 اور اب لگ رہی ہو. 830 00:36:01,580 --> 00:36:02,250 اچھا. 831 00:36:02,250 --> 00:36:03,270 تمام ڈھیر بلاکس کو آزاد کیا گیا تھا. 832 00:36:03,270 --> 00:36:04,270 کوئی لیک ممکن ہیں. 833 00:36:04,270 --> 00:36:07,520 اور یہاں سے اوپر، کوئی ذکر نہیں ہے باطل حق کے کسی بھی زیادہ. 834 00:36:07,520 --> 00:36:09,820 >> بس لالچی ہو جاؤ، اور لشکر طیبہ کی پر دیکھ تو ایک اور مظاہرہ 835 00:36:09,820 --> 00:36:11,050 کے طور پر ارادہ نہیں جا رہا ہے - 836 00:36:11,050 --> 00:36:12,560 میں ایک پل کے پہلے خوش قسمت ملی. 837 00:36:12,560 --> 00:36:15,530 اور یہ 0 یہ حقیقت ہے کہ شاید ہے بیکار میں گمراہ کن. 838 00:36:15,530 --> 00:36:20,650 صرف 50، ایک کسی حد تک من مانی کرتے ہیں کی تعداد، میموری ڈاٹ سلیش میموری بنانے کے لئے - 839 00:36:20,650 --> 00:36:21,410 اب بھی خوش ہو جاؤ. 840 00:36:21,410 --> 00:36:22,510 کچھ بھی نہیں اجلاس ہونے کے تناظر ہے. 841 00:36:22,510 --> 00:36:26,150 میں صرف واقعی کچھ کرنا فرض بے وقوف، اور میں 100 ہے. 842 00:36:26,150 --> 00:36:30,360 ، مجھے یاد ریمیک دو ڈاٹ سلیش میموری - 843 00:36:30,360 --> 00:36:31,075 پھر سے خوش ہو گیا. 844 00:36:31,075 --> 00:36:32,800 1،000 کس طرح کے بارے میں؟ 845 00:36:32,800 --> 00:36:35,370 سے باہر ints، موٹے طور پر، جہاں میں ہونا چاہئے؟ 846 00:36:35,370 --> 00:36:37,410 میموری بنائیں - 847 00:36:37,410 --> 00:36:38,570 اوہ. 848 00:36:38,570 --> 00:36:39,920 >> [ہنسی] 849 00:36:39,920 --> 00:36:41,270 >> ٹھیک ہے. 850 00:36:41,270 --> 00:36:43,920 کی اب گڑبڑ نہیں ہیں. 851 00:36:43,920 --> 00:36:45,120 میموری Rerun. 852 00:36:45,120 --> 00:36:45,840 وہاں ہم چلے. 853 00:36:45,840 --> 00:36:46,410 ٹھیک ہے. 854 00:36:46,410 --> 00:36:52,500 تو بظاہر آپ انڈیکس 100،000 ints آپ میں ہونا چاہیے تھا جہاں سے باہر 855 00:36:52,500 --> 00:36:54,410 میموری، بری چیزوں ہو. 856 00:36:54,410 --> 00:36:56,430 تو یہ ظاہر ہے نہیں ہے ایک مشکل، روزہ حکمرانی. 857 00:36:56,430 --> 00:36:58,190 میں مقدمے کی سماعت کا استعمال کرتے ہوئے کی طرح تھا اور غلطی وہاں حاصل کرنے کے لئے. 858 00:36:58,190 --> 00:37:02,230 لیکن یہ،، کیونکہ لمبی کہانی مختصر ہے آپ کے کمپیوٹر کی میموری میں بھی تقسیم کیا گیا ہے 859 00:37:02,230 --> 00:37:03,580 ان چیزوں میں طبقات سے ملاقات کی. 860 00:37:03,580 --> 00:37:07,260 اور کبھی کبھی، کمپیوٹر اصل میں اگر آپ تھوڑا زیادہ میموری دیا ہے 861 00:37:07,260 --> 00:37:08,400 آپ کے لئے دعا گو ہیں. 862 00:37:08,400 --> 00:37:12,170 لیکن کارکردگی کے لئے، یہ صرف آسان ہے مزید میموری ملے لیکن صرف آپ کو بتا 863 00:37:12,170 --> 00:37:13,780 تم اس کا ایک حصہ مل رہا ہے کہ. 864 00:37:13,780 --> 00:37:16,370 >> اور تم کبھی کبھی خوش قسمت حاصل ہو، لہذا، آپ کو چھو کرنے کے قابل ہو سکتا ہے 865 00:37:16,370 --> 00:37:17,795 کہ میموری آپ کا تعلق نہیں ہے. 866 00:37:17,795 --> 00:37:21,860 آپ کو کوئی ضمانت نہیں ہے کہ کیا قیمت اگر آپ وہاں رہیں گے ڈال دیا کیونکہ 867 00:37:21,860 --> 00:37:25,080 کمپیوٹر اب بھی یہ نہیں ہے سوچتا ہے تمہارا، لیکن یہ ضروری نہیں جا رہا ہے 868 00:37:25,080 --> 00:37:29,910 میں میموری کا ایک اور طبقہ مارا کمپیوٹر اور ایک غلطی کی طرح دلانا 869 00:37:29,910 --> 00:37:31,710 یہاں یہ ایک. 870 00:37:31,710 --> 00:37:32,060 ٹھیک ہے. 871 00:37:32,060 --> 00:37:37,240 پھر کوئی سوال میموری پر نہیں ہیں؟ 872 00:37:37,240 --> 00:37:37,590 >> ٹھیک ہے. 873 00:37:37,590 --> 00:37:40,610 میں، پھر، یہاں دیکھنے دو ہم نے کے لئے لے جا رہا تھا کچھ 874 00:37:40,610 --> 00:37:48,361 کچھ وقت کے لئے حاصل کی جاچکی ہے، جس cs50.h. کہا جاتا ہے اس فائل میں ہے 875 00:37:48,361 --> 00:37:49,420 تو یہ ایک فائل ہے. 876 00:37:49,420 --> 00:37:51,130 ان میں صرف ایک پورے گچرچھی ہیں اوپر تبصرے کی. 877 00:37:51,130 --> 00:37:53,900 اور تم نے یہ تو دیکھا ہو گا آپ کو آلات پر کے ارد گرد poked. 878 00:37:53,900 --> 00:37:57,000 لیکن یہ ہے کہ ہر وقت باہر کر دیتا ہے ہم نے ایک کے طور پر سٹرنگ کا استعمال کرنے کے لئے استعمال کیا جاتا ہے جب 879 00:37:57,000 --> 00:38:01,130 متبادل، ہم نے اعلان کر دیا ہے جس کے ذریعے ذرائع کہ متبادل اس کے ساتھ تھا 880 00:38:01,130 --> 00:38:03,990 قسم کی تعریف کے لئے typedef مطلوبہ الفاظ،. 881 00:38:03,990 --> 00:38:07,500 اور ہم نے بنیادی طور پر کہہ رہے ہیں، بنانے کے چار ستارہ کے لئے ایک متبادل سٹرنگ. 882 00:38:07,500 --> 00:38:11,190 اس کا مطلب ہے جس کے ذریعے اسٹیک کے طور پر جانا ان کی تربیت پہیوں پیدا کیا 883 00:38:11,190 --> 00:38:12,040 سٹرنگ. 884 00:38:12,040 --> 00:38:14,830 >> اب یہاں صرف ایک پروٹوٹائپ ہے getchar کے لئے. 885 00:38:14,830 --> 00:38:17,350 ہم نے اس سے پہلے دیکھا ہے ہو سکتا ہے، لیکن یہ ہے بے شک کیا یہ کرتا ہے. getchar 886 00:38:17,350 --> 00:38:19,070 ، کوئی بحث نہیں لیتا ہے ایک چار بتائےگا. 887 00:38:19,070 --> 00:38:21,340 getdouble، کوئی بحث نہیں لیتا ہے ایک ڈبل واپس. 888 00:38:21,340 --> 00:38:24,440 getfloat دلائل نہیں، منافع لیتا ہے ایک فلوٹ، اور تو آگے. 889 00:38:24,440 --> 00:38:27,270 getint یہاں میں ہے. getlonglong یہاں میں ہے. 890 00:38:27,270 --> 00:38:28,820 اور getstring یہاں میں ہے. 891 00:38:28,820 --> 00:38:29,420 اور بس. 892 00:38:29,420 --> 00:38:33,080 یہ جامنی لائن ایک اور پریپروسیسر ہے کیونکہ اس کی ہدایت 893 00:38:33,080 --> 00:38:35,550 اس کے شروع میں hashtag. 894 00:38:35,550 --> 00:38:35,870 >> ٹھیک ہے. 895 00:38:35,870 --> 00:38:38,380 تو اب مجھے cs50.c. میں جانے دو 896 00:38:38,380 --> 00:38:40,400 اور ہمیں اس پر بہت طویل بات نہیں کریں گے. 897 00:38:40,400 --> 00:38:43,280 لیکن تم نے کیا ہے کی ایک جھلک دینے کے لئے یہ سب کچھ ہو رہا کر دیا گیا 898 00:38:43,280 --> 00:38:46,434 وقت نے مجھ سے چلتے ہیں - 899 00:38:46,434 --> 00:38:48,250 چلو getchar کرتے ہیں. 900 00:38:48,250 --> 00:38:51,050 تو getchar زیادہ تر تبصرے ہے. 901 00:38:51,050 --> 00:38:52,060 لیکن یہ اس طرح لگ رہا ہے. 902 00:38:52,060 --> 00:38:54,800 تو یہ اصل دالہ ہے ہم کیا گیا ہے کہ getchar 903 00:38:54,800 --> 00:38:56,055 حاصل کی جاچکی کے لئے لے جا رہا ہے. 904 00:38:56,055 --> 00:38:59,370 اور ہم اس سے ایک کا استعمال نہیں ہے اگرچہ اکثر، اگر کبھی یہ کم از کم ہے کہ 905 00:38:59,370 --> 00:39:00,470 نسبتا آسان. 906 00:39:00,470 --> 00:39:02,580 تو یہ لینے کے قابل ہے یہاں پر فوری نظر. 907 00:39:02,580 --> 00:39:06,540 >> تو getchar، ایک لامتناہی لوپ ہے جان بوجھ کر تو بظاہر. 908 00:39:06,540 --> 00:39:10,050 یہ تو بلاتا ہے - اور یہ ایک قسم کا ہے کوڈ کا اچھا دوبارہ استعمال ہم نے خود لکھا. 909 00:39:10,050 --> 00:39:11,220 یہ getstring کہلاتی ہے. 910 00:39:11,220 --> 00:39:12,460 یہ کیا کرتا ہے کیونکہ ایک چار حاصل کرنے کے لئے کیا مطلب ہے؟ 911 00:39:12,460 --> 00:39:14,730 ٹھیک ہے، تم اس کے ساتھ ساتھ ایک حاصل کرنے کے لئے کوشش کر سکتے ہیں پورے صارف سے متن کی لائن اور 912 00:39:14,730 --> 00:39:16,940 اس کے بعد صرف ایک طرف دیکھو ان حروف کی. 913 00:39:16,940 --> 00:39:19,170 لائن 60 میں، یہاں ایک چھوٹی سی ہے ایک وویک چیک کی سا. 914 00:39:19,170 --> 00:39:21,610 getstring اتارنا null واپس آئے، تو کی آگے بڑھنے نہیں ہیں. 915 00:39:21,610 --> 00:39:22,820 کچھ غلط ہو گیا. 916 00:39:22,820 --> 00:39:28,120 >> اب یہ کسی حد تک پریشان کن ہے لیکن شاید سی چار زیادہ سے زیادہ میں روایتی 917 00:39:28,120 --> 00:39:29,960 کی نمائندگی کرتا ہے کیا صرف اس کے نام کی بنیاد پر؟ 918 00:39:29,960 --> 00:39:31,670 یہ ایک مسلسل ہے. 919 00:39:31,670 --> 00:39:36,040 اس کی عددی قیمت کی طرح ہے آپ کے ساتھ کی نمائندگی کر سکتے چار سب سے بڑا 920 00:39:36,040 --> 00:39:40,370 شاید نمبر ہے جس میں ایک کاٹنے، سب سے بڑی تعداد ہے جو آپ کو 255، 921 00:39:40,370 --> 00:39:42,720 ، آٹھ بٹس کی نمائندگی کرتے ہیں صفر سے شروع ہونے والے. 922 00:39:42,720 --> 00:39:47,460 تو میں نے جب اس تقریب میں، اس کا استعمال کیا ہے صرف اس لیے کیونکہ، اس کوڈ لکھنے 923 00:39:47,460 --> 00:39:51,753 کچھ getchar میں غلط ہو جاتا ہے لیکن اگر زندگی میں اس کا مقصد ایک کو واپس کرنے کے لئے ہے 924 00:39:51,753 --> 00:39:54,830 چار، آپ کو کسی نہ کسی طرح کے قابل ہو جائے کرنے کی ضرورت ہے کہ صارف کو اشارہ کرنے کے لئے 925 00:39:54,830 --> 00:39:55,840 کچھ غلط ہوگیا. 926 00:39:55,840 --> 00:39:56,970 ہم شہوت انگیز null نہیں لوٹا سکتا. 927 00:39:56,970 --> 00:39:58,480 یہ نیا null ایک پوائنٹر ہے کہ باہر کر دیتا ہے. 928 00:39:58,480 --> 00:40:01,030 اور پھر، getchar ہے ایک چار واپس لوٹنے کے لئے. 929 00:40:01,030 --> 00:40:04,760 >> تو کنونشن، کچھ تو غلط، آپ پروگرامر، یا میں، ہے 930 00:40:04,760 --> 00:40:08,160 اس کیس، مجھے لائبریری کے ساتھ، میں تھا ایک منصفانہ، اگر منمانے کا فیصلہ 931 00:40:08,160 --> 00:40:12,230 کچھ غلط ہو جاتا ہے، میں جا رہا ہوں صحیح معنوں میں ہے جس کی تعداد 255، واپس 932 00:40:12,230 --> 00:40:17,240 ہم صارف کی قسم نہیں کر سکتے ہیں نہیں کر سکتے ہیں کا مطلب ہے کہ کی طرف سے نمائندگی کردار 933 00:40:17,240 --> 00:40:21,410 ہم نے کی وجہ سے نمبر 255 ایک اسے چرا کرنے کے لئے ایک نام نہاد پرہری کی قیمت کے طور پر 934 00:40:21,410 --> 00:40:23,410 ایک مسئلہ کی نمائندگی کرتے ہیں. 935 00:40:23,410 --> 00:40:27,010 اب یہ باہر کر دیتا ہے کہ کردار 255 تم پر ٹائپ کر سکتے ہیں کچھ نہیں ہے 936 00:40:27,010 --> 00:40:28,380 اپنے کی بورڈ، تو یہ کوئی بڑی بات نہیں. 937 00:40:28,380 --> 00:40:30,910 صارف محسوس نہیں کرتا میں نے اس کردار کو چرا لیا ہے. 938 00:40:30,910 --> 00:40:34,620 لیکن کیا تم نے کبھی ایک پر انسان کے صفحات میں دیکھ تو ایک کمپیوٹر سسٹم پر کچھ حوالہ 939 00:40:34,620 --> 00:40:38,560 ، کا کہنا ہے کہ مسلسل اس طرح تمام بڑے حروف غلطی یہ مسلسل طاقت کے مقدمات میں 940 00:40:38,560 --> 00:40:42,720 واپس آ جائے، اس نے سب کچھ انسان ہے سال پہلے منمانے کرنے کا فیصلہ کیا گیا تھا 941 00:40:42,720 --> 00:40:45,680 اس خصوصی قیمت اور واپس اس صورت میں ایک مسلسل فون 942 00:40:45,680 --> 00:40:46,840 کچھ غلط ہو جاتا ہے. 943 00:40:46,840 --> 00:40:48,580 >> اب جادو یہاں نیچے ہوتا ہے. 944 00:40:48,580 --> 00:40:52,600 سب سے پہلے، میں نے لائن 67 میں اعلان کر رہا ہوں دو حروف، C1 اور C2. 945 00:40:52,600 --> 00:40:57,080 اور پھر لائن 68 میں، اصل میں ہے کی یاد تازہ ہے کے کوڈ کا ایک لائن 946 00:40:57,080 --> 00:41:01,140 ہمارے دوست printf، دیا کہ یہ واوین میں فیصد سرفنگ ہے. 947 00:41:01,140 --> 00:41:06,490 لیکن یہاں کیا ہو رہا ہے توجہ. sscanf سٹرنگ اسکین کا مطلب - 948 00:41:06,490 --> 00:41:11,690 ایک فارمیٹ کو اسکین کا مطلب سٹرنگ، لہذا sscanf. 949 00:41:11,690 --> 00:41:12,590 اس کا کیا مطلب ہے؟ 950 00:41:12,590 --> 00:41:16,310 یہ آپ کو ایک تار sscanf پر گزر کا مطلب ہے. 951 00:41:16,310 --> 00:41:18,420 اور لائن جو کچھ بھی ہے صارف رکنیت کی اقسام 952 00:41:18,420 --> 00:41:23,520 آپ کو ایک کی شکل سٹرنگ کی طرح sscanf پر منظور کیا ہیں scanf بتاتی ہے کہ اس 953 00:41:23,520 --> 00:41:25,870 آپ کو صارف کے اندر ٹائپ کر دیا ہے امید 954 00:41:25,870 --> 00:41:29,730 اس کے بعد آپ گزر میں دو کے پتے اس کیس میں میموری کی مقدار،، 955 00:41:29,730 --> 00:41:31,150 میں نے دو جگہ دار ہے کیونکہ. 956 00:41:31,150 --> 00:41:34,610 تو میں نے اس کا پتہ دینے کے لئے جا رہا ہوں C1 اور C2 کے پتے کا. 957 00:41:34,610 --> 00:41:37,700 >> اور تم ایک تقریب دے کہ یاد کچھ متغیر کی پتہ، کیا ہے 958 00:41:37,700 --> 00:41:38,950 نہتارت؟ 959 00:41:38,950 --> 00:41:41,400 960 00:41:41,400 --> 00:41:45,050 اس تقریب کے نتیجے کے طور پر کیا کر سکتے ہیں یہ ایک کا پتہ دینے کی 961 00:41:45,050 --> 00:41:48,170 تغیر پذیر کے طور پر کی مخالفت متغیر ہی؟ 962 00:41:48,170 --> 00:41:49,450 یہ درست ہے، اسے تبدیل کر سکتے ہیں؟ 963 00:41:49,450 --> 00:41:53,250 اگر آپ کسی جسمانی کرنے کے لئے ایک نقشہ تھا تو پتہ، وہ وہاں جا کر کر سکتے ہیں 964 00:41:53,250 --> 00:41:54,750 انہوں نے اس پتے پر جو چاہو. 965 00:41:54,750 --> 00:41:55,800 یہاں بھی یہی خیال ہے. 966 00:41:55,800 --> 00:41:59,950 ہم sscanf، دونوں میں سے پتہ پر گزرتے تو بھی میموری کی مقدار، ان چھوٹے 967 00:41:59,950 --> 00:42:03,585 میموری، C1 اور C2 کی تھوڑی سی مقدار، لیکن ہم، یہ ان کا پتہ بتا 968 00:42:03,585 --> 00:42:05,170 sscanf اسے تبدیل کر سکتے ہیں. 969 00:42:05,170 --> 00:42:08,530 >> زندگی میں sscanf کا مقصد تو، ہم پڑھتے ہیں تو آدمی کے صفحہ، پڑھنے کے لئے کیا ہے 970 00:42:08,530 --> 00:42:13,420 صارف میں ٹائپ، رکھنے کے صارف کے لیے امید ایک کردار میں ٹائپ اور شاید 971 00:42:13,420 --> 00:42:16,470 ایک اور کردار، اور جو کچھ بھی صارف ٹائپ، حرف جاتا ہے 972 00:42:16,470 --> 00:42:19,310 یہاں، دوسرا کردار یہاں جاتا ہے. 973 00:42:19,310 --> 00:42:22,470 اب، ایک ایک طرف کے طور پر، اس، اور آپ گے صرف، دستاویزات سے یہ پتہ 974 00:42:22,470 --> 00:42:25,570 میں وہاں ایک خالی خلا ڈال دیا حقیقت یہ ہے کہ صرف مجھے پرواہ نہیں ہے مطلب یہ ہے کہ اگر 975 00:42:25,570 --> 00:42:28,440 صارف خلائی بار چند مار دیتی ہے وہ یا وہ ایک لیتا ہے اوقات سے پہلے 976 00:42:28,440 --> 00:42:30,400 کردار میں نظر انداز کرنے جا رہا ہوں کسی بھی سفید جگہ. 977 00:42:30,400 --> 00:42:32,510 تاکہ میں سے جانتے ہیں دستاویزات. 978 00:42:32,510 --> 00:42:36,570 >> ایک دوسری٪ ج ہے حقیقت یہ ہے کہ سفید جگہ کے بعد اصل میں ہے 979 00:42:36,570 --> 00:42:37,410 جان بوجھ کر. 980 00:42:37,410 --> 00:42:41,190 میں پتہ لگانے کے لئے کے قابل ہو جائے کرنا چاہتے ہیں تو صارف اپ خراب یا تعاون نہیں کیا. 981 00:42:41,190 --> 00:42:45,630 تو میں صارف صرف ٹائپ امید ہے کہ رہا ہوں ایک کردار میں، اس لئے میں امید کر رہا ہوں 982 00:42:45,630 --> 00:42:50,640 کہ sscanf صرف واپس کرنے کے لئے جا رہی ہے قیمت 1 میں نے پڑھا ہے، تو پھر، کیونکہ 983 00:42:50,640 --> 00:42:55,400 دستاویزات، sscanf کا مقصد میں زندگی کی تعداد کو واپس کرنے کے لئے ہے 984 00:42:55,400 --> 00:42:59,170 بھرے ہوئے تھے کہ متغیر صارف ان پٹ کے ساتھ. 985 00:42:59,170 --> 00:43:02,270 >> میں نے دو متغیر میں منظور پتے، C1 اور C2. 986 00:43:02,270 --> 00:43:06,420 میں سمجھتا ہوں کہ، اگرچہ، امید کر رہا ہوں صرف ایک انہیں مار دیا جاتا ہے کیونکہ اگر sscanf 987 00:43:06,420 --> 00:43:11,130 ریٹرن 2، شاید کیا ہے منطقی طور پر نہتارت؟ 988 00:43:11,130 --> 00:43:14,600 صارف بس مجھے ایک نہیں دیا کہ کردار کی طرح میں نے اسے کہا یا اس کے. 989 00:43:14,600 --> 00:43:17,860 وہ شاید میں ٹائپ کم از کم دو حروف. 990 00:43:17,860 --> 00:43:22,430 میں نے اس کی بجائے دوسرے کی ضرورت نہیں تھی اگر ایسا ہے تو ٪ C، میں صرف ایک تھا جو 991 00:43:22,430 --> 00:43:25,370 واضح طور سے زیادہ بدیہی ہو گا نقطہ نظر، میں نے ایک پہلی نظر لگتا ہے، 992 00:43:25,370 --> 00:43:30,220 آپ کا پتہ لگانے کے قابل ہو جائے کرنے کے لئے نہیں جا رہے ہیں صارف آپ کو زیادہ دے دیا گیا ہے تو 993 00:43:30,220 --> 00:43:31,780 آپ اصل میں چاہتا تھا کے مقابلے میں ان پٹ. 994 00:43:31,780 --> 00:43:34,100 تو یہ ایک واضح شکل ہے غلطی چیکنگ کی. 995 00:43:34,100 --> 00:43:35,640 >> لیکن میں یہاں کیا کرتی محسوس. 996 00:43:35,640 --> 00:43:39,970 ایک بار میں صارف مجھے ایک دیا یقین ہے کہ کردار میں کر، اوپر مفت 997 00:43:39,970 --> 00:43:44,450 getstring کے برعکس، جس کے نتیجے میں میں واپس اس کے بعد malloc استعمال کرتا ہے، اور 998 00:43:44,450 --> 00:43:51,030 C1، میں امید ظاہر کی ہے کہ کردار صارف فراہم کی اور صرف فراہم کی. 999 00:43:51,030 --> 00:43:54,680 تو ایک فوری صرف جھلک، لیکن getchar پر کوئی سوال؟ 1000 00:43:54,680 --> 00:43:57,450 1001 00:43:57,450 --> 00:43:59,590 ہم نے دوسروں میں سے کچھ واپس آ جائیں گے. 1002 00:43:59,590 --> 00:44:03,770 >> ٹھیک ہے، مجھے آگے بڑھو اور اس کے کرتے ہیں - صرف حوصلہ افزائی کرنے، اب لگتا ہے ہمارے 1003 00:44:03,770 --> 00:44:08,910 ایک ہفتے سے زیادہ وقت میں بات چیت، یہ structs.h نامی ایک فائل ہے. 1004 00:44:08,910 --> 00:44:11,440 اور پھر، یہ صرف ایک ذائقہ ہے سامنے ہے کہ کچھ. 1005 00:44:11,440 --> 00:44:13,090 لیکن اس نوٹس کے کہ بہت اس تبصرے ہے. 1006 00:44:13,090 --> 00:44:17,440 تو مجھے اجاگر کرتے ہیں صرف اب کے لئے دلچسپ حصہ ہے. 1007 00:44:17,440 --> 00:44:18,020 typedef - 1008 00:44:18,020 --> 00:44:19,700 اسی مطلوبہ الفاظ کی دوبارہ ہے. 1009 00:44:19,700 --> 00:44:23,100 typedef ہم سٹرنگ کا اعلان کرنے کے لئے استعمال ایک خاص قسم کے طور پر اعداد و شمار. 1010 00:44:23,100 --> 00:44:27,490 آپ نئے برانڈ بنانے کے لئے استعمال کر سکتے ہیں typedef جب موجود ہی نہیں تھی کہ اعداد و شمار اقسام 1011 00:44:27,490 --> 00:44:28,570 سی ایجاد کیا گیا. 1012 00:44:28,570 --> 00:44:32,520 مثال کے طور پر، INT سی چار کے ساتھ آتا ہے ڈبل سی سی کے ساتھ آتا ہے کے ساتھ آتا ہے لیکن 1013 00:44:32,520 --> 00:44:34,000 ایک طالب علم کا کوئی تصور نہیں ہے. 1014 00:44:34,000 --> 00:44:37,230 اور ابھی تک یہ ہونا بہت مفید ہو گی ذخیرہ ہے کہ ایک پروگرام لکھنے کے قابل 1015 00:44:37,230 --> 00:44:40,440 ایک متغیر میں ایک طالب علم کی ID نمبر، ان کے نام اور ان کے گھر. 1016 00:44:40,440 --> 00:44:42,890 دوسرے الفاظ میں، تین ٹکڑے ٹکڑے اعداد و شمار کے ایک INT اور پسند 1017 00:44:42,890 --> 00:44:44,420 سٹرنگ اور ایک اور سٹرنگ. 1018 00:44:44,420 --> 00:44:48,220 >> typedef کے ساتھ، کیا خوبصورت طاقتور ہے کے لئے یہ اور مطلوبہ الفاظ sturct کے بارے میں 1019 00:44:48,220 --> 00:44:53,660 ساخت، آپ کو، 2013 ء میں پروگرامر، اصل میں اپنی خود کی وضاحت کر سکتے ہیں 1020 00:44:53,660 --> 00:44:57,530 سال موجود ہی نہیں تھی کہ اعداد و شمار اقسام پہلے لیکن یہ اپنے مقاصد کے مطابق. 1021 00:44:57,530 --> 00:45:01,910 اور اس طرح یہاں، 19 کے ذریعے کی لائنز 13 میں، ہم جیسے ایک نئے اعداد و شمار کی قسم کا اعلان کر رہے ہیں 1022 00:45:01,910 --> 00:45:04,320 ایک INT، لیکن یہ طالب علم کو بلا. 1023 00:45:04,320 --> 00:45:09,310 اور اندر اس متغیر کی جا رہی ہے ایک INT، ایک تار، - تین چیزوں ہو 1024 00:45:09,310 --> 00:45:09,930 اور ایک تار. 1025 00:45:09,930 --> 00:45:13,040 تو کیا تم واقعی میں کیا ہے کے بارے میں سوچ کر سکتے ہیں یہ ہے، اگرچہ یہاں ہوا وہ ایک 1026 00:45:13,040 --> 00:45:17,160 آج کے لئے ایک آسان بنانے کے تھوڑا سا، ایک طالب علم بنیادی طور پر چل رہا ہے 1027 00:45:17,160 --> 00:45:19,450 اس طرح دیکھنے کے لئے. 1028 00:45:19,450 --> 00:45:22,580 اس کا ایک حصہ بننے جا رہی ایک ID کے ساتھ میموری، ایک کا نام 1029 00:45:22,580 --> 00:45:25,580 میدان، اور ایک گھر فیلڈ. 1030 00:45:25,580 --> 00:45:30,670 اور ہم نے ان حصوں کا استعمال کرنے کے قابل ہو جائے گا میموری اور ان تک رسائی حاصل کے طور پر مندرجہ ذیل ہے. 1031 00:45:30,670 --> 00:45:38,870 >> میں struct0.c میں جانا ہے تو، یہاں ایک ہے نسبتا طویل، لیکن بعد 1032 00:45:38,870 --> 00:45:42,630 کوڈ کا پیٹرن، کہ اس نئی چال کا استعمال کرتا ہے. 1033 00:45:42,630 --> 00:45:45,790 تو سب سے پہلے، مجھے آپ کی توجہ اپنی طرف متوجہ کرتے ہیں اوپر دلچسپ حصوں. 1034 00:45:45,790 --> 00:45:49,670 تیز طلباء 3 کی وضاحت کرتا ہے، ایک اعلان مسلسل کہا جاتا ہے طالب علموں کو اور دیتا ہے 1035 00:45:49,670 --> 00:45:53,450 یہ صرف منمانے نمبر 3، تو میں نے استعمال کرتے ہوئے تین طالب علموں کو ہے 1036 00:45:53,450 --> 00:45:54,830 اب کے لئے اس پروگرام. 1037 00:45:54,830 --> 00:45:55,960 یہاں مین آتا ہے. 1038 00:45:55,960 --> 00:45:58,860 اور نوٹس، میں کس طرح کا اعلان کرتے ہیں طالب علموں کی ایک سرنی؟ 1039 00:45:58,860 --> 00:46:00,480 ٹھیک ہے، میں نے صرف ایک ہی نحو کا استعمال کرتے ہیں. 1040 00:46:00,480 --> 00:46:02,110 طالب علم کا لفظ واضح طور پر نئی ہے. 1041 00:46:02,110 --> 00:46:04,790 لیکن طالب علم، کلاس، بریکٹ کے طالب علموں کو. 1042 00:46:04,790 --> 00:46:06,720 >> تو بدقسمتی سے ایک بہت کچھ ہے یہاں کی شرائط کے دوبارہ استعمال کے. 1043 00:46:06,720 --> 00:46:07,660 یہ تو صرف ایک نمبر ہے. 1044 00:46:07,660 --> 00:46:09,040 تو یہ تین کہہ طرح ہے. 1045 00:46:09,040 --> 00:46:11,430 کلاس میں چاہتا کیا ہے متغیر کو فون کرنے کی. 1046 00:46:11,430 --> 00:46:12,840 میں اس کے طالب علموں کو کہہ سکتے ہیں. 1047 00:46:12,840 --> 00:46:15,880 لیکن کلاس، یہ ایک میں ایک کلاس نہیں ہے آبجیکٹ اورینٹڈ جاوا قسم کے راستے سے. 1048 00:46:15,880 --> 00:46:17,220 یہ صرف طالب علموں کی ایک کلاس ہے. 1049 00:46:17,220 --> 00:46:20,590 اور ہر عنصر کے اعداد و شمار کی قسم کہ سرنی میں طالب علم ہے. 1050 00:46:20,590 --> 00:46:23,040 تو یہ تھوڑا سا مختلف ہے اور کچھ کہنے سے 1051 00:46:23,040 --> 00:46:25,250 اس طرح، یہ صرف ہے - 1052 00:46:25,250 --> 00:46:29,500 مجھے تین طالب علموں کو دے کہہ رہا ہوں اور یہ کہ سرنی کلاس کہتے ہیں. 1053 00:46:29,500 --> 00:46:29,800 >> ٹھیک ہے. 1054 00:46:29,800 --> 00:46:30,680 اب یہاں ایک چار لوپ ہے. 1055 00:46:30,680 --> 00:46:33,480 اس لڑکے کی واقف - iterate اپ پر صفر سے تین. 1056 00:46:33,480 --> 00:46:35,160 اور یہاں نحو کی نئی ٹکڑا ہے. 1057 00:46:35,160 --> 00:46:37,710 پروگرام، مجھے فوری طور پر جا رہا ہے یہ ایک طالب علم دینے کی انسانی، 1058 00:46:37,710 --> 00:46:39,200 ایک INT ہے جو ID،. 1059 00:46:39,200 --> 00:46:44,650 اور یہاں پر آپ کر سکتے ہیں جس کے ساتھ نحو ہے میں آئی ڈی میدان میں کچھ ذخیرہ 1060 00:46:44,650 --> 00:46:48,630 مقام کلاس بریکٹ میں تو یہ نحو نیا نہیں ہے. 1061 00:46:48,630 --> 00:46:51,450 یہ صرف مجھ سے آٹھویں دینے کا مطلب ہے کہ کلاس میں طالب علم. 1062 00:46:51,450 --> 00:46:52,940 لیکن یہ علامت نیا ہے. 1063 00:46:52,940 --> 00:46:56,320 اب تک، ہم، ڈوٹ استعمال نہیں کر سکتے ہیں ہے اس طرح کم از کم میں کوڈ. 1064 00:46:56,320 --> 00:47:01,490 اس کا مطلب ہے کے طور پر جانا struct کے پاس جاؤ ایک طالب علم اور وہاں کچھ ڈال دیا. 1065 00:47:01,490 --> 00:47:05,670 اسی طرح، یہ اگلی لائن میں 31، جانا آگے ڈال دیا اور جو کچھ بھی صارف کی اقسام 1066 00:47:05,670 --> 00:47:10,530 یہاں ایک نام کے لئے اور کیا وہ ایک کے لئے کیا گھر، ایک ہی بات، آگے بڑھو اور 1067 00:47:10,530 --> 00:47:13,230 . گھر میں رکھ دیا. 1068 00:47:13,230 --> 00:47:15,955 >> لہذا اس پروگرام کیا ہے بالآخر کرتے ہیں؟ 1069 00:47:15,955 --> 00:47:17,220 تم نے وہاں ایک چھوٹی سی چھیڑ دیکھ سکتے ہیں. 1070 00:47:17,220 --> 00:47:24,780 مجھ سے آگے بڑھو اور structs 0 بنانے کرتے ہیں ڈاٹ سلیش struct 0، طالب علم کی ID 1، 1071 00:47:24,780 --> 00:47:28,250 ڈیوڈ Mather، 2 طالب علم آئی ڈی کا کہنا ہے کہ. 1072 00:47:28,250 --> 00:47:32,070 روب Kirkland کے، طالب علم آئی ڈی 3. 1073 00:47:32,070 --> 00:47:35,010 لارین Leverit - 1074 00:47:35,010 --> 00:47:38,380 اور اس پروگرام نے صرف ایک ہی چیز، جس، صرف مکمل طور پر صوابدیدی ہے 1075 00:47:38,380 --> 00:47:40,980 میں، اس کے اعداد و شمار کے ساتھ کچھ کرنا چاہتا تھا میں نے کس طرح ہمیں سکھایا ہے کہ اب 1076 00:47:40,980 --> 00:47:43,450 structs کا استعمال کرتے ہیں، میں صرف پڑا ہے یہاں یہ اضافی لوپ. 1077 00:47:43,450 --> 00:47:45,260 میں طالب علموں کی سرنی سے زیادہ iterate. 1078 00:47:45,260 --> 00:47:49,170 میں نے اپنے، شاید اب واقف دوست، استعمال کیا جاتا ہے سٹرنگ پر، stircomp موازنہ 1079 00:47:49,170 --> 00:47:53,780 چیک 8th طالب علم کا گھر ہے Mather کے برابر؟ 1080 00:47:53,780 --> 00:47:56,760 اور اگر ایسا ہے تو، صرف کچھ پرنٹ منمانے پسند ہے، جی ہاں، یہ ہے. 1081 00:47:56,760 --> 00:47:59,430 لیکن پھر مجھے صرف مواقع دے اور استعمال کرنے کے لئے اور دوبارہ استعمال کرنے کے لئے 1082 00:47:59,430 --> 00:48:02,270 اس نئے نقطہ سنکیتن دوبارہ استعمال. 1083 00:48:02,270 --> 00:48:03,250 >> تو کون صحیح، پرواہ کرتا ہے؟ 1084 00:48:03,250 --> 00:48:06,270 ایک طالب علم کے پروگرام کے ساتھ آ رہا ہے کسی حد تک من مانی، لیکن یہ باہر کر دیتا ہے 1085 00:48:06,270 --> 00:48:09,800 ہم سے مفید چیزوں کو کر سکتا ہے کہ یہ مثال کے طور پر کے طور پر مندرجہ ذیل ہے. 1086 00:48:09,800 --> 00:48:14,600 یہ ایک بہت زیادہ پیچیدہ struct ہے سی میں یہ ایک درجن یا اس سے زیادہ شعبوں ہے 1087 00:48:14,600 --> 00:48:15,880 کسی حد تک cryptically کا نام دیا. 1088 00:48:15,880 --> 00:48:20,110 لیکن کیا تم نے کبھی ایک گرافکس کے بارے میں سنا ہے تو کہا جاتا بٹ نقشہ فائل کی شکل، BMP، یہ 1089 00:48:20,110 --> 00:48:22,830 باہر کر دیتا ہے کہ بٹ نقشہ فائل کی شکل بہت زیادہ ہے کہ اس کی طرح لگتا ہے. 1090 00:48:22,830 --> 00:48:24,200 یہ ایک پاگل تھوڑا جذباتیہ ہے. 1091 00:48:24,200 --> 00:48:27,840 یہ میں یکبر ہے کہ ایک چھوٹی سی تصویر ہے بہت بڑا پر میں ہر ایک دیکھ سکتا ہے تاکہ 1092 00:48:27,840 --> 00:48:30,410 انفرادی نقطہ یا پکسلز کی. 1093 00:48:30,410 --> 00:48:33,800 ہم نے ایک نمائندگی کر سکتے ہیں باہر اب، یہ دیتا ہے تعداد 0، کا کہنا ہے کہ، کے ساتھ کالا ٹیکہ. 1094 00:48:33,800 --> 00:48:35,520 نمبر 1 کے ساتھ اور ایک سفید نقطہ. 1095 00:48:35,520 --> 00:48:39,140 >> تو دوسرے الفاظ میں، اگر آپ چاہیں تو ایک اپنی طرف متوجہ کرنے جذباتیہ اور ایک میں اس تصویر کو بچانے کے 1096 00:48:39,140 --> 00:48:42,680 کمپیوٹر، اس zeros ذخیرہ اور کافی اس طرح نظر آئے کہ لوگ، جہاں، 1097 00:48:42,680 --> 00:48:45,250 پھر لوگ سفید ہیں اور zeros سیاہ فام ہیں. 1098 00:48:45,250 --> 00:48:48,290 اور ایک دوسرے کے ساتھ، آپ کو مؤثر طریقے سے ہو تو والوں اور zeros کے gird ایک، آپ کو ایک ہے 1099 00:48:48,290 --> 00:48:51,030 پکسلز کے گرڈ، اور آپ کو پوشیدہ ہے تو انہیں باہر، آپ کو ایک پیارا ہے 1100 00:48:51,030 --> 00:48:52,560 تھوڑا جذباتیہ. 1101 00:48:52,560 --> 00:48:58,150 اب، بٹ نقشہ فائل کی شکل، BMP، ہے مؤثر طریقے سے کہ ہڈ کے نیچے، 1102 00:48:58,150 --> 00:49:00,970 لیکن زیادہ پکسلز طرزعمل کے ساتھ کہ آپ اصل رنگ کی نمائندگی کر سکتے ہیں. 1103 00:49:00,970 --> 00:49:05,170 >> لیکن آپ کو زیادہ بہتر ہے جب BMP اور JPEG اور GIF فائل کی شکل کی طرح 1104 00:49:05,170 --> 00:49:09,360 جس کے ساتھ آپ کو ان سے واقف ہو سکتا ہے ڈسک پر فائلوں کو عام طور پر نہ صرف 1105 00:49:09,360 --> 00:49:13,760 zeros اور پکسلز کے لئے والے ہیں، لیکن وہ اس کے ساتھ ساتھ کچھ میٹاڈیٹا ہے - 1106 00:49:13,760 --> 00:49:16,960 واقعی نہیں ہے اس معنی میں META اعداد و شمار لیکن یہ ہے کے لئے مفید ہے. 1107 00:49:16,960 --> 00:49:21,370 تو یہاں ان خانوں کو اشارہ، اور کر رہے ہیں ہم P-سیٹ میں مزید تفصیل سے یہ دیکھیں گے 1108 00:49:21,370 --> 00:49:25,810 5، کہ zeros اور لوگ اس سے پہلے ایک تصویر میں پکسلز کی نمائندگی کرتے ہیں 1109 00:49:25,810 --> 00:49:29,110 میٹا ڈیٹا کا ایک گروپ کی طرح ہے تصویر کا سائز اور 1110 00:49:29,110 --> 00:49:30,250 تصویر کی چوڑائی. 1111 00:49:30,250 --> 00:49:32,910 اور میں نے کچھ دور توڑ رہا ہوں نوٹس یہاں صوابدیدی چیزیں - 1112 00:49:32,910 --> 00:49:34,260 چوڑائی اور اونچائی. 1113 00:49:34,260 --> 00:49:36,160 بٹ شمار اور کچھ دوسری چیزوں کے. 1114 00:49:36,160 --> 00:49:37,840 تو ایک فائل میں کچھ میٹاڈیٹا ہے. 1115 00:49:37,840 --> 00:49:41,470 >> لیکن فائلوں چڑھائی کر رہے ہیں کہ کس طرح سمجھنے کی طرف سے اس طرح میں، آپ اصل میں کر سکتے ہیں 1116 00:49:41,470 --> 00:49:45,890 پھر تصاویر جوڑتوڑ، تصاویر کی وصولی ڈسک سے تصاویر کا سائز تبدیل کریں. 1117 00:49:45,890 --> 00:49:47,560 لیکن آپ کو ضروری نہیں کر سکتے ہیں ان کو بہتر بنانے کے. 1118 00:49:47,560 --> 00:49:48,480 میں نے ایک تصویر کی ضرورت ہے. 1119 00:49:48,480 --> 00:49:52,840 تو میں نے آپ کو دیکھا جو یہاں آرجی واپس چلے گئے کچھ عرصے پہلے کی سکرین پر. 1120 00:49:52,840 --> 00:49:57,160 میں یہاں کلیدی کھولنے اور اگر یہ ہے کیا آپ میں زوم کرنے کی کوشش کریں، اگر ایسا ہوتا ہے اور 1121 00:49:57,160 --> 00:49:59,380 آرجی کو بہتر بنانے کے. 1122 00:49:59,380 --> 00:50:01,480 وہ واقعی کسی بھی بہتر نہیں مل رہا ہے. 1123 00:50:01,480 --> 00:50:06,240 اب کلیدی یہ ایک blurring کی قسم ہے تھوڑا سا، صرف ختم ٹیکہ پر 1124 00:50:06,240 --> 00:50:11,040 آرجی خاص طور پر حاصل نہیں کرتا ہے حقیقت یہ ہے کہ تم اندر زوم جب میں اضافہ 1125 00:50:11,040 --> 00:50:13,310 اور یہ اس طرح کرتے ہیں تو، چوکوں دیکھ رہے ہو؟ 1126 00:50:13,310 --> 00:50:15,490 جی ہاں، آپ کو یقینی طور پر دیکھ سکتے ہیں ایک پروجیکٹر پر چوکوں. 1127 00:50:15,490 --> 00:50:17,690 >> کہ آپ کو بہتر بنانے کے جب آپ کو ملتا ہے. 1128 00:50:17,690 --> 00:50:22,570 لیکن سمجھ میں کس طرح ہمارے آرجی یا جذباتیہ لاگو کیا جاتا ہے ہمیں دیں گے 1129 00:50:22,570 --> 00:50:24,950 اصل میں manipulates کہ کوڈ لکھنے ان چیزوں کو. 1130 00:50:24,950 --> 00:50:29,970 اور میں کے ساتھ، میں اس نوٹ پر ختم سوچا ایک سے 55 پر، اس میں اضافہ 1131 00:50:29,970 --> 00:50:31,230 میں نہیں بلکہ گمراہ کن کا کہنا ہے کہ، ہمت. 1132 00:50:31,230 --> 00:50:32,990 >> [ویڈیو پلے بیک] 1133 00:50:32,990 --> 00:50:34,790 >> -وہ جھوٹ بول رہا ہے. 1134 00:50:34,790 --> 00:50:38,310 کس کے بارے میں، مجھے پتہ نہیں ہے. 1135 00:50:38,310 --> 00:50:41,200 >> تو ہم کیا جانتے ہیں؟ 1136 00:50:41,200 --> 00:50:45,280 >> کہ 9:15 رے Santoya میں اے ٹی ایم پر تھا. 1137 00:50:45,280 --> 00:50:47,830 >> تو سوال کیا ہے وہ 9:16 بجے کر رہا تھا؟ 1138 00:50:47,830 --> 00:50:50,750 >> شوٹنگ نو ملیمیٹر کچھ میں. 1139 00:50:50,750 --> 00:50:52,615 ہو سکتا ہے وہ سپنر دیکھا. 1140 00:50:52,615 --> 00:50:54,760 >> یا اس کے ساتھ کام کر رہا تھا. 1141 00:50:54,760 --> 00:50:56,120 >> -انتظار کریں. 1142 00:50:56,120 --> 00:50:57,450 ایک واپس چلے جاؤ. 1143 00:50:57,450 --> 00:50:58,700 >> کیا تم نے دیکھا؟ 1144 00:50:58,700 --> 00:51:05,530 1145 00:51:05,530 --> 00:51:09,490 >> ، مکمل سکرین پر اس کا چہرہ اپ لاو. 1146 00:51:09,490 --> 00:51:09,790 >> -ان کے شیشے. 1147 00:51:09,790 --> 00:51:11,040 >> -آمدید عکاس ہے. 1148 00:51:11,040 --> 00:51:21,790 1149 00:51:21,790 --> 00:51:23,520 >> کہ Neuvitas بیس بال کی ٹیم ہے. 1150 00:51:23,520 --> 00:51:24,530 کہ ان کی علامت (لوگو) ہے. 1151 00:51:24,530 --> 00:51:27,040 >> اور وہ ہے جو شخص سے بات کر رہا کہ جیکٹ پہننا. 1152 00:51:27,040 --> 00:51:27,530 >> [END ویڈیو پلے بیک] 1153 00:51:27,530 --> 00:51:29,180 >> ڈیوڈ جے MALAN: یہ کریں گے مسئلہ سیٹ کریں 5 ہو. 1154 00:51:29,180 --> 00:51:30,720 ہم اگلے ہفتے آپ کو نظر آئے گا. 1155 00:51:30,720 --> 00:51:32,330 >> MALE سپیکر: اگلے CS50 میں. 1156 00:51:32,330 --> 00:51:39,240 >> [CRICKETS چہچہاہٹ] 1157 00:51:39,240 --> 00:51:41,270 >> [موسیقی بجانے]