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