1 00:00:00,000 --> 00:00:11,200 2 00:00:11,200 --> 00:00:12,580 >> DAVID MALAN: ٹھیک ہے، پھر سے خوش آمدید. 3 00:00:12,580 --> 00:00:13,290 یہ CS50 ہے. 4 00:00:13,290 --> 00:00:15,130 اس ہفتے سات کے آغاز ہے. 5 00:00:15,130 --> 00:00:18,890 تو اس وقت ہو گیا، تو میں ہم نے سوچا ہے ہم کہاں کے ایک بونڈر ٹور 6 00:00:18,890 --> 00:00:20,760 دور کو چھوڑ دیا اور اب ہم کہاں جا رہے ہیں. 7 00:00:20,760 --> 00:00:23,310 >> یہ بات یہاں ہو سکتا ہے تو سب سے پہلے میں کچھ غصے کی وجہ سے. 8 00:00:23,310 --> 00:00:27,680 لیکن امید ہے کہ، آپ کو شروع کر رہے ہیں یہ یہاں پر کرنا کیا acclimate - 9 00:00:27,680 --> 00:00:32,670 ہے جو پوائنٹر، کی نمائندگی کرنے والے اسٹار زیادہ عام آدمی کی شرائط میں صرف کیا،؟ 10 00:00:32,670 --> 00:00:33,400 تو یہ ایک ایڈریس ہے. 11 00:00:33,400 --> 00:00:35,490 >> تو اس کا پتہ ہے یاد میں کچھ. 12 00:00:35,490 --> 00:00:38,260 اور ہم واپس چھیل تہوں کرنا شروع کر دیا ہفتے کے ایک جوڑے پہلے، چیزیں پسند 13 00:00:38,260 --> 00:00:41,800 GetString اور اس جیسے دیگر کام کرتا ہے یہ سب وقت واپس آ گیا ہے 14 00:00:41,800 --> 00:00:46,010 طرح یاد میں چیزوں کے پتے، میں سب سے پہلے کردار کا پتہ 15 00:00:46,010 --> 00:00:46,990 کچھ ترتیب. 16 00:00:46,990 --> 00:00:50,360 >> تو ہم بھی valgrind متعارف کرایا جس میں آپ اس مسئلہ کے لئے استعمال کرنے کے لئے شروع کریں گے 17 00:00:50,360 --> 00:00:53,380 خاص طور پر اگلے کے لئے مقرر مسئلہ کے طور پر اچھی طرح سے قائم کی. 18 00:00:53,380 --> 00:00:54,980 اور valgrind ہمارے لئے کیا کرتا ہے؟ 19 00:00:54,980 --> 00:00:57,520 20 00:00:57,520 --> 00:01:01,020 یہ میموری لیک کے لئے چیک کرتا ہے، اور یہ بھی میموری کے استعمال کی اطلاع دیں کے لئے چیک کرتا ہے. 21 00:01:01,020 --> 00:01:05,890 >> یہ کچھ امکان کے ساتھ، کا پتہ لگانے کے کر سکتے ہیں اپنے کوڈ میموری چھو جا رہا ہے 22 00:01:05,890 --> 00:01:07,100 یہ صرف نہیں ہونا چاہئے. 23 00:01:07,100 --> 00:01:10,410 تو ایک لیک ضروری ہے، لیکن آپ تو نہیں کچھ کی حدود سے باہر جانا 24 00:01:10,410 --> 00:01:14,730 سرنی، اور آپ کو اصل میں چلانے valgrind اور اس رویے کی حوصلہ افزائی کرتے ہوئے 25 00:01:14,730 --> 00:01:17,870 valgrind ہے آپ کے پروگرام میں چل رہا ہے اس کے اندر چل رہا ہے، آپ کو ملے گا 26 00:01:17,870 --> 00:01:21,460 اس طرح پیغامات - "باطل کے لکھنا ، کے ایک جوڑے کو یاد ہے جس سائز 4، " 27 00:01:21,460 --> 00:01:25,880 ہفتے قبل میں نے غلطی سے تھا کا مطلب ہے کہ بہت دور ایک INT پر پسند 28 00:01:25,880 --> 00:01:27,250 ایک سرنی کی حدود سے باہر. 29 00:01:27,250 --> 00:01:30,790 اور اس طرح سائز 4 یہاں سائز کا مطلب ہے اس مخصوص INT کی. 30 00:01:30,790 --> 00:01:35,260 >> تو حقیقت میں یقین دہانی لے کہ valgrind کی پیداوار، اس کی شکل، 31 00:01:35,260 --> 00:01:36,170 صرف atrocious ہے. 32 00:01:36,170 --> 00:01:40,180 یہ گندگی کے ذریعے دیکھنے کے لئے واقعی مشکل ہے دلچسپ معلومات کے لئے. 33 00:01:40,180 --> 00:01:42,910 تو کیا ہم یہاں کیا ہے صرف اقتباس ہے سے زیادہ کے جوڑے میں سے کچھ 34 00:01:42,910 --> 00:01:43,850 دلچسپ لائنوں. 35 00:01:43,850 --> 00:01:46,760 لیکن احساس ہے کہ valgrind کی 80 فیصد پیداوار ایک تھوڑا سا ہونے جا رہا ہے 36 00:01:46,760 --> 00:01:47,650 تباہی. 37 00:01:47,650 --> 00:01:52,820 >> بس اس طرح کے نمونوں کے لئے نظر آتے ہیں - حق باطل، باطل، 40 بائٹس پڑھیں 38 00:01:52,820 --> 00:01:56,690 اور بلاکس میں سے کچھ تعداد کو یقینی طور پر ہیں اس طرح مطلوبہ الفاظ، کھو دیا. 39 00:01:56,690 --> 00:02:01,920 اور کیا آپ کو امید ہے کہ دیکھ لیں گے کچھ ہے کام کیا ٹریس کی قسم 40 00:02:01,920 --> 00:02:03,340 غلطی اندر اصل میں ہے 41 00:02:03,340 --> 00:02:07,195 یہاں اس صورت میں، کیا قطار میں میرا کوڈ بظاہر غلطی تھی؟ 42 00:02:07,195 --> 00:02:09,729 43 00:02:09,729 --> 00:02:14,130 >> تھا جو memory.c نامی ایک فائل، میں 26 ہم کے ساتھ کھیل رہے تھے مثال کے طور پر 44 00:02:14,130 --> 00:02:14,890 وقت. 45 00:02:14,890 --> 00:02:16,460 تو یہ malloc میں شاید نہیں ہے. 46 00:02:16,460 --> 00:02:18,630 اس کی بجائے اپنے کوڈ میں شاید تھا. 47 00:02:18,630 --> 00:02:20,910 تو ہم نے پھر سے یہ دیکھیں گے اور پھر طویل عرصے سے اس سے پہلے. 48 00:02:20,910 --> 00:02:24,080 >> scanf تو، یہ ایک میں آیا ابھی تک فارم کے جوڑے. 49 00:02:24,080 --> 00:02:26,410 ہم مختصر طور پر sscanf دیکھا. 50 00:02:26,410 --> 00:02:28,330 یہ کچھ کی ایک بڑی تعداد تھی تم اپنے میں dived 51 00:02:28,330 --> 00:02:29,535 کوئز کی تیاری. 52 00:02:29,535 --> 00:02:33,130 اور scanf اصل میں کیا ہے CS50 لائبریری کے نیچے کا استعمال کرتے ہوئے کیا گیا ہے 53 00:02:33,130 --> 00:02:36,560 ترتیب میں کافی عرصے سے ڈاکو صارف کی طرف سے ان پٹ حاصل کرنے کے لئے. 54 00:02:36,560 --> 00:02:40,420 >> مثال کے طور پر، میں CS50 کے منتقل اگر آلات یہاں، ایک مجھے کھول دیں 55 00:02:40,420 --> 00:02:45,315 scanf-0.c کہا جاتا ہے کہ مثال کے طور پر آج اور یہ سپر آسان ہے. 56 00:02:45,315 --> 00:02:46,590 یہ صرف کوڈ کا ایک چند لائنوں ہے. 57 00:02:46,590 --> 00:02:50,880 لیکن اس کا ثبوت ہے کہ کس طرح واقعی getInt اس وقت کے تمام کام کر رہی ہے. 58 00:02:50,880 --> 00:02:54,710 >> لائن 16 میں یہاں اس پروگرام میں، ، میں نے ایک INT کا اعلان ہے کہ نوٹس. 59 00:02:54,710 --> 00:02:57,270 تو کوئی اشارہ، جادو کچھ بھی نہیں وہاں صرف ایک INT. 60 00:02:57,270 --> 00:03:00,330 پھر لائن 17 میں، میں فوری طور پر ایک بڑی تعداد کے لئے صارف، براہ مہربانی. 61 00:03:00,330 --> 00:03:02,930 پھر دیر سے 18 میں، میں یہاں scanf استعمال کرتے ہیں. 62 00:03:02,930 --> 00:03:06,910 اور میں نے وضاحت کی، طرح printf کے، میں امید کر رہا ہوں کہ اقتباس 63 00:03:06,910 --> 00:03:08,110 فیصد میں unquote. 64 00:03:08,110 --> 00:03:10,920 >> فیصد میں بہت ظاہر ہے، ایک INT پر کرنا. 65 00:03:10,920 --> 00:03:14,580 لیکن محسوس کیا دوسرے scanf پر دلیل ہے. 66 00:03:14,580 --> 00:03:17,350 تم کس طرح دوسرے بیان کریں گے کوما کے بعد دلیل؟ 67 00:03:17,350 --> 00:03:19,450 یہ کیا ہے؟ 68 00:03:19,450 --> 00:03:20,670 >> یہ X کا پتہ ہے. 69 00:03:20,670 --> 00:03:25,490 تو اس وجہ سے فراہم کی طرف سے مفید ہے X کے ایڈریس کے ساتھ scanf، کیا کرتا ہے 70 00:03:25,490 --> 00:03:29,560 ایسا کرنے کے لئے اس تقریب کو بااختیار بنانے کے؟ 71 00:03:29,560 --> 00:03:33,010 نہ صرف وہاں جانے، لیکن یہ بھی کیا کرنا ہے؟ 72 00:03:33,010 --> 00:03:34,060 >> یہ کرنے کے لئے ایک تبدیلی. 73 00:03:34,060 --> 00:03:38,080 آپ وہاں جا سکتے ہیں کیونکہ اس طرح کی ہے یاد میں کسی جگہ پر ایک نقشہ کی طرح. 74 00:03:38,080 --> 00:03:41,900 اور اتنی دیر تک آپ کی فراہم کردہ کے طور پر scanf، یا اس طرح کے ایک نقشہ، اس کے ساتھ کسی بھی تقریب 75 00:03:41,900 --> 00:03:45,840 تقریب وہاں جانے، اور کر سکتے ہیں نہ صرف قیمت کی طرف دیکھو، لیکن یہ بھی کر سکتے ہیں 76 00:03:45,840 --> 00:03:49,670 اگر مفید ہے جو اس قیمت کو تبدیل scanf کی زندگی میں مقصد کے لئے ہے 77 00:03:49,670 --> 00:03:53,060 خاص طور پر، صارف کی طرف سے ان پٹ کو اسکین کی بورڈ سے. 78 00:03:53,060 --> 00:03:57,830 اور F، جیسا فارمیٹ کرنا printf، چ ایک فارمیٹ کرنا 79 00:03:57,830 --> 00:03:58,930 آپ کو پرنٹ کرنے کے لئے چاہتے ہیں سٹرنگ. 80 00:03:58,930 --> 00:04:04,430 >> تو میں مختصر، اس لائن 18 صرف کا کہنا ہے کہ، صارف کی جانب سے ایک INT پڑھنے کی کوشش 81 00:04:04,430 --> 00:04:10,420 کی بورڈ اور میں، ایکس کے اندر یہ ذخیرہ X میں رہنے کے لئے جو کچھ ہوتا ہے ایڈریس. 82 00:04:10,420 --> 00:04:14,860 اور پھر آخر میں، لائن 19 صرف کا کہنا ہے کہ، اس کیس میں INT کے لئے شکریہ،. 83 00:04:14,860 --> 00:04:15,940 >> تو مجھے آگے بڑھو اور اس کے بنانے کے لئے ہیں. 84 00:04:15,940 --> 00:04:18,570 تو scanf 0 بناتے ہیں. 85 00:04:18,570 --> 00:04:20,130 مجھ سے آگے بڑھو اور اندر زوم چلو 86 00:04:20,130 --> 00:04:22,960 میں کے ساتھ جاؤ اور اس کو چلانے گے بندیاں scanf 0 سلیش. 87 00:04:22,960 --> 00:04:24,020 نمبر، براہ مہربانی؟ 88 00:04:24,020 --> 00:04:24,720 50. 89 00:04:24,720 --> 00:04:25,730 50 کے لئے شکریہ. 90 00:04:25,730 --> 00:04:27,270 تو یہ بہت آسان ہے. 91 00:04:27,270 --> 00:04:28,160 >> اب یہ کیا کر رہی ہے؟ 92 00:04:28,160 --> 00:04:29,940 یہ ایک پورے گچرچھی نہیں کر رہی غلطی چیکنگ کی. 93 00:04:29,940 --> 00:04:33,000 مثال کے طور پر، میں تعاون نہیں کرتے ہیں تو، اور میں نے ایک بڑی تعداد میں ٹائپ کریں، لیکن نہیں کرتے 94 00:04:33,000 --> 00:04:37,860 اس کی بجائے میں "ہیلو" کی طرح کچھ لکھ یہ عجیب سے صرف طرح ہے. 95 00:04:37,860 --> 00:04:41,130 چیزوں CS50 کی اور اس طرح ایک لائبریری کچھ کے لئے ہمارے لئے کر دیا گیا ہے 96 00:04:41,130 --> 00:04:43,440 وقت ہے کہ reprompting ہے اور reprompting. 97 00:04:43,440 --> 00:04:49,320 >> دوبارہ کوشش جملے یاد cs50.c میں تھا اور یہ کہ اس getInt میں وجہ ہے 98 00:04:49,320 --> 00:04:51,670 CS50 لائبریری اصل میں ایک پوری ہے طویل لائنوں کی جتھا، ہم ہیں کیونکہ 99 00:04:51,670 --> 00:04:53,190 اس طرح پاگل سامان کے لئے جانچ پڑتال. 100 00:04:53,190 --> 00:04:55,730 صارف نہیں دیا ہم سے، اصل میں، ایک INT؟ 101 00:04:55,730 --> 00:04:57,910 وہ ہم سے کچھ دے دیا ایک حروف تہجی کے خط کی طرح؟ 102 00:04:57,910 --> 00:05:01,410 اگر ایسا ہے تو، ہم پتہ لگانے کے لئے چاہتے ہیں اور یہ کہ ان پر چللاو. 103 00:05:01,410 --> 00:05:03,915 >> لیکن چیزوں کو زیادہ دلچسپ ہو جاؤ یہ اگلے مثال میں. 104 00:05:03,915 --> 00:05:09,840 میں scanf-1.c کرنے کے لئے جاتے ہیں، کیا ایک ہے بنیادی طور پر میں تبدیل کر دیا گیا ہے کہ بات 105 00:05:09,840 --> 00:05:11,135 یہ اگلے مثال کے طور پر؟ 106 00:05:11,135 --> 00:05:13,690 107 00:05:13,690 --> 00:05:16,010 میں، یقینا، چار * استعمال کر رہا ہوں بجائے INT کی. 108 00:05:16,010 --> 00:05:19,210 >> کیونکہ چار * تو یہ،، دلچسپ ہے یاد ہے، صرف سچ میں ہے 109 00:05:19,210 --> 00:05:20,190 سٹرنگ کے طور پر ایک ہی بات. 110 00:05:20,190 --> 00:05:23,840 تو یہ ہو سکتا ہے جیسے یہ ایک سپر ہے محسوس ہوتا ہے GetString کی سادہ عمل درآمد. 111 00:05:23,840 --> 00:05:26,010 لیکن میں واپس پرت کھلی ہے CS50 لائبریری کا، مجھے تو 112 00:05:26,010 --> 00:05:27,550 اب اس چار * بلا. 113 00:05:27,550 --> 00:05:30,070 تو دیکھتے ہیں، جہاں کہیں بھی ہو، ہم غلط جانا. 114 00:05:30,070 --> 00:05:30,840 >> لائن 17 - 115 00:05:30,840 --> 00:05:33,950 میں ایک بار پھر، مجھے کچھ دو، براہ مہربانی کا کہنا ہے کہ اس صورت میں، ایک تار. 116 00:05:33,950 --> 00:05:37,940 اور پھر اگلا لائن میں، میں، scanf فون ایک بار پھر، یہ ایک فارمیٹ کوڈ دے، 117 00:05:37,940 --> 00:05:39,310 لیکن اس بار فیصد ے. 118 00:05:39,310 --> 00:05:41,900 اور پھر اس وقت، میں ہوں یہ بفر دے. 119 00:05:41,900 --> 00:05:43,550 >> اب میں استعمال نہیں کر رہا ہوں، نوٹس ایمپرسینڈ. 120 00:05:43,550 --> 00:05:47,120 لیکن کیوں کہ یہاں شاید ٹھیک ہے؟ 121 00:05:47,120 --> 00:05:49,760 پہلے ہی بفر کیا ہے کیونکہ؟ 122 00:05:49,760 --> 00:05:50,770 یہ پہلے سے ہی ایک پوائنٹر ہے. 123 00:05:50,770 --> 00:05:51,650 یہ پہلے سے پتہ ہے. 124 00:05:51,650 --> 00:05:54,510 >> لشکر طیبہ اور اس لفظ مجھے دو "، الجھانے" ہے صرف کے لئے مثال کے طور پر، اس کا فون 125 00:05:54,510 --> 00:05:55,050 سادگی. 126 00:05:55,050 --> 00:05:58,250 لیکن میں یہ بفر بلایا ہے کیونکہ میں جنرل پروگرامنگ میں، آپ کو ایک ہے تو 127 00:05:58,250 --> 00:06:02,130 میموری کا حصہ ہے، جس کے ایک تار واقعی بس، تم اسے ایک بفر فون کر سکتے ہیں ہے. 128 00:06:02,130 --> 00:06:04,460 یہ معلومات جمع کرنے کے لئے ایک جگہ ہے. 129 00:06:04,460 --> 00:06:07,400 >> جب یو ٹیوب، جیسی چیزوں کی طرح انہوں نے،، تو بات کرنے بفرن رہے ہیں 130 00:06:07,400 --> 00:06:10,270 صرف اس سے بٹس ڈاؤن لوڈ کا مطلب انٹرنیٹ اور ایک میں ان کے محفوظ کرنے کے 131 00:06:10,270 --> 00:06:14,160 مقامی سرنی، تو میموری کی ایک مقامی حصہ آپ کے بغیر بعد میں دیکھ سکتے ہیں کہ 132 00:06:14,160 --> 00:06:16,830 یہ اچٹیں یا پھانسی تم واپس کھیلتے وقت. 133 00:06:16,830 --> 00:06:20,930 >> تو ایک مسئلہ ہے، اگرچہ یہاں میں scanf بتا رہا ہوں، کیونکہ ایک کی توقع 134 00:06:20,930 --> 00:06:22,320 صارف سے سٹرنگ. 135 00:06:22,320 --> 00:06:24,410 یہاں کا ایڈریس ہے میموری کا ایک حصہ. 136 00:06:24,410 --> 00:06:26,180 وہاں اس سٹرنگ رکھو. 137 00:06:26,180 --> 00:06:31,230 کیوں کہ جانے دینا ہے اگرچہ ہمیں مصیبت،؟ 138 00:06:31,230 --> 00:06:33,490 >> وہ کیا ہے؟ 139 00:06:33,490 --> 00:06:35,510 میں تک رسائی حاصل کرنے کی اجازت کر رہا ہوں میموری کا وہ حصہ ہے؟ 140 00:06:35,510 --> 00:06:36,250 تم جانتی ہو، مجھے پتہ نہیں ہے. 141 00:06:36,250 --> 00:06:39,210 بفر initialized کیا گیا ہے کیونکہ کچھ بھی ہے؟ 142 00:06:39,210 --> 00:06:39,820 واقعی نہیں. 143 00:06:39,820 --> 00:06:43,090 اور اس طرح ہم بلا رہا ہے کیا ہے ردی کی ٹوکری میں ایک قدر جس 144 00:06:43,090 --> 00:06:44,040 ایک رسمی لفظ نہیں ہے. 145 00:06:44,040 --> 00:06:49,200 یہ صرف ہم کیا بٹس کوئی اندازہ نہیں ہے کا مطلب کہ چار بائٹس کے اندر ہیں 146 00:06:49,200 --> 00:06:51,240 میں بفر کے طور پر مختص کر دیا ہے. 147 00:06:51,240 --> 00:06:52,450 >> میں malloc نہیں بلایا ہے. 148 00:06:52,450 --> 00:06:53,940 میں ضرور GetString کے لئے نہیں بلایا ہے. 149 00:06:53,940 --> 00:06:56,380 تو جو اصل میں کیا ہے جانتا ہے بفر کے اندر؟ 150 00:06:56,380 --> 00:07:00,550 اور ابھی تک scanf کہہ آنکھ بند کر کے، وہاں جانے اور صارف ٹائپ جو کچھ بھی رکھ دیا. 151 00:07:00,550 --> 00:07:04,460 >> تو اس کی وجہ سے کرنے کا امکان کیا ہے ہمارے کوڈ میں ہم اسے چلانے کے تو کیا ہوگا؟ 152 00:07:04,460 --> 00:07:05,700 شاید ایک segfault. 153 00:07:05,700 --> 00:07:07,970 شاید نہیں، لیکن شاید ایک segfault. 154 00:07:07,970 --> 00:07:10,620 اور میں کا کہنا ہے کہ ہو سکتا ہے کہ نہیں کیونکہ کبھی کبھی اگر آپ کبھی کبھی کرتے ہیں 155 00:07:10,620 --> 00:07:11,380 آپ کو ایک segfault نہیں ملتا. 156 00:07:11,380 --> 00:07:14,280 کبھی کبھی آپ کو صرف خوش ہو جاؤ، لیکن اس کے باوجود ہونے جا رہا ہے 157 00:07:14,280 --> 00:07:15,340 ہمارے پروگرام میں ایک بگ کی. 158 00:07:15,340 --> 00:07:17,060 >> تو مجھے آگے بڑھو اور اس کے مرتب کرتے ہیں. 159 00:07:17,060 --> 00:07:18,280 میں نے اس کے پرانے اسکول طریقے سے کرنے کے لئے جا رہا ہوں. 160 00:07:18,280 --> 00:07:23,825 تو بجنا ڈیش 0، scanf-1، scanf-1.c، درج کریں. 161 00:07:23,825 --> 00:07:24,720 افوہ، بہت پرانے اسکول. 162 00:07:24,720 --> 00:07:26,550 چلو دیکھتے ہیں. 163 00:07:26,550 --> 00:07:28,440 میں کہاں چلا گیا؟ 164 00:07:28,440 --> 00:07:29,700 اوہ، چار * بفر. 165 00:07:29,700 --> 00:07:33,595 166 00:07:33,595 --> 00:07:35,130 اوہ، آپ کا شکریہ - 167 00:07:35,130 --> 00:07:36,930 ٹھیک ہے، محفوظ کریں - 168 00:07:36,930 --> 00:07:37,690 بہت پرانے اسکول. 169 00:07:37,690 --> 00:07:38,900 ٹھیک ہے، یہ ایک وقت ہو گیا ہے. 170 00:07:38,900 --> 00:07:41,720 >> تو میں صرف فائل کے بعد محفوظ کر لیا ہے کہ عارضی طور پر بنانے 171 00:07:41,720 --> 00:07:42,700 ایک لمحے پہلے تبدیل کریں. 172 00:07:42,700 --> 00:07:46,090 اور اب میں اس کے مرتب کی ہے دستی طور پر بجنا کے ساتھ. 173 00:07:46,090 --> 00:07:49,500 اور اب میں آگے بڑھو کرنے جا رہا ہوں اور درج، scanf-1 چلائیں. 174 00:07:49,500 --> 00:07:50,290 سلک براہ مہربانی. 175 00:07:50,290 --> 00:07:51,600 میں ٹائپ کریں گے "ہیلو." 176 00:07:51,600 --> 00:07:54,070 >> اور اب، یہاں printf، واضح طور سے، جہاں ہے تھوڑا پریشان کن ہے کر سکتے ہیں. 177 00:07:54,070 --> 00:07:56,020 یہ اصل میں کرنے کے لئے نہیں جا رہا ہے اس کیس میں segfault. 178 00:07:56,020 --> 00:07:59,860 Printf ایک چھوٹی سی خاص ہے کیونکہ یہ عام طور پر استعمال تو سپر ہے 179 00:07:59,860 --> 00:08:03,570 بنیادی طور پر printf کر رہا ہے ہمیں حق اور احساس، 180 00:08:03,570 --> 00:08:04,830 کہ ایک درست پوائنٹر نہیں ہے. 181 00:08:04,830 --> 00:08:09,080 اپنے آپ کو صرف پرنٹ کرنے کے لئے صلی اللہ علیہ وسلم مجھے یہ لینے دو قوسین اتارنا null میں، یہاں تک کہ 182 00:08:09,080 --> 00:08:13,340 یہ ضروری نہیں ہے اگرچہ کیا ہم نے خود کو توقع. 183 00:08:13,340 --> 00:08:16,940 >> لہذا ہم آسانی سے ایک دلانا نہیں کر سکتے ہیں یہ واضح طور پر اس کے ساتھ segfault، لیکن 184 00:08:16,940 --> 00:08:18,600 میں چاہتا تھا رویے نہیں ہے. 185 00:08:18,600 --> 00:08:19,800 بہت آسان حل کیا ہے؟ 186 00:08:19,800 --> 00:08:25,650 ٹھیک ہے، scanf-2 میں، مجھے تجویز کرتے ہیں کہ بجائے اس کے کہ اصل میں صرف ایک مختص 187 00:08:25,650 --> 00:08:30,100 چار *، مجھے ایک چھوٹی سی کے بارے میں ہوشیار رہنے دو اس، اور مجھے بفر مختص دو 188 00:08:30,100 --> 00:08:32,940 16 حروف کی ایک ہی تسلسل کے طور پر. 189 00:08:32,940 --> 00:08:34,200 >> تو میں نے طریقوں میں سے ایک جوڑے میں ایسا کر سکتے ہیں. 190 00:08:34,200 --> 00:08:35,610 میں پوری طرح سے malloc استعمال کر سکتے ہیں. 191 00:08:35,610 --> 00:08:38,980 لیکن میں نے دو ہفتے میں واپس جا سکتے ہیں جب میں صرف کے پورے گچرچھی کی ضرورت 192 00:08:38,980 --> 00:08:39,620 حروف. 193 00:08:39,620 --> 00:08:40,860 یہ صرف ایک سرنی ہے. 194 00:08:40,860 --> 00:08:44,870 تو مجھے اس کی بجائے بفر کی وضاحت کرتے ہیں 16 حروف کی ایک سرنی ہو. 195 00:08:44,870 --> 00:08:47,340 >> اور اب، جب میں میں بفر پاس - 196 00:08:47,340 --> 00:08:49,940 اور یہ کہ ہم نے ایسا نہیں کیا چیز ہے ہفتے میں دو کے بارے میں بات - 197 00:08:49,940 --> 00:08:53,730 لیکن آپ نے ایک سرنی کے طور پر علاج کر سکتے ہیں یہ ایک ایڈریس ہے اگرچہ. 198 00:08:53,730 --> 00:08:56,390 ہم نے دیکھا کے طور پر تکنیکی طور پر،، وہ کر رہے ہیں تھوڑا سا مختلف. 199 00:08:56,390 --> 00:09:01,290 تم اس کے پاس لیکن اگر scanf برا نہیں لگے گا ایک صف کے نام پر، اس کی وجہ کیا 200 00:09:01,290 --> 00:09:05,030 ہمیں بنیادی طور پر ہے کے لئے بجنا کروں گا کے طور پر اس سرنی کے نام کا علاج 201 00:09:05,030 --> 00:09:08,280 16 بائٹس کی حصہ کا ایڈریس. 202 00:09:08,280 --> 00:09:09,550 >> تو یہ بہتر ہے. 203 00:09:09,550 --> 00:09:12,110 یہ اب مجھے امید ہے کہ مطلب ہے کہ مندرجہ ذیل کریں. 204 00:09:12,110 --> 00:09:16,800 مجھے ایک لمحے کے لئے باہر زوم اور دو ٹھیک مرتب scanf-2، بنانے کے لئے کرتے ہیں. 205 00:09:16,800 --> 00:09:19,390 اب مجھے سلیش scanf-2 ملا کرتے ہیں. 206 00:09:19,390 --> 00:09:22,430 سلک براہ مہربانی. "ہیلو." اور یہ اس وقت کام کرنے کے لئے لگ رہا تھا. 207 00:09:22,430 --> 00:09:26,020 >> لیکن کسی ایک منظر نامے تجویز کر سکتے ہیں جس میں یہ اب بھی کام نہیں کر سکتے ہیں؟ 208 00:09:26,020 --> 00:09:28,550 جی ہاں؟ 209 00:09:28,550 --> 00:09:30,640 16 حروف سے زیادہ طویل کچھ. 210 00:09:30,640 --> 00:09:32,020 اور اصل میں، ہم ہو سکتا ہے تھوڑا سا زیادہ عین مطابق. 211 00:09:32,020 --> 00:09:36,540 اب تو 15 حروف کچھ، واقعی ہمارے ذہن میں رکھنے کی ضرورت ہے کیونکہ 212 00:09:36,540 --> 00:09:39,920 ہم اس الٹا سلیش صفر کی ضرورت ہے لپیٹ سٹرنگ کے آخر میں، 213 00:09:39,920 --> 00:09:42,950 جس میں ایک طرف scanf عام طور پر مرضی ہے ہمارے لئے کا خیال رکھو. 214 00:09:42,950 --> 00:09:46,210 >> تو مجھے کچھ اس طرح کرتے ہیں - 215 00:09:46,210 --> 00:09:48,040 کبھی کبھی ہم صرف کر سکتے ہیں اس طرح اسے چھوڑ. 216 00:09:48,040 --> 00:09:50,630 ٹھیک ہے، تو اب ہم حوصلہ افزائی ہے ہمارے انقطاع غلطی. 217 00:09:50,630 --> 00:09:51,000 کیوں؟ 218 00:09:51,000 --> 00:09:54,940 میں نے 15 سے زیادہ کرنے کے لئے ٹائپ کیونکہ حروف، اور تاکہ ہم اصل میں ہے 219 00:09:54,940 --> 00:09:58,280 چھو یاد ہے کہ میں واقعی میں نہیں ہونا چاہئے. 220 00:09:58,280 --> 00:10:00,180 >> تو کیا واقعی یہاں حل ہے؟ 221 00:10:00,180 --> 00:10:02,210 اچھا، ہم ایک طویل سٹرنگ کیا ضرورت ہے تو کیا ہوگا؟ 222 00:10:02,210 --> 00:10:03,960 ٹھیک ہے، ہم شاید یہ 32 بائٹس بناتے ہیں. 223 00:10:03,960 --> 00:10:05,160 ٹھیک ہے، کیا ہے کہ طویل عرصے سے کافی نہیں ہے تو کیا ہوگا؟ 224 00:10:05,160 --> 00:10:06,040 کس طرح کے بارے میں 64 بائٹس؟ 225 00:10:06,040 --> 00:10:07,080 کیا ہے کہ طویل عرصے سے کافی نہیں ہے تو کیا ہوگا؟ 226 00:10:07,080 --> 00:10:09,640 کس طرح کے بارے میں 128 یا 200 بائٹس؟ 227 00:10:09,640 --> 00:10:12,660 کیا واقعی میں یہاں حل ہے عام کیس، ہم میں نہیں جانتے تو 228 00:10:12,660 --> 00:10:14,460 صارف کی قسم کے لئے کیا ہو رہا ہے آگے بڑھانے؟ 229 00:10:14,460 --> 00:10:20,000 230 00:10:20,000 --> 00:10:23,050 >> یہ گدا میں ایک بڑا درد کی صرف قسم ایماندار ہو، جس وجہ ہے 231 00:10:23,050 --> 00:10:29,050 CS50 لائبریری کے چند درجن لائنوں ہے اجتماعی طور پر عمل درآمد اس کوڈ 232 00:10:29,050 --> 00:10:32,390 ہم ایسا نہیں کرتے کہ ایک طرح سے سٹرنگ GetString پیشگی جاننا ضروری ہے کیا 233 00:10:32,390 --> 00:10:33,430 صارف کی قسم جا رہا ہے. 234 00:10:33,430 --> 00:10:37,370 خاص طور پر، اگر آپ کو واپس دیکھ cs50.c دو ہفتے قبل کی طرف سے، آپ کو نظر آئے گا 235 00:10:37,370 --> 00:10:40,480 کہ GetString اصل میں کرتا ہے اس طرح scanf کا استعمال نہیں. 236 00:10:40,480 --> 00:10:43,720 بلکہ یہ ایک کردار پڑھتا ہے ایک وقت میں. 237 00:10:43,720 --> 00:10:46,010 >> کیونکہ کے بارے میں ایک اچھی بات ایک کردار پڑھنے ہم کر سکتے ہیں ہے 238 00:10:46,010 --> 00:10:48,490 ہمیشہ خود کو اس بات کی ضمانت کم از کم ایک چار ہے. 239 00:10:48,490 --> 00:10:51,740 میں نے ابھی لے پھر ایک چار کا اعلان، اور کر سکتے ہیں صرف کرنے کے لئے ان اقدامات پر صحیح معنوں میں بچے 240 00:10:51,740 --> 00:10:54,380 ایک وقت میں ایک کریکٹر کو پڑھ کی بورڈ کی طرف سے وقت. 241 00:10:54,380 --> 00:10:58,240 اور پھر، تم کس چیز GetString دیکھیں گے کرتا ہے، اس سے باہر چلتا ہے ہر وقت ہے 242 00:10:58,240 --> 00:11:02,280 ، میموری کے 16 بائٹس کا کہنا ہے کہ اس کا استعمال کرتا ہے malloc، یا ایک چچیرا بھائی اس کے، پر 243 00:11:02,280 --> 00:11:06,810 پرانے کاپی، زیادہ میموری مختص پھر نئے اور داخلے میں میموری 244 00:11:06,810 --> 00:11:09,900 کے ساتھ ساتھ،، ایک وقت میں ایک کردار ہو رہی ہے اور یہ کہ ختم جب 245 00:11:09,900 --> 00:11:13,370 میموری کا حصہ،، گرپس اسے دور پھینک دے میموری کا ایک بڑا حصہ، پرانی نقل کرتا ہے 246 00:11:13,370 --> 00:11:14,750 نئے اور دوہراتا میں. 247 00:11:14,750 --> 00:11:18,480 اور اس سے اصل میں حقیقی معنوں میں ایک درد ہے. جتنا آسان کچھ پر عمل درآمد 248 00:11:18,480 --> 00:11:19,710 ایک صارف کی طرف سے ان پٹ حاصل کرنے. 249 00:11:19,710 --> 00:11:21,090 >> تو کیا تم scanf استعمال کر سکتے ہیں. 250 00:11:21,090 --> 00:11:22,430 آپ دیگر اسی طرح کے کام کرتا ہے استعمال کر سکتے ہیں. 251 00:11:22,430 --> 00:11:25,420 اور ایک نصابی کتابوں کی بہت اور آن لائن مثال کے طور پر کرتے ہیں، لیکن وہ سب کے سب ہیں 252 00:11:25,420 --> 00:11:27,210 اس طرح کے مسائل کا شکار. 253 00:11:27,210 --> 00:11:29,550 اور آخر میں، ایک segfault رہی قسم کی پریشان کن ہے. 254 00:11:29,550 --> 00:11:30,680 یہ صارف کے لئے اچھا نہیں ہے. 255 00:11:30,680 --> 00:11:33,560 >> لیکن بدترین صورت میں، کیا کرتا ہے یہ بنیادی طور پر آپ کی ڈال 256 00:11:33,560 --> 00:11:37,160 کا خطرہ کوڈ؟ 257 00:11:37,160 --> 00:11:39,250 حملے میں کسی قسم کا، ممکنہ طور پر. 258 00:11:39,250 --> 00:11:41,680 ہم ایسے ہی ایک حملے کے بارے میں بات کی - اسٹیک overflowing. 259 00:11:41,680 --> 00:11:44,660 لیکن عام طور پر، اگر آپ کی اجازت ہو تو اتپرواہ ایک بفر، جیسے ہم نے کیا تھا 260 00:11:44,660 --> 00:11:48,070 صرف لکھنے سے پہلے ہفتے کے جوڑے، مزید اسٹیک پر "ہیلو" کے مقابلے میں، آپ 261 00:11:48,070 --> 00:11:52,330 واقعی، ممکنہ طور پر، پر قبضہ کر سکتے ہیں کمپیوٹر، یا کم از کم اعداد و شمار کو حاصل ہے کہ 262 00:11:52,330 --> 00:11:53,510 آپ کا تعلق نہیں ہے. 263 00:11:53,510 --> 00:11:55,970 >> ہم کیوں اس لئے مختصر میں، یہ ہے ان کی تربیت کے پہیوں. 264 00:11:55,970 --> 00:11:59,090 لیکن اب، ہم نے ان کو اتار شروع ہمارے پروگراموں کو اب مزید نہیں کی ضرورت کے طور پر، 265 00:11:59,090 --> 00:12:00,610 صارف سے ضروری، ان پٹ. 266 00:12:00,610 --> 00:12:03,960 لیکن مسئلہ کی صورت میں، چھ سیٹ آپ ان پٹ کی ایک بہت بڑی سے آئے گا 267 00:12:03,960 --> 00:12:07,520 150 کے ساتھ ڈکشنری فائل کچھ عجیب ہزار الفاظ. 268 00:12:07,520 --> 00:12:10,330 >> تو آپ کے بارے میں فکر کرنے کی ضرورت نہیں رکھا جائے صارف کے صوابدیدی ان پٹ. 269 00:12:10,330 --> 00:12:13,720 ہم نے آپ کو کچھ مفروضات دے گا جو کہ فائل کے بارے میں. 270 00:12:13,720 --> 00:12:20,340 اشارہ یا scanf پر کوئی سوال یا عام میں صارف ان پٹ؟ 271 00:12:20,340 --> 00:12:24,450 >> ٹھیک ہے، تو ایک میں اس وقت ایک فوری نظر دو ہفتے پہلے سے موضوع پشت بندی. 272 00:12:24,450 --> 00:12:28,590 اور یہ کہ ایک struct کے اس تصور تھا. 273 00:12:28,590 --> 00:12:34,180 ایسا نہیں ہے کہ - ایک کے اس تصور کیا تھا، جو struct؟ 274 00:12:34,180 --> 00:12:35,430 struct ہمارے لئے کیا کیا؟ 275 00:12:35,430 --> 00:12:39,280 276 00:12:39,280 --> 00:12:39,860 >> وضاحت کریں - 277 00:12:39,860 --> 00:12:41,710 افسوس ہے؟ 278 00:12:41,710 --> 00:12:42,820 ایک متغیر کی قسم کی وضاحت کریں. 279 00:12:42,820 --> 00:12:44,410 تو اس طرح کی. 280 00:12:44,410 --> 00:12:46,180 ہم اصل میں دو موضوعات کو یکجا کر رہے ہیں. 281 00:12:46,180 --> 00:12:49,510 typedef کے ساتھ تو، کہ ہم کر سکتے ہیں یاد ایک کی طرح، ہماری اپنی ایک قسم کا اعلان 282 00:12:49,510 --> 00:12:51,500 * کے لئے چار سٹرنگ کی طرح متبادل،. 283 00:12:51,500 --> 00:12:56,200 لیکن typedef اور struct کا استعمال کرتے ہوئے، ہم کر سکتے ہیں صحیح معنوں میں ہمارے اپنے اعداد و شمار کے ڈھانچے تشکیل دیں. 284 00:12:56,200 --> 00:12:59,600 >> مثال کے طور پر، میں واپس جانا تو gedit میں یہاں صرف ایک لمحے کے لئے، اور میں آگے بڑھو 285 00:12:59,600 --> 00:13:08,230 اور کچھ کی طرح کرتے ہیں، مجھ سے محفوظ کرنے دیں اس کے طور پر، structs.c، کی کہنے دو 286 00:13:08,230 --> 00:13:10,840 عارضی طور پر، میں نے ابھی جا رہا ہوں آگے بڑھو اور شامل کرنے کے لئے 287 00:13:10,840 --> 00:13:14,360 standardio.h، INT اہم صفر. 288 00:13:14,360 --> 00:13:18,960 اور پھر یہاں، میں چاہتا ہوں کہ فرض ذخیرہ ہے کہ ایک پروگرام لکھنے کے لئے 289 00:13:18,960 --> 00:13:21,840 ایک سے زیادہ کی طرف سے ایک سے زیادہ طالب علموں کو گھروں، مثال کے طور پر. 290 00:13:21,840 --> 00:13:24,430 تو یہ ایک registrarial کی طرح ہے کسی قسم کے ڈیٹا بیس. 291 00:13:24,430 --> 00:13:29,550 >> میں نام کے ایک طالب علم کی ضرورت ہے اگر ایسا ہے تو میں ، چار * نام ایسا کچھ ہو سکتا ہے 292 00:13:29,550 --> 00:13:31,570 اور میں ایسا کچھ کروں گا - 293 00:13:31,570 --> 00:13:34,410 اصل میں، کی CS50 لائبریری کو استعمال کرنے دو صرف ایک لمحے کے لئے یہ ایک بنانے کے لئے 294 00:13:34,410 --> 00:13:38,380 تھوڑا آسان، تو ہم قرضے لے سکتا ہوں کوڈ کی لائنوں کی ان درجنوں. 295 00:13:38,380 --> 00:13:39,340 اور لشکر طیبہ صرف یہ آسان رکھنے کے لئے ہے. 296 00:13:39,340 --> 00:13:42,610 ہم نے ہی سٹرنگ کرتے رہیں گے اور اب GetString. 297 00:13:42,610 --> 00:13:47,420 >> تو میں نے نام محفوظ کیا جاتا ہے کہ اب دعوی کچھ طالب علم، اور گھر کے 298 00:13:47,420 --> 00:13:50,240 صرف متغیر کا استعمال کرتے ہوئے کچھ طالب علم، ہم نے کیا اور ہفتے میں سے ایک میں. کی طرح 299 00:13:50,240 --> 00:13:52,370 لیکن اب میں حمایت کرنے کے لئے کرنا چاہتے ہیں لگتا ہے ایک سے زیادہ طالب علموں کو. 300 00:13:52,370 --> 00:13:58,460 ٹھیک ہے، تو میری instincts کرنا ہیں سٹرنگ NAME2، GetString، سٹرنگ ہو جاتا ہے 301 00:13:58,460 --> 00:14:01,370 house2 GetString ہو جاتا ہے. 302 00:14:01,370 --> 00:14:05,850 اور پھر ہماری تیسری طالب علم، NAME3 GetString کرتے ہیں. 303 00:14:05,850 --> 00:14:09,170 >> ٹھیک ہے، تو یہ امید ہے کہ ذکر ہے پاگل کی طرح کے طور پر آپ، 304 00:14:09,170 --> 00:14:11,580 اس عمل کو واقعی کبھی نہیں ہے کیونکہ ختم کرنے کے لئے جا رہے ہیں، اور یہ صرف جا رہا ہے 305 00:14:11,580 --> 00:14:13,130 میرا کوڈ بھی بدتر نظر اور بھی بدتر اور بدتر. 306 00:14:13,130 --> 00:14:14,810 لیکن ہم ہفتے میں دو میں بھی اس کے حل. 307 00:14:14,810 --> 00:14:19,450 ہمارے نسبتا صاف حل کیا تھا ہم کے ایک سے زیادہ متغیر تھا 308 00:14:19,450 --> 00:14:23,580 ایک ہی اعداد و شمار کے تمام متعلقہ رہے ہیں کی قسم، لیکن ہم اس atrocious گندگی نہیں چاہتے تھے 309 00:14:23,580 --> 00:14:26,870 اسی طرح کا نام متغیرات میں سے؟ 310 00:14:26,870 --> 00:14:30,060 ہم بجائے کیا کیا؟ 311 00:14:30,060 --> 00:14:31,260 >> تو میں نے چند ایک مقامات پر سنا لگتا ہے. 312 00:14:31,260 --> 00:14:32,590 ہم ایک سرنی تھا. 313 00:14:32,590 --> 00:14:37,110 تم میں سے ایک سے زیادہ مثال کے طور پر کرنا چاہتے ہیں تو کچھ، ہم کیوں یہ سب صاف نہیں کرتے 314 00:14:37,110 --> 00:14:39,540 اپ اور صرف مجھے دے دیں، کا کہنا ہے کہ سرنی ناموں کو کہا جاتا ہے؟ 315 00:14:39,540 --> 00:14:41,640 >> اور اب کے لئے، کی سخت کوڈ 3 ہیں. 316 00:14:41,640 --> 00:14:44,450 اور پھر مجھے ایک سرنی دے گھروں کہا جاتا ہے، اور اس کے لئے مجھے دو 317 00:14:44,450 --> 00:14:45,800 اب مشکل کوڈ 3. 318 00:14:45,800 --> 00:14:49,220 اور میں بڑے پیمانے پر صاف کر دیا ہے میں نے ابھی پیدا کیا ہے کہ پنگا. 319 00:14:49,220 --> 00:14:52,400 اب، میں اب بھی مشکل 3 کوڈت، لیکن ہے بھی 3 متحرک طور پر کی طرف سے آ سکتا ہے 320 00:14:52,400 --> 00:14:54,350 صارف، یا argv، یا جیسے. 321 00:14:54,350 --> 00:14:55,720 تو یہ پہلے سے ہی صاف ستھرا ہے. 322 00:14:55,720 --> 00:15:00,100 >> لیکن کیا اس کے بارے میں پریشان کن ہے وہ یہ ہے کہ اب، اگرچہ ایک کا نام کسی نہ کسی طرح ہے 323 00:15:00,100 --> 00:15:02,280 بنیادی طور سے منسلک ایک طالب علم کے گھر - 324 00:15:02,280 --> 00:15:04,720 یہ ہے کہ میں واقعی میں ایک طالب علم ہے کی نمائندگی کرنا چاہتے ہیں - 325 00:15:04,720 --> 00:15:08,080 اب میں متوازی ہیں کہ دو arrays ہے وہ لوگ اس معنی میں 326 00:15:08,080 --> 00:15:13,930 ایک ہی سائز، اور ناموں بریکٹ 0 گھروں بریکٹ 0 شاید نقشے، 327 00:15:13,930 --> 00:15:16,600 اور ناموں بریکٹ 1 نقشے گھروں بریکٹ 1. 328 00:15:16,600 --> 00:15:19,280 میں دوسرے الفاظ میں، اس طالب علم کی زندگی اس کے گھر، اور یہ کہ دوسرے طالب علم 329 00:15:19,280 --> 00:15:20,530 دوسرے کے گھر میں رہتا ہے. 330 00:15:20,530 --> 00:15:23,720 لیکن یہ ضرور ہو سکتا ہے اس سے بھی زیادہ cleanly کیا. 331 00:15:23,720 --> 00:15:24,990 >> ٹھیک ہے، یہ کر سکتے ہیں، حقیقت میں. 332 00:15:24,990 --> 00:15:28,730 اور میرے آگے بڑھو اور کھول دیں structs.h اپ، اور تمہیں 333 00:15:28,730 --> 00:15:31,130 یہاں اس خیال دیکھتے ہیں. 334 00:15:31,130 --> 00:15:34,905 آپ کے طور پر، میں typedef کا استعمال کیا ہے کہ نوٹس پہلے اعلان کرنے کے لئے ایک لمحے کے لئے alluded ہماری 335 00:15:34,905 --> 00:15:35,570 خود کے اعداد و شمار کی قسم. 336 00:15:35,570 --> 00:15:39,660 لیکن میں نے بھی اس دوسرے مطلوبہ الفاظ استعمال کر رہا ہوں struct کہا جاتا ہے جس نے مجھے ایک نئی دیتا ہے 337 00:15:39,660 --> 00:15:40,790 آنکڑا ڈھانچہ. 338 00:15:40,790 --> 00:15:43,980 >> اور میں دعوی یہ آنکڑا ڈھانچہ جا رہا ہے کے اندر دو چیزوں کا ہونا 339 00:15:43,980 --> 00:15:47,060 اس - کا نام نامی ایک سٹرنگ، اور گھر نامی ایک سٹرنگ. 340 00:15:47,060 --> 00:15:49,820 اور میں جا رہا ہوں کے نام دینے کے لئے یہ آنکڑا ڈھانچہ جا رہا ہے 341 00:15:49,820 --> 00:15:51,005 طالب علم کو بلایا جائے. 342 00:15:51,005 --> 00:15:54,030 میں نے اس میں جو چاہو کہہ سکتے ہیں لیکن یہ semantically بنانا 343 00:15:54,030 --> 00:15:55,810 میرے دماغ میں میرے لئے محسوس. 344 00:15:55,810 --> 00:15:59,160 >> تو اب، میں ایک بہتر ورژن کھلیں تو پروگرام کی میں نے لکھنا شروع کیا 345 00:15:59,160 --> 00:16:00,390 وہاں، مجھے سب سے اوپر سکرال ہیں. 346 00:16:00,390 --> 00:16:03,190 اور کوڈ کے کچھ مزید لائنیں ہے یہاں، لیکن کے لئے میرے توجہ مرکوز کرتے ہیں 347 00:16:03,190 --> 00:16:04,160 ایک پر پل. 348 00:16:04,160 --> 00:16:07,790 میں نے ایک مسلسل نام نہاد طالب علموں کا اعلان کر دیا ہے اور سخت اب اس کی 3 کوڈت. 349 00:16:07,790 --> 00:16:11,110 لیکن اب، توجہ کس طرح صاف میرا کوڈ حاصل کرنے کے لئے شروع ہوتا ہے. 350 00:16:11,110 --> 00:16:15,030 >> لائن 22 میں، میں اعلان طالب علموں کی سرنی. 351 00:16:15,030 --> 00:16:18,760 اور طالب علم بظاہر یہ ہے کہ نوٹس اب ایک اعداد و شمار کی قسم. 352 00:16:18,760 --> 00:16:23,360 اس فائل کے سب سے اوپر، توجہ کیونکہ میں اس ہیڈر فائل میں شامل کر دیا ہے 353 00:16:23,360 --> 00:16:24,820 میں نے صرف ایک لمحے پہلے نکالا ہے. 354 00:16:24,820 --> 00:16:28,820 اور یہ کہ ہیڈر فائل کافی صرف تھا ایک طالب علم کی اس تعریف. 355 00:16:28,820 --> 00:16:32,470 >> تو اب، میں خود اپنی مرضی کے مطابق ڈیٹا کو تشکیل دے دیا ہے قسم ہے کہ سی سال کے مصنفین 356 00:16:32,470 --> 00:16:33,890 پہلے پیشگی کے بارے میں سوچنا نہیں کیا. 357 00:16:33,890 --> 00:16:34,570 لیکن کوئی مسئلہ نہیں. 358 00:16:34,570 --> 00:16:35,870 میں خود ہی کر سکتے ہیں. 359 00:16:35,870 --> 00:16:39,050 تو یہ، طالب علموں سے ملاقات کی ایک سرنی ہے جس کے ارکان میں سے ہر ایک 360 00:16:39,050 --> 00:16:41,100 ایک طالب علم کی ساخت ہے. 361 00:16:41,100 --> 00:16:44,270 اور میں ان کے تین کرنا چاہتے ہیں سرنی میں. 362 00:16:44,270 --> 00:16:46,030 >> اور اب، باقی کیا ہے اس پروگرام کے ہیں؟ 363 00:16:46,030 --> 00:16:47,550 میں نے ایک چھوٹی سی صوابدیدی کچھ کی ضرورت ہے. 364 00:16:47,550 --> 00:16:51,450 اس لیے آن لائن 24 سے آگے، میں 0 سے 3 iterate. 365 00:16:51,450 --> 00:16:54,000 میں اس وقت کے لئے صارف سے پوچھو طالب علم کے نام. 366 00:16:54,000 --> 00:16:56,110 اور پھر میں نے پہلے کی طرح GetString استعمال کرتے ہیں. 367 00:16:56,110 --> 00:16:59,410 پھر میں، طالب علم کے گھر کے لئے سے دعا گو ہیں اور میں پہلے کی طرح GetString استعمال کرتے ہیں. 368 00:16:59,410 --> 00:17:01,780 >> لیکن نوٹس - تھوڑا سا نیا نحو کا ٹکڑا - 369 00:17:01,780 --> 00:17:07,010 مجھے-ویں طالب علم اب بھی انڈیکس کر سکتے ہیں لیکن میں مخصوص اعداد و شمار پر کس طرح حاصل کروں 370 00:17:07,010 --> 00:17:08,354 struct کے میدان کے اندر؟ 371 00:17:08,354 --> 00:17:11,770 ٹھیک ہے، بظاہر کیا ہے نئے نحو کا ٹکڑا؟ 372 00:17:11,770 --> 00:17:13,339 یہ صرف ڈاٹ آپریٹر ہے. 373 00:17:13,339 --> 00:17:14,510 >> ہم واقعی اس سے پہلے نہیں دیکھا. 374 00:17:14,510 --> 00:17:17,819 آپ نے تو آپ pset پانچ میں دیکھا ہے بٹ نقشہ فائلوں کے ساتھ پہلے سے ہی میں dived. 375 00:17:17,819 --> 00:17:22,372 لیکن نقطہ صرف اس کے اندر کا مطلب struct یا ایک سے زیادہ شعبوں، ڈوٹ دے 376 00:17:22,372 --> 00:17:24,510 نام، یا مجھے ڈاٹ گھر دے. 377 00:17:24,510 --> 00:17:28,690 struct کے اندر جانے کا مطلب ہے کہ اور ان شعبوں خاص طور پر ملتا ہے. 378 00:17:28,690 --> 00:17:30,200 >> اس پروگرام کے باقی کیا کرتا ہے؟ 379 00:17:30,200 --> 00:17:31,190 یہ سب کہ سیکسی نہیں ہے. 380 00:17:31,190 --> 00:17:34,640 میں دوبارہ 0 سے 3 iterate کہ نوٹس اور میں صرف ایک انگریزی تشکیل 381 00:17:34,640 --> 00:17:40,500 فلاں کی طرح اس طرح کے جملے اور میں ہے کی طرف سے نقطہ کے نام میں گزر ایسے گھر، 382 00:17:40,500 --> 00:17:43,320 I-ویں طالب علم اور ان کے گھر کے طور پر اچھی طرح سے. 383 00:17:43,320 --> 00:17:47,560 >> اور پھر آخر میں، اب ہم حاصل کرنے کے لئے شروع کریں گے ہم اب اس کے بارے میں مقعد، 384 00:17:47,560 --> 00:17:49,580 کیا malloc اور سے واقف دیگر افعال رہے ہیں 385 00:17:49,580 --> 00:17:50,570 یہ سب وقت کر رہا. 386 00:17:50,570 --> 00:17:54,220 میں کیوں دونوں کا نام آزاد کرنا ہے اور گھر، اگرچہ میں 387 00:17:54,220 --> 00:17:56,960 malloc فون نہیں کیا؟ 388 00:17:56,960 --> 00:17:58,020 >> GetString کیا. 389 00:17:58,020 --> 00:18:00,930 اور اس کے لئے گندی چھوٹے سے رہسی تھا کئی ہفتوں، لیکن GetString ہے 390 00:18:00,930 --> 00:18:03,530 سب سے زیادہ میموری لیک کر دیا گیا ابھی تک تمام سمسٹر رکھیں. 391 00:18:03,530 --> 00:18:05,990 اور valgrand آخر میں کرے گا ہمیں یہ ظاہر. 392 00:18:05,990 --> 00:18:10,730 >> کیونکہ مجھے پتہ ہے لیکن یہ ایک بڑا سودا نہیں ہے میں صرف نام کی آزاد کر سکتا ہے 393 00:18:10,730 --> 00:18:15,750 اور گھر، اگرچہ تکنیکی طور پر، پر سپر، سپر محفوظ، میں ہونا چاہئے 394 00:18:15,750 --> 00:18:17,890 کچھ غلطی کر یہاں کی جانچ پڑتال. 395 00:18:17,890 --> 00:18:19,040 آپ instincts آپ کیا کہہ رہے ہو؟ 396 00:18:19,040 --> 00:18:22,480 میں کی جانچ پڑتال کے لئے کیا جانا چاہئے میں نے کیا ہے اس سے پہلے آزاد 397 00:18:22,480 --> 00:18:25,470 سٹرنگ، ارف جو چار *؟ 398 00:18:25,470 --> 00:18:33,460 >> مجھے سچ میں کی جانچ پڑتال کی جانی چاہئے اگر طالب علموں کو بریکٹ میں ڈاٹ نام نہیں کرتا 399 00:18:33,460 --> 00:18:34,840 برابر، اتارنا null. 400 00:18:34,840 --> 00:18:40,400 اس وقت یہ آگے اور مفت جانے کے لئے ٹھیک ہو جائے گا کہ پوئینٹر، اور ایک ہی یا دوسرے 401 00:18:40,400 --> 00:18:41,160 ایک کے طور پر اچھی طرح سے. 402 00:18:41,160 --> 00:18:46,860 طالب علموں کو بریکٹ میں ڈاٹ گھر نہیں ہے تو شہوت انگیز null کے برابر ہے، یہ اب کی حفاظت کریں گے 403 00:18:46,860 --> 00:18:52,520 کونے کیس کے خلاف ہے جس میں GetString اتارنا null کچھ اس طرح واپس. 404 00:18:52,520 --> 00:18:57,310 اور ہم نے printf گا، ایک لمحے پہلے دیکھا صرف کہہ کر ہمیں یہاں اپ کی حفاظت 405 00:18:57,310 --> 00:18:58,990 شہوت انگیز null، جو عجیب دیکھ بھال کے لئے جا رہا ہے. 406 00:18:58,990 --> 00:19:02,340 لیکن کم سے کم یہ segfault نہیں رکھا جائے ہم نے دیکھا کے طور پر. 407 00:19:02,340 --> 00:19:05,990 >> ٹھیک ہے، مجھے یہاں ایک دوسرے کام کرتے ہیں. structs-0 پاگل پروگرام کی قسم ہے 408 00:19:05,990 --> 00:19:09,700 پھر میں اس سب کے اعداد و شمار میں داخل، اور اس کی وجہ پروگرام ختم ہوتا ہے ایک بار اسے کھو دیا ہے. 409 00:19:09,700 --> 00:19:10,940 لیکن میرے آگے بڑھو اور اس کے کرتے ہیں. 410 00:19:10,940 --> 00:19:12,830 مجھے ٹرمینل کرنے دو تھوڑا بڑا ونڈو. 411 00:19:12,830 --> 00:19:17,000 ، مجھے structs-1 کرنے دو جو اس کا ایک نیا ورژن ہے. 412 00:19:17,000 --> 00:19:18,520 >> میں نے تھوڑا سا میں زوم کریں گے. 413 00:19:18,520 --> 00:19:21,620 اور اب مجھے ڈاٹ چلانے دو structs-1 سلیش. 414 00:19:21,620 --> 00:19:22,590 طالب علم کے نام - 415 00:19:22,590 --> 00:19:31,500 ڈیوڈ Mather،، روب Kirkland کے کرتے ہیں لارین Leverett کرتے ہیں. 416 00:19:31,500 --> 00:19:33,650 کیا دلچسپ ہے اب نوٹس ہے - 417 00:19:33,650 --> 00:19:35,540 اور میں نے صرف اس کی وجہ سے جانتے ہیں میں نے پروگرام لکھا تھا - 418 00:19:35,540 --> 00:19:38,930 ایک فائل اپنے موجودہ پر اب نہیں ہے ڈائریکٹری students.csv ملاقات کی. 419 00:19:38,930 --> 00:19:40,420 تم میں سے کچھ دیکھا ہے ہو سکتا ہے حقیقی دنیا میں ان. 420 00:19:40,420 --> 00:19:42,980 >> CSV فائل کیا ہے؟ 421 00:19:42,980 --> 00:19:44,170 اقدار کی علامت سے علیحدہ. 422 00:19:44,170 --> 00:19:46,670 یہ ایک غریب آدمی کی طرح طرح کی ہے ایک ایکسل فائل کے ورژن. 423 00:19:46,670 --> 00:19:50,580 یہ قطاروں اور کالموں کا ایک جدول ہے آپ، ایکسل کی طرح ایک پروگرام میں کھول سکتے ہیں 424 00:19:50,580 --> 00:19:51,800 ایک میک پر یا نمبر. 425 00:19:51,800 --> 00:19:55,180 >> اور میں gedit پر یہاں اس فائل کو کھولنے، اگر نوٹس - اور اعداد وہاں نہیں ہیں. 426 00:19:55,180 --> 00:19:57,360 یہ صرف کہہ gedit ہے مجھے لائن نمبرز. 427 00:19:57,360 --> 00:19:59,740 اس کی پہلی لائن پر نوٹس فائل داؤد اور Mather ہے. 428 00:19:59,740 --> 00:20:01,450 اگلی لائن روب کوما Kirkland کے ہے. 429 00:20:01,450 --> 00:20:04,170 اور تیسری لائن لارین ہے کوما Leverett. 430 00:20:04,170 --> 00:20:05,480 >> تو میں کیا پیدا کیا ہے؟ 431 00:20:05,480 --> 00:20:09,580 میں اب ایک سی پروگرام لکھا ہے کہ مؤثر طریقے سے سپریڈ شیٹ پیدا کر سکتے ہیں 432 00:20:09,580 --> 00:20:11,840 ایک میں کھولی جا سکتا ہے ایکسل جیسے پروگرام. 433 00:20:11,840 --> 00:20:15,520 نہیں وہ سب مجبور ایک ڈیٹا سیٹ، لیکن تم میں سے بہت بڑی مقدار ہے تو 434 00:20:15,520 --> 00:20:18,440 آپ اصل میں چاہتے ہیں کہ اعداد و شمار جوڑتوڑ اور گرافس اور بنانے 435 00:20:18,440 --> 00:20:21,260 پسند ہے، یہ شاید ایک ہے کہ اعداد و شمار تخلیق کرنے کے لئے طریقہ. 436 00:20:21,260 --> 00:20:25,370 اس کے علاوہ، CSVs عام اصل سپر ہیں صرف سادہ ڈیٹا محفوظ کرنے کے لئے - 437 00:20:25,370 --> 00:20:28,940 Yahoo کے خزانہ، مثال کے طور پر، آپ کو ملتا ہے تو ان نام نہاد کے ذریعے اسٹاک کی قیمتیں 438 00:20:28,940 --> 00:20:33,180 API، آپ کو اجازت دیتا ہے کہ مفت سروس موجودہ اپ ڈیٹ اسٹاک حاصل 439 00:20:33,180 --> 00:20:35,650 کمپنیوں کے لئے کی قیمت درج کرنے، ان پیٹھ میں اعداد و شمار دے 440 00:20:35,650 --> 00:20:37,800 سپر سادہ CSV شکل. 441 00:20:37,800 --> 00:20:39,380 >> تو ہم کس طرح کیا؟ 442 00:20:39,380 --> 00:20:42,530 ٹھیک ہے، اس پروگرام کی سب سے زیادہ توجہ تقریبا ایک ہی. 443 00:20:42,530 --> 00:20:46,870 لیکن یہاں نیچے نوٹس بجائے پرنٹ کریں لائن 35 پر طالب علموں کو باہر، 444 00:20:46,870 --> 00:20:51,040 مستقبل میں، میں بچا رہا ہوں کا دعوی ہے کہ ڈسک پر طالب علموں کو، تو ایک فائل کی بچت. 445 00:20:51,040 --> 00:20:53,630 >> تو میں نے ایک فائل * اعلان کر رہا ہوں کا نوٹس - 446 00:20:53,630 --> 00:20:57,260 اب، اس سی میں ایک اسنگتی کی قسم ہے جو کچھ بھی وجہ سے، فائل، تمام بڑے حروف ہے 447 00:20:57,260 --> 00:21:00,690 جس میں سب سے زیادہ دیگر اعداد و شمار اقسام کی طرح نہیں ہے سی میں لیکن یہ ہے ایک بلٹ میں 448 00:21:00,690 --> 00:21:02,320 ڈیٹا کی قسم، فائل *. 449 00:21:02,320 --> 00:21:05,900 اور میں، ایک فائل کرنے کے لئے ایک پوائنٹر اعلان کر رہا ہوں آپ اس کے بارے میں سوچ سکتے ہیں. 450 00:21:05,900 --> 00:21:08,070 >> fopen کھلی فائل کا مطلب ہے. 451 00:21:08,070 --> 00:21:09,470 تم نے کیا فائل کو کھولنے کے چاہتے ہیں؟ 452 00:21:09,470 --> 00:21:12,620 میں نے ایک فائل کو کھولنے کے چاہتے ہیں میں کروں گا کہ منمانے students.csv کہتے ہیں. 453 00:21:12,620 --> 00:21:14,480 میں چاہتا ہوں کہ کچھ بھی کہہ سکتے ہیں. 454 00:21:14,480 --> 00:21:15,200 >> اور پھر ایک اندازہ لے. 455 00:21:15,200 --> 00:21:18,960 دوسری دلیل کیا ہے fopen شاید مطلب ہے؟ 456 00:21:18,960 --> 00:21:21,480 ٹھیک ہے، لکھنے کے لئے W، سکتا پڑھنے کے لئے ر ہو. 457 00:21:21,480 --> 00:21:24,120 اگر ایک کے لئے شامل ہے آپ قطار اور نہیں شامل کرنا چاہتے ہیں 458 00:21:24,120 --> 00:21:25,200 پوری بات ادلیکھت. 459 00:21:25,200 --> 00:21:28,005 >> لیکن میں صرف اس فائل کو پیدا کرنے کے لئے چاہتے ہیں ایک بار، تو میں اقتباس unquote W استعمال کریں گے. 460 00:21:28,005 --> 00:21:31,880 اور میں پڑھ کرنے سے صرف یہی جانتے ہیں دستاویزات، یا آدمی کے صفحے. 461 00:21:31,880 --> 00:21:35,100 فائل شہوت انگیز null نہیں ہے تو - دوسرے الفاظ میں، کوئی بات نہیں غلط ہو گیا تو - 462 00:21:35,100 --> 00:21:37,820 مجھ پر iterate دو 0 سے 3 طالب علموں کو. 463 00:21:37,820 --> 00:21:40,410 >> اور اب وہاں کچھ کے نوٹس کبھی تو تھوڑا سا مختلف 464 00:21:40,410 --> 00:21:42,110 یہاں کے بارے میں لائن 41. 465 00:21:42,110 --> 00:21:42,960 یہ printf نہیں ہے. 466 00:21:42,960 --> 00:21:46,530 یہ printf فائل کے لئے fprintf ہے. 467 00:21:46,530 --> 00:21:47,790 تو یہ دائر کرنے کے لکھنے کے لئے جا رہی ہے. 468 00:21:47,790 --> 00:21:48,860 کون سی فائل؟ 469 00:21:48,860 --> 00:21:53,630 جن پوائنٹر آپ کی وضاحت ایک پہلی دلیل کے طور پر. 470 00:21:53,630 --> 00:21:55,940 >> پھر ہم ایک کی شکل سٹرنگ کی وضاحت. 471 00:21:55,940 --> 00:21:59,660 اس کے بعد ہم چاہتے ہیں سٹرنگ کی وضاحت پہلی فیصد کے لئے میں پلگ، اور 472 00:21:59,660 --> 00:22:04,320 پھر ایک اور متغیر یا دوسری فیصد ے. 473 00:22:04,320 --> 00:22:06,760 پھر ہم fclose کے ساتھ فائل بند. 474 00:22:06,760 --> 00:22:09,380 میں اگرچہ اس سے پہلے کے طور پر میموری آزاد سے زیادہ میں واپس جا کر شامل کرنا چاہئے 475 00:22:09,380 --> 00:22:10,540 شہوت انگیز null لئے کچھ چیک. 476 00:22:10,540 --> 00:22:12,090 >> اور بس. 477 00:22:12,090 --> 00:22:16,960 fopen، fprintf، fclose مجھے دیتا ہے متن فائلوں کی تخلیق کرنے کی صلاحیت. 478 00:22:16,960 --> 00:22:19,640 اب، تم، مسئلہ سیٹ پانچ میں نظر آئیں گے تصاویر شامل ہیں، جو آپ کو استعمال کرتے ہوئے کی جائے گی 479 00:22:19,640 --> 00:22:20,990 بائنری فائلوں کی بجائے. 480 00:22:20,990 --> 00:22:24,200 لیکن بنیادی طور پر، خیال، ایک ہی ہے اگرچہ تمہیں افعال 481 00:22:24,200 --> 00:22:28,710 تھوڑا سا مختلف ہیں دیکھتے ہیں. 482 00:22:28,710 --> 00:22:32,580 >> بونڈر دورے تو، لیکن آپ کو مل جائے گا فائل کے ساتھ سب بھی واقف I/O-- 483 00:22:32,580 --> 00:22:34,960 ان پٹ اور آؤٹ پٹ - pset پانچ کے ساتھ. 484 00:22:34,960 --> 00:22:38,607 اور کے بارے میں کوئی سوالات یہاں ابتدائی مبادیات؟ 485 00:22:38,607 --> 00:22:39,857 جی ہاں؟ 486 00:22:39,857 --> 00:22:41,880 487 00:22:41,880 --> 00:22:43,710 >> کیا آپ کو ایک شہوت انگیز null قیمت آزاد کرنے کی کوشش کریں تو کیا ہوگا؟ 488 00:22:43,710 --> 00:22:48,880 مفت ایک ہو گیا ہے جب تک کہ میں یقین رکھتے ہیں تھوڑا زیادہ صارف دوست، آپ کر سکتے ہیں 489 00:22:48,880 --> 00:22:49,890 ممکنہ طور پر segfault. 490 00:22:49,890 --> 00:22:54,160 میں نہیں کرتا کیونکہ یہ شہوت انگیز null پاسنگ خراب ہے مفت یقین رکھتے ہیں، آپ کے لئے چیک کرنے کے لئے پریشان 491 00:22:54,160 --> 00:22:57,330 یہ ممکنہ طور پر ضائع ہو جائے گا کیونکہ اس کے لئے خود کو ایسا کرنے کے لئے وقت کی 492 00:22:57,330 --> 00:22:59,022 دنیا میں سب. 493 00:22:59,022 --> 00:23:00,590 اچھا سوال ہے، اگرچہ. 494 00:23:00,590 --> 00:23:04,300 >> ٹھیک ہے، اس طرح کا ہو جاتا ہے تو ہمیں ایک دلچسپ موضوع ہے. 495 00:23:04,300 --> 00:23:07,010 مسئلہ سیٹ کی مرکزی خیال، موضوع پانچ عدالتی ہے. 496 00:23:07,010 --> 00:23:08,420 کم سے کم اس ایک حصہ ہے مسئلہ سیٹ کی. 497 00:23:08,420 --> 00:23:12,030 عدالتی عام طور سے مراد کہ ہو سکتا ہے یا معلومات کی وصولی 498 00:23:12,030 --> 00:23:14,110 خارج کر دیا گیا ہے نہیں کر سکتے ہیں جان بوجھ کر. 499 00:23:14,110 --> 00:23:18,680 اور اس طرح میں آپ کو ایک فوری دے سوچا کیا ذائقہ واقعی سب پر جا رہا ہے 500 00:23:18,680 --> 00:23:21,230 نیچے اس وقت آپ کے کمپیوٹر کے ہڈ. 501 00:23:21,230 --> 00:23:23,960 >> مثال کے طور پر، آپ اندر ہیں تو آپ کی لیپ ٹاپ یا ڈیسک ٹاپ کمپیوٹر میں ایک 502 00:23:23,960 --> 00:23:28,040 ہارڈ ڈرائیو، یہ یا تو ایک میکانی ہے اصل میں گھماؤ کہ آلہ - 503 00:23:28,040 --> 00:23:31,650 تالی بلایا سرکلر چیزیں ہے کافی ہے کہ کس طرح نظر آتے میں 504 00:23:31,650 --> 00:23:34,540 صرف اگرچہ یہاں کی سکرین پر اپ تھا اس تیزی سے پرانے اسکول ہے. 505 00:23:34,540 --> 00:23:37,370 یہ ایک تین اور ساڑھے انچ ہے ہارڈ ڈرائیو. 506 00:23:37,370 --> 00:23:40,070 اور ساڑھے تین انچ کی مراد اگر آپ اسے انسٹال جب چیز کے ساتھ 507 00:23:40,070 --> 00:23:40,890 ایک کمپیوٹر میں. 508 00:23:40,890 --> 00:23:44,890 >> اب آپ اپنے لیپ ٹاپ میں آپ میں سے بہت سے لوگ ، ٹھوس ریاست ڈرائیوز، یا SSDs ہے 509 00:23:44,890 --> 00:23:46,260 جو حصوں میں منتقل نہیں ہے. 510 00:23:46,260 --> 00:23:49,170 انہوں نے رام کی طرح زیادہ سے کم کی طرح ہو ان میکانی آلات. 511 00:23:49,170 --> 00:23:51,450 لیکن خیالات، اب بھی ایک جیسے ہیں یقینی طور پر وہ تعلق کے طور پر 512 00:23:51,450 --> 00:23:52,790 مسئلہ پانچ قائم کرنے کے لئے. 513 00:23:52,790 --> 00:23:57,400 >> اور آپ کو ایک کی ہارڈ ڈرائیو اب کے بارے میں سوچتے ہیں تو جس میں ایک دائرے کی مانند، کیا جا رہا ہے کی نمائندگی کرتا ہے 514 00:23:57,400 --> 00:23:58,930 میں یہاں اس طرح اپنی طرف متوجہ کریں گے. 515 00:23:58,930 --> 00:24:02,290 آپ کو آپ کے کمپیوٹر پر ایک فائل تخلیق کریں تو یہ ایک SSD ہے، یا چاہے وہ 516 00:24:02,290 --> 00:24:06,610 اس کیس، ایک پرانے اسکول کی ہارڈ ڈرائیو، وہ فائل ایک سے زیادہ بٹس پر مشتمل ہے. 517 00:24:06,610 --> 00:24:10,510 کی یہ 0 اور 1 ہے کہنے دو، 0s اور 1s کے پورے گچرچھی. 518 00:24:10,510 --> 00:24:11,660 تو اس نے اپنی پوری ہارڈ ڈرائیو ہے. 519 00:24:11,660 --> 00:24:13,225 یہ بظاہر بہت بڑا فائل ہے. 520 00:24:13,225 --> 00:24:18,080 اور یہ کہ میں 0s اور 1s کو استعمال کر رہا ہے جسمانی تالی کے حصے. 521 00:24:18,080 --> 00:24:19,750 >> ٹھیک ہے، کہ جسمانی حصہ کیا ہے؟ 522 00:24:19,750 --> 00:24:25,310 ٹھیک ہے، یہ ایک ہارڈ ڈرائیو پر کہ باہر کر دیتا ہے اس قسم کے کم از کم، وہاں ہے 523 00:24:25,310 --> 00:24:27,340 ان چھوٹی چھوٹی سی مقناطیسی ذرات. 524 00:24:27,340 --> 00:24:32,630 اور وہ بنیادی طور پر شمال میں ہے اور ان کے جنوب کے کھمبے، تاکہ اگر آپ 525 00:24:32,630 --> 00:24:35,710 ان مقناطیسی ذرات میں سے ایک کی باری اس طرح، آپ کو یہ کہنا ہے کہ ہو سکتا ہے 526 00:24:35,710 --> 00:24:36,720 ایک 1 کی نمائندگی. 527 00:24:36,720 --> 00:24:39,340 اور یہ الٹا جنوب میں ہو تو شمال میں، آپ یہ کہتے ہیں کہ ہو سکتا ہے 528 00:24:39,340 --> 00:24:40,390 ایک 0 کی نمائندگی. 529 00:24:40,390 --> 00:24:43,660 >> لہذا حقیقی جسمانی دنیا میں، کہ ہے اگر آپ میں کچھ کی نمائندگی کرتے ہیں کس طرح 530 00:24:43,660 --> 00:24:45,670 بائنری 0 کی ریاست اور ایک 1. 531 00:24:45,670 --> 00:24:46,720 تو یہ سب ایک فائل ہے ہے. 532 00:24:46,720 --> 00:24:49,300 مقناطیسی کے پورے گچرچھی ہے ان کے اس طرح یا ہے کہ ذرات 533 00:24:49,300 --> 00:24:51,920 اس طرح، پیدا پیٹرن کے 0s اور 1s. 534 00:24:51,920 --> 00:24:56,760 >> لیکن یہ آپ کو ایک فائل کو بچانے کے جب باہر کر دیتا ہے کچھ معلومات کو علیحدہ سے بچا لیا ہے. 535 00:24:56,760 --> 00:25:00,000 تو یہ، ایک چھوٹی سی میز ہے ایک ڈائریکٹری، تو بات کرنے کے لئے. 536 00:25:00,000 --> 00:25:05,810 اور میں نے اس کالم کا نام کال کریں گے، اور میں اس کالم کے محل وقوع کو بلاتا ہوں. 537 00:25:05,810 --> 00:25:08,850 >> اور مجھے لگتا ہے، کا کہنا ہے کہ جا رہا ہوں یہ اپنے تجربے کی فہرست ہے. 538 00:25:08,850 --> 00:25:14,050 میرا resume.doc میں محفوظ کیا جاتا ہے محل وقوع، 123 کہتے ہیں. 539 00:25:14,050 --> 00:25:15,390 میں نے ہمیشہ اس نمبر کے لئے جانا. 540 00:25:15,390 --> 00:25:18,810 لیکن صرف پسند کا کہنا ہے کہ یہ کافی RAM میں، آپ کو ایک کی ہارڈ ڈرائیو لے جا سکتے ہیں 541 00:25:18,810 --> 00:25:22,350 کہ ایک گیگا بائٹ یا 200 گیگا بائٹس ہے یا ایک terabyte، اور آپ کر سکتے ہیں 542 00:25:22,350 --> 00:25:23,750 تعداد بائٹس کی تمام. 543 00:25:23,750 --> 00:25:26,480 آپ 8 بٹس کے تمام حصوں تعداد میں کر سکتے ہیں. 544 00:25:26,480 --> 00:25:29,030 >> تو ہم یہ کہیں گے مقام 123 ہے. 545 00:25:29,030 --> 00:25:32,070 تو میری آپریٹنگ کے اس ڈائریکٹری کے اندر نظام یاد ہے کہ میرے 546 00:25:32,070 --> 00:25:34,250 تجربے کی فہرست میں 123 مقام پر ہے. 547 00:25:34,250 --> 00:25:36,850 لیکن یہ جب دلچسپ ہو جاتا ہے آپ کو ایک فائل کو خارج کر دیں. 548 00:25:36,850 --> 00:25:37,820 >> مثال کے طور پر تو - 549 00:25:37,820 --> 00:25:40,790 اور شکر ہے کہ دنیا کے سب سے زیادہ ہے اس پر پکڑا - کیا ہوتا ہے جب 550 00:25:40,790 --> 00:25:45,040 اگر آپ اپنے میک OS ردی کی ٹوکری میں ایک فائل ھیںچیں یا آپ کے ونڈوز ردی ٹوکری؟ 551 00:25:45,040 --> 00:25:48,290 552 00:25:48,290 --> 00:25:50,510 ایسا کرنے کا مقصد کیا ہے؟ 553 00:25:50,510 --> 00:25:53,860 یہ فائل سے چھٹکارا حاصل کرنے کے لئے ظاہر ہے لیکن کیا گھسیٹنے کے ایکٹ کرتا ہے اور 554 00:25:53,860 --> 00:25:57,550 آپ کے ردی کی ٹوکری یا میں گر آپ ردی ٹوکری سے ایک کمپیوٹر پر کرتے ہیں؟ 555 00:25:57,550 --> 00:25:59,230 >> واقعی میں بالکل کچھ بھی نہیں،. 556 00:25:59,230 --> 00:26:00,320 یہ صرف ایک فولڈر کی طرح ہے. 557 00:26:00,320 --> 00:26:01,800 یہ اس بات کا یقین کرنے کے لئے، ایک خاص فولڈر ہے. 558 00:26:01,800 --> 00:26:04,460 لیکن یہ اصل میں فائل کو حذف کرتا ہے؟ 559 00:26:04,460 --> 00:26:06,780 >> نہیں، ٹھیک ہے، کیونکہ آپ شاید میں سے کچھ کی طرح کیا گیا ہے، لات اوہ، تم نے نہیں کیا 560 00:26:06,780 --> 00:26:07,420 ایسا کرنے کا مطلب ہے. 561 00:26:07,420 --> 00:26:09,130 تو آپ ڈبل کلک کریں ردی کی ٹوکری یا ردی ٹوکری. 562 00:26:09,130 --> 00:26:11,630 آپ کے ارد گرد poked ہوں اور تم ٹھیک ہے بس اسے گھسیٹ کی طرف سے فائل 563 00:26:11,630 --> 00:26:12,110 وہاں سے باہر. 564 00:26:12,110 --> 00:26:14,420 تو واضح طور پر، یہ ضروری نہیں ہے اسے خارج کرنے کی. 565 00:26:14,420 --> 00:26:15,990 >> ٹھیک ہے، تم اس سے زیادہ ہوشیار ہیں. 566 00:26:15,990 --> 00:26:18,860 تمہیں پتہ ہے کہ صرف میں گھسیٹنے ردی کی ٹوکری یا ردی ٹوکری مطلب یہ نہیں ہے 567 00:26:18,860 --> 00:26:19,930 آپ کو ردی کی ٹوکری خالی کرنے کی کر رہے ہیں. 568 00:26:19,930 --> 00:26:24,110 تو آپ کو مینو پر جا کر، اور آپ کا کہنا ہے کہ خالی ردی کی ٹوکری یا ردی ٹوکری خالی کریں. 569 00:26:24,110 --> 00:26:25,360 اس کے بعد کیا ہوتا ہے؟ 570 00:26:25,360 --> 00:26:29,070 571 00:26:29,070 --> 00:26:32,530 >> جی ہاں، تو یہ مزید اتنی خارج کر دیا جاتا ہے. 572 00:26:32,530 --> 00:26:37,660 لیکن ہوتا یہ سب ہے. 573 00:26:37,660 --> 00:26:45,350 کمپیوٹر جہاں بھول resume.doc تھا. 574 00:26:45,350 --> 00:26:47,400 >> لیکن بظاہر نہیں بدلا ہے تصویر میں؟ 575 00:26:47,400 --> 00:26:51,390 576 00:26:51,390 --> 00:26:55,570 بٹس، میں دعوی ہے کہ 0s اور 1s ہیں میں سے بعض جسمانی پہلو کی ویب سائٹ پر 577 00:26:55,570 --> 00:26:56,280 ہارڈ ویئر. 578 00:26:56,280 --> 00:26:57,110 وہ وہاں اب بھی ہیں. 579 00:26:57,110 --> 00:26:58,930 یہ صرف کمپیوٹر کی ہے بھلا کیا وہ کر رہے ہیں. 580 00:26:58,930 --> 00:27:03,160 >> تو یہ بنیادی طور پر آزاد ہے فائل کی وہ دوبارہ استعمال کیا جا سکتا ہے تاکہ بٹس. 581 00:27:03,160 --> 00:27:06,940 لیکن آپ کو، زیادہ فائلوں کو پیدا نہیں جب تک اور زیادہ فائلوں، اور زیادہ فائلوں گے 582 00:27:06,940 --> 00:27:12,150 probabilistically، ان 0s اور 1s، ان مقناطیسی ذرات، دوبارہ استعمال ہو جاتے ہیں، 583 00:27:12,150 --> 00:27:16,220 کے لئے الٹا یا دائیں جانب اپ، دیگر فائلیں، 0s اور 1s. 584 00:27:16,220 --> 00:27:17,980 >> تو آپ وقت کے اس ونڈو ہے. 585 00:27:17,980 --> 00:27:19,860 اور یہ امکانات کی نہیں ہے لمبائی، واقعی. 586 00:27:19,860 --> 00:27:22,240 یہ آپ کی مشکل کا سائز پر منحصر ہے ڈرائیو اور کتنے فائلوں کو آپ کے پاس اور 587 00:27:22,240 --> 00:27:23,490 کتنی جلدی آپ نئے بناتے ہیں. 588 00:27:23,490 --> 00:27:27,050 لیکن وقت کے اس ونڈو کے دوران وہاں ہے وہ فائل بالکل بھی ہے جو 589 00:27:27,050 --> 00:27:27,770 وصولی. 590 00:27:27,770 --> 00:27:31,050 >> کیا تم نے کبھی McAfee جیسے پروگراموں کا استعمال کرتے ہیں تو اگر یا نورٹن کی وصولی کے لئے کوشش کرنے کے لئے 591 00:27:31,050 --> 00:27:35,680 اعداد و شمار، وہ کر رہے ہیں سب کے لئے کوشش کر رہی ہے اس نام نہاد ڈائریکٹری کی وصولی 592 00:27:35,680 --> 00:27:37,340 آپ کی فائل کہاں تھی پتہ. 593 00:27:37,340 --> 00:27:40,605 اور کبھی کبھی نورٹن اور کہیں گے فائل 93٪ وصولی ہے. 594 00:27:40,605 --> 00:27:42,020 ٹھیک ہے، اس کا کیا مطلب ہے؟ 595 00:27:42,020 --> 00:27:45,690 صرف اس کا مطلب ہے کہ کسی اور فائل اتفاق، کا کہنا ہے کہ، کا استعمال کرتے ہوئے ختم 596 00:27:45,690 --> 00:27:48,920 آپ کی اصل فائل سے باہر ان بٹس. 597 00:27:48,920 --> 00:27:51,950 >> تو اصل میں کیا شامل ہے ڈیٹا کی وصولی میں؟ 598 00:27:51,950 --> 00:27:55,720 ٹھیک ہے، اگر آپ کی طرح کچھ نہیں ہے تو نورٹن، آپ کے کمپیوٹر پر پہلے سے نصب 599 00:27:55,720 --> 00:27:59,510 اگر آپ کبھی کبھی کر سکتے ہیں سب سے اچھی لگتی ہے پوری ہارڈ ڈرائیو کے لئے تلاش میں 600 00:27:59,510 --> 00:28:00,510 بٹس کے پیٹرن. 601 00:28:00,510 --> 00:28:05,350 اور مسئلہ سیٹ کے موضوعات کے حوالے سے ایک پانچ آپ کو تلاش کرے گا یہ ہے کہ 602 00:28:05,350 --> 00:28:09,570 ایک ہارڈ ڈرائیو کے مساوی ہے، ایک فارنسک ایک کی طرف سے ایک کامپیکٹ فلیش کارڈ کی تصویر 603 00:28:09,570 --> 00:28:13,660 0s کے لئے تلاش ڈیجیٹل کیمرے، اعلی کے ساتھ ہے کہ عام طور پر اور 1s، 604 00:28:13,660 --> 00:28:16,720 امکان، کی نمائندگی کرتے ہیں ایک JPEG تصویر کے شروع. 605 00:28:16,720 --> 00:28:21,120 >> اور تم لوگوں کی طرف سے ان تصاویر کی وصولی کر سکتے ہیں میں اس پیٹرن دیکھتے ہیں، تو سنبھالنے 606 00:28:21,120 --> 00:28:24,380 فارنسک تصویر پر بٹس، کے ساتھ پرتیک ہے کہ اعلی امکان، 607 00:28:24,380 --> 00:28:25,650 ایک JPEG کے آغاز. 608 00:28:25,650 --> 00:28:29,520 اور میں پھر سے اسی پیٹرن دیکھتے ہیں، تو کہ شاید کے آغاز کے نشان 609 00:28:29,520 --> 00:28:32,440 ایک اور JPEG، اور دوسرے JPEG، اور ایک JPEG. 610 00:28:32,440 --> 00:28:34,970 اور یہ عام طور پر کس طرح ہے اعداد و شمار وصولی کے کام کرے گا. 611 00:28:34,970 --> 00:28:37,870 کیا JPEGs کے بارے میں اچھی بات ہے اگرچہ ہے فائل کی شکل خود کو کسی حد تک ہے 612 00:28:37,870 --> 00:28:44,400 ہر اس طرح کے پیچیدہ، آغاز فائل اصل میں منصفانہ طور پر قابل شناخت ہے 613 00:28:44,400 --> 00:28:47,370 ، آپ دیکھیں گے کے طور پر، اور سادہ اگر آپ پہلے ہی نہیں ہے تو. 614 00:28:47,370 --> 00:28:50,270 >> تو کی کے نیچے ایک دوسرے کے قریب دیکھنے دو رہا ہے بالکل وہی جو کے طور پر ڈاکو 615 00:28:50,270 --> 00:28:53,360 چل رہا ہے، اور ان 0s اور 1s کیا آپ کو ایک تھوڑا سا زیادہ دینے کے لئے ہیں، 616 00:28:53,360 --> 00:28:55,330 یہ خاص طور سے چیلنج کے لئے سیاق و سباق. 617 00:28:55,330 --> 00:28:55,510 >> [ویڈیو پلے بیک] 618 00:28:55,510 --> 00:28:58,700 >> آپ کے کمپیوٹر کے سب سے زیادہ ذخیرہ-کہاں اس کے مستقل ڈیٹا کی. 619 00:28:58,700 --> 00:29:03,390 ایسا کرنے کے لئے، اعداد و شمار کے رام سے سفر بتا کہ سگنل سافٹ ویئر کے ساتھ ساتھ 620 00:29:03,390 --> 00:29:06,110 کس طرح ہے کہ اعداد و شمار کے ذخیرہ کرنے کے لئے ہارڈ ڈرائیو. 621 00:29:06,110 --> 00:29:09,410 ہارڈ ڈرائیو سرکٹس ترجمہ وولٹیج میں ان لوگوں سگنل 622 00:29:09,410 --> 00:29:10,870 اتار چڑھاو. 623 00:29:10,870 --> 00:29:14,970 یہ، کے نتیجے میں، ہارڈ ڈرائیو کے کنٹرول منتقل حصوں، چند میں سے کچھ 624 00:29:14,970 --> 00:29:17,910 میں چھوڑ منتقل حصوں جدید کمپیوٹر. 625 00:29:17,910 --> 00:29:22,130 >> سگنل میں سے کچھ ایک موٹر کنٹرول جس دھاتی لیپت تالی گھماؤ. 626 00:29:22,130 --> 00:29:25,470 آپ کا ڈیٹا اصل میں محفوظ کیا جاتا ہے ان تالی پر. 627 00:29:25,470 --> 00:29:28,610 دیگر سگنل پڑھنا / لکھنا منتقل پڑھنے یا سر 628 00:29:28,610 --> 00:29:30,710 تالی پر ڈیٹا لکھتے ہیں. 629 00:29:30,710 --> 00:29:35,450 یہ مشینری تاکہ عین مطابق ایک انسان ہے کہ بالوں کے درمیان بھی پاس نہیں کر سکتے ہیں 630 00:29:35,450 --> 00:29:37,280 سر اور کتائی تالی. 631 00:29:37,280 --> 00:29:40,316 پھر بھی، یہ سب لاجواب رفتار پر کام کرتا ہے. 632 00:29:40,316 --> 00:29:40,660 >> [END ویڈیو پلے بیک] 633 00:29:40,660 --> 00:29:42,190 >> DAVID MALAN: ایک چھوٹی سی میں زوم گہرے اب کیا ہے میں 634 00:29:42,190 --> 00:29:44,360 اصل میں ان لوگوں کو تالی پر. 635 00:29:44,360 --> 00:29:44,720 >> [ویڈیو پلے بیک] 636 00:29:44,720 --> 00:29:47,660 >> کی نظر کرتے ہیں کیا ہم صرف میں سست رفتار سے دیکھا. 637 00:29:47,660 --> 00:29:51,710 بجلی کی ایک مختصر پلس ہے جب flips، اگر پڑھنا / لکھنا سر کرنے کے لئے بھیجا 638 00:29:51,710 --> 00:29:54,650 کے لئے ایک چھوٹا سا برقی پر ایک سیکنڈ کا ایک حصہ. 639 00:29:54,650 --> 00:29:58,970 مقناطیس جو ایک فیلڈ، تخلیق تبدیلیاں ایک چھوٹے، چھوٹے کی polarity 640 00:29:58,970 --> 00:30:02,850 دھات کے ذرات کی حصہ جو کوٹ ہر تالی سطح. 641 00:30:02,850 --> 00:30:05,940 >> ان چھوٹے کی ایک پیٹرن سیریز، ڈسک پر الزام عائد کیا اپ علاقوں 642 00:30:05,940 --> 00:30:08,470 کے ایک بٹ کی نمائندگی کرتا ہے بائنری تعداد میں اعداد و شمار 643 00:30:08,470 --> 00:30:10,530 کمپیوٹرز کی طرف سے استعمال کے نظام. 644 00:30:10,530 --> 00:30:13,775 اب، موجودہ بھیجا جاتا ہے تو ایک ہی راستہ پڑھنے کے ذریعے /، علاقے سر لکھنا 645 00:30:13,775 --> 00:30:15,970 ایک سمت میں پولرائزڈ ہے. 646 00:30:15,970 --> 00:30:17,950 موجودہ میں بھیجا جاتا ہے تو مخالف سمت، 647 00:30:17,950 --> 00:30:19,930 بروویکرن الٹ ہے. 648 00:30:19,930 --> 00:30:22,370 >> اگر آپ ہارڈ ڈسک بند معلومات حاصل کس طرح؟ 649 00:30:22,370 --> 00:30:24,090 صرف عمل کو الٹا. 650 00:30:24,090 --> 00:30:26,550 تو یہ ڈسک پر ذرات ہے کہ میں موجودہ حاصل 651 00:30:26,550 --> 00:30:27,960 سر منتقل پڑھنا / لکھنا. 652 00:30:27,960 --> 00:30:30,700 ان میں سے لاکھوں افراد کو ایک ساتھ رکھ دو چمبکیی طبقوں، اور 653 00:30:30,700 --> 00:30:32,160 آپ کو ایک فائل میں مل گیا ہے. 654 00:30:32,160 --> 00:30:36,060 >> اب، ایک فائل کے ٹکڑے کر سکتے ہیں سب ایک ڈرائیو کی میں بکھری جائے 655 00:30:36,060 --> 00:30:39,970 گندگی کی طرح قسم کی تالی، اپنی میز پر کاغذات کی. 656 00:30:39,970 --> 00:30:43,500 تو ایک خصوصی اضافی فائل کے ٹریک رکھتا ہے سب کچھ ہے جہاں. 657 00:30:43,500 --> 00:30:45,985 تم پڑا نہیں کرنا چاہتے کچھ اس طرح؟ 658 00:30:45,985 --> 00:30:46,470 >> [END ویڈیو پلے بیک] 659 00:30:46,470 --> 00:30:47,820 >> DAVID MALAN: ٹھیک ہے، شاید نہیں. 660 00:30:47,820 --> 00:30:52,070 تو تم کس طرح کے بہت سے لوگ ان کے ساتھ پلا بڑھا؟ 661 00:30:52,070 --> 00:30:53,970 ٹھیک ہے، تو یہ کم اور کم ہے ہاتھوں ہر سال. 662 00:30:53,970 --> 00:30:56,550 لیکن میں آپ کو کم از کم واقف ہیں خوش ہوں ان کے ساتھ، اس کی وجہ سے اور ہمارے اپنے 663 00:30:56,550 --> 00:31:00,520 کتاب کی ڈیمو، دکھ کی بات ہے، ایک بہت ہی مر رہے ہیں واقف یہاں موت سست. 664 00:31:00,520 --> 00:31:04,010 >> لیکن یہ کم از کم، پیٹھ میں، کیا میں ہے ہائی اسکول، بیک اپ کے لئے استعمال کیا استعمال. 665 00:31:04,010 --> 00:31:08,110 اور یہ حیرت انگیز تھا، کیونکہ آپ پر 1.4 میگا بائٹس کی دکان کر سکتے ہیں 666 00:31:08,110 --> 00:31:08,930 یہ خاص طور پر ڈسک. 667 00:31:08,930 --> 00:31:12,260 اور یہ، اعلی کثافت ورژن تھا کے طور پر ہے جس میں ایچ ڈی، دلالت 668 00:31:12,260 --> 00:31:14,240 آج کی HD ویڈیوز سے پہلے کا مطلب ہے. 669 00:31:14,240 --> 00:31:16,400 >> سٹینڈرڈ کثافت 800 کلو بائٹ تھا. 670 00:31:16,400 --> 00:31:18,640 اور اس سے پہلے، وہاں تھے 400-kilobyte ڈسک. 671 00:31:18,640 --> 00:31:23,120 اور اس سے پہلے، 5 اور 1/4 وہاں تھے واقعی فلاپی تھے جس انچ ڈسک،، 672 00:31:23,120 --> 00:31:25,680 اور تھوڑا وسیع تر اور طویل یہاں ان چیزوں سے بھی زیادہ. 673 00:31:25,680 --> 00:31:29,150 لیکن اگر آپ اصل میں نام نہاد دیکھ سکتے ہیں ان ڈسکوں کی فلاپی پہلو. 674 00:31:29,150 --> 00:31:32,630 >> اور فعل کے، وہ اصل میں ہیں میں کی ہارڈ ڈرائیوز کے لئے اسی طرح کے خوبصورت 675 00:31:32,630 --> 00:31:33,570 کم از کم اس قسم کے. 676 00:31:33,570 --> 00:31:37,270 جدید کمپیوٹر میں ایک بار پھر، SSDs مختلف طریقے سے ایک چھوٹا سا کام کرتے ہیں. 677 00:31:37,270 --> 00:31:41,530 لیکن آپ کو اس چھوٹے دھاتی کے ٹیب پر منتقل کرتے ہیں تو، آپ اصل میں، ایک چھوٹی کوکی دیکھ سکتے ہیں 678 00:31:41,530 --> 00:31:42,560 یا تالی. 679 00:31:42,560 --> 00:31:43,830 >> یہ اس طرح دھات نہیں ہے. 680 00:31:43,830 --> 00:31:46,000 یہ ایک اصل میں کچھ سستا ہے مواد پلاسٹک. 681 00:31:46,000 --> 00:31:46,750 اور تم wiggle یہ ایک طرح سے کر سکتے ہیں. 682 00:31:46,750 --> 00:31:50,310 اور تم trully صرف کچھ ختم کر دیا ہے بٹیں یا مقناطیسی ذرات کی تعداد 683 00:31:50,310 --> 00:31:51,220 اس ڈسک سے. 684 00:31:51,220 --> 00:31:52,710 >> تو شکر ہے کہ اس پر کوئی بات نہیں ہے. 685 00:31:52,710 --> 00:31:55,790 وہ چیز جو راہ میں ہے تو - اور کا احاطہ اپنی آنکھوں اور اپنے پڑوسی کے ان لوگوں کو - 686 00:31:55,790 --> 00:31:58,865 صرف یہ کیسا ھیںچو آپ کر سکتے ہیں اس طرح پورے میان سے دور. 687 00:31:58,865 --> 00:32:01,900 لیکن ایک چھوٹا سا موسم بہار ہے، تو ہو اپنی آنکھوں سے اس کے بارے میں علم. 688 00:32:01,900 --> 00:32:03,620 تو اب اگر آپ واقعی ایک فلاپی ڈسک ہے. 689 00:32:03,620 --> 00:32:07,090 >> اور کیا اس کے بارے میں قابل ذکر ہے یہ ہے کے طور پر اس کے طور پر زیادہ سے زیادہ میں ہے ایک 690 00:32:07,090 --> 00:32:10,830 ایک بڑے سے چھوٹے پیمانے پر نمائندگی ہارڈ ڈرائیو، ان چیزوں کو، سپر ہیں 691 00:32:10,830 --> 00:32:11,590 سپر آسان. 692 00:32:11,590 --> 00:32:15,170 اب آپ کو، اس کے سب سے نیچے چوٹکی تو ہے کہ کہ دھات کی چیز سے دور ہے، اور چھیل 693 00:32:15,170 --> 00:32:20,990 ان کو کھولنے کے، نہیں ہے سب سے دو ٹکڑے ہے محسوس کیا اور نام نہاد فلاپی ڈسک 694 00:32:20,990 --> 00:32:22,930 اندر دھات کا ایک ٹکڑا کے ساتھ. 695 00:32:22,930 --> 00:32:25,990 >> اور کے نصف وہاں جاتا ہے میرے ڈسک کے مواد. 696 00:32:25,990 --> 00:32:27,540 ان میں سے ایک دوسرے نصف آمدید جاتا ہے. 697 00:32:27,540 --> 00:32:31,375 لیکن اس کے اندر کتائی تھا کہ تمام ہے yesteryear میں آپ کے کمپیوٹر کے. 698 00:32:31,375 --> 00:32:35,220 699 00:32:35,220 --> 00:32:38,310 >> اور پھر،، نقطہ نظر میں یہ ڈال کتنا بڑا ہے، آپ کی سب سے زیادہ 700 00:32:38,310 --> 00:32:39,560 مشکل ان دنوں چلتی ہے؟ 701 00:32:39,560 --> 00:32:41,960 702 00:32:41,960 --> 00:32:46,230 500 گیگا بائٹس، ایک terabyte، شاید میں ایک ڈیسک ٹاپ کمپیوٹر، 2 terabytes، 3 703 00:32:46,230 --> 00:32:47,630 terabytes، 4 terabytes، ہے نا؟ 704 00:32:47,630 --> 00:32:52,480 یہ ایک میگا بائٹ ہے،، دے یا لے یہاں تک کہ ایک عام MP3 قابل نہیں کر سکتے ہیں 705 00:32:52,480 --> 00:32:55,310 اب ان دنوں، یا کچھ اسی طرح کی موسیقی فائل. 706 00:32:55,310 --> 00:32:59,500 >> تو ایک چھوٹا سا آپ کے لئے آج سمارکا، اور بھی کیا contextualize مدد کرنے کے لئے 707 00:32:59,500 --> 00:33:03,570 ہم نے حاصل کی جاچکی کے لئے لے جا رہا ہو جائیں گے اب مسئلہ میں پانچ قائم کی. 708 00:33:03,570 --> 00:33:04,820 لہذا ان کو رکھنے کے لئے تمہارے ہیں. 709 00:33:04,820 --> 00:33:07,340 710 00:33:07,340 --> 00:33:13,370 تو ہو جائے گا جہاں مجھے منتقلی دو اگلے pset خرچ کے طور پر اچھی طرح سے. 711 00:33:13,370 --> 00:33:18,470 تو کیا اب ہم اس صفحہ کے لئے مقرر کیا ہے - اوہ، فوری طور پر اعلانات کے ایک جوڑے. 712 00:33:18,470 --> 00:33:21,730 >> یہ جمعہ، اگر آپ چاہیں تو CS50 میں شامل دوپہر کے کھانے کے لئے،، معمول کی جگہ جانا 713 00:33:21,730 --> 00:33:23,610 cs50.net/rsvp. 714 00:33:23,610 --> 00:33:25,100 اور آخری پروجیکٹ - 715 00:33:25,100 --> 00:33:28,520 تو نصاب کے مطابق، ہم نے پوسٹ کیا ہے پہلے سے ہی حتمی منصوبے کی تفصیلات. 716 00:33:28,520 --> 00:33:31,410 مطلب یہ نہیں ہے کہ احساس ہے کہ یہ خاص طور پر جلد ہی وجہ سے ہے. 717 00:33:31,410 --> 00:33:33,990 یہ صرف حاصل کرنے کے لئے، سچ میں، پوسٹ کیا ہے تم لوگوں کو اس کے بارے میں سوچ. 718 00:33:33,990 --> 00:33:37,620 اور یقینا، ایک سپر اہم آپ کی شرح سے نمٹنے کی جائے گی 719 00:33:37,620 --> 00:33:40,780 مواد پر حتمی منصوبوں کہ ہم یہاں تک کہ کلاس میں کرنے کے لئے ہو نہیں کیا ہے، 720 00:33:40,780 --> 00:33:42,730 لیکن کے طور پر ابتدائی طور پر اگلے ہفتے کرے گی. 721 00:33:42,730 --> 00:33:45,530 >> نوٹس تاہم رپورٹ کا مطالبہ ہے کہ کے چند مختلف اجزاء 722 00:33:45,530 --> 00:33:46,190 حتمی منصوبے. 723 00:33:46,190 --> 00:33:49,590 سب سے پہلے، چند ہفتوں میں، ہے پہلے سے تجویز کرنے کے لئے ایک بہت آرام دہ اور پرسکون ای میل 724 00:33:49,590 --> 00:33:52,760 آپ اسے بتانا TF یا تم کیا ہو کے ساتھ، آپ کے منصوبے کے لئے کے بارے میں سوچ 725 00:33:52,760 --> 00:33:53,650 کوئی عزم. 726 00:33:53,650 --> 00:33:56,710 تجویز آپ کی خاص طور پر ہو جائے گا عزم، کہہ، یہاں، یہ کیا ہے 727 00:33:56,710 --> 00:33:57,770 میں اپنے منصوبے کے لئے کرنا چاہتے ہیں. 728 00:33:57,770 --> 00:33:58,250 آپ کو کیا لگتا ہے؟ 729 00:33:58,250 --> 00:33:58,650 بہت بڑی؟ 730 00:33:58,650 --> 00:33:59,145 بہت چھوٹا؟ 731 00:33:59,145 --> 00:34:00,330 یہ انتظام ہے؟ 732 00:34:00,330 --> 00:34:02,230 اور آپ کو مزید تفصیلات کے لئے رپورٹ ملاحظہ کریں. 733 00:34:02,230 --> 00:34:05,060 >> ہفتے کے جوڑے اس کے بعد کا درجہ ہے ایک اسی طرح ہے جس کی رپورٹ، 734 00:34:05,060 --> 00:34:08,260 کس طرح کا کہنا ہے کہ کرنے کے لئے اپنے TF کرنے کے لئے آرام دہ اور پرسکون ای میل آپ کو آپ کے فائنل میں بہت پیچھے ہیں 735 00:34:08,260 --> 00:34:12,360 اس کے بعد منصوبے کے عمل درآمد، CS50 Hackathon جس سے سب کو 736 00:34:12,360 --> 00:34:17,520 دعوت دی ہے، کی طرف سے ایک تقریب ہو گی جس میں 7:00 تک ایک شام 8:00 بجے 737 00:34:17,520 --> 00:34:19,150 اگلی صبح صبح. 738 00:34:19,150 --> 00:34:22,560 میں ہفتے میں نے ذکر کیا ہے ہو سکتا ہے کے طور پر پزا، صفر، wil، 9:00 بجے کی خدمت کی جائے 739 00:34:22,560 --> 00:34:24,120 1:00 میں چینی کھانا AM. 740 00:34:24,120 --> 00:34:27,929 اور تم 5:00 میں ابھی تک جاگ رہے ہیں تو صبح، ہم ناشتا کے لئے IHOP کے لئے آپ کو لے جائیں گے. 741 00:34:27,929 --> 00:34:31,310 >> تو Hackathon زیادہ میں سے ایک ہے کلاس میں یادگار تجربات. 742 00:34:31,310 --> 00:34:35,290 پھر اس پر عمل درآمد کی وجہ سے ہے، اور پھر climactic CS50 میلے. 743 00:34:35,290 --> 00:34:38,070 ان میں سے سب پر مزید تفصیلات ہفتوں میں آنے کے لئے. 744 00:34:38,070 --> 00:34:40,739 >> لیکن کچھ کرنے کے لئے واپس جانے دو پرانے اسکول - 745 00:34:40,739 --> 00:34:41,920 ایک بار پھر، ایک سرنی. 746 00:34:41,920 --> 00:34:45,040 یہ حل کرتی ہے کیونکہ تو ایک سرنی، اچھا تھا ہم جیسے مسائل کا صرف ایک دیکھا 747 00:34:45,040 --> 00:34:49,290 طالب علم کے ڈھانچے کے ساتھ پہلے لمحے قابو سے تھوڑا سا باہر نکل رہا تو ہم 748 00:34:49,290 --> 00:34:52,405 ایک طالب علم، طالب علم دو، کرنا چاہتے ہیں طالب علم، تین تین، طالب علم ڈاٹ ڈاٹ ڈاٹ، 749 00:34:52,405 --> 00:34:54,400 طالب علموں کے کچھ صوابدیدی تعداد. 750 00:34:54,400 --> 00:34:58,850 >> arrays تو، چند ہفتے پہلے، میں swooped اور ہمارے مسائل حل نہیں تمام 751 00:34:58,850 --> 00:35:03,340 پیشگی علم کس طرح بہت سی چیزیں بعض قسم کی ہم چاہتے ہیں کر سکتے ہیں. 752 00:35:03,340 --> 00:35:07,390 اور ہم structs ہماری مدد کر سکتا ہے دیکھا ہے مزید ہمارے کوڈ کو منظم اور برقرار رکھنے کے 753 00:35:07,390 --> 00:35:11,660 ایک طرح conceptually اسی طرح متغیر، نام اور ایک گھر، ایک ساتھ مل کر، تاکہ ہم 754 00:35:11,660 --> 00:35:15,570 اندر ایک ہستی، کے طور پر ان کا علاج کر سکتے ہیں جن میں چھوٹے ٹکڑوں ہیں. 755 00:35:15,570 --> 00:35:17,810 >> لیکن arrays کچھ نقصانات ہیں. 756 00:35:17,810 --> 00:35:19,780 نقصانات میں سے کچھ کیا ہیں ہم کا سامنا کرنا پڑا ہے 757 00:35:19,780 --> 00:35:22,320 arrays کے ساتھ ابھی تک؟ 758 00:35:22,320 --> 00:35:23,450 وہ کیا ہے؟ 759 00:35:23,450 --> 00:35:28,130 فکسڈ سائز - تو تم بھی سکتا ہے اگرچہ ایک میموری کے لئے مختص کرنے کے قابل ہو 760 00:35:28,130 --> 00:35:32,310 سرنی، ایک بار آپ کو معلوم ہے کہ کتنے طالب علموں کو آپ کو آپ کے پاس کتنے حروف ہیں 761 00:35:32,310 --> 00:35:35,460 صارف کی طرف سے، ایک بار آپ کی رقم مختص کی ہے سرنی، آپ کو قسم کی پینٹ ہے 762 00:35:35,460 --> 00:35:36,740 ایک کونے میں اپنے آپ کو. 763 00:35:36,740 --> 00:35:40,600 >> آپ نئے عناصر داخل نہیں کرسکتے ہیں کیونکہ ایک صف کے وسط میں. 764 00:35:40,600 --> 00:35:43,660 آپ مزید عناصر داخل نہیں کرسکتے ہیں ایک صف کے آخر میں. 765 00:35:43,660 --> 00:35:47,750 سچ میں، آپ کو ایک پیدا کرنے پر مائل کرنے کی ضرورت ہم نے بات چیت کی ہے کے طور پر پوری نئی سرنی،، 766 00:35:47,750 --> 00:35:49,320 نئے میں پرانے کاپی. 767 00:35:49,320 --> 00:35:52,610 اور پھر، اس کے سر میں درد ہے آپ کے لئے ساتھ سودے GetString. 768 00:35:52,610 --> 00:35:56,170 >> لیکن پھر، آپ کو بھی داخل نہیں کرسکتے ہیں سرنی کے وسط میں کچھ 769 00:35:56,170 --> 00:35:58,200 شرح مکمل طور پر بھرا ہوا نہیں ہے تو. 770 00:35:58,200 --> 00:36:03,010 مثال کے طور پر، اس سرنی اگر یہاں سائز کی صرف چھ، اس میں پانچ چیزیں ہیں 771 00:36:03,010 --> 00:36:06,080 ساتھ ساتھ، آپ کو صرف سمت سکتا ختم ہونے پر کچھ. 772 00:36:06,080 --> 00:36:08,200 لیکن آپ کو کچھ داخل کرنے کے لیے کیا کرنا چاہتے ہیں تو کے وسط میں 773 00:36:08,200 --> 00:36:11,280 سرنی، یہ ہو سکتا ہے اگرچہ اس میں چھ چیزوں کے پانچ باہر؟ 774 00:36:11,280 --> 00:36:14,250 >> ٹھیک ہے، ہم ہم سب تھا کیا کیا ہمارے انسانی رضاکاروں کی فورم میں 775 00:36:14,250 --> 00:36:15,110 ہفتے کے ماضی؟ 776 00:36:15,110 --> 00:36:18,710 ہم یہاں کسی کو ڈال کرنے کے لئے چاہتا تھا، تو یا تو یہ کس طرح منتقل کرنے کے لئے ان لوگوں کو 777 00:36:18,710 --> 00:36:22,540 راستہ، یا اس کو کس طرح منتقل کرنے کے لئے ان لوگوں کو راستہ، اور یہ کہ مہنگا ہو گیا. 778 00:36:22,540 --> 00:36:26,950 ایک کے اندر لوگوں کی منتقلی سرنی تک کا اضافہ اور لاگت ختم 779 00:36:26,950 --> 00:36:31,240 ہمیں وقت، اس وجہ سے بہت سے ہمارے (ن) کے مربع کے کے لئے، اندراج ترتیب دیں طرح اوقات چلانے 780 00:36:31,240 --> 00:36:32,550 مثال کے طور پر، سب سے خراب صورت میں. 781 00:36:32,550 --> 00:36:36,520 تو arrays عظیم ہیں، لیکن آپ کو کرنا پڑے تم ان سے چاہتے ہیں کتنا بڑا پیشگی جانتے ہیں. 782 00:36:36,520 --> 00:36:38,030 >> تو ٹھیک ہے، یہاں ایک حل ہے. 783 00:36:38,030 --> 00:36:43,860 میں پیشگی نہیں جانتے تو کتنے طالب علموں میں ہو سکتا ہے، اور میں نے ایک بار جانتے 784 00:36:43,860 --> 00:36:47,870 میں فیصلہ، اگرچہ، میں نے اس کے ساتھ پھنس گیا ہوں کیوں میں نے صرف ہمیشہ بہت سے طالب علموں کو نہیں 785 00:36:47,870 --> 00:36:51,740 دو مرتبہ کے طور پر زیادہ سے زیادہ کی جگہ مختص مجھے لگتا ہے کہ ہو سکتا ہے کے طور پر میں نے کی ضرورت ہے؟ 786 00:36:51,740 --> 00:36:54,450 کہ ایک مناسب حل نہیں ہے؟ 787 00:36:54,450 --> 00:36:58,240 >> حقیقت پسندانہ، میں ہم ہیں کہ نہیں لگتا 50 سے زائد دورانیے کی ضرورت پڑے گی 788 00:36:58,240 --> 00:37:02,190 ایک درمیانے سائز کے طبقے کے لئے ایک سرنی میں، تو صرف مہاسرا ہیں. 789 00:37:02,190 --> 00:37:07,040 میں صرف، میری سرنی میں 100 سلاٹ بنا دیں گے تاکہ ہم یقینی طور پر حاصل کر سکتے ہیں 790 00:37:07,040 --> 00:37:10,330 میں کی توقع طلباء کی تعداد کچھ درمیانے سائز کے کلاس میں ہو. 791 00:37:10,330 --> 00:37:14,320 تو کیوں بس چپ گول اور مختص نہیں ایک سرنی کے لئے زیادہ میموری، عام طور پر، 792 00:37:14,320 --> 00:37:16,290 آپ کو بھی ضرورت ہو سکتی ہے لگتا ہے کے مقابلے میں؟ 793 00:37:16,290 --> 00:37:20,190 اس سادہ pushback کیا ہے اس خیال ہے؟ 794 00:37:20,190 --> 00:37:21,440 >> آپ کو صرف میموری برباد کر رہے ہو. 795 00:37:21,440 --> 00:37:25,350 اگر آپ کو لکھنے کے لفظی ہر پروگرام شاید دو بار کے طور پر زیادہ سے زیادہ میموری کے طور پر استعمال کر رہا ہے 796 00:37:25,350 --> 00:37:26,680 آپ کو واقعی ضرورت ہے. 797 00:37:26,680 --> 00:37:28,990 اور صرف ایک کی طرح محسوس نہیں کرتا خاص طور پر مزین حل. 798 00:37:28,990 --> 00:37:31,990 اس کے علاوہ، یہ صرف کمی واقع ہوتی ہے ایک مسئلہ کے امکانات. 799 00:37:31,990 --> 00:37:35,300 اگر آپ کو ایک مقبول کورس ہے ہو تو ایک سمسٹر اور آپ کو 101 ہے 800 00:37:35,300 --> 00:37:39,610 طالب علموں کو، آپ کے پروگرام اب بھی ہے بنیادی طور پر ایک ہی مسئلہ کا سامنا ہے. 801 00:37:39,610 --> 00:37:44,280 >> تو شکر ہے، کرنے کے لئے ایک حل ہے شکل میں اس اشتھار کو اپنے تمام مسائل کو 802 00:37:44,280 --> 00:37:46,790 ہیں کہ اعداد و شمار کے ڈھانچے کی والوں کے مقابلے میں زیادہ پیچیدہ 803 00:37:46,790 --> 00:37:47,970 ہم نے ابھی تک دیکھا ہے. 804 00:37:47,970 --> 00:37:50,530 یہ، میں دعوی کرتے ہیں، ایک سے منسلک فہرست ہے. 805 00:37:50,530 --> 00:37:51,920 یہ اعداد کی ایک فہرست ہے - 806 00:37:51,920 --> 00:37:54,970 9، 17، 22، 26، اور 34 - 807 00:37:54,970 --> 00:38:00,120 راہ کی طرف سے ایک دوسرے کے ساتھ منسلک کر دیا گیا ہے کیا میں تیر کے طور پر تیار کی ہے. 808 00:38:00,120 --> 00:38:03,580 >> دوسرے الفاظ میں، تو میں کی نمائندگی کرنا چاہتا تھا ایک سرنی، میں کر سکتا تھا 809 00:38:03,580 --> 00:38:04,910 کچھ اس طرح. 810 00:38:04,910 --> 00:38:07,310 اور میں زمین کے اوپر پر اس ڈال دیتا ہوں ایک پل میں. 811 00:38:07,310 --> 00:38:09,970 میں کر سکتا - 812 00:38:09,970 --> 00:38:12,520 ہیلو، ٹھیک ہے. 813 00:38:12,520 --> 00:38:14,470 کی طرف سے کھڑے ہو جاؤ. 814 00:38:14,470 --> 00:38:17,360 یہاں نئے کمپیوٹر، واضح - 815 00:38:17,360 --> 00:38:18,090 ٹھیک ہے. 816 00:38:18,090 --> 00:38:21,730 >> تو میں نے صف میں ان کی تعداد ہے تو - 817 00:38:21,730 --> 00:38:28,880 9، 17، 22، 26، 24 - 818 00:38:28,880 --> 00:38:30,530 پیمانے کے ضروری نہیں. 819 00:38:30,530 --> 00:38:33,730 ٹھیک ہے، تو یہاں میری سرنی ہے - 820 00:38:33,730 --> 00:38:34,980 اوہ میرے خدا. 821 00:38:34,980 --> 00:38:38,700 822 00:38:38,700 --> 00:38:40,395 ٹھیک ہے، تو یہاں میری سرنی ہے. 823 00:38:40,395 --> 00:38:44,110 824 00:38:44,110 --> 00:38:45,050 ہے بھگوان. 825 00:38:45,050 --> 00:38:48,820 >> [ہنسی] 826 00:38:48,820 --> 00:38:49,440 >> DAVID MALAN: دکھاوا. 827 00:38:49,440 --> 00:38:52,330 یہ واپس جانے کے لئے بہت زیادہ کوشش کی ہے اور تو وہاں، اس کو ٹھیک - 828 00:38:52,330 --> 00:38:54,290 26. 829 00:38:54,290 --> 00:38:57,650 تو ہم اس سرنی کی ہے 9، 17، 22، 26، اور 34. 830 00:38:57,650 --> 00:39:00,260 تم میں سے ان لوگوں کو دیکھ سکتے ہیں کے لئے شرمناک غلطی میں صرف کر دیا، 831 00:39:00,260 --> 00:39:00,830 وہاں ہے. 832 00:39:00,830 --> 00:39:04,490 >> تو میں نے یہ دعوی ہے کہ ایک بہت موثر حل. 833 00:39:04,490 --> 00:39:07,310 میں کے طور پر کئی کے طور پر ints مختص ہے مجھے ضرورت ہے - ایک، دو، تین، 834 00:39:07,310 --> 00:39:09,100 چار، پانچ یا چھ - 835 00:39:09,100 --> 00:39:11,660 اور میں تو تعداد ذخیرہ ہے اس صف کے اندر. 836 00:39:11,660 --> 00:39:15,220 لیکن لگتا ہے، پھر، میں داخل کرنا چاہتے ہیں نمبر 8 کی طرح ایک قیمت؟ 837 00:39:15,220 --> 00:39:16,100 ٹھیک ہے، یہ کہاں جاتا ہے؟ 838 00:39:16,100 --> 00:39:18,530 میں داخل کرنا چاہتے ہیں مان لیں 20 کی طرح ایک بڑی تعداد. 839 00:39:18,530 --> 00:39:19,790 ٹھیک ہے، یہ کہاں جاتا ہے؟ 840 00:39:19,790 --> 00:39:23,160 وہیں کہیں وسط میں، یا نمبر 35 جانا ہے 841 00:39:23,160 --> 00:39:24,010 کہیں آخر میں. 842 00:39:24,010 --> 00:39:25,320 لیکن میں خلا کے سب باہر ہوں. 843 00:39:25,320 --> 00:39:29,120 >> اور اس طرح یہ ایک بنیادی چیلنج ہے حل ہیں ہے کہ arrays کی. 844 00:39:29,120 --> 00:39:32,280 میں GetString، ایک لمحے پہلے دعوی کیا اس مسئلہ کو حل کرتی ہے. 845 00:39:32,280 --> 00:39:37,380 آپ کو ایک چھٹے نمبر داخل کرنا چاہتے ہیں تو اس صف میں، کم از کم ایک کیا ہے 846 00:39:37,380 --> 00:39:40,090 حل آپ، اس بات کا یقین کے لئے پر واپس گر کر سکتے ہیں ہم GetString کے ساتھ کی طرح؟ 847 00:39:40,090 --> 00:39:44,340 848 00:39:44,340 --> 00:39:46,030 وہ کیا ہے؟ 849 00:39:46,030 --> 00:39:48,190 >> ٹھیک ہے، یہ بڑا ہے بنا آسان سے زیادہ کیا ہے. 850 00:39:48,190 --> 00:39:52,810 ہم ضروری سرنی نہیں کر سکتے ہیں بڑا، لیکن ہم کیا کر سکتے ہیں؟ 851 00:39:52,810 --> 00:39:56,570 سائز کے بڑا ہے کہ ایک نئی صف، بنائیں 6، یا شاید سائز 10 ہے، ہم چاہتے ہیں تو 852 00:39:56,570 --> 00:40:00,490 آگے کی چیزوں میں سے ہو جاؤ، اور پھر کاپی کرنے کے لئے پرانے نئے میں سرنی، اور پھر 853 00:40:00,490 --> 00:40:01,680 پرانے سرنی مفت. 854 00:40:01,680 --> 00:40:05,770 >> لیکن رننگ ٹائم کیا ہے اب اس عمل کی وجہ سے؟ 855 00:40:05,770 --> 00:40:09,870 یہ (ن) کے بڑے اے ہے کیونکہ کاپی تم میں سے بعض یونٹس کی قیمت جا رہی ہے 856 00:40:09,870 --> 00:40:13,480 ہم کرنے کی ضرورت کا وقت ہے، تو اتنا مثالی نہیں تو جا رہی ہے جس میں ایک نئی صف، مختص 857 00:40:13,480 --> 00:40:15,610 دو مرتبہ کے طور پر زیادہ سے زیادہ خرچ عارضی طور پر میموری. 858 00:40:15,610 --> 00:40:16,660 نئے میں پرانے کاپی کریں - 859 00:40:16,660 --> 00:40:18,800 میرا مطلب ہے، یہ صرف ایک سر میں درد ہے، جس ، ایک بار پھر، ہم کیوں لکھا ہے 860 00:40:18,800 --> 00:40:19,920 آپ کے لئے GetString. 861 00:40:19,920 --> 00:40:21,380 >> ہم اس کی بجائے تو کیا کیا کر سکتے ہیں؟ 862 00:40:21,380 --> 00:40:25,000 ٹھیک ہے، اگر ہمارے اعداد و شمار کے ڈھانچے اصل میں اس میں فرق ہے؟ 863 00:40:25,000 --> 00:40:30,790 میں رکھنے کا میرا مقصد آرام کہ مان لیں میموری کی ملحق حصوں، جہاں 9 864 00:40:30,790 --> 00:40:34,500 ہے جو 17، حق اگلے ہے حق 22 کرنے کے لئے اگلے، اور اسی طرح کی. 865 00:40:34,500 --> 00:40:39,570 >> اور 9 یہاں میں ختم ہو سکتا ہے کہ لگتا ہے رام، اور 17، RAM میں یہاں پر کیا جا سکتا ہے 866 00:40:39,570 --> 00:40:40,990 اور 22 RAM میں یہاں جا سکتا ہے. 867 00:40:40,990 --> 00:40:43,610 دوسرے الفاظ میں، میں نے ان کی ضرورت نہیں ہے یہاں تک کہ اب واپس کرنے کے لئے واپس. 868 00:40:43,610 --> 00:40:47,850 میں صرف کسی نہ کسی طرح ایک انجکشن موضوع کو ہے ان نمبروں میں سے ہر ایک، یا ہر ایک کے ذریعے 869 00:40:47,850 --> 00:40:51,010 ان مراکز کی، کے طور پر ہم فون کروں گا میں نے ان کو تیار کیا ہے کے طور پر rectangles، پر 870 00:40:51,010 --> 00:40:55,670 گزشتہ حاصل کرنے کے لئے کس طرح یاد پہلے سے ایسے نوڈ. 871 00:40:55,670 --> 00:40:59,940 >> تو پروگرامنگ کی تعمیر کیا ہے ہم بالکل حال ہی میں دیکھا ہے جس کے ساتھ میں نے 872 00:40:59,940 --> 00:41:03,030 اس دھاگے میں پوسٹ ہوئے عمل درآمد، یا کر سکتے ہیں ، یہاں تیار کی میں کر سکتا ہوں جس کے ساتھ 873 00:41:03,030 --> 00:41:05,430 ان لوگوں کے تیر پر عمل درآمد؟ 874 00:41:05,430 --> 00:41:06,500 تو اشارہ، ہے نا؟ 875 00:41:06,500 --> 00:41:09,560 میں ایک نہیں تو مختص INT، لیکن ایک نوڈ - اور کی طرف سے 876 00:41:09,560 --> 00:41:10,810 نوڈ، میں صرف کنٹینر مطلب ہے. 877 00:41:10,810 --> 00:41:12,900 اور نابینا، میں نے ایک مستطیل مطلب ہے. 878 00:41:12,900 --> 00:41:16,420 ایک نوڈ بظاہر کی ضرورت ہے تو دو اقدار پر مشتمل ہے - 879 00:41:16,420 --> 00:41:21,490 INT خود کو، اور پھر، کے طور پر کی طرف سے تقاضا مستطیل کے سب سے نیچے نصف، 880 00:41:21,490 --> 00:41:23,010 ایک INT کے لئے کافی جگہ. 881 00:41:23,010 --> 00:41:26,130 >> تو، یہاں سے آگے سوچ یہ نوڈ یہ کتنا بڑا ہے 882 00:41:26,130 --> 00:41:27,170 سوال میں کنٹینر؟ 883 00:41:27,170 --> 00:41:29,250 INT کے لئے کتنے بائٹس؟ 884 00:41:29,250 --> 00:41:31,310 شاید 4، ہے تو معمول کے طور پر ایک ہی. 885 00:41:31,310 --> 00:41:33,270 اور پھر کتنے بائٹس پوائنٹر کے لئے؟ 886 00:41:33,270 --> 00:41:33,650 4. 887 00:41:33,650 --> 00:41:37,940 تو یہ کنٹینر، یا اس نوڈ، ہے ایک 8 بائٹ ساخت ہونے جا رہا. 888 00:41:37,940 --> 00:41:41,760 اوہ، اور یہ کہ ایک خوش اتفاق ہے کہ ہم صرف اس تصور متعارف کرایا 889 00:41:41,760 --> 00:41:44,400 ایک struct، یا ایک سی ساخت. 890 00:41:44,400 --> 00:41:48,890 >> تو میں نے ایک قدم آگے لے جانا چاہتا ہوں کا دعوی ہے کہ یہ زیادہ بہتر کی طرف 891 00:41:48,890 --> 00:41:52,560 اعداد کی ایک فہرست ہے، ایک کا نفاذ نمبروں کی فہرست سے منسلک، میں نے ایک کرنے کی ضرورت ہے 892 00:41:52,560 --> 00:41:56,920 تھوڑا زیادہ سامنے سوچ اور نہ صرف ایک INT، لیکن ایک struct کا اعلان 893 00:41:56,920 --> 00:41:58,620 میں فون کروں گا، کہ روایتی یہاں، نوڈ. 894 00:41:58,620 --> 00:42:01,630 ہم نے اسے ہم چاہتے کچھ کو فون، لیکن کر سکتے ہیں نوڈ بہت میں موضوعاتی ہونے جا رہا ہے 895 00:42:01,630 --> 00:42:03,560 چیزوں کی اب ہم دیکھ شروع. 896 00:42:03,560 --> 00:42:06,480 >> کہ نوڈ کے اندر ایک INT ن ہے. 897 00:42:06,480 --> 00:42:09,350 اور پھر یہ نحو، تھوڑا سا پہلی نظر میں عجیب - 898 00:42:09,350 --> 00:42:12,960 struct نوڈ * اگلے. 899 00:42:12,960 --> 00:42:16,900 ویسے pictorially، وہ کیا ہے؟ 900 00:42:16,900 --> 00:42:21,000 کہ اس کے نچلے حصے نصف ہے ہم نے دیکھا کہ مستطیل 901 00:42:21,000 --> 00:42:22,730 صرف ایک لمحے پہلے. 902 00:42:22,730 --> 00:42:27,600 >> لیکن کیوں کہ میں * struct نوڈ کہہ رہا ہوں کے طور پر صرف نوڈ * کی مخالفت؟ 903 00:42:27,600 --> 00:42:31,370 کہ پوائنٹر کی طرف اشارہ ہے کیونکہ اگر ایک اور نوڈ پر، یہ صرف ہے 904 00:42:31,370 --> 00:42:32,760 ایک نوڈ کا ایڈریس. 905 00:42:32,760 --> 00:42:35,630 ہم نے کیا کے مطابق ہے اس طرح اب تک کے اشارہ کے بارے میں تبادلہ خیال کیا. 906 00:42:35,630 --> 00:42:39,690 میں دعوی کرتے ہیں لیکن اگر اسی وجہ سے، اس کی ساخت ہے نوڈ کو بلایا، میں struct کیا کہنا ہے 907 00:42:39,690 --> 00:42:42,660 یہاں اندر نوڈ؟ 908 00:42:42,660 --> 00:42:43,190 >> بالکل ٹھیک. 909 00:42:43,190 --> 00:42:46,490 یہ سی کے ایک بیوکوف حقیقت کی طرح ہے typedef، تو بات کرنے کے لیے، نہیں ہے 910 00:42:46,490 --> 00:42:47,220 ابھی ہوا ہے. 911 00:42:47,220 --> 00:42:48,510 سی لغوی سپر ہے. 912 00:42:48,510 --> 00:42:51,050 یہ آپ کے کوڈ کو اوپر کی پڑھتا ہے نیچے، بائیں سے دائیں. 913 00:42:51,050 --> 00:42:54,930 اور جب تک اس پر ہے کہ نیم وقفہ مار دیتی ہے سب سے نیچے لائن، نہیں کیا کرتا ہے لگتا ہے 914 00:42:54,930 --> 00:42:57,590 ایک قسم کے طور پر اعداد و شمار موجود ہیں؟ 915 00:42:57,590 --> 00:42:59,060 گھنڈی، اقتباس unquote نوڈ. 916 00:42:59,060 --> 00:43:03,050 >> لیکن کیونکہ زیادہ شبدبہل کے اعلامیہ میں پہلی لائن پر تھا - 917 00:43:03,050 --> 00:43:05,340 typedef struct نوڈ - 918 00:43:05,340 --> 00:43:08,790 اس سے پہلے، سب سے پہلے آیا کیونکہ گھوبگھرالی منحنی خطوط وحدانی، طرح طرح کی ہے 919 00:43:08,790 --> 00:43:11,800 پری تعلیم بجنا ہے، آپ کیا پتہ، مجھے ایک struct دے 920 00:43:11,800 --> 00:43:13,570 struct نوڈ سے ملاقات کی. 921 00:43:13,570 --> 00:43:16,270 سچ کہوں تو، مجھے بلا چیزیں پسند نہیں کرتے struct نوڈ، struct نوڈ تمام 922 00:43:16,270 --> 00:43:17,090 میرا کوڈ بھر میں. 923 00:43:17,090 --> 00:43:20,660 لیکن میں صرف، صرف کے اندر، ایک بار اسے استعمال کریں گے تاکہ میں مؤثر طریقے سے کر سکتے ہیں 924 00:43:20,660 --> 00:43:25,010 سرکلر میں ریفرنس کی ایک طرح سے نہیں پیدا ایک SE فی خود پوائنٹر، لیکن ایک 925 00:43:25,010 --> 00:43:29,400 کسی دوسرے کی پر پوائنٹر ایک جیسی قسم. 926 00:43:29,400 --> 00:43:32,330 >> تو یہ باہر کر دیتا ہے کہ ایک ڈیٹا ڈھانچے پر اس طرح، چند ہے 927 00:43:32,330 --> 00:43:34,470 ہو سکتا ہے کہ آپریشن ہمیں سود کی. 928 00:43:34,470 --> 00:43:37,460 ہم داخل کرنا چاہتے ہیں کر سکتے ہیں اس طرح ایک فہرست میں. 929 00:43:37,460 --> 00:43:39,850 ہم کو حذف کرنا چاہتے ہو سکتا ہے اس طرح ایک فہرست میں سے. 930 00:43:39,850 --> 00:43:43,490 ہم نے ایک کے لئے کی فہرست میں تلاش کرنا چاہتے ہیں کر سکتے ہیں قیمت، یا ایک سے زیادہ عام طور پر، گزرنا. 931 00:43:43,490 --> 00:43:46,410 اور گزرنا کا صرف ایک طریقہ ہے پسند ہیں بائیں سے شروع کہہ اور تمام منتقل 932 00:43:46,410 --> 00:43:47,650 حق کا راستہ. 933 00:43:47,650 --> 00:43:52,640 >> اور یہ بھی تھوڑا سا اور زیادہ کے ساتھ نوٹس، جدید ترین اعداد و شمار کے ڈھانچے، دو 934 00:43:52,640 --> 00:43:56,510 میرے ہم میں سے کچھ قرضے لے سکتا ہوں کہ تجویز گزشتہ دو ہفتوں کے خیالات اور 935 00:43:56,510 --> 00:43:58,410 نامی ایک تقریب پر عملدرآمد اس طرح تلاش. 936 00:43:58,410 --> 00:44:01,360 یہ سچ ہے یا واپس جا رہا ہے ، جھوٹے اشارہ، ہاں یا 937 00:44:01,360 --> 00:44:03,390 نہیں، (ن) کی فہرست میں ہے. 938 00:44:03,390 --> 00:44:05,960 اپنی دوسری دلیل ایک پوائنٹر ہے فہرست خود، تو ایک 939 00:44:05,960 --> 00:44:07,920 ایک نوڈ پر پوائنٹر. 940 00:44:07,920 --> 00:44:10,350 >> میں اس وقت کیا کرنے جا رہا ہوں تمام کا اعلان ہے ایک عارضی متغیر. 941 00:44:10,350 --> 00:44:12,730 ہم نے کنونشن کی طرف سے اس PTR فون کروں گا پوائنٹر کے لئے. 942 00:44:12,730 --> 00:44:15,220 اور میں نے اسے برابر تفویض فہرست کے شروع. 943 00:44:15,220 --> 00:44:16,680 >> اور اب جبکہ لوپ نوٹس. 944 00:44:16,680 --> 00:44:20,640 اتنی دیر پوائنٹر کے برابر نہیں ہے شہوت انگیز null، میں چیک کرنے کے لئے جا رہا ہوں. 945 00:44:20,640 --> 00:44:24,520 ہے پوائنٹر تیر (ن) کے برابر میں منظور کیا گیا تھا کہ ن؟ 946 00:44:24,520 --> 00:44:26,410 نئے - اور ایک منٹ رکو نحو کا ٹکڑا. 947 00:44:26,410 --> 00:44:29,324 تیر اچانک کیا ہے؟ 948 00:44:29,324 --> 00:44:30,574 جی ہاں؟ 949 00:44:30,574 --> 00:44:34,200 950 00:44:34,200 --> 00:44:34,810 >> بالکل ٹھیک. 951 00:44:34,810 --> 00:44:38,860 تو جبکہ چند منٹ پہلے، ہم استعمال کیا جاتا ہے کچھ تک رسائی حاصل کرنے ڈاٹ سنکیتن 952 00:44:38,860 --> 00:44:43,080 ایک struct کے اندر، متغیر تو آپ struct نہیں ہے 953 00:44:43,080 --> 00:44:47,420 خود، لیکن ایک struct کے لئے ایک پوائنٹر، شکر ہے کہ نحو کا ایک ٹکڑا ہے کہ 954 00:44:47,420 --> 00:44:48,620 آخر بدیہی احساس کرتا ہے. 955 00:44:48,620 --> 00:44:52,360 تیر، پوائنٹر کی پیروی کرنے کا مطلب ہے کہ ہمارے تیر عام طور پر مطلب کی طرح 956 00:44:52,360 --> 00:44:56,570 pictorially، اور میں جانا اعداد و شمار کے میدان کے اندر. 957 00:44:56,570 --> 00:44:59,700 تو تیر نقطہ کے طور پر ایک ہی بات ہے، لیکن آپ کو ایک پوائنٹر ہے جب آپ اسے استعمال. 958 00:44:59,700 --> 00:45:05,270 >> تو، پھر recap اگر (ن) کے خانے struct کے اندر پوائنٹر کہا جاتا ہے 959 00:45:05,270 --> 00:45:07,760 برابر (ن) کے برابر ہے، سچ واپس. 960 00:45:07,760 --> 00:45:11,970 دوسری صورت میں، یہاں پر اس لائن - پوائنٹر اگلے پوائنٹر برابر ہے. 961 00:45:11,970 --> 00:45:17,540 تو یہ کیا کر رہا ہے، نوٹس، ہے تو میں فی الحال struct طرف اشارہ کر رہا ہوں 962 00:45:17,540 --> 00:45:21,430 9، اور 9 پر مشتمل نمبر نہیں ہے میں دیکھ رہا ہوں - میں دیکھ رہا ہوں لگتا ہے 963 00:45:21,430 --> 00:45:22,830 کے لئے (ن) کے 50 برابر ہے - 964 00:45:22,830 --> 00:45:25,930 میں اپنے عارضی پوائنٹر کو اپ ڈیٹ کرنے جا رہا ہوں یہ نوڈ میں اشارہ نہیں کرنے کے لئے 965 00:45:25,930 --> 00:45:31,190 اب، لیکن پوائنٹر تیر اگلے، جو مجھے یہاں پیش کیا جا رہا ہے. 966 00:45:31,190 --> 00:45:34,270 >> اب، میں نے ایک بونڈر ہے احساس ہوا تعارف. 967 00:45:34,270 --> 00:45:37,380 بدھ کے روز، ہم اصل میں یہ کروں گا کچھ انسانوں کے ساتھ اور کچھ اور کے ساتھ 968 00:45:37,380 --> 00:45:38,900 ایک سست رفتار سے کوڈ. 969 00:45:38,900 --> 00:45:42,990 لیکن احساس ہے، اب ہم ہمارے اعداد و شمار کر رہے ہیں ڈھانچے زیادہ پیچیدہ ہے تاکہ ہماری 970 00:45:42,990 --> 00:45:45,780 الگورتھم، زیادہ موثر حاصل کر سکتے ہیں جس میں کے لئے ضروری ہونے جا رہا ہے 971 00:45:45,780 --> 00:45:50,500 pset چھ، ہم ایک بار پھر، میں لوڈ، جب ان لوگوں کو 150،000 الفاظ، لیکن ایسا کرنے کی ضرورت ہے 972 00:45:50,500 --> 00:45:55,650 مؤثر طریقے سے، اور مثالی طور پر، ایک تخلیق ہمارے صارفین نہیں میں چلاتی ہے پروگرام 973 00:45:55,650 --> 00:46:00,460 لکیری، نہیں مربع (ن) میں، لیکن میں مثالی میں مسلسل وقت،. 974 00:46:00,460 --> 00:46:02,300 >> ہم نے بدھ کے روز آپ کو نظر آئے گا. 975 00:46:02,300 --> 00:46:07,240 >> اسپیکر: اگلے CS50، ڈیوڈ میں اس کی بنیاد کیس بھول جاتا ہے. 976 00:46:07,240 --> 00:46:12,770 >> DAVID MALAN: اور وہ تم بھیجنے کا طریقہ یہ ہے کے ساتھ ٹیکسٹ پیغامات سی کیا - 977 00:46:12,770 --> 00:46:14,020 >> [مختلف ٹیکسٹ پیغام نوٹیفکیشن آواز] 978 00:46:14,020 --> 00:46:19,734