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