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