1 00:00:00,000 --> 00:00:09,572 2 00:00:09,572 --> 00:00:12,030 روب Bowden: ہیلو، میں، روب Bowden ہوں اور چلو quiz0 بارے میں بات کریں. 3 00:00:12,030 --> 00:00:13,280 4 00:00:13,280 --> 00:00:14,545 >> لہذا، پہلا سوال. 5 00:00:14,545 --> 00:00:17,750 یہ سوال کہاں ہے آپ تعداد کوڈ کے لئے ضرورت 6 00:00:17,750 --> 00:00:21,270 بائنری بلب میں 127. 7 00:00:21,270 --> 00:00:23,550 اگر تم چاہتے تھے، آپ کر سکتے تھے باقاعدہ تبادلوں 8 00:00:23,550 --> 00:00:25,950 اعشاری سے بائنری، bi-- یا سے. 9 00:00:25,950 --> 00:00:28,300 لیکن ہے کہ شاید ہو رہا ہے وقت کی ایک بہت لینے کے لئے. 10 00:00:28,300 --> 00:00:31,750 میں تم سے یہ پتہ لگا سکتا ہے، مطلب، OK، 1، وہاں میں ہے، 2 میں ہے 11 00:00:31,750 --> 00:00:33,650 4 وہاں میں، 8 وہاں میں ہے. 12 00:00:33,650 --> 00:00:39,280 آسان راستہ، 127 128 مائنس ایک ہے. 13 00:00:39,280 --> 00:00:42,013 یہی کہ leftmost روشنی بلب 128 بٹ ہے. 14 00:00:42,013 --> 00:00:43,490 15 00:00:43,490 --> 00:00:47,860 لہذا 127 صرف تمام واقعی ہے دیگر روشنی بلب کی، 16 00:00:47,860 --> 00:00:51,420 کہ کہ leftmost کے بعد روشنی بلب مائنس 1. 17 00:00:51,420 --> 00:00:52,800 کہ اس سوال کے لئے ہے. 18 00:00:52,800 --> 00:00:54,060 >> سوال. 19 00:00:54,060 --> 00:00:56,710 3 بٹس کے ساتھ تو آپ کر سکتے ہیں 8 مختلف اقدار کی نمائندگی. 20 00:00:56,710 --> 00:01:01,000 کیوں، اس کے بعد، سب سے بڑا غیر منفی 7 ہے آپ کی نمائندگی کرسکتے ہیں دشملو عددی؟ 21 00:01:01,000 --> 00:01:04,050 ویسے، اگر ہم صرف یہ کر سکتے ہیں 8 مختلف اقدار کی نمائندگی، 22 00:01:04,050 --> 00:01:07,430 پھر کیا ہم کرنے جا رہے ہیں کی نمائندگی 7 ذریعے 0 ہے. 23 00:01:07,430 --> 00:01:08,745 0 اقدار میں سے ایک تک لے جاتا ہے. 24 00:01:08,745 --> 00:01:09,980 25 00:01:09,980 --> 00:01:11,190 >> سوال دو. 26 00:01:11,190 --> 00:01:14,610 ن بٹس کے ساتھ، کس طرح بہت سے الگ اقدار آپ کی نمائندگی کر سکتے ہیں؟ 27 00:01:14,610 --> 00:01:19,080 لہذا، ن بٹس کے ساتھ، آپ کو 2 ہے ہر ایک تھوڑا سا کے لئے ممکن اقدار. 28 00:01:19,080 --> 00:01:22,300 تو ہم 2 ممکن اقدار کے لئے ہونا پہلا سا، 2 ممکنہ اقدار 29 00:01:22,300 --> 00:01:24,450 دوسرے کے لئے، 2 تیسرے کے لئے ممکن. 30 00:01:24,450 --> 00:01:28,730 اور تو ہے کہ 2 بار 2 بار 2، اور بالآخر جواب ن 2 ہے. 31 00:01:28,730 --> 00:01:30,010 32 00:01:30,010 --> 00:01:31,100 >> سوال تین. 33 00:01:31,100 --> 00:01:33,450 بائنری میں 0x50 کیا ہے؟ 34 00:01:33,450 --> 00:01:39,490 لہذا شش اعشاری ایک بہت ہے کہ یاد بائنری سیدھا تبادلوں. 35 00:01:39,490 --> 00:01:43,180 تو یہاں، ہم صرف دیکھنے کی ضرورت 5 اور آزادانہ 0. 36 00:01:43,180 --> 00:01:45,110 تو بائنری میں 5 کیا ہے؟ 37 00:01:45,110 --> 00:01:48,400 0101، کہ 1 بٹ اور 4 سا ہے. 38 00:01:48,400 --> 00:01:49,900 بائنری میں 0 کیا ہے؟ 39 00:01:49,900 --> 00:01:50,520 مشکل نہیں. 40 00:01:50,520 --> 00:01:52,180 0000. 41 00:01:52,180 --> 00:01:54,970 تو صرف انہیں اکٹھا رکھا تھا، اور اس بائنری میں مکمل تعداد ہے. 42 00:01:54,970 --> 00:01:57,640 01010000. 43 00:01:57,640 --> 00:02:00,439 تم چاہتے تھے اور اگر آپ کر سکتے تھے کہ کہ leftmost صفر اتار. 44 00:02:00,439 --> 00:02:01,105 یہ غیر متعلقہ ہے. 45 00:02:01,105 --> 00:02:02,920 46 00:02:02,920 --> 00:02:05,733 >> تو پھر متبادل طور پر، دشملو میں 0x50 کیا ہے؟ 47 00:02:05,733 --> 00:02:08,649 تم چاہتے تھے تو آپ نہیں ہیں تو، آپ کو could-- بائنری کے ساتھ زیادہ آرام دہ، 48 00:02:08,649 --> 00:02:11,340 اگر آپ اس بائنری جواب لے سکتا ہے اور دشملو میں ہے کہ تبدیل. 49 00:02:11,340 --> 00:02:13,870 یا ہم صرف یاد کر سکتے ہیں کہ شش اعشاری. 50 00:02:13,870 --> 00:02:21,140 0 تا کہ 0 ویں جگہ میں ہے، اور 5 سب سے پہلے جگہ کے لئے 16 میں ہے. 51 00:02:21,140 --> 00:02:25,990 تو یہاں، ہم پر 5 بار 16 ہے پہلا، صفر کے علاوہ 0 اوقات 16، 52 00:02:25,990 --> 00:02:27,520 80 ہے. 53 00:02:27,520 --> 00:02:29,710 اور اگر تم کو دیکھا تو سوال کا عنوان، 54 00:02:29,710 --> 00:02:32,920 یہ ایک کی طرح تھا جس میں CS 80، تھا اس مسئلہ کا جواب اشارہ. 55 00:02:32,920 --> 00:02:34,460 56 00:02:34,460 --> 00:02:35,420 >> سوال پانچ. 57 00:02:35,420 --> 00:02:40,320 ہم جو ہے، اس سکریچ سکرپٹ ہے 4 بار مونگفلی کا مکھن جیلی دہرا. 58 00:02:40,320 --> 00:02:42,800 تو کس طرح ہم سی کوڈ اب ایسا کریں؟ 59 00:02:42,800 --> 00:02:47,730 ٹھیک ہے، ہم یہاں جرات مندانہ میں حصہ ہے آپ کو نافذ کرنے کے لئے تھا صرف ایک حصہ ہے. 60 00:02:47,730 --> 00:02:51,950 تو ہم 4 کہ looping ایک 4 لوپ ہے اوقات، printf کا کنڈ مونگفلی کا مکھن جیلی، 61 00:02:51,950 --> 00:02:53,910 نئی لائن کے ساتھ مسئلہ کے لئے پوچھتا ہے کے طور پر. 62 00:02:53,910 --> 00:02:55,250 63 00:02:55,250 --> 00:02:57,490 >> سوال چھ، ایک اور سکریچ مسئلہ. 64 00:02:57,490 --> 00:03:00,210 ہم ہمیشہ کے لئے لوپ میں ہیں کہ دیکھیں. 65 00:03:00,210 --> 00:03:05,000 ہم متغیر میں کہہ رہے ہیں اور پھر 1 کی طرف سے میں incrementing. 66 00:03:05,000 --> 00:03:09,580 اب ہم سی میں موجود ہیں ایسا کرنا چاہتے ہیں ہم یہ کر سکتا تھا ایک سے زیادہ طریقوں. 67 00:03:09,580 --> 00:03:12,840 یہاں ہم نے کوڈ کو کیا ہوا تھوڑی دیر (صحیح) کے طور پر ہمیشہ کے لئے لوپ. 68 00:03:12,840 --> 00:03:16,600 تو ہم صرف، متغیر میں اعلان جیسے ہم نے شروع میں متغیر میں دیکھا گیا. 69 00:03:16,600 --> 00:03:21,950 متغیر میں اعلان کریں، اور ہمیشہ کے لئے (صحیح) جبکہ، ہم متغیر میں کہنا. 70 00:03:21,950 --> 00:03:25,260 printf کے٪ میں ... یا آپ کو٪ ڈی کا استعمال کیا ہے تاکہ. 71 00:03:25,260 --> 00:03:27,985 ہم اس متغیر کہتے ہیں، اور پھر یہ اضافہ، میں + +. 72 00:03:27,985 --> 00:03:29,560 73 00:03:29,560 --> 00:03:30,830 >> سوال سات. 74 00:03:30,830 --> 00:03:35,560 اب ہم بہت ہی اسی طرح کچھ کرنا چاہتے ہیں ماریو ڈاٹ سی پر مسئلہ سے ایک قائم. 75 00:03:35,560 --> 00:03:39,110 ہم ان hashtags کے پرنٹ کرنا چاہتے ہیں، ہم ایک پانچ پرنٹ کرنا چاہتے ہیں 76 00:03:39,110 --> 00:03:40,700 ان hashes کی تین مستطیل کی طرف سے. 77 00:03:40,700 --> 00:03:41,770 78 00:03:41,770 --> 00:03:43,162 تو ہم کس طرح ایسا کرنے کے لئے جا رہے ہیں؟ 79 00:03:43,162 --> 00:03:45,370 ٹھیک ہے، ہم آپ کو ایک مکمل دے کوڈ کا جتھا، اور آپ کو صرف 80 00:03:45,370 --> 00:03:47,560 پرنٹ گرڈ تقریب میں بھرنے کے لئے ہے. 81 00:03:47,560 --> 00:03:49,540 >> تو کیا ہوا PrintGrid طرح لگتی ہے؟ 82 00:03:49,540 --> 00:03:51,480 ویسے آپ کو ماضی ہیں چوڑائی اور اونچائی. 83 00:03:51,480 --> 00:03:53,520 تو ہم نے ایک بیرونی ہے 4 لوپ، کہ looping ہے 84 00:03:53,520 --> 00:03:57,650 اس کی قطاروں میں سے سب سے زیادہ ہم باہر پرنٹ کرنے کے لئے چاہتے ہیں کہ گرڈ. 85 00:03:57,650 --> 00:04:01,250 پھر ہم، بین اندر در اندر 4 لوپ ہے کہ ہر کالم زائد چھپائی ہے. 86 00:04:01,250 --> 00:04:06,210 تاکہ ہر صف کے لئے، ہم نے کے لئے پرنٹ ہر کالم، ایک واحد ہیش. 87 00:04:06,210 --> 00:04:10,045 پھر قطار کے آخر میں ہم پرنٹ ایک سنگل نئی لائن اگلی صف میں جانے کے لئے. 88 00:04:10,045 --> 00:04:11,420 اور یہ کہ پورے گرڈ کے لئے ہے. 89 00:04:11,420 --> 00:04:12,810 90 00:04:12,810 --> 00:04:13,675 >> سوال آٹھ. 91 00:04:13,675 --> 00:04:17,170 PrintGrid طرح ایک تقریب سے کہا جاتا ہے ایک واپسی کی ایک ضمنی اثر ہے، لیکن نہیں 92 00:04:17,170 --> 00:04:17,670 قدر. 93 00:04:17,670 --> 00:04:19,209 امتیاز سمجھاو. 94 00:04:19,209 --> 00:04:23,080 تو یہ آپ کو یاد پر انحصار کرتا ہے ایک ضمنی اثر ہے کیا. 95 00:04:23,080 --> 00:04:25,180 ویسے، ایک واپسی value-- ہم PrintGrid نہیں کرتا جانتے 96 00:04:25,180 --> 00:04:28,180 بعد، واپسی کی قیمت ہے یہیں پر یہ باطل کہتا ہے. 97 00:04:28,180 --> 00:04:31,150 باطل کو واپس کرتا ہے تا کہ کسی بھی چیز واقعی کچھ واپس نہیں کرتا. 98 00:04:31,150 --> 00:04:32,200 99 00:04:32,200 --> 00:04:33,620 لہذا ضمنی اثر کیا ہے؟ 100 00:04:33,620 --> 00:04:36,620 ٹھیک ہے، ایک طرف اثر ہے قسم کے برقرار رہتا ہے کہ کسی بھی چیز 101 00:04:36,620 --> 00:04:39,500 تقریب ختم ہونے کے بعد کہ، صرف واپس نہیں تھا 102 00:04:39,500 --> 00:04:41,340 اور یہ صرف آدانوں سے نہیں تھا. 103 00:04:41,340 --> 00:04:44,970 >> لہذا مثال کے طور پر، ہم شاید کیا ایک عالمی متغیر کو تبدیل. 104 00:04:44,970 --> 00:04:46,590 کہ ایک طرف اثر ہو جائے گا. 105 00:04:46,590 --> 00:04:49,000 اس خاص معاملے میں، ایک بہت اہم ضمنی اثر 106 00:04:49,000 --> 00:04:51,070 سکرین پر چھپائی ہے. 107 00:04:51,070 --> 00:04:53,110 تو یہ ایک ضمنی اثر ہے کہ PrintGrid ہے. 108 00:04:53,110 --> 00:04:54,980 ہم سکرین پر ان چیزوں کو پرنٹ. 109 00:04:54,980 --> 00:04:56,370 اور کیا آپ کے بارے میں سوچ کر سکتے ہیں کہ ایک طرف اثر کے طور پر، 110 00:04:56,370 --> 00:04:58,690 کہ کچھ ہے کے بعد سے کہ اس تقریب ختم ہونے کے بعد بھی برقرار رہتا. 111 00:04:58,690 --> 00:05:01,481 کہ دائرہ کار سے باہر کچھ ہے اس تقریب کی کہ آخر 112 00:05:01,481 --> 00:05:03,380 تبدیل کر دیا جا رہا ہے، سکرین کے مندرجات. 113 00:05:03,380 --> 00:05:05,200 114 00:05:05,200 --> 00:05:05,839 >> سوال نو. 115 00:05:05,839 --> 00:05:07,880 ، ذیل میں دیئے گئے پروگرام پر غور جس لائن نمبروں پر 116 00:05:07,880 --> 00:05:09,740 کے لئے شامل کیا گیا ہے بحث کی خاطر. 117 00:05:09,740 --> 00:05:13,480 اس پروگرام میں تو ہم صرف ہیں ذخیرہ کرنے، GetString فون 118 00:05:13,480 --> 00:05:16,220 اس متغیر کی میں، اور اس کے بعد اس متغیر کی پرنٹنگ. 119 00:05:16,220 --> 00:05:16,720 OK. 120 00:05:16,720 --> 00:05:19,090 لائن ایک موجود ہے تو یہی وجہ کی وضاحت. 121 00:05:19,090 --> 00:05:20,920 # شامل CS50 ڈاٹ ح. 122 00:05:20,920 --> 00:05:23,820 کیوں ہم CS50 ڈاٹ H # شامل کی ضرورت ہے؟ 123 00:05:23,820 --> 00:05:26,180 ویسے ہم بلا رہے ہیں تقریب GetString، 124 00:05:26,180 --> 00:05:28,840 اور GetString بیان کیا جاتا ہے CS50 لائبریری میں. 125 00:05:28,840 --> 00:05:31,600 ہمارے پاس نہیں کیا اگر ایسا ہے # شامل CS50 ڈاٹ H، 126 00:05:31,600 --> 00:05:35,760 ہم کہ شامل اعلان ملے گا GetString تقریب خرابی کی 127 00:05:35,760 --> 00:05:36,840 سنکلک سے. 128 00:05:36,840 --> 00:05:40,110 تو ہم نے لائبریری میں شامل کرنے کی ضرورت ہم ہیڈر فائل میں شامل کرنے کی ضرورت ہے، 129 00:05:40,110 --> 00:05:42,870 ورنہ سنکلک نہیں کریں گے GetString کی موجود ہے کہ تسلیم کرتے ہیں. 130 00:05:42,870 --> 00:05:44,380 131 00:05:44,380 --> 00:05:46,140 >> لائن دو موجود ہے کیوں کی وضاحت. 132 00:05:46,140 --> 00:05:47,890 تو معیاری IO ڈاٹ ح. 133 00:05:47,890 --> 00:05:50,430 یہ بالکل ایسا ہی ہے سابقہ ​​مسئلہ کے طور پر، 134 00:05:50,430 --> 00:05:53,310 بجائے کے ساتھ نمٹنے کے سوائے GetString کے، ہم printf کے بارے میں بات کر رہے. 135 00:05:53,310 --> 00:05:56,654 ہم نے کی ضرورت نہیں کہا تو اگر معیاری IO ڈاٹ H شامل کرنے، 136 00:05:56,654 --> 00:05:58,820 پھر ہم قابل نہیں ہو گی printf تقریب کو استعمال کرنے کے، 137 00:05:58,820 --> 00:06:00,653 سنکلک کیونکہ اس کے بارے میں پتہ نہیں کریں گے. 138 00:06:00,653 --> 00:06:01,750 139 00:06:01,750 --> 00:06:05,260 >> Why-- مفہوم کیا ہے کی لائن چار میں باطل؟ 140 00:06:05,260 --> 00:06:08,010 تو یہاں ہم int اہم (باطل) ہے. 141 00:06:08,010 --> 00:06:10,600 کہ صرف اس لئے کہ ہم کہہ رہا ہے کسی بھی کمانڈ لائن نہیں ہو رہے ہیں 142 00:06:10,600 --> 00:06:12,280 اہم دلائل. 143 00:06:12,280 --> 00:06:17,390 ہم int کہہ سکتے ہیں یاد رکھیں کہ اہم int argc سٹرنگ argv بریکٹ. 144 00:06:17,390 --> 00:06:20,400 لہذا ہم یہاں صرف ہم کہنے کو باطل کہنا کمانڈ لائن کے دلائل کو نظر انداز کر رہے ہیں. 145 00:06:20,400 --> 00:06:21,840 146 00:06:21,840 --> 00:06:25,225 >> بالکل وہی، میموری کے لئے احترام کے ساتھ، اس بات کی وضاحت لائن میں کیا GetString کے چھ ریٹرن. 147 00:06:25,225 --> 00:06:27,040 148 00:06:27,040 --> 00:06:31,640 GetString کی ایک بلاک واپس آ رہا ہے میموری، حروف کی ایک سرنی. 149 00:06:31,640 --> 00:06:34,870 یہ واقعی میں ایک واپس آ گیا ہے پہلے کردار پوائنٹر. 150 00:06:34,870 --> 00:06:37,170 ایک تار ایک چار ستارہ ہے یاد رکھیں کہ. 151 00:06:37,170 --> 00:06:41,360 لہذا پہلا پوائنٹر ہے کردار جو کچھ بھی میں تار ہے 152 00:06:41,360 --> 00:06:43,510 صارف کی بورڈ میں داخل ہوا. 153 00:06:43,510 --> 00:06:47,070 اور یہ کہ میموری malloced کر رکھا جائے ہوتا، اتنی کہ میموری ڈھیر میں ہے. 154 00:06:47,070 --> 00:06:49,080 155 00:06:49,080 --> 00:06:50,450 >> سوال 13. 156 00:06:50,450 --> 00:06:51,960 ذیل کے پروگرام پر غور. 157 00:06:51,960 --> 00:06:55,579 تو یہ سب پروگرام کر رہی ہے 10 سے 1 تقسیم printf کا کنڈ جاتا. 158 00:06:55,579 --> 00:06:57,370 لہذا جب مرتب اور پھانسی دے دی، اس پروگرام 159 00:06:57,370 --> 00:07:01,170 نتائج 0.0، اگرچہ 10 سے 1 تقسیم 0.1 ہے. 160 00:07:01,170 --> 00:07:02,970 تو کیوں یہ 0.0 ہے؟ 161 00:07:02,970 --> 00:07:05,510 ٹھیک ہے، اس کی وجہ یہ ہے عددی ڈویژن کے. 162 00:07:05,510 --> 00:07:08,580 تو 1 ایک عددی 10 ایک عدد صحیح ہے، ہے. 163 00:07:08,580 --> 00:07:11,980 پس 1 10، ہر چیز کی طرف سے تقسیم integers کے طور پر سلوک کیا جاتا ہے، 164 00:07:11,980 --> 00:07:16,380 اور C میں، ہم عددی ڈویژن کرتے ہیں جب، ہم کسی بھی اعشاریہ تراش. 165 00:07:16,380 --> 00:07:19,590 پس 1 10 سے جاتا منقسم 0، اور پھر ہم کوشش کر رہے ہیں 166 00:07:19,590 --> 00:07:24,410 تاکہ، ایک فلوٹ کے طور پر اس کو پرنٹ کرنے کے ایک فلوٹ کے طور پر پرنٹ صفر 0.0 ہے. 167 00:07:24,410 --> 00:07:27,400 ہم 0.0 ملے اور یہی وجہ ہے کہ ہے. 168 00:07:27,400 --> 00:07:28,940 >> ذیل کے پروگرام پر غور. 169 00:07:28,940 --> 00:07:31,280 اب ہم 0.1 چھپائی رہے ہیں. 170 00:07:31,280 --> 00:07:34,280 تاکہ کوئی عددی ڈویژن، ہم صرف، 0.1 چھپائی رہے ہیں 171 00:07:34,280 --> 00:07:37,100 لیکن ہم اس چھپائی رہے ہیں 28 اعشاری مقامات پر. 172 00:07:37,100 --> 00:07:41,810 اور ہم اس 0،1000، ایک پوری چڑھانے ملے zeros کی، 5 5 5، بلاہ بلاہ بلاہ. 173 00:07:41,810 --> 00:07:45,495 یہ کرتا ہے کہ کیوں تو یہاں سوال یہ ہے بجائے بالکل کے 0.1 کے، کہ پرنٹ؟ 174 00:07:45,495 --> 00:07:46,620 175 00:07:46,620 --> 00:07:49,640 >> تو یہاں وجہ اب ہے نقاط imprecision تیرتا. 176 00:07:49,640 --> 00:07:53,410 ایک فلوٹ صرف 32 بٹس ہے یاد رکھیں کہ. 177 00:07:53,410 --> 00:07:57,540 تو ہم صرف ایک محدود تعداد میں نمائندگی کر سکتے ہیں کے ان لوگوں کو 32 کے ساتھ نقطہ اقدار تیرتا 178 00:07:57,540 --> 00:07:58,560 بٹس. 179 00:07:58,560 --> 00:08:01,760 ویسے بالآخر لامتناہی نہیں ہے بہت سے چل نقاط کے اقدار، 180 00:08:01,760 --> 00:08:04,940 اور تیرتے infinitely کئی وہاں ہے 0 اور 1 کے درمیان میں نقطہ اقدار، 181 00:08:04,940 --> 00:08:07,860 اور ہم نے واضح طور پر کرنے کے قابل ہیں اس سے بھی زیادہ اقدار کی نمائندگی. 182 00:08:07,860 --> 00:08:13,230 تو ہم کو قربانیاں بنانے کے لئے ہے سب سے زیادہ اقدار کی نمائندگی کرنے کے قابل ہو. 183 00:08:13,230 --> 00:08:16,960 >> لہذا 0.1 طرح ایک قدر، بظاہر ہم کہ بالکل کی نمائندگی نہیں کر سکتے ہیں. 184 00:08:16,960 --> 00:08:22,500 تو بجائے 0.1 کی نمائندگی کرنے کا ہم کرتے ہیں بہترین ہم اس 0.100000 5 5 نمائندگی کر سکتے ہیں 185 00:08:22,500 --> 00:08:23,260 5. 186 00:08:23,260 --> 00:08:26,306 اور یہ کہ، بہت قریب ہے لیکن ایپلی کیشنز کی ایک بہت کچھ کے لئے 187 00:08:26,306 --> 00:08:28,430 آپ کے بارے میں فکر کرنے کی ضرورت نقاط imprecision تیرتا، 188 00:08:28,430 --> 00:08:30,930 ہم صرف کی نمائندگی نہیں کر سکتے کیونکہ سب بالکل پوائنٹس تیرتا. 189 00:08:30,930 --> 00:08:32,500 190 00:08:32,500 --> 00:08:33,380 >> سوال 15. 191 00:08:33,380 --> 00:08:34,679 نیچے دیا گیا کوڈ غور. 192 00:08:34,679 --> 00:08:36,630 ہم نے صرف 1 1 پلس چھپائی رہے ہیں. 193 00:08:36,630 --> 00:08:38,289 تو یہاں کوئی چال ہے. 194 00:08:38,289 --> 00:08:41,780 1 پلس 1 سے 2 کی تشخیص کرتا ہے، اور پھر ہم اس چھپائی رہے ہیں. 195 00:08:41,780 --> 00:08:42,789 یہ صرف 2 پرنٹس. 196 00:08:42,789 --> 00:08:43,850 197 00:08:43,850 --> 00:08:44,700 >> سوال 16. 198 00:08:44,700 --> 00:08:49,450 اب ہم کردار چھپائی رہے ہیں 1 پلس کردار 1. 199 00:08:49,450 --> 00:08:52,110 تو یہ کیوں نہیں کرتا ایک ہی بات کو پرنٹ؟ 200 00:08:52,110 --> 00:08:57,680 ویسے کردار 1 پلس کردار 1، کردار 1 ASCII قیمت 49 ہے. 201 00:08:57,680 --> 00:09:04,840 تو کیا یہ سچ کہہ 49 پلس 49، اور کیا جاتا ہے بالآخر اس 98 پرنٹ جا رہا ہے. 202 00:09:04,840 --> 00:09:06,130 تو کیا یہ 2 پرنٹ نہیں کرتا. 203 00:09:06,130 --> 00:09:08,070 204 00:09:08,070 --> 00:09:09,271 >> سوال 17. 205 00:09:09,271 --> 00:09:11,520 نفاذ کو مکمل کریں اس طرح میں ذیل میں کی طاق 206 00:09:11,520 --> 00:09:14,615 تقریب صحیح واپس اگر کہ ن بھی ہے، اگر (ن) عجیب اور باطل ہے. 207 00:09:14,615 --> 00:09:16,710 208 00:09:16,710 --> 00:09:19,330 یہ ایک عظیم مقصد ہے جدید آپریٹر کے لئے. 209 00:09:19,330 --> 00:09:24,530 تو ہم اپنے دلیل ن لے، ن جدید 2 اچھی طرح 1، برابر ہے 210 00:09:24,530 --> 00:09:28,030 کہ (ن) تقسیم کیا مطلب ہے کہ 2 کی طرف سے باقی تھا. 211 00:09:28,030 --> 00:09:33,270 ن 2 سے تقسیم کرتے ہیں تو، ایک باقی تھا کہ ن عجیب ہے، تاکہ ہم سچ واپس کا مطلب ہے کہ. 212 00:09:33,270 --> 00:09:34,910 نہیں تو ہم جھوٹے واپس. 213 00:09:34,910 --> 00:09:39,070 تم نے بھی 2 برابر جدید ن کر سکتا تھا صفر، باقی، جھوٹے واپس سچ واپس. 214 00:09:39,070 --> 00:09:41,600 215 00:09:41,600 --> 00:09:43,640 >> ذیل میں پنراورتی تقریب کے بارے میں غور. 216 00:09:43,640 --> 00:09:46,920 (ن) ہے تو اگر اس سے کم یا 1 واپس، 1 کے برابر، 217 00:09:46,920 --> 00:09:50,430 ن مائنس 1 چ ورنہ واپسی ن اوقات. 218 00:09:50,430 --> 00:09:52,556 تو کیا یہ کام ہے؟ 219 00:09:52,556 --> 00:09:54,305 ٹھیک ہے، یہ صرف ہے جز ضربیہ تقریب. 220 00:09:54,305 --> 00:09:55,410 221 00:09:55,410 --> 00:09:57,405 یہ اچھی طرح سے نمائندگی کر رہا ہے ن ضربیہ طور. 222 00:09:57,405 --> 00:09:58,720 223 00:09:58,720 --> 00:10:02,310 >> تو اب میں 19 سوال، ہم چاہتے ہیں اس پنراورتی تقریب لینے. 224 00:10:02,310 --> 00:10:04,530 ہم اسے تکراری بنانا چاہتے ہیں. 225 00:10:04,530 --> 00:10:05,874 تو ہم کس طرح یہ کر سکتا ہوں؟ 226 00:10:05,874 --> 00:10:07,790 ویسے عملے کے لئے حل، اور میں دوبارہ وہاں ہے 227 00:10:07,790 --> 00:10:11,090 تم نے کیا کیا ہو سکتا تھا ایک سے زیادہ طریقوں ، ہم اس int مصنوعات کے ساتھ شروع ہے کہ 228 00:10:11,090 --> 00:10:11,812 1 برابر. 229 00:10:11,812 --> 00:10:13,520 اور اس پورے لوپ کے لئے، ہم جا رہے ہیں 230 00:10:13,520 --> 00:10:17,590 بالآخر لئے مصنوعات ضرب جا کرنے مکمل ضربیہ ساتھ ختم. 231 00:10:17,590 --> 00:10:21,870 int کے لئے اگر میں 2 برابر لہذا، میں ہے سے کم یا (ن) کے برابر، میں + +. 232 00:10:21,870 --> 00:10:24,130 >> اگر میں 2 برابر آپ کیوں سوچ سکتا ہے. 233 00:10:24,130 --> 00:10:28,380 ٹھیک ہے، ہم کرنے کے لئے ہے کہ یہاں یاد ہماری بنیاد بات درست ہے بات کو یقینی بنانا. 234 00:10:28,380 --> 00:10:32,180 ن سے کم یا برابر ہے تو اگر 1 سے، ہم صرف 1 واپس لوٹنے رہے. 235 00:10:32,180 --> 00:10:34,830 اگر میں 2 برابر میں یہاں پر تو، ہم شروع. 236 00:10:34,830 --> 00:10:39,090 ویسے اگر میں 1، تھے تو پھر the-- یا ن لوپ کے لئے اس کے بعد 1، تھے تو 237 00:10:39,090 --> 00:10:40,600 بالکل عملدرآمد نہیں کریں گے. 238 00:10:40,600 --> 00:10:43,190 اور ہم صرف کریں گے 1 ہے، جس کی واپسی کی مصنوعات،. 239 00:10:43,190 --> 00:10:45,920 اسی طرح، اگر (ن) تھے سے کم کچھ نہیں 1-- 240 00:10:45,920 --> 00:10:49,290 یہ 0، تھے تو منفی 1، جو کچھ بھی ہم اب بھی، 1 واپس لوٹنے چاہتے 241 00:10:49,290 --> 00:10:52,260 جس بالکل وہی جو ہے پنراورتی ورژن کر رہا ہے. 242 00:10:52,260 --> 00:10:54,660 >> اب، (ن) زیادہ ہے تو 1 سے، پھر ہم جا رہے ہیں 243 00:10:54,660 --> 00:10:56,550 کم از کم ایک ایسا کرنے کا اس لوپ کے iteration کے. 244 00:10:56,550 --> 00:11:00,630 تو پھر اگر ہم ہیں، کے این 5 ہے کہنے دو مصنوعات کی اوقات کیا کرنے جا 2 برابر. 245 00:11:00,630 --> 00:11:02,165 تو اب کی مصنوعات 2 ہے. 246 00:11:02,165 --> 00:11:04,040 اب ہم کیا کرنے جا رہے مصنوعات کی ضرب 3 برابر ہے. 247 00:11:04,040 --> 00:11:04,690 اب یہ 6 ہے. 248 00:11:04,690 --> 00:11:07,500 پروڈکٹ اوقات اب یہ 24 ہے، 4 کے برابر ہے. 249 00:11:07,500 --> 00:11:10,420 پروڈکٹ اوقات اب یہ 120 ہے، 5 برابر ہے. 250 00:11:10,420 --> 00:11:16,730 تو پھر بالآخر، ہم واپس لوٹنے رہے درست طریقے سے 5 جز ضربیہ ہے، جو 120،. 251 00:11:16,730 --> 00:11:17,510 >> سوال 20. 252 00:11:17,510 --> 00:11:22,480 اس سے آپ کو بھرنے کے لئے ہے جہاں ایک ہے کسی دیئے الگورتھم کے ساتھ اس کے ٹیبل میں، 253 00:11:22,480 --> 00:11:25,735 ہم نے دیکھا ہے کہ کچھ بھی، کہ ان پر algorithmic رن فٹ بیٹھتا ہے 254 00:11:25,735 --> 00:11:28,060 اوقات ان asymptotic رن کے اوقات. 255 00:11:28,060 --> 00:11:33,270 لہذا ایک الگورتھم کیا ہے 1 اومیگا، لیکن بڑا این اے ہے؟ 256 00:11:33,270 --> 00:11:35,970 اتنی لامتناہی وہاں ہو سکتا ہے یہاں بہت سے جوابات. 257 00:11:35,970 --> 00:11:39,790 ہم شاید سب سے زیادہ دیکھا ہے کہ کسی ایک اکثر صرف لکیری تلاش ہے. 258 00:11:39,790 --> 00:11:42,050 >> بہترین صورت میں تو منظر نامے، ہم شے 259 00:11:42,050 --> 00:11:44,050 کے لئے تلاش میں ہے فہرست کے آغاز 260 00:11:44,050 --> 00:11:47,400 اور تو 1 اقدامات کے ومیگا میں، ہم چیک کریں سب سے پہلی چیز، 261 00:11:47,400 --> 00:11:49,740 ہم صرف فوری طور پر واپس کہ ہم شے پایا. 262 00:11:49,740 --> 00:11:52,189 بدترین حالات میں، شے، آخر میں ہے 263 00:11:52,189 --> 00:11:53,730 یا شے میں تمام فہرست میں نہیں ہے. 264 00:11:53,730 --> 00:11:56,700 تو ہم نے تلاش کرنے کی ضرورت مکمل فہرست، تمام ن 265 00:11:56,700 --> 00:11:58,480 عناصر، اور یہ این اے ہے یہی وجہ ہے. 266 00:11:58,480 --> 00:11:59,670 267 00:11:59,670 --> 00:12:04,880 >> تو اب یہ دونوں ہے کہ کچھ ہے ن لاگ ان ن کے ومیگا، اور ن لاگ ان ن کے بڑے اے. 268 00:12:04,880 --> 00:12:08,650 ویسے سب سے زیادہ متعلقہ چیز ہم یہاں دیکھا ضم طرح ہے کیا ہے. 269 00:12:08,650 --> 00:12:12,950 تو طرح، یاد ضم، بالآخر تھیٹا ہے 270 00:12:12,950 --> 00:12:16,920 تھیٹا بیان کیا جاتا ہے جہاں ن لاگ ان ن، کی اومیگا اور بڑے O دونوں ایک ہی ہیں تو. 271 00:12:16,920 --> 00:12:17,580 دونوں ن لاگ ان ن. 272 00:12:17,580 --> 00:12:18,690 273 00:12:18,690 --> 00:12:21,970 >> اومیگا ہے کہ کچھ کیا ہے (ن) کے، اور مربع ن کے O؟ 274 00:12:21,970 --> 00:12:23,990 اچھا، پھر وہاں ہے ایک سے زیادہ ممکن جوابات. 275 00:12:23,990 --> 00:12:26,440 یہاں ہم بلبلا طرح کہنا ہو. 276 00:12:26,440 --> 00:12:28,840 اندراج کی طرح یہاں بھی کام کریں گے. 277 00:12:28,840 --> 00:12:31,400 کہ بلبلا طرح یاد رکھیں کہ اصلاح جہاں ہے، 278 00:12:31,400 --> 00:12:34,630 آپ کو حاصل کرنے کے قابل ہیں اگر مکمل فہرست کے ذریعے 279 00:12:34,630 --> 00:12:37,402 ایسا کرنے کے لئے ضرورت کے بغیر کوئی سویپ، تو، اچھی طرح سے، 280 00:12:37,402 --> 00:12:40,110 ہم فوری طور پر اس کو واپس کر سکتے فہرست کے ساتھ شروع کرنے کے لئے کے مطابق کیا گیا. 281 00:12:40,110 --> 00:12:43,185 ، سب سے بہتر صورت میں So یہ ن کا صرف ومیگا ہے. 282 00:12:43,185 --> 00:12:45,960 یہ صرف ایک اچھی طرح سے نہیں ہے تو ، کے ساتھ شروع کرنے فہرست کے مطابق 283 00:12:45,960 --> 00:12:48,270 پھر ہم این اے سویپ مربع ہے. 284 00:12:48,270 --> 00:12:49,330 285 00:12:49,330 --> 00:12:55,610 اور آخر میں، ہم انتخاب طرح ہے ن مربع لئے، اومیگا اور بڑے O. دونوں 286 00:12:55,610 --> 00:12:56,850 >> سوال نمبر 21. 287 00:12:56,850 --> 00:12:58,870 عددی اتپرواہ کیا ہے؟ 288 00:12:58,870 --> 00:13:02,160 ویسے ایک بار پھر، اس سے قبل کے لئے اسی طرح، ہم صرف finitely بہت بٹس 289 00:13:02,160 --> 00:13:04,255 ایک عدد صحیح نمائندگی کرنے کے لئے، تو ہو سکتا ہے 32 بٹس. 290 00:13:04,255 --> 00:13:06,300 291 00:13:06,300 --> 00:13:09,180 چلو ہم ایک دستخط عددی ہے کا کہنا ہے. 292 00:13:09,180 --> 00:13:12,800 پھر بالآخر سب سے زیادہ مثبت عدد ہم نمائندگی کرسکتے ہیں 293 00:13:12,800 --> 00:13:15,910 2 31 مائنس 1. 294 00:13:15,910 --> 00:13:19,370 ہم کرنے کی کوشش کریں اگر ایسا ہے تو کیا ہوتا ہے تو اس عددی اضافہ؟ 295 00:13:19,370 --> 00:13:25,320 ٹھیک ہے، ہم نے 31 کے لئے 2 سے جانے کے لئے جا رہے ہیں مائنس 1، نیچے منفی 2 کے لئے تمام طریقے 296 00:13:25,320 --> 00:13:26,490 31. 297 00:13:26,490 --> 00:13:29,470 تو یہ عددی اتپرواہ آپ incrementing رکھنے جب، 298 00:13:29,470 --> 00:13:32,330 اور بالآخر تم نہیں کر سکتے کسی بھی اعلی ہے اور یہ صرف حاصل 299 00:13:32,330 --> 00:13:34,520 پورے راستے واپس لپیٹنے ایک منفی قدر کے ارد گرد. 300 00:13:34,520 --> 00:13:35,850 301 00:13:35,850 --> 00:13:37,779 >> ایک بفر اتپرواہ کا کیا؟ 302 00:13:37,779 --> 00:13:39,820 تو ایک بفر overflow-- ایک بفر کیا ہے یاد. 303 00:13:39,820 --> 00:13:41,000 یہ صرف میموری کا ایک حصہ ہے. 304 00:13:41,000 --> 00:13:43,350 ایک صف کی طرح کچھ ایک بفر ہے. 305 00:13:43,350 --> 00:13:46,120 تو ایک بفر اتپرواہ جب ہے آپ میموری تک رسائی حاصل کرنے کی کوشش کریں 306 00:13:46,120 --> 00:13:47,880 اس صف کے آخر سے باہر. 307 00:13:47,880 --> 00:13:50,410 اگر آپ ایک ہیں تو سائز 5 اور تم میں سے سرنی 308 00:13:50,410 --> 00:13:53,700 صف بریکٹ تک رسائی حاصل کرنے کی کوشش کریں 5 یا 6 یا بریکٹ بریکٹ 7، 309 00:13:53,700 --> 00:13:56,610 اس سے آگے یا کچھ آخر، یا اس سے بھی کچھ بھی 310 00:13:56,610 --> 00:14:00,790 below-- صف بریکٹ منفی 1-- ان میں سے سب بفر کناروں سے باہر آ رہے ہیں. 311 00:14:00,790 --> 00:14:02,810 تم برے طریقے سے میموری کو چھو رہے. 312 00:14:02,810 --> 00:14:04,090 313 00:14:04,090 --> 00:14:04,730 >> سوال 23. 314 00:14:04,730 --> 00:14:05,760 315 00:14:05,760 --> 00:14:09,100 آپ کی ضرورت ہے اس میں سے ایک میں ایسا strlen کی لاگو کرنے کے لئے. 316 00:14:09,100 --> 00:14:11,630 اور ہم آپ کو یہ کر سکتے ہیں کہ آپ کو بتا ے، شہوت انگیز null نہیں ہو گا فرض، 317 00:14:11,630 --> 00:14:13,790 تاکہ آپ کی ضرورت نہیں ہے شہوت انگیز null کے لئے کسی بھی چیک کرتے ہیں. 318 00:14:13,790 --> 00:14:16,190 اور ایک سے زیادہ طریقے ہیں آپ نے یہ کیا کر سکتے تھے. 319 00:14:16,190 --> 00:14:18,440 یہاں ہم صرف براہ راست لے. 320 00:14:18,440 --> 00:14:21,780 ہم ن، ایک کاؤنٹر کے ساتھ شروع. (ن) ہے وہاں کتنے حروف کی گنتی. 321 00:14:21,780 --> 00:14:25,560 تو ہم نے اس کے بعد ہم نے 0 میں شروع، اور مکمل فہرست پر iterate. 322 00:14:25,560 --> 00:14:29,092 >> کے برابر کی بریکٹ 0 ہے شہوت انگیز null مختتم کردار؟ 323 00:14:29,092 --> 00:14:31,425 ہم کے لئے تلاش کر رہے ہیں یاد رکھیں شہوت انگیز null مختتم کردار 324 00:14:31,425 --> 00:14:33,360 ہماری سٹرنگ ہے کتنی دیر تک کا تعین کرنے کے. 325 00:14:33,360 --> 00:14:35,890 کہ ختم کرنے کے لئے کی جا رہی ہے کسی بھی متعلقہ سٹرنگ. 326 00:14:35,890 --> 00:14:39,400 تو بریکٹ برابر ہے 0 شہوت انگیز null مختتم لئے کس طرح؟ 327 00:14:39,400 --> 00:14:42,850 اگر یہ نہیں ہے، تو ہم کرنے جا رہے ہیں ے بریکٹ 1، ے بریکٹ 2 پر نظر ڈالیں. 328 00:14:42,850 --> 00:14:45,050 ہم تک جا رہو شہوت انگیز null مختتم جائے. 329 00:14:45,050 --> 00:14:48,580 ہم اسے مل گیا ہے ایک بار، تو N مشتمل تار کی کل لمبائی، 330 00:14:48,580 --> 00:14:49,942 اور ہم صرف اس کو واپس کر سکتے. 331 00:14:49,942 --> 00:14:51,180 332 00:14:51,180 --> 00:14:51,865 >> سوال 24. 333 00:14:51,865 --> 00:14:53,010 334 00:14:53,010 --> 00:14:56,050 تو یہ ایک ہے جہاں آپ کو تجارت کو بند بنانے کے لئے ہے. 335 00:14:56,050 --> 00:14:59,810 تو ایک بات ایک میں اچھا ہے ، لیکن جو طریقہ میں طریقہ یہ برا ہے؟ 336 00:14:59,810 --> 00:15:02,980 تو یہاں، ضم طرح کے لئے جاتا ہے بلبلا طرح سے تیز ہو. 337 00:15:02,980 --> 00:15:06,530 وہاں، اچھی طرح that-- کہنے کے بعد ایک سے زیادہ جوابات یہاں ہیں. 338 00:15:06,530 --> 00:15:12,930 مگر ان میں اہم یہ کہ بلبلا طرح ہے ایک کے مطابق کی فہرست کے لئے (ن) کے ومیگا ہے. 339 00:15:12,930 --> 00:15:14,950 >> ہم صرف پہلے دیکھا کہ میز یاد رکھیں. 340 00:15:14,950 --> 00:15:17,600 لہذا بلبلا کے اومیگا قسم ن، سب سے بہتر صورت 341 00:15:17,600 --> 00:15:20,010 یہ صرف پر جانے کے لئے کے قابل ہے ہے فہرست میں ایک بار، اس بات کا تعین 342 00:15:20,010 --> 00:15:22,270 ارے اس بات کو پہلے سے ہی ہے مطابق کیا، اور واپسی. 343 00:15:22,270 --> 00:15:25,960 کوئی بات نہیں، طرح ضم کیا تم کرتے ہو، ن لاگ ان ن کے ومیگا ہے. 344 00:15:25,960 --> 00:15:29,200 کے مطابق کی فہرست کے لئے، بلبلا تاکہ قسم کا تیز ہو رہا ہے. 345 00:15:29,200 --> 00:15:30,870 346 00:15:30,870 --> 00:15:32,430 >> اب فہرستوں ہیں کے بارے میں منسلک؟ 347 00:15:32,430 --> 00:15:36,070 تاکہ ایک لنک کی فہرست کے بڑھنے اور سکڑ کر سکتے ہیں ضرورت کے مطابق کے طور پر بہت سے عناصر کو فٹ کرنے کے. 348 00:15:36,070 --> 00:15:38,489 تاکہ that-- کہنے کے بعد عام طور پر براہ راست مقابلے 349 00:15:38,489 --> 00:15:40,280 ایک سے منسلک ہونے جا رہا ہے ایک صف کے ساتھ کی فہرست. 350 00:15:40,280 --> 00:15:41,600 351 00:15:41,600 --> 00:15:44,050 تو بھی arrays کے کر سکتے ہیں اگرچہ آسانی سے بڑھنے اور سکڑ 352 00:15:44,050 --> 00:15:47,130 کے طور پر بہت سے عناصر فٹ ہونے کے لئے ضرورت کے مطابق، ایک فہرست منسلک 353 00:15:47,130 --> 00:15:49,600 ایک صف میں ایک کے مقابلے سرنی رینڈم رسائی ہے. 354 00:15:49,600 --> 00:15:52,960 ہم کسی بھی میں انڈیکس کر سکتے ہیں صف کے خاص عنصر. 355 00:15:52,960 --> 00:15:56,430 >> تاکہ ایک لنک کی فہرست کے لئے، ہم نہیں کر سکتے صرف پانچویں عنصر کے پاس جاؤ، 356 00:15:56,430 --> 00:16:00,260 ہم شروع سے گزرنا ہے ہم پانچویں عنصر ملتا ہے جب تک. 357 00:16:00,260 --> 00:16:03,990 اور اس سے ہم کو روکنے کے لئے جا رہا ہے بائنری تلاش کی طرح کچھ کر رہی. 358 00:16:03,990 --> 00:16:08,150 بائنری تلاش کے خطاب کرتے ہوئے، بائنری تلاش لکیری تلاش سے تیز ہو جاتا. 359 00:16:08,150 --> 00:16:11,120 that-- کہنے کے بعد تاکہ، ایک ممکن چیز 360 00:16:11,120 --> 00:16:13,380 آپ کو بائنری ایسا نہیں کر سکتے ہیں ہے منسلک کی فہرست پر تلاش، 361 00:16:13,380 --> 00:16:14,730 آپ صرف arrays پر ایسا کر سکتے ہیں. 362 00:16:14,730 --> 00:16:18,030 لیکن شاید زیادہ اہم بات، آپ کو بائنری تلاش نہیں کر سکتے 363 00:16:18,030 --> 00:16:20,690 مطابق نہیں ہے کہ ایک صف پر. 364 00:16:20,690 --> 00:16:23,990 براہ راست آپ الگ الگ کرنے کی ضرورت ہو سکتی سرنی، اور صرف اس صورت پر کر سکتے ہیں 365 00:16:23,990 --> 00:16:25,370 آپ کو بائنری تلاش کرتے ہیں. 366 00:16:25,370 --> 00:16:27,660 آپ کی بات نہیں ہے اگر ایسا ہے تو کے ساتھ شروع کرنے کے مطابق، 367 00:16:27,660 --> 00:16:29,250 پھر لکیری تلاش تیزی سے ہو سکتا ہے. 368 00:16:29,250 --> 00:16:30,620 369 00:16:30,620 --> 00:16:31,740 >> سوال 27. 370 00:16:31,740 --> 00:16:34,770 تو ذیل پروگرام پر غور، جس اگلی سلائڈ میں ہو جائے گا. 371 00:16:34,770 --> 00:16:37,790 اور یہ ہم ہیں جہاں سے ایک ہے واضح طور پر بیان کرنے کے لئے کرنا چاہتے ہیں جا 372 00:16:37,790 --> 00:16:39,980 مختلف متغیرات کے لئے اقدار. 373 00:16:39,980 --> 00:16:41,990 تو کی ہے کہ دیکھو. 374 00:16:41,990 --> 00:16:43,160 >> لہذا ایک ہی لائن. 375 00:16:43,160 --> 00:16:45,457 ہم int ایکس 1 برابر ہے. 376 00:16:45,457 --> 00:16:47,040 جو کچھ بھی ہوا ہے کہ صرف ایک ہی چیز ہے. 377 00:16:47,040 --> 00:16:50,440 تو لائن ایک میں، ہم میں دیکھتے ہمارے میز، کہ y، A، B، اور tmp تمام ہیں 378 00:16:50,440 --> 00:16:51,540 تاریکی میں ڈوب گیا. 379 00:16:51,540 --> 00:16:52,280 تو ایکس کیا ہے؟ 380 00:16:52,280 --> 00:16:53,860 ویسے ہم صرف اسے 1 کے برابر مقرر. 381 00:16:53,860 --> 00:16:55,020 382 00:16:55,020 --> 00:16:58,770 اور اس کے بعد، اچھی طرح سے، دو لائن ہم، Y 2 سے مقرر کیا گیا ہے کہ دیکھیں 383 00:16:58,770 --> 00:17:00,550 اور ٹیبل پہلے سے ہی ہے ہمارے لیے میں بھرا ہوا. 384 00:17:00,550 --> 00:17:03,040 تو ایکس 1 ہے اور Y 2 ہے. 385 00:17:03,040 --> 00:17:05,890 >> اب، لائن تین، اب ہم ہیں سویپ تقریب کے اندر. 386 00:17:05,890 --> 00:17:07,560 کیا ہوگا اگر ہم تبادلہ کرنے کی کو منتقل ہوئی؟ 387 00:17:07,560 --> 00:17:11,609 ہم کے لئے ایمپرسینڈ ایکس منظور ب کے لئے ایک، اور ایمپرسینڈ Y. 388 00:17:11,609 --> 00:17:15,160 کہاں مسئلہ اوائل بیان کیا گیا ہے کہ ایکس کا پتہ 389 00:17:15,160 --> 00:17:17,520 0x10 ہے، اور y کا ایڈریس 0x14 ہے. 390 00:17:17,520 --> 00:17:18,970 391 00:17:18,970 --> 00:17:21,909 تو ایک اور ب کے برابر ہیں بالترتیب 0x10 اور 0x14،. 392 00:17:21,909 --> 00:17:23,670 393 00:17:23,670 --> 00:17:26,250 >> اب لائن تین میں، x اور y کیا ہیں؟ 394 00:17:26,250 --> 00:17:28,554 ویسے، کچھ بھی نہیں تبدیل کر دیا گیا اس مقام پر X اور Y کے بارے میں. 395 00:17:28,554 --> 00:17:30,470 یہاں تک کہ وہ ہو اگرچہ ایک اہم اسٹیک فریم کے اندر، 396 00:17:30,470 --> 00:17:32,469 وہ اب بھی ایک ہی ہے اقدار وہ پہلے کیا. 397 00:17:32,469 --> 00:17:34,030 ہم کسی بھی میموری سے نظر ثانی نہیں کی ہے. 398 00:17:34,030 --> 00:17:35,710 تو ایکس 1 ہے، Y 2 ہے. 399 00:17:35,710 --> 00:17:36,550 400 00:17:36,550 --> 00:17:37,050 ٹھیک ہے. 401 00:17:37,050 --> 00:17:40,300 تو اب ہم ایک ستارہ کے برابر ہے int tmp کے کہا. 402 00:17:40,300 --> 00:17:44,410 تو لائن چار، ہر چیز پر tmp کے علاوہ ایک ہی ہے. 403 00:17:44,410 --> 00:17:47,130 ہم کسی بھی اقدار کو تبدیل نہیں کیا ہے tmp کے علاوہ کسی بھی چیز کا. 404 00:17:47,130 --> 00:17:49,230 ہم ایک ستارہ کے برابر tmp کے قائم کر رہے ہیں. 405 00:17:49,230 --> 00:17:50,620 ستارہ ایک کیا ہے؟ 406 00:17:50,620 --> 00:17:56,240 ٹھیک ہے، ایک پوائنٹس x کی، تو ایک ستارہ 1 ہے، جس کے برابر X، میں جا رہی ہے. 407 00:17:56,240 --> 00:18:00,080 تو سب کچھ کاپی کیا جاتا ہے نیچے، اور tmp 1 پر متعین ہے. 408 00:18:00,080 --> 00:18:01,110 >> اب اگلی لائن. 409 00:18:01,110 --> 00:18:03,380 ستارہ ایک ستارہ ب برابر. 410 00:18:03,380 --> 00:18:10,000 تو لائن کی طرف سے پانچ اچھی طرح ایک بار پھر، سب کچھ ستارہ ایک جو کچھ بھی ہے، سوائے ایک ہی ہے. 411 00:18:10,000 --> 00:18:10,830 ستارہ ایک کیا ہے؟ 412 00:18:10,830 --> 00:18:13,720 ٹھیک ہے، ہم صرف اسٹار ایک ایکس ہے نے کہا. 413 00:18:13,720 --> 00:18:16,400 تو ہم برابر کے سٹار بی ایکس تبدیل کر رہے ہیں. 414 00:18:16,400 --> 00:18:18,960 سٹار ب کیا ہے؟ Y. Y بی پوائنٹس. 415 00:18:18,960 --> 00:18:21,030 لہذا سٹار ب Y ہے. 416 00:18:21,030 --> 00:18:25,140 تو ہم، Y ایکس برابر قائم رہے اور سب کچھ ایک ہی ہے. 417 00:18:25,140 --> 00:18:29,130 X اب یہ ہے کہ تو ہم اگلی صف میں دیکھنا 2، اور باقی صرف نیچے نقل کئے جاتے ہیں. 418 00:18:29,130 --> 00:18:31,120 >> اب اگلی لائن میں، ستارہ ب tmp برابر. 419 00:18:31,120 --> 00:18:34,740 ٹھیک ہے، ہم صرف اسٹار ب Y ہے نے کہا، تا ہم tmp کرنے Y برابر قائم رہے. 420 00:18:34,740 --> 00:18:37,450 باقی سب کچھ، ایک ہی ہے تو سب کچھ نیچے کی کاپی ہو جاتا ہے. 421 00:18:37,450 --> 00:18:42,050 ہم جو ہے، tmp کے برابر Y قائم کر رہے ہیں اور نہیں، اور سب کچھ ایک ہی ہے. 422 00:18:42,050 --> 00:18:43,210 >> اب آخر میں، لائن سات. 423 00:18:43,210 --> 00:18:44,700 ہم واپس مرکزی تقریب میں ہو. 424 00:18:44,700 --> 00:18:46,350 سویپ ختم ہو گیا ہے کے بعد ہم ہو. 425 00:18:46,350 --> 00:18:48,972 ہم نے ایک، ب کھو دیا، اور کیا ہے tmp کے، لیکن ہم بالآخر 426 00:18:48,972 --> 00:18:51,180 کسی بھی اقدار کو تبدیل نہیں کر رہے ہیں اس مقام پر کسی بھی چیز کا، 427 00:18:51,180 --> 00:18:52,800 ہم صرف X اور Y کو نیچے کاپی. 428 00:18:52,800 --> 00:18:56,490 اور ہم X اور Y ہو دیکھیں اب 2 اور 1 کے بجائے 1 اور 2. 429 00:18:56,490 --> 00:18:58,160 سویپ کامیابی سے پھانسی دے دی ہے. 430 00:18:58,160 --> 00:18:59,500 431 00:18:59,500 --> 00:19:00,105 >> سوال 28. 432 00:19:00,105 --> 00:19:01,226 433 00:19:01,226 --> 00:19:03,100 آپ کا سامنا کہ مان خرابی کے پیغامات 434 00:19:03,100 --> 00:19:06,790 دفتری اوقات کے دوران ذیل میں ایک CA یا TF طور پر اگلے سال. 435 00:19:06,790 --> 00:19:08,930 ان غلطیوں میں سے ہر ایک ٹھیک کرنے کے لئے کس طرح مشورہ. 436 00:19:08,930 --> 00:19:11,160 GetString کے لئے اتنا جانچ حوالہ. 437 00:19:11,160 --> 00:19:12,540 کیوں آپ کو یہ دیکھ سکتا ہے؟ 438 00:19:12,540 --> 00:19:15,380 ویسے، ایک طالب علم استعمال کر رہی ہے ان کے کوڈ میں GetString، 439 00:19:15,380 --> 00:19:20,310 وہ مناسب طریقے سے CS50 شامل ہیش کیا ہے ڈاٹ H CS50 لائبریری شامل کرنا. 440 00:19:20,310 --> 00:19:22,380 >> ٹھیک ہے، وہ کیا کریں اس خرابی کو ٹھیک کرنے کی ضرورت ہے؟ 441 00:19:22,380 --> 00:19:26,810 وہ بالکل ایک ڈیش lcs50 کچھ کرنے کی ضرورت وہ مرتب کر رہے ہیں، جب کمانڈ لائن. 442 00:19:26,810 --> 00:19:29,501 وہ پاس نہیں ہے اگر ایسا ہے تو بجنا ڈیش lcs50، وہ ہو 443 00:19:29,501 --> 00:19:32,000 اصل میں ہونے والا نہیں GetString کے لاگو کرتی ہے کہ کوڈ. 444 00:19:32,000 --> 00:19:33,190 445 00:19:33,190 --> 00:19:34,170 >> سوال 29. 446 00:19:34,170 --> 00:19:36,190 لپیٹ اعلان لائبریری تقریب strlen. 447 00:19:36,190 --> 00:19:37,550 448 00:19:37,550 --> 00:19:40,360 اچھی طرح اب یہ، وہ نہیں ہے مناسب ہیش کیا شامل ہیں. 449 00:19:40,360 --> 00:19:41,440 450 00:19:41,440 --> 00:19:45,410 اس خاص معاملے میں، ہیڈر فائل وہ، سٹرنگ ڈاٹ H ہے شامل کرنے کی ضرورت 451 00:19:45,410 --> 00:19:48,710 اور اب سٹرنگ ڈاٹ H، بشمول اب طالب علم سنکلک 452 00:19:48,710 --> 00:19:51,750 تک رسائی حاصل ہے strlen کی کے ڈیکلیریشنز، 453 00:19:51,750 --> 00:19:54,120 اور یہ جانتا ہے کہ آپ کے کوڈ درست طریقے strlen کی استعمال کر رہا ہے. 454 00:19:54,120 --> 00:19:55,380 455 00:19:55,380 --> 00:19:56,580 >> سوال نمبر 30. 456 00:19:56,580 --> 00:20:00,240 زیادہ فیصد تبادلوں ڈیٹا دلائل کے مقابلے میں. 457 00:20:00,240 --> 00:20:01,540 تو یہ کیا ہے؟ 458 00:20:01,540 --> 00:20:06,470 ویسے ان فیصد یاد رکھیں کہ وہ printf سے متعلقہ ہیں کہ کس طرح signs--. 459 00:20:06,470 --> 00:20:08,890 تو printf میں ہم percent-- سکتا ہم کچھ پرنٹ کر سکتے ہیں 460 00:20:08,890 --> 00:20:11,380 فیصد جیسے میں ن الٹا سلیش. 461 00:20:11,380 --> 00:20:15,310 یا ہم، فیصد میں طرح پرنٹ کر سکتے ہیں خلا، فیصد میں، خلا، فیصد میں. 462 00:20:15,310 --> 00:20:18,950 ان لوگوں میں سے ہر ایک کے لئے اتنا فیصد علامات، ہمیں ضرورت ہے 463 00:20:18,950 --> 00:20:21,560 printf کے کے اختتام پر ایک متغیر کو منتقل کرنے کی. 464 00:20:21,560 --> 00:20:26,980 >> لہذا ہم کہتے ہیں کہ اگر میں printf قوس فیصد مجھے، ن قریبی قوس الٹا سلیش 465 00:20:26,980 --> 00:20:30,270 ساتھ ساتھ، ہم ہم ہو یہ کہنا ایک عددی پرنٹ جا رہا، 466 00:20:30,270 --> 00:20:33,970 لیکن پھر ہم printf پاس نہیں ہے ایک عددی اصل میں پرنٹ کرنا. 467 00:20:33,970 --> 00:20:37,182 تو یہاں زیادہ فیصد ڈیٹا دلائل سے زیادہ تبادلوں؟ 468 00:20:37,182 --> 00:20:39,390 کہ ہم ہے کہ کہہ رہا ہے فیصد کے پورے گچرچھی، 469 00:20:39,390 --> 00:20:42,445 اور ہم کافی متغیر کی ضرورت نہیں ہے اصل میں ان percents میں کو بھرنے کے لئے. 470 00:20:42,445 --> 00:20:44,850 471 00:20:44,850 --> 00:20:50,010 >> اور اس کے بعد یقینی طور پر، سوال 31، ضرور ایک بلاکوں میں 40 بائٹس کھو. 472 00:20:50,010 --> 00:20:52,350 تو یہ ایک Valgrind کے غلطی ہے. 473 00:20:52,350 --> 00:20:54,720 یہ کہہ رہا ہے کہ کہیں آپ کے کوڈ میں، 474 00:20:54,720 --> 00:20:59,010 آپ 40 ہے کہ ایک سے تین ہلاک ہے بائٹس بڑی لہذا آپ، 40 بائٹس malloced کر 475 00:20:59,010 --> 00:21:00,515 اور آپ اس کو آزاد کر دیا کبھی نہیں. 476 00:21:00,515 --> 00:21:02,480 477 00:21:02,480 --> 00:21:05,140 آپ کو صرف ضرورت سب سے زیادہ امکان کچھ میموری لیک کو تلاش کرنے کے، 478 00:21:05,140 --> 00:21:07,650 اور آپ کو کرنے کی ضرورت ہے جہاں آپ کو مل میموری کے اس بلاک کو آزاد. 479 00:21:07,650 --> 00:21:08,780 480 00:21:08,780 --> 00:21:11,910 >> اور، 32 سوال 4 سائز کے جعلی لکھنے. 481 00:21:11,910 --> 00:21:13,250 ایک بار پھر یہ ایک Valgrind کے غلطی ہے. 482 00:21:13,250 --> 00:21:15,440 ایسا کرنے کے لئے نہیں ہے اب میموری لیک کے ساتھ. 483 00:21:15,440 --> 00:21:20,750 یہ میرا مطلب likely-- سب سے، یہ بات ہے، ہے جعلی میموری حقوق میں سے کسی قسم کا. 484 00:21:20,750 --> 00:21:23,270 اور سب سے زیادہ امکان یہ ہے کچھ بفر اتپرواہ کی طرح. 485 00:21:23,270 --> 00:21:26,560 تم کہاں ہو سکتا ہے، ایک صف ہے ایک عددی صف، اور چلو 486 00:21:26,560 --> 00:21:30,115 یہ 5 سائز کے ہے کہیں، اور آپ کو صف بریکٹ 5 چھو کرنے کی کوشش. 487 00:21:30,115 --> 00:21:34,150 تم نے اس پر لکھنے کی کوشش تو اگر قدر، اس میموری کا ایک ٹکڑا نہیں ہے 488 00:21:34,150 --> 00:21:37,440 آپ اصل میں تک رسائی حاصل ہے، اور یہ کہ لہذا آپ کو اس غلطی کو حاصل کرنے کے لئے جا رہے ہیں، 489 00:21:37,440 --> 00:21:39,272 4 سائز کے جعلی لکھنے کہہ. 490 00:21:39,272 --> 00:21:42,480 Valgrind آپ ہیں تسلیم کرنے کی جا رہی ہے نامناسب میموری کو چھو کرنے کی کوشش کر. 491 00:21:42,480 --> 00:21:43,980 >> اور یہ کہ quiz0 لئے ہے. 492 00:21:43,980 --> 00:21:47,065 میں روب Bowden ہوں، اور اس CS50 ہے. 493 00:21:47,065 --> 00:21:51,104