1 00:00:00,000 --> 00:00:02,760 [Powered by Google Translate] [5 ہفتہ] 2 00:00:02,760 --> 00:00:04,760 [ڈیوڈ J. Malan، ہارورڈ یونیورسٹی] 3 00:00:04,760 --> 00:00:11,990 [یہ CS50 ہے.] [CS50.TV] 4 00:00:11,990 --> 00:00:17,780 [عورت] وہ جھوٹ بول رہا ہے، کے بارے میں کیا، مجھے پتہ نہیں ہے. 5 00:00:17,780 --> 00:00:20,300 [انسان] تو ہم کیا جانتے ہیں؟ 6 00:00:20,300 --> 00:00:24,120 [عورت] کہ 9:15 بجے، رے Santoya ATM پر تھا. 7 00:00:24,120 --> 00:00:27,420 [انسان] تو سوال کیا گیا ہے وہ 9:16 بجے کیا کر رہے ہو؟ 8 00:00:27,420 --> 00:00:29,980 [عورت] کچھ میں 9 ملی میٹر شوٹنگ. 9 00:00:29,980 --> 00:00:31,900 شاید وہ سپنر کو دیکھا. 10 00:00:31,900 --> 00:00:34,000 [انسان] یا پھر وہ ان کے ساتھ کام کر رہا تھا. 11 00:00:34,000 --> 00:00:36,330 [عورت] انتظار کریں. واپس ایک جاؤ. 12 00:00:36,330 --> 00:00:38,330 [انسان] آپ کیا دیکھتے ہیں؟ 13 00:00:38,330 --> 00:00:44,520 [♫ Suspenseful موسیقی ♫] 14 00:00:44,520 --> 00:00:48,320 [عورت] ان کے چہرے کو لے آو. فل سکرین. 15 00:00:48,320 --> 00:00:51,230 [انسان] ان کے شیشے. >> ایک عکس ہے. 16 00:00:51,230 --> 00:01:00,810 [♫ Suspenseful موسیقی ♫] 17 00:01:00,810 --> 00:01:03,580 [مان] یہ Nuevita کی بیس بال کی ٹیم ہے. کہ ان کی علامت (لوگو) ہے. 18 00:01:03,580 --> 00:01:07,790 [عورت] اور وہ جس نے اس جیکٹ پہنے ہے سے بات کر رہا ہے. 19 00:01:07,790 --> 00:01:13,730 >> [ڈیوڈ Malan] تو، اس CS50 5 ہفتے ہے، اور آج ہم آپ کے لئے ٹیلی ویژن اور فلم کے تھوڑا سا خراب ہے. 20 00:01:13,730 --> 00:01:16,170 تو، جب بھی تم اس طرح ایک شو دیکھ رہے ہیں 21 00:01:16,170 --> 00:01:19,910 اور پولیس کا کہنا ہے کہ "کہ تم نے صاف کر سکتا ہے؟" یا "افزوں،" 22 00:01:19,910 --> 00:01:21,900 حقیقی دنیا میں کوئی بڑھانے ہے. 23 00:01:21,900 --> 00:01:25,220 اصل میں، کیا آپ واقعی لے اس طرح ایک چھوٹی سی چیز ہے. 24 00:01:25,220 --> 00:01:27,570 میں ھنچائی کے صفحے سے عملے تصاویر میں سے ایک ہے. 25 00:01:27,570 --> 00:01:30,980 یہ کہا جاتا فوٹوشاپ پروگرام ہے. یہ 1 2 Bowdens کی ہے، 26 00:01:30,980 --> 00:01:36,300 1 3 اصل Bowdens، آج، کیونکہ ہم مسز Bowden ہے ساتھ ساتھ یہاں روب اور پال کے ساتھ. 27 00:01:36,300 --> 00:01:41,950 لیکن یہاں کی سکرین پر روب ہے، اور اگر اس چمکنا پر ہم زوم وہ ہمیشہ اس کی آنکھوں میں دیکھا گیا ہے، 28 00:01:41,950 --> 00:01:47,600 کیا آپ اصل میں دیکھنا یہ ہے کہ جو تم دیکھتے ہو کیا تمہیں حاصل ہے. 29 00:01:47,600 --> 00:01:51,690 یہ ہے "بہتر" تو "CSI" یہ تھوڑا سا غلط ہے. 30 00:01:51,690 --> 00:01:55,190 ایک دوسرے کلپ ہے، اگر ہم "CSI" اب صرف تھوڑا سا پر منتخب کر سکتے ہیں. 31 00:01:55,190 --> 00:01:58,500 یہ ایک اچھا آج کے بعد اگر آپ چاہتے ہیں تو بولنا جملہ ہے 32 00:01:58,500 --> 00:02:10,280 اپنے دوستوں کے ساتھ تکنیکی آواز جب، سچ، تم بالکل کچھ بھی نہیں کہہ رہے ہو. 33 00:02:10,280 --> 00:02:12,970 >> [انسان] میں ہفتے گیا ہے کوچوان قاتل قتل کی تحقیقات 34 00:02:12,970 --> 00:02:15,360 ایک خاص مریض توجہ کے ساتھ. 35 00:02:15,360 --> 00:02:17,160 [عورت # 1] یہ حقیقی وقت میں ہے. 36 00:02:17,160 --> 00:02:22,930 [عورت # 2] میں گيا بنیادی کا استعمال کرتے ہوئے ایک GUI انٹرفیس کو تشکیل دیتے ہیں، اگر میں ایک IP ایڈریس کو ٹریک کر سکتے ہیں نظر آئے گا. 37 00:02:22,930 --> 00:02:29,570 >> [Malan] ایک طرف ہم آہنگی کی تو باہر آڈیو، بصری بنیادی کا استعمال کرتے ہوئے ایک GUI انٹرفیس کی تخلیق 38 00:02:29,570 --> 00:02:31,820 ایک IP ایڈریس پر نظر رکھنے کے مکمل بکواس ہے. 39 00:02:31,820 --> 00:02:33,840 ان دنوں آپ گيا بنیادی استعمال نہیں کریں گے، 40 00:02:33,840 --> 00:02:38,920 ایک GUI کے لئے کوئی ضرورت نہیں ہے، اور IP ایڈریس ایک تکنیکی طور پر درست اصطلاح ہے. 41 00:02:38,920 --> 00:02:41,730 تو ان کے لئے ایک آنکھ باہر رکھنے، اور میرے پسندیدہ میں سے ایک: 42 00:02:41,730 --> 00:02:45,070 یہ تھوڑا arcane ہے، کیونکہ آپ کو ایک مختلف قسم کی زبان کو جاننے کی ضرورت ہے. 43 00:02:45,070 --> 00:02:47,860 مقصد C-نامی ایک زبان، جو سی کے ایک superset ہے 44 00:02:47,860 --> 00:02:51,960 جو اس C کے علاوہ کچھ اضافی خصوصیات ان پر مبنی پروگرامنگ شئی کو درمیان، اس کا مطلب ہے. 45 00:02:51,960 --> 00:02:55,070 اور یہ زبان ہے کہ ایپل iOS پروگرامنگ کے لئے عام کیا ہے. 46 00:02:55,070 --> 00:02:58,760 اور اس طرح یہاں ایک مختلف شو سے مکمل طور پر ایک کلپ، سے "نمبر" 47 00:02:58,760 --> 00:03:02,450 کہ، اگر آپ اپنے کو روکنے اور TiVo پر اصل میں صحیح وقت پر قریبی نظر 48 00:03:02,450 --> 00:03:07,700 تمہیں دیکھ گے کہ جو کچھ وہ دیکھ رہے ہیں بہت نہیں کیا ہے بیان کیا جا رہا ہے ہے. 49 00:03:07,700 --> 00:03:11,170 اور مجھے ایک مختلف آڈیو کنیکٹر یہاں کوشش کرتے ہیں اور اگر ہم نہیں کر سکتے دیکھ 50 00:03:11,170 --> 00:03:13,780 مطابقت پذیری میں آڈیو اس وقت رکھیں. 51 00:03:13,780 --> 00:03:20,530 میں نے آپ کو "نمبر." 52 00:03:20,530 --> 00:03:23,240 >> [انسان # 1] یہ ایک 32 بٹ IPv4 ایڈریس ہے. 53 00:03:23,240 --> 00:03:38,930 [انسان # 2] IP، کہ انٹرنیٹ. >> ذاتی نیٹ ورک. یہ انیتا کے ذاتی نیٹ ورک ہے. 54 00:03:38,930 --> 00:03:43,810 [Malan] ٹھیک ہے. اس مقصد C-ہے، اور یہ کسی بچے کو رنگنے کے پروگرام کے لئے ہے، 55 00:03:43,810 --> 00:03:51,140 آپ وہاں متغیر کے نام سے شاید اندازہ کر سکتے ہیں. 56 00:03:51,140 --> 00:03:54,410 کہ تو تو تھا "نمبر." ہم نے تو آج اور اس ہفتے متعارف کرانے 57 00:03:54,410 --> 00:03:57,740 لہذا مسائل میں عدالتی اور سیاق و سباق کے دنیا کے تھوڑا سا ہے. 58 00:03:57,740 --> 00:04:00,590 آج ایک مختصر لیکچر کیونکہ یہاں ایک خصوصی تقریب 59 00:04:00,590 --> 00:04:05,530 کے بعد، تو ہم ایک جھانکنا لے، اور چڑھانا طلباء اور دونوں یکساں والدین آج کریں گے 60 00:04:05,530 --> 00:04:07,420 چیزوں ہے کہ افق پر ہیں میں سے کچھ کے ساتھ. 61 00:04:07,420 --> 00:04:12,240 ان میں، آپ کو پیر کے طور پر کچھ زیادہ ہم جماعتوں پڑے گا. 62 00:04:12,240 --> 00:04:16,050 EdX ہارورڈ، اور کھلے نصاب کے لئے MITs نئی آن لائن پہل 63 00:04:16,050 --> 00:04:19,120 اور زیادہ، پیر کو ہارورڈ یونیورسٹی کے کیمپس پر شروع کر رہا ہے. 64 00:04:19,120 --> 00:04:21,490 آخری شمار کے طور پر، - جو آئے پیر کا مطلب ہے کہ آپ کو کرنا پڑے گا 65 00:04:21,490 --> 00:04:26,210 86.000 اضافی ہم جماعتوں کے ساتھ CS50 لیکچر کے ساتھ کے بعد رکھا جائے گا 66 00:04:26,210 --> 00:04:29,170 حصے اور walkthroughs اور مسئلہ کے سیٹ. 67 00:04:29,170 --> 00:04:32,350 اور، آپ کو اس کے حصے کے طور پر کی افتتاحی طبقے کی رکن بن جائے گا 68 00:04:32,350 --> 00:04:35,090 CS50 اور اب CS50x. 69 00:04:35,090 --> 00:04:39,310 >> اس کے حصہ کے طور پر، اب احساس ہوتا ہے کہ کچھ upsides ساتھ ساتھ. 70 00:04:39,310 --> 00:04:43,790 طالب علموں کے بڑے پیمانے پر کی تعداد کے لئے، اس کے لئے تیار حاصل کرنے، 71 00:04:43,790 --> 00:04:47,180 یہ کہنا کافی ہے کہ اگرچہ ہم نے 108 TFs اور کیس ہے، 72 00:04:47,180 --> 00:04:50,790 نہیں بہت بہترین طالب علم / استاد کے تناسب میں ایک بار ہم نے 80،000 دیگر طلباء کو مارا. 73 00:04:50,790 --> 00:04:52,850 تو ہم جا نہیں کر رہے ہیں بہت سے مسئلہ گریڈنگ دستی طور پر متعین کرتا ہے. 74 00:04:52,850 --> 00:04:55,920 اس ہفتے تو مسئلہ سیٹ میں پیش کیا CS50 چیک کیا جائے گا، 75 00:04:55,920 --> 00:04:58,450 جو آلے کے اندر اندر ایک کمانڈ لائن افادیت کی جا رہی ہے 76 00:04:58,450 --> 00:05:01,200 کہ آپ ایک بار تم اس کے بعد میں اس ہفتے کے آخر میں اپ ڈیٹ کریں گے، 77 00:05:01,200 --> 00:05:03,200 اور آپ ایک کمانڈ چلانے کے لئے کے قابل ہو جائے گا، 50 چیک کرنے کے لیے، 78 00:05:03,200 --> 00:05:06,500 اور اپنے اپنے pset پر، آپ کو کہ آیا آپ کا پروگرام ہے کچھ کی رائے حاصل کریں گے 79 00:05:06,500 --> 00:05:11,160 صحیح یا غلط مختلف ڈیزائن ونیردیشوں میں کہا گیا ہے کہ ہم نے فراہم کی ہے کے مطابق ہے. 80 00:05:11,160 --> 00:05:13,580 تو اس کے بارے میں مزید اور مسئلہ سیٹ تفصیلات اور 81 00:05:13,580 --> 00:05:17,240 CS50x ہم جماعتوں نے اس کے ساتھ ساتھ استعمال کر رہے ہیں. 82 00:05:17,240 --> 00:05:19,230 >> تو مسئلہ 4 سیٹ ہے عدالتی کے بارے میں سب. 83 00:05:19,230 --> 00:05:21,940 اور یہ ٹکڑا کچھ چیزیں حقیقی زندگی کی طرف سے حوصلہ افزائی کیا گیا تھا، 84 00:05:21,940 --> 00:05:24,620 جس کے تحت جب میں گریجویٹ اسکول میں تھا، میں اس کے ساتھ تھوڑی دیر کے لئے interned 85 00:05:24,620 --> 00:05:28,650 Middlesex کاؤنٹی ڈسٹرکٹ اٹارنی آفس عدالتی کام کر رہی 86 00:05:28,650 --> 00:05:31,650 میں ان کی برتری عدالتی تفتیش کے ساتھ، اور اس کی ترسیلات 87 00:05:31,650 --> 00:05:35,260 ہے، اب مجھے لگتا ہے کہ میں نے چند ہفتے کے ماضی کا ذکر کیا ہے، ماس ریاست پولیس یا دیگر 88 00:05:35,260 --> 00:05:39,000 میں آئے گا، وہ ہارڈ ڈرائیوز اور سی ڈیز اور فلاپی ڈسک کی طرح چیزوں کو چھوڑ دیں گے 89 00:05:39,000 --> 00:05:42,340 وغيرہ پر، اور پھر عدالتی دفتر کے مقاصد کے تعین تھا کہ کیا 90 00:05:42,340 --> 00:05:44,600 وہاں تھا یا کسی قسم کے ثبوت نہیں تھا. 91 00:05:44,600 --> 00:05:48,010 یہ اسپیشل انویسٹی گیشن یونٹ تھا، تو یہ جرم وائٹ کالر تھا، 92 00:05:48,010 --> 00:05:52,350 یہ جرائم کی زیادہ پریشان طرح تھا، 93 00:05:52,350 --> 00:05:55,990 کے کچھ قسم کی ڈیجیٹل میڈیا شامل کچھ، پتہ چلا ہے کہ نہیں کہ بہت سے لوگ 94 00:05:55,990 --> 00:05:59,370 ایک ہوئے کہا کہ ای میل لکھنے "میں نے یہ کیا ہے." 95 00:05:59,370 --> 00:06:03,290 تو اکثر ان عدالتی تلاش بند نہیں کیا ہے کہ زیادہ پھل، 96 00:06:03,290 --> 00:06:05,850 لیکن کبھی کبھی لوگوں کو اس طرح کے ای میل لکھنے ہوں گے. 97 00:06:05,850 --> 00:06:08,490 تو کبھی کبھی کوششوں ایوارڈ دیا گیا. 98 00:06:08,490 --> 00:06:14,420 >> لیکن اس عدالتی pset کی قیادت، ہم 4 pset گرافکس کا تھوڑا سا میں متعارف کرانے گے. 99 00:06:14,420 --> 00:06:18,260 تو آپ شاید حاصل کی جاچکی، JPEGs GIFs، اور ان دنوں کی طرح ان چیزوں کو لے، 100 00:06:18,260 --> 00:06:21,640 لیکن اگر تم واقعی اس کے بارے میں کیا سوچتے ہیں، ایک تصویر، روب چہرے کی طرح 101 00:06:21,640 --> 00:06:24,430 نقطے کے ایک ہی تسلسل ہے، یا پکسلز کے طور پر ماڈلنگ جا سکتا ہے. 102 00:06:24,430 --> 00:06:26,680 اب، روب چہرے کی صورت میں، رنگوں کا ہر طرح ہے، 103 00:06:26,680 --> 00:06:29,940 اور ہم انفرادی نقطہ، otherwide پکسلز کے طور پر جانا جاتا ہے کو دیکھنے کے لئے شروع کر دیا، 104 00:06:29,940 --> 00:06:31,610 ایک بار ہم اندر زوم شروع 105 00:06:31,610 --> 00:06:35,590 لیکن اگر ہم دنیا کو تھوڑا آسان بنانے، اور صرف اتنا کہنا ہے کہ یہاں یہ روب ہے 106 00:06:35,590 --> 00:06:40,560 میں سیاہ فام اور سفید فام، اچھی طرح سیاہ، کی نمائندگی کرنے اور سفید میں ہم بائنری استعمال کر سکتے ہیں. 107 00:06:40,560 --> 00:06:44,960 اور اگر ہم بائنری کو استعمال کرنے کے لئے جا رہے ہیں، 1 یا 0، ہم یہ وہی تصویر کا اظہار کر سکتے ہیں 108 00:06:44,960 --> 00:06:51,970 روب بٹس کے اس پیٹرن کے ساتھ مسکراتا ہوا چہرہ: 11000011 کی نمائندگی کرتا ہے 109 00:06:51,970 --> 00:06:55,160 سفید، سفید، سیاہ، سیاہ، سیاہ، سیاہ، سفید سفید. 110 00:06:55,160 --> 00:06:59,290 اور اس طرح یہ ایک بہت بڑی چھلانگ نہیں ہے، تو پھر، رنگین تصاویر کے بارے میں بات کرنا شروع کریں. 111 00:06:59,290 --> 00:07:01,920 چیزیں ہیں جو آپ کو فیس بک پر دیکھیں یا ایک ڈیجیٹل کیمرے کے ساتھ لے جائے گا، 112 00:07:01,920 --> 00:07:04,730 لیکن، یقینی طور پر، جب یہ رنگ آتا ہے، آپ زیادہ بٹس کی ضرورت ہے. 113 00:07:04,730 --> 00:07:08,470 اور تصاویر کی دنیا میں بہت عام 1 بٹ رنگ استعمال کرنے کے لئے نہیں ہے، 114 00:07:08,470 --> 00:07:12,730 کے طور پر اس سے پتہ چلتا ہے، لیکن 24 بٹ رنگ، جہاں آپ لاکھوں رنگوں کا حاصل ہے. 115 00:07:12,730 --> 00:07:15,430 ، تو کے طور پر اس معاملے میں جب ہم روب آنکھ میں یکبر 116 00:07:15,430 --> 00:07:19,270 لاکھوں مختلف رنگین امکانات کے کسی بھی تعداد تھی. 117 00:07:19,270 --> 00:07:22,260 >> تو ہم مسئلہ 4 سیٹ میں walkthrough کے طور پر ساتھ ساتھ میں اس سے ملواتا ہوں، 118 00:07:22,260 --> 00:07:27,050 جو معمول 2:30 کی بجائے 3:30 بجے کیونکہ جمعہ کو یہاں لیکچر آج ہو جائے گا. 119 00:07:27,050 --> 00:07:29,930 لیکن ویڈیو آن لائن، ہمیشہ کی طرح، کل. 120 00:07:29,930 --> 00:07:31,880 ہم آپ کو یہ بھی ایک اور فائل کی شکل سے ملواتا ہوں. 121 00:07:31,880 --> 00:07:34,150 تو یہ جان بوجھ کر پہلے دھمکی نظر مراد ہے، 122 00:07:34,150 --> 00:07:38,980 لیکن یہ تو صرف C struct کے لئے کچھ دستاویزات ہے. 123 00:07:38,980 --> 00:07:42,280 یہ پتہ چلا ہے کہ مائیکروسافٹ سال پہلے، اس شکل کو مقبول بنانے میں مدد ملی ہے، 124 00:07:42,280 --> 00:07:46,630 ملاقات کی بٹ نقشہ فائل کی شکل، BMP، اور یہ ایک سپر آسان تھا، 125 00:07:46,630 --> 00:07:50,390 رنگین تصویری فائل کی شکل ہے جو کہ آپ نے کچھ وقت کے لئے استعمال کیا جاتا تھا ہے وہ یہ کہ یہ 126 00:07:50,390 --> 00:07:53,640 اور کبھی کبھی اب بھی ڈیسک ٹاپ پر وال پیپر کے لئے. 127 00:07:53,640 --> 00:07:57,410 اگر آپ ونڈوز ایکس پی اور رولنگ پہاڑیوں اور نیلے آسمان پر واپس لگتا ہے، 128 00:07:57,410 --> 00:08:00,660 کہ عام طور پر BMP، یا بٹ نقشہ تصویر، اور bitmaps 129 00:08:00,660 --> 00:08:03,340 ہمارے لئے مذاق ہے کیونکہ وہ تھوڑی پیچیدگی ہے. 130 00:08:03,340 --> 00:08:05,640 یہ بہت 0 اور 1 کی اس گرڈ کے طور پر کے طور پر آسان نہیں ہے. 131 00:08:05,640 --> 00:08:10,680 اس کے بجائے، آپ ایک فائل کے شروع میں ایک ہیڈر کی طرح چیزیں ہیں. 132 00:08:10,680 --> 00:08:15,520 تو دوسرے الفاظ میں، BMP فائل. کے اندر 0 اور 1 کی ایک مکمل جھوبڈ ہے، 133 00:08:15,520 --> 00:08:18,070 لیکن وہاں کچھ اضافی 0 اور 1 وہاں ہے. 134 00:08:18,070 --> 00:08:21,450 اور یہ پتہ چلا ہے کہ جو ہم شاید کے لئے سال کے لئے حاصل کی جاچکی کر لیا ہے، 135 00:08:21,450 --> 00:08:27,040 DOC یا. XLS یا مختصر mp3. یا اتارنا Mp4. کی طرح فائل کی شکل، 136 00:08:27,040 --> 00:08:29,910 جو بھی فائل کی شکل ہے کہ تم اس سے واقف ہیں. 137 00:08:29,910 --> 00:08:31,900 کیا یہاں تک کہ ایک فائل کی شکل کے لئے اس کا مطلب یہ ہے؟ 138 00:08:31,900 --> 00:08:35,740 کیونکہ دن کے آخر میں، ان فائلوں کی تمام کو ہم استعمال کرتے ہیں 0 اور 1 139 00:08:35,740 --> 00:08:39,950 اور شاید ان 0 اور 1، بی، سی، ASCII یا جیسے کے ذریعے کی نمائندگی کرتے ہیں 140 00:08:39,950 --> 00:08:42,030 لیکن دن کے اختتام پر کے ذریعے، یہ صرف 0 اور 1 کی ہے. 141 00:08:42,030 --> 00:08:45,300 >> تو انسان کو صرف کبھی کبھار ایک نئی فائل کی شکل ایجاد کرنے کا فیصلہ 142 00:08:45,300 --> 00:08:49,420 جہاں وہ معیاری بٹس کے نمونوں اصل مطلب گا. 143 00:08:49,420 --> 00:08:52,790 اور یہاں اس صورت میں، لوگوں کو جو بٹ نقشہ فائل کی شکل کے لئے ڈیزائن کیا 144 00:08:52,790 --> 00:08:58,260 نے کہا ہے کہ ایک بٹ نقشہ فائل میں بہت پہلے بائٹ میں 0 آفسیٹ کی طرف سے denoted، وہاں 145 00:08:58,260 --> 00:09:02,320 کچھ cryptically نام متغیر کہا جاتا bfType ہونے جا رہا ہے، 146 00:09:02,320 --> 00:09:06,510 جس میں صرف بٹ نقشہ فائل کی قسم کے لئے کھڑا ہے، یہ کیا بٹ نقشہ فائل کی قسم ہے. 147 00:09:06,510 --> 00:09:10,780 آپ شاید اندازہ کرنا، دوسری قطار ہے کہ 2 آفسیٹ، بائٹ نمبر 2 سے، کر سکتے ہیں، 148 00:09:10,780 --> 00:09:15,980 0 اور 1 ہے کہ جس چیز کی نمائندگی کرتا ہے کا ایک نمونہ ہے؟ 149 00:09:15,980 --> 00:09:18,320 کچھ کا حجم، اور یہ وہاں سے چلا جاتا ہے. 150 00:09:18,320 --> 00:09:20,660 تو مسئلہ 4 سیٹ میں، آپ ان چیزوں میں سے کچھ کے ذریعے چلی کریں گے. 151 00:09:20,660 --> 00:09:24,480 >> ہم نے ختم نہیں ان سب کے بارے میں دیکھ بھال کرے گا، لیکن محسوس یہ دلچسپ حاصل کرنے کے لئے شروع ہوتا ہے 152 00:09:24,480 --> 00:09:30,780 لائن یا 54 بائٹ، rgbtBlue گرین اور ریڈ کے ارد گرد. 153 00:09:30,780 --> 00:09:35,280 اگر تم نے کبھی مخفف RGB، سرخ سبز نیلا نے سنا ہے، یہ اس کو ایک حوالہ ہے. 154 00:09:35,280 --> 00:09:37,840 کیونکہ یہ پتہ چلتا ہے، آپ اندردخش کے تمام رنگوں کو پینٹ کر سکتے ہیں 155 00:09:37,840 --> 00:09:41,580 سرخ اور نیلے اور سبز کے کچھ مجموعہ کے ساتھ. 156 00:09:41,580 --> 00:09:46,560 اور کمرے میں والدین اس حقیقت میں جلد پروجیکٹر میں سے کچھ یاد ہو سکتا ہے. 157 00:09:46,560 --> 00:09:49,360 ان دنوں، آپ کو صرف یہ دیکھنا 1 چمکتی روشنی ایک لینس سے باہر آ رہا ہے. 158 00:09:49,360 --> 00:09:52,870 لیکن دن میں واپس، آپ سرخ لینس، نیلے، لینس، اور سبز عینک تھا 159 00:09:52,870 --> 00:09:56,620 اور مل کر وہ سکرین کا مقصد اور ایک رنگارنگ تصویر قائم کی. 160 00:09:56,620 --> 00:09:59,590 اور اکثر مڈل اسکولوں اور ہائی اسکولوں ان لینس ہوگا 161 00:09:59,590 --> 00:10:02,680 کبھی تو تھوڑا سا ترچھا، لہذا آپ کو ڈبل یا ٹرپل تصاویر کو دیکھنے کی طرح تھے، 162 00:10:02,680 --> 00:10:07,500 لیکن اس کا خیال تھا. آپ کو ایک تصویر تصویر سرخ اور سبز اور نیلے رنگ کی روشنی تھی. 163 00:10:07,500 --> 00:10:09,570 اور یہ کہ اسی اصول کے کمپیوٹر میں استعمال کیا جاتا ہے. 164 00:10:09,570 --> 00:10:12,000 >> تو چیلنجوں میں، تو، آپ کے لئے مسئلہ میں 4 مقرر 165 00:10:12,000 --> 00:10:16,080 کچھ چیزیں جا رہے ہیں، اصل میں ایک تصویر کا سائز تبدیل ہے. 166 00:10:16,080 --> 00:10:18,050 0 اور 1 کی پیٹرن میں لینے کے لئے، 167 00:10:18,050 --> 00:10:22,840 اعداد و شمار جو 0 اور 1 کے حصوں ڈھانچے میں کیا اس طرح کی نمائندگی کرتے ہیں، 168 00:10:22,840 --> 00:10:26,800 کر اندازہ لگا پکسلز دہرانے: ریڈ، اداس، سبز 169 00:10:26,800 --> 00:10:32,460 تاکہ اندر جب ایک تصویر کو ابتدائی طور پر اس طرح لگتا ہے اس طرح نظر آئے، اس کے بعد کی بجائے ہو سکتا ہے. 170 00:10:32,460 --> 00:10:35,590 دیگر چیلنجوں میں، بھی، ہو سکتا ہے کہ آپ کے حوالے کیا جائے گا جا رہا ہے 171 00:10:35,590 --> 00:10:38,900 ایک ڈیجیٹل کیمرے سے ایک اصل فائل کی فارنسک تصویر 172 00:10:38,900 --> 00:10:42,410 اور اس کیمرے ایک بار ایک وقت، تصاویر کی ایک پوری چڑھانے تھے. 173 00:10:42,410 --> 00:10:47,030 مسئلہ ہے، ہم اتفاقی طور پر ہے مٹ تھا یا تصویر کسی طرح خراب ہے. 174 00:10:47,030 --> 00:10:51,040 بری چیزیں ڈیجیٹل کیمرے کے ساتھ ہو، اور اس لئے ہم فوری طور پر 0 اور 1 کے تمام کاپی 175 00:10:51,040 --> 00:10:55,410 دور ہے کہ آپ کے لئے کارڈ، 1 بڑی فائل میں ان سب کو بچا لیا، اور اس کے بعد ہم نے انہیں آپ کے ہاتھ میں کر دے گی 176 00:10:55,410 --> 00:11:00,000 مسئلہ میں 4 تاکہ تم C میں ایک پروگرام ہے جس کے ساتھ نمٹنے کو لکھ سکتے ہیں. 177 00:11:00,000 --> 00:11:02,660 ان JPEGs، مثالی طور پر. 178 00:11:02,660 --> 00:11:06,280 اور یہ کہ JPEGs بدل جاتا ہے، اگرچہ وہ ایک پیچیدہ فائل کی شکل کے کسی حد تک ہو، 179 00:11:06,280 --> 00:11:09,580 وہ اس کے مسکراتے ہوئے چہرے سے یہاں بہت پیچیدہ ہیں. 180 00:11:09,580 --> 00:11:14,320 یہ پتہ چلتا ہے کہ ہر JPEG 0 اور 1 کی اسی پیٹرن کے ساتھ شروع ہوتی ہے. 181 00:11:14,320 --> 00:11:18,820 تو، لوپ یا اسی طرح کے کے لئے ایک جبکہ لوپ یا کا استعمال کرتے ہوئے 182 00:11:18,820 --> 00:11:22,350 آپ اس فارنسک تصویر میں 0 اور 1 کی زائد iterate کر سکتے ہیں 183 00:11:22,350 --> 00:11:26,670 اور ہر وقت آپ کو خاص پیٹرن ہے کہ مسئلہ سیٹ کی تفصیلات میں وضاحت کی گئی ہے 184 00:11:26,670 --> 00:11:29,770 آپ کو بہت زیادہ امکان کے ساتھ فرض، 'اوہ، یہاں ہے، کر سکتے ہیں، 185 00:11:29,770 --> 00:11:33,520 ایک JPEG کے آغاز، 'اور جیسے ہی آپ محسوس اسی پیٹرن، 186 00:11:33,520 --> 00:11:36,050 بائٹس یا کلو بائٹ یا میگا بائٹس میں سے کچھ کے بعد نمبر، 187 00:11:36,050 --> 00:11:40,550 آپ فرض، 'اوہ کر سکتے ہیں! یہاں ایک دوسرا JPEG، تصویر میں پہلے ایک کے بعد لیا ہے. 188 00:11:40,550 --> 00:11:44,720 آپ کے وزٹرز کا ریکارڈ رکھا کہ سب سے پہلے فائل کو پڑھنے کے بند دو، اس نئے لکھنے شروع کر دیں. ' 189 00:11:44,720 --> 00:11:49,980 اور 4 pset کے لئے آپ کے پروگرام کی پیداوار کے طور پر بہت سے 50 JPEGs جا رہا ہے. 190 00:11:49,980 --> 00:11:52,400 اور اگر یہ 50 JPEGs نہیں ہے، تو آپ کو ایک لوپ کے تھوڑا سا ہے. 191 00:11:52,400 --> 00:11:55,580 اگر آپ کا ایک لامحدود تعداد میں JPEGs ہے، آپ کو ایک لامتناہی لوپ ہے. 192 00:11:55,580 --> 00:11:58,280 ، بھی، جس سے کہ بہت عام کا معاملہ ہو جائے گا. 193 00:11:58,280 --> 00:12:00,280 اس افق پر کیا ہے. 194 00:12:00,280 --> 00:12:03,740 >> 0 ہمارے پیچھے کوئز. ، احساس، اپنے ای میل کے مطابق، کہ ہمیشہ وہاں لوگ ہے 195 00:12:03,740 --> 00:12:06,820 جو دونوں خوش طرح غیر جانبدار کی، اور کوئز کے ارد گرد اداس 0 وقت ہیں. 196 00:12:06,820 --> 00:12:10,160 براہ مہربانی مجھ تک پہنچ سکتے ہیں، سر TFs، Zamyla اپنے TF 197 00:12:10,160 --> 00:12:14,120 یا کیس کے ایک ہے کہ آپ کو پتہ ہے کہ اگر آپ کو بات چیت کس طرح چیزوں گئے ہیں. 198 00:12:14,120 --> 00:12:16,460 >> تو کمرے میں ماں باپ کو متاثر کرنے، 199 00:12:16,460 --> 00:12:23,990 CS50 لائبریری کیا ہے؟ اچھا کام کیا. 200 00:12:23,990 --> 00:12:32,280 CS50 لائبریری کیا ہے؟ جی ہاں؟ [Student کی جوابات، unintelligible] 201 00:12:32,280 --> 00:12:35,730 >> ٹھیک ہے، اچھا ہے. تو اس کے کوڈ کا ایک prewritten سیٹ ہے کہ ہم، ملازمین، لکھا، 202 00:12:35,730 --> 00:12:38,460 ہم آپ کو فراہم کی ہیں، کچھ عام functionalities فراہم کرنے کے لئے. 203 00:12:38,460 --> 00:12:42,290 چیزیں مجھے ایک تار حاصل کرنا، مجھے ایک int حاصل، کے تمام افعال جو یہاں درج ہیں. 204 00:12:42,290 --> 00:12:45,260 اب شروع ہو رہا ہے، ہمیں واقعی ان کی تربیت پہیوں کو لے شروع. 205 00:12:45,260 --> 00:12:48,230 تو ہم تم سے دور ایک "STRING" شروع کرنے جا رہے ہیں، 206 00:12:48,230 --> 00:12:52,790 جس میں یاد ہے، جو اصل ڈیٹا کی قسم کے لیے صرف ایک متبادل تھا؟ حروف *. 207 00:12:52,790 --> 00:12:57,020 تو والدین کے لئے، جو شاید تھا - یہ اچھی بات ہے، تو چار * ہم دیکھنا شروع کر دیں گے 208 00:12:57,020 --> 00:13:00,810 سکرین پر تمام کے طور پر ہم اپنے الفاظ سے "STRING" کو خارج 209 00:13:00,810 --> 00:13:02,760 کم سے کم جب یہ اصل میں کوڈ لکھنے کی ہو. 210 00:13:02,760 --> 00:13:06,240 اسی طرح، ہم زیادہ سے زیادہ ان کے افعال میں سے کچھ کا استعمال روک دیں گے، 211 00:13:06,240 --> 00:13:08,390 کیونکہ ہمارے پروگرام زیادہ بہتر حاصل کرنے کے لئے جا رہے ہیں 212 00:13:08,390 --> 00:13:11,370 بجائے صرف پروگرام جو ایک فوری طور پر ٹمٹمانے والے کے ساتھ وہاں بیٹھ لکھتے ہیں، 213 00:13:11,370 --> 00:13:13,580 صارف کے لئے انتظار کر رہے اندر کچھ ٹائپ 214 00:13:13,580 --> 00:13:15,220 آپ کو دوسری جگہوں سے اپنے آدانوں ملے گی. 215 00:13:15,220 --> 00:13:18,720 مثال کے طور پر، آپ کو مقامی ہارڈ ڈرائیو پر بٹس کی سیریز سے انہیں ملے گی. 216 00:13:18,720 --> 00:13:23,340 تم نے انہیں مستقبل میں بجائے ایک نیٹ ورک کنکشن سے کچھ ویب سائٹ کہیں گے. 217 00:13:23,340 --> 00:13:27,460 تو پہلی بار کے لئے اس پرت چھیل دو، اور CS50 آلات ھیںچو 218 00:13:27,460 --> 00:13:32,300 اور یہ کہا جاتا CS50.h فائل، جو آپ ہفتوں کے لئے بھی شامل تیز رہی ہے. 219 00:13:32,300 --> 00:13:34,380 >> لیکن اصل میں دیکھتے ہیں کہ اس کے اندر کیا ہے. 220 00:13:34,380 --> 00:13:38,250 تو نیلے رنگ میں فائل کے سب سے اوپر تبصرے کی ایک پوری چڑھانے ہے، 221 00:13:38,250 --> 00:13:41,340 وارنٹی معلومات اور لائسنسنگ. اس طرح کی ایک عام مثال کے ہے 222 00:13:41,340 --> 00:13:44,600 سافٹ ویئر میں، کیونکہ سافٹ ویئر کی ایک بہت ان دنوں ہے کیا کہتے ہیں "اوپن سورس" 223 00:13:44,600 --> 00:13:46,940 جس کا مطلب یہ ہے کہ کسی کوڈ لکھا ہے 224 00:13:46,940 --> 00:13:50,060 اور یہ آزادانہ طور پر دستیاب بنایا، نہ صرف چلانے اور استعمال کرنے کے لئے، 225 00:13:50,060 --> 00:13:53,660 لیکن اصل میں تبدیلی کو پڑھیں اور اپنے اپنے کام میں ضم. 226 00:13:53,660 --> 00:13:55,790 تو ہے کہ آپ کیا گیا ہے کا استعمال کرتے ہوئے، اوپن سورس سافٹ ویئر، 227 00:13:55,790 --> 00:13:58,030 اگرچہ وہ ایک بہت چھوٹی شکل میں. 228 00:13:58,030 --> 00:14:01,860 اگر میں تبصرے کے ماضی میں ذیل میں سکرال، تاہم، ہم کچھ زیادہ واقف چیزوں کو دیکھنے کے لئے شروع کر دیں گے. 229 00:14:01,860 --> 00:14:08,090 تو یہاں سب سے اوپر دیئے گئے نوٹس، کہ CS50.h فائل ہیڈر فائلوں کی ایک مکمل جھوبڈ بھی شامل ہے. 230 00:14:08,090 --> 00:14:11,160 اب، ان میں سے سب سے زیادہ ہم پہلے نہیں دیکھا ہے، لیکن ایک ہے 231 00:14:11,160 --> 00:14:15,640 واقف ہیں، ان میں سے جو ہم نے، دیکھا ہے مختصر طور پر ہی سہی، اس طرح اب تک؟ 232 00:14:15,640 --> 00:14:18,720 جی ہاں، معیاری لائبریریوں. Stdlib.h malloc ہے، 233 00:14:18,720 --> 00:14:21,590 تو ایک بار ہم متحرک میموری تقرری کے بارے میں بات کرنا شروع کر دیا، 234 00:14:21,590 --> 00:14:24,960 جو ہم اگلے ہفتے واپس آ کے طور پر کریں گے، ہم نے وہ فائل بھی شامل ہے کرنا شروع کر دیا ہے. 235 00:14:24,960 --> 00:14:29,660 یہ پتہ چلا ہے کہ bool اور سچے اور جھوٹے C میں اصل میں نہیں موجود، SE فی 236 00:14:29,660 --> 00:14:32,460 جب تک آپ اس فائل کو یہاں شامل ہیں. 237 00:14:32,460 --> 00:14:35,770 تو ہم ہفتوں کے لئے، کیا گیا ہے معیار bool.h سمیت 238 00:14:35,770 --> 00:14:39,020 تاکہ تم. bool، صحیح یا غلط تصور کا استعمال کر سکتے ہیں 239 00:14:39,020 --> 00:14:41,830 اس کے بغیر، آپ کو یہ جعلی ترتیب اور ایک int استعمال ہوگا 240 00:14:41,830 --> 00:14:45,920 اور منمانے فرض ہے کہ 0 باطل ہے اور 1 سچ ہے. 241 00:14:45,920 --> 00:14:49,980 >> اب، اگر ہم مزید نیچے سکرال، یہاں ایک تار کی ہماری تعریف ہے. 242 00:14:49,980 --> 00:14:54,820 یہ پتہ چلتا ہے، جیسا کہ ہم نے پہلے کہا ہے، کہ واقعی جہاں اس * ہے کوئی فرق نہیں پڑتا. 243 00:14:54,820 --> 00:14:56,750 آپ کی گنجائش بھی چاروں طرف سے کر سکتے ہیں. 244 00:14:56,750 --> 00:15:01,550 ہم اس سمسٹر، اس سے اس کے طور پر فروغ دینے کے واضح کرنے کے لئے کہ * کی قسم کے ساتھ کرنا ہے. 245 00:15:01,550 --> 00:15:05,370 احساس لیکن، جیسا کہ عام، اگر کچھ نہیں زیادہ عام ہے، اسے وہاں ڈال دیا ہے 246 00:15:05,370 --> 00:15:07,480 لیکن فعل یہ ایک ہی بات ہے. 247 00:15:07,480 --> 00:15:11,070 لیکن اب، اگر ہم نیچے مزید پڑھتے ہیں، کہتے ہیں پر ایک نظر، GetInt لے، 248 00:15:11,070 --> 00:15:15,350 کیونکہ ہم اس کا استعمال کیا، شاید کچھ اور اس سمسٹر سے پہلے. 249 00:15:15,350 --> 00:15:19,620 اور یہاں GetInt ہے. یہ کیا ہے؟ 250 00:15:19,620 --> 00:15:24,650 یہ پروٹوٹائپ ہے. تو اکثر، ہم ہماری کی چوٹیوں پر prototypes ڈال دیا ہے سی فائلیں، 251 00:15:24,650 --> 00:15:28,190 لیکن آپ کو ہیڈر فائلوں، H فائلوں. میں prototypes بھی رکھ سکتے ہیں، 252 00:15:28,190 --> 00:15:32,110 ، تو اس طرح کہ آپ کو کچھ کام کرتا ہے جب لکھنے 253 00:15:32,110 --> 00:15:36,790 جو ہے کہ آپ کو دوسرے لوگوں کو استعمال کرنے کے لئے کے قابل بننا چاہتا ہوں، بالکل CS50 لائبریری کے ساتھ معاملہ ہے، 254 00:15:36,790 --> 00:15:40,900 تم نے نہیں صرف CS50.c طرح کچھ میں اپنے افعال پر عملدرآمد، 255 00:15:40,900 --> 00:15:46,720 تم نے بھی اس فائل کی سب سے اوپر دیئے گئے نہیں prototypes ڈالا، لیکن ایک ہیڈر فائل کے سب سے اوپر دیئے گئے، 256 00:15:46,720 --> 00:15:50,810 تو اس ہیڈر فائل ہے جو دوستوں اور ساتھیوں میں شامل ہیں، 257 00:15:50,810 --> 00:15:52,800 تیزی کے ساتھ ان کے اپنے کوڈ میں شامل کریں. 258 00:15:52,800 --> 00:15:55,440 اس وقت تو آپ کو دیا ہے ان prototypes سمیت 259 00:15:55,440 --> 00:15:59,870 مؤثر طریقے سے آپ کی فائل کے سب سے اوپر دیئے گئے، لیکن اس تیز کی راہ کی طرف سے طریقہ کار شامل ہیں 260 00:15:59,870 --> 00:16:03,320 ہے کہ بنیادی طور پر نقول اور pastes آپ کے اپنے میں اس فائل. 261 00:16:03,320 --> 00:16:06,400 اب، یہاں کچھ کافی تفصیلی دستاویزات ہے. 262 00:16:06,400 --> 00:16:08,880 >> ہم بہت کر لیا ہے کے لئے حاصل کی جاچکی کہ GetInt ایک int ہو جاتا ہے، 263 00:16:08,880 --> 00:16:10,740 لیکن یہ بدل جاتا ہے وہاں کسی کونے مقدمات ہے، ٹھیک ہے؟ 264 00:16:10,740 --> 00:16:14,320 کیا اگر ایک بڑی تعداد اس طرح بہت بڑا ہے میں صارف کی قسم کے؟ 265 00:16:14,320 --> 00:16:17,350 A quintillion، جو صرف ایک int کے اندر کے قابل نہیں ہو سکتا؟ 266 00:16:17,350 --> 00:16:21,180 متوقع رویہ کیا ہے؟ ٹھیک ہے، مثالی طور پر، یہ امکانات ہے. 267 00:16:21,180 --> 00:16:23,460 تو اس معاملے میں، اگر آپ نے واقعی ٹھیک پرنٹ پڑھ، 268 00:16:23,460 --> 00:16:27,850 آپ کہ اگر لائن پڑھا نہیں کیا جا سکتا، اس کی واپسی INT_MAX نظر آئے گا. 269 00:16:27,850 --> 00:16:30,800 ہم اس کے بارے میں بات کبھی نہیں کی ہے، لیکن اس کے بڑے حروف تہجی کی بنیاد پر، 270 00:16:30,800 --> 00:16:33,030 یہ کیا ہے، شاید؟ 271 00:16:33,030 --> 00:16:36,610 یہ ایک مسلسل ہے، تو اس میں کچھ خاص مسلسل ہے جو شاید قرار دیا ہے 272 00:16:36,610 --> 00:16:39,460 ان ہیڈر فائلوں کو فائل میں اعلی ہے میں سے ایک میں، 273 00:16:39,460 --> 00:16:43,400 اور INT_MAX شاید طرح، تقریبا 2 بلین کچھ ہے. 274 00:16:43,400 --> 00:16:48,160 کہ کیا جا رہا ہے کیونکہ ہم کسی نہ کسی طرح کہ کچھ کی نشاندہی کرنے کی ضرورت ہے خیال غلط ہو گیا، 275 00:16:48,160 --> 00:16:51,090 ہم ہمارے اختیار میں ہاں، 4 ارب کی تعداد ہے، 276 00:16:51,090 --> 00:16:53,980 منفی 2 ارب ارب، 2، یا لے دے. 277 00:16:53,980 --> 00:16:58,030 ٹھیک ہے، کیا پروگرامنگ میں عام ہے ہے آپ کو صرف ان کی تعداد کے ایک چوری ہے. 278 00:16:58,030 --> 00:17:02,250 شاید 0، شاید ارب 2، شاید منفی 2 ارب. 279 00:17:02,250 --> 00:17:06,720 تو آپ کو آپ کے ممکنہ اقدار کے ایک خرچ کرتے ہیں تاکہ تم دنیا کا ارتکاب کر سکتے ہیں 280 00:17:06,720 --> 00:17:10,089 کہ اگر کچھ غلط ہو جاتا ہے، میں نے اس قیمت کو سپر بڑا واپس آ جائیں گے. 281 00:17:10,089 --> 00:17:13,329 لیکن آپ صارف طرح خفیہ کچھ ٹائپ نہیں کرنا چاہتا ہے "2، 3، 4 ..." 282 00:17:13,329 --> 00:17:17,079 واقعی بڑی تعداد کی وجہ سے، آپ کو مسلسل طور پر جہاں بجائے عام. 283 00:17:17,079 --> 00:17:19,380 تو واقعی، اگر آپ مقعد گزشتہ چند ہفتوں رہے تھے 284 00:17:19,380 --> 00:17:23,800 کسی بھی وقت آپ کے پاس GetInt فون کرتے ہیں تو، آپ کیا جانا چاہئے اگر ایک شرط کے ساتھ کی جانچ ہو رہی ہے. 285 00:17:23,800 --> 00:17:27,109 نے INT_MAX میں صارف کی قسم کیا، یا اس سے زیادہ خاص طور پر، 286 00:17:27,109 --> 00:17:29,900 کیا GetInt واپسی INT_MAX کیا؟ کیونکہ اگر اس نے کیا، 287 00:17:29,900 --> 00:17:35,140 کہ اصل کا مطلب ہے کہ وہ اس ٹائپ نہیں کیا، اس معاملے میں کچھ غلط ہو گیا. 288 00:17:35,140 --> 00:17:38,970 تو یہ ہے جو عام طور پر ایک "پرہری" قیمت، جس میں صرف خصوصی کا مطلب ہے کے طور پر جانا جاتا ہے. 289 00:17:38,970 --> 00:17:41,020 >> ٹھیک ہے، اب سی فائلوں. میں تبدیل. 290 00:17:41,020 --> 00:17:44,500 C فائل میں کچھ وقت کے لئے آلے میں موجود ہے، 291 00:17:44,500 --> 00:17:47,540 اور اصل میں، آلات یہ آپ کے لئے precompiled ہے 292 00:17:47,540 --> 00:17:49,720 اس چیز میں ہم نے اعتراض کے کوڈ، 293 00:17:49,720 --> 00:17:52,940 لیکن یہ صرف آپ کو کوئی فرق نہیں پڑتا وہ کہاں ہے کیونکہ نظام جانتا ہے، 294 00:17:52,940 --> 00:17:54,780 اس صورت میں، وہ کہاں ہے، آلات. 295 00:17:54,780 --> 00:18:00,620 دو لیکن ذیل میں سکرال اب GetInt، اور دیکھو کس طرح GetInt کیا گیا ہے اس وقت کام کر. 296 00:18:00,620 --> 00:18:02,380 تو یہاں ہم پہلے سے اسی طرح کی رائے ہے. 297 00:18:02,380 --> 00:18:04,930 دو کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے صرف کوڈ حصے میں زوم، 298 00:18:04,930 --> 00:18:07,410 اور جو ہم GetInt کے لئے مندرجہ ذیل ہے. 299 00:18:07,410 --> 00:18:12,770 یہ کوئی ان پٹ نہیں لیتا ہے اور یہ ایک int واپس، جبکہ (صحیح)، تو ہم نے جان بوجھ کر لامحدود لوپ ہے 300 00:18:12,770 --> 00:18:16,560 لیکن، شاید، ہم اس سے باہر کسی نہ کسی طرح توڑ، یا کریں گے اس کے اندر سے واپس. 301 00:18:16,560 --> 00:18:19,890 تو یہ کس طرح کام کرتا ہے کو دیکھنے کے. ٹھیک ہے، ہم GetString استعمال کرنے لگتے ہیں 302 00:18:19,890 --> 00:18:22,550 لوپ، 166 کے اندر اس کی پہلی سطر میں. 303 00:18:22,550 --> 00:18:25,320 یہ اچھا عمل ہے کیونکہ کن حالات کے تحت 304 00:18:25,320 --> 00:18:30,820 GetString اس خصوصی مطلوبہ الفاظ نل، واپس آ سکتے ہیں؟ 305 00:18:30,820 --> 00:18:38,460 اگر کچھ غلط ہو جاتا ہے. کیا غلط جب تم GetString ایسا کچھ کہہ سکتے ہیں؟ 306 00:18:38,460 --> 00:18:42,550 جی ہاں؟ [Student کی جواب، unintelligible] >> جی ہاں. تو شاید malloc ناکام ہو جاتا ہے. 307 00:18:42,550 --> 00:18:45,310 ڈاکو GetString کے نیچے کہیں malloc بلا رہا ہے، 308 00:18:45,310 --> 00:18:48,210 جو میموری مختص، جو کہ کمپیوٹر کی دکان کی اجازت دیتا ہے 309 00:18:48,210 --> 00:18:50,950 حروف کے تمام ہے کہ بورڈ میں صارف اقسام. 310 00:18:50,950 --> 00:18:53,270 فرض اور صارف کو مفت وقت کے ایک بہت ساری تھا 311 00:18:53,270 --> 00:18:56,470 اور 2 ارب حروف سے ٹائپ ہے، مثال کے طور پر،. 312 00:18:56,470 --> 00:18:59,600 کمپیوٹر سے زیادہ حروف بھی RAM ہے. 313 00:18:59,600 --> 00:19:02,350 ٹھیک ہے، GetString آپ کو مطلع کرنا قابل ہو جائے کرنے کے لئے ہے، 314 00:19:02,350 --> 00:19:05,650 یہاں تک کہ اگر یہ ایک سپر، سپر، غیر معمولی کونے معاملہ ہے. 315 00:19:05,650 --> 00:19:08,490 یہ کسی نہ کسی طرح اس کو ہینڈل کرنے کے قابل ہے، اور GetString 316 00:19:08,490 --> 00:19:11,850 اگر ہم واپس جا اور اس کی دستاویزات پڑھ حقیقت میں،، نل واپس. 317 00:19:11,850 --> 00:19:16,150 اب اگر GetString نل واپس لوٹنے کی طرف سے ناکام ہو جاتا ہے، GetInt کرنے میں ناکام ہو رہا ہے 318 00:19:16,150 --> 00:19:19,370 INT_MAX صرف ایک پرہری کے طور پر آرہے ہیں، کی طرف سے. 319 00:19:19,370 --> 00:19:22,650 یہ صرف انسانی کنونشن ہیں. ایک ہی راستہ ہے جس سے آپ کو یہ پتہ چلے گا معاملہ ہے 320 00:19:22,650 --> 00:19:24,840 دستاویزات پڑھنے سے ہے. 321 00:19:24,840 --> 00:19:28,200 تو جہاں int اصل میں ہے GotInt ذیل میں سکرال. 322 00:19:28,200 --> 00:19:34,220 >> اگر ایسا ہے تو میں ذیل میں سکرال مزید تھوڑی، ہم 170 سطر میں ان لائنوں سے اوپر ایک تبصرہ ہے. 323 00:19:34,220 --> 00:19:38,470 تو ہم نے 172 میں، اعلان، ایک int ن اور چار سی، اور پھر اس نئی تقریب 324 00:19:38,470 --> 00:19:41,870 جو تم میں سے بعض سے پہلے بھر ٹھوکر کھائی ہے، لیکن sscanf. 325 00:19:41,870 --> 00:19:44,190 یہ سٹرنگ اسکین F کے لئے کھڑا ہے. 326 00:19:44,190 --> 00:19:48,580 دوسرے الفاظ میں، مجھے ایک تار دے اور میں اسے دلچسپی کے کے بارے میں معلومات کے ٹکڑے کے لئے اسکین کرے گا. 327 00:19:48,580 --> 00:19:53,820 تو اس کا کیا مطلب ہے؟ ٹھیک ہے، مان لیں کہ میں بورڈ میں، لفظی، 1 2 3 ٹائپ، 328 00:19:53,820 --> 00:19:59,730 اور پھر داخل مارا. 1 2 3 ڈیٹا کی قسم جب GetString کی طرف سے واپس کیا ہے؟ 329 00:19:59,730 --> 00:20:05,010 یہ ظاہر ہے ایک تار ہے، ٹھیک ہے؟ میں ایک تار ہے، تو 1 2 3 واقعی "1 2 3" ہے 330 00:20:05,010 --> 00:20:07,260 \ 0 کے ساتھ اس کے آخر میں. یہ ایک int نہیں ہے. 331 00:20:07,260 --> 00:20:10,420 یہ ایک نمبر نہیں ہے. یہ ایک نمبر کی طرح لگتا ہے لیکن یہ اصل میں نہیں ہے. 332 00:20:10,420 --> 00:20:14,680 تو کیا GetInt کرنا ہے؟ یہ کہ بائیں سے دائیں سٹرنگ کو اسکین کرنے کے لئے ہے، 333 00:20:14,680 --> 00:20:19,010 1 2 3 0 \، اور کسی نہ کسی طرح یہ ایک حقیقی عددی قبول. 334 00:20:19,010 --> 00:20:21,010 اب، آپ کو پتہ ہے کہ کس طرح ایسا کر سکتے ہیں. 335 00:20:21,010 --> 00:20:24,240 اگر آپ 2 pset واپس لگتا ہے، آپ کو شاید تھوڑا آرام دہ اور پرسکون ہے 336 00:20:24,240 --> 00:20:26,810 تمہیں کیسر یا vigenere کے ساتھ ایک سٹرنگ iterate کر سکتے ہیں، 337 00:20:26,810 --> 00:20:29,800 آپ کی پسند کے ساتھ ints حروف تبدیل کر سکتے ہیں. یہ کام کی ایک پوری بہت ہے. 338 00:20:29,800 --> 00:20:32,800 sscanf طرح ایک تقریب ہے جو آپ کے لیے وہ اس کی کال کیوں نہیں؟ 339 00:20:32,800 --> 00:20:37,520 تو sscanf اسے کہتے لائن کے معاملے میں، جو کہ ایک تار ہے میں ایک دلیل کی توقع ہے. 340 00:20:37,520 --> 00:20:41,310 اس کے بعد آپ کی قیمت درج کرنے میں، وضاحت، بہت printf کی طرح، 341 00:20:41,310 --> 00:20:44,960 جو تم نے اس جملے کو میں دیکھنے کے لئے کی امید ہے؟ 342 00:20:44,960 --> 00:20:52,980 میں یہاں کیا کہہ رہا ہوں، میں ایک دشملو تعداد اور شاید ایک کردار کو دیکھنے کے لئے کی امید ہے. 343 00:20:52,980 --> 00:20:54,990 اور ہم دیکھتے ہیں کیوں یہ صرف ایک لمحے میں معاملہ ہے گے. 344 00:20:54,990 --> 00:20:58,440 یہ پتہ چلا ہے کہ یہ سنکیتن اب چیزیں یاد تازہ ہے 345 00:20:58,440 --> 00:21:00,840 ہم نے صرف ایک ہفتے پہلے کے بارے میں بات کر شروع کر دیا ہے. 346 00:21:00,840 --> 00:21:05,430 >> کیا ہے (ن) اور & C ہمارے لئے یہاں کیا کر رہے ہو؟ [Student کی جوابات، unintelligible] 347 00:21:05,430 --> 00:21:07,610 >> جی ہاں. یہ مجھے دے سی کے (ن) اور پتہ کا پتہ ہے. 348 00:21:07,610 --> 00:21:10,440 اب، یہ ضروری ہے کہ کیوں ہے؟ ٹھیک ہے، تم جانتے ہو کہ سی میں کام کرتا ہے کے ساتھ 349 00:21:10,440 --> 00:21:13,440 آپ سب میں ایک قدر یا کوئی قیمت نہیں ہمیشہ واپس کر سکتے ہیں. 350 00:21:13,440 --> 00:21:16,630 آپ کو ایک int، سٹرنگ، فلوٹ، ایک چار، جو کچھ بھی واپس کر سکتے ہیں. 351 00:21:16,630 --> 00:21:21,150 یا آپ کے پاس باطل واپس، لیکن آپ 1 بات صرف زیادہ سے زیادہ واپس جا سکتے ہیں کر سکتے ہیں. 352 00:21:21,150 --> 00:21:26,100 لیکن یہاں ہم sscanf آپ کے وزٹرز کا ریکارڈ رکھا شاید ایک int، ایک دشملو تعداد پر واپس کرنا چاہتے ہیں، 353 00:21:26,100 --> 00:21:29,240 اور بھی ایک، چار، اور میں ایک لمحے میں کیوں چار سمجھا دونگا. 354 00:21:29,240 --> 00:21:34,250 تو آپ کو مؤثر طریقے سے F 2 چیزیں واپس کرنا چاہتے ہیں، وہ سی میں ممکن نہیں 355 00:21:34,250 --> 00:21:38,460 تو اس کے ارد گرد ہے کہ آپ 2 پتوں میں گزرنے والے کی طرف سے مل کر کام کر سکتے ہیں، 356 00:21:38,460 --> 00:21:43,710 کیونکہ جیسے ہی آپ کو ایک تقریب 2 پتوں کے حوالے کیا ہے کہ ان کے ساتھ تقریب میں کیا کر سکتے ہیں؟ 357 00:21:43,710 --> 00:21:49,880 یہ ان پتوں پر لکھ سکتے ہیں. * آپریشن کا استعمال کریں اور ان پتوں میں سے ہر ایک "وہاں جانا" کر سکتے ہیں. 358 00:21:49,880 --> 00:21:54,320 یہ اس بیک ڈور نظام کی طرح ہے، لیکن متغیر کی اقدار کو تبدیل کرنے کے لئے بہت ہی عام 359 00:21:54,320 --> 00:21:58,020 اس 2 کے معاملے میں صرف 1 جگہ سے زیادہ ہے. 360 00:21:58,020 --> 00:22:04,590 اب نوٹس، میں == to1 کی جانچ پڑتال کر رہا ہوں، اور پھر N واپس لوٹنے اگر حقیقت میں ہے کہ، صحیح اندازہ. 361 00:22:04,590 --> 00:22:09,340 تو کیا ہو رہا ہے؟ ٹھیک ہے، اور تکنیکی طور پر، یہ ہے کہ یہ سب ہم واقعی GetInt میں ہونے چاہتے ہیں ہے. 362 00:22:09,340 --> 00:22:12,340 ہم تجزیہ، تو بات کرنا چاہتے ہیں، ہم سٹرنگ کو پڑھنے کے لئے چاہتے ہیں 363 00:22:12,340 --> 00:22:16,210 "1 2 3" اور اگر ایسا لگتا ہے کہ وہاں ایک نمبر ہے، 364 00:22:16,210 --> 00:22:21,360 جو ہم sscanf کہہ کر رہے ہیں میرے لئے یہ متغیر (ن) میں یہ تعداد 1، 2، 3 کو ہے. 365 00:22:21,360 --> 00:22:26,060 ، تو کیوں، کیا میں نے اس کے ساتھ ساتھ؟ 366 00:22:26,060 --> 00:22:33,750 یہ بھی کہا، sscanf، آپ کو ایک کردار بھی یہاں ہو سکتا ہے کے کردار کیا ہے. 367 00:22:33,750 --> 00:22:36,890 [Student کی بولنے، unintelligible] >> - ایک اعشاریہ کام کر سکتا تھا. 368 00:22:36,890 --> 00:22:40,650 آو منعقد ہے کہ ایک لمحے کے لئے سوچا ہے. اور کیا؟ 369 00:22:40,650 --> 00:22:42,570 [طالب علم، unintelligible] تو >> اچھا خیال، نل کردار ہو سکتا ہے. 370 00:22:42,570 --> 00:22:44,970 یہ اس صورت میں اصل میں ہے، نہیں ہے. جی ہاں؟ [طالب علم، unintelligible] 371 00:22:44,970 --> 00:22:47,100 >> >> ASCII. اور دو یا، مجھے بھی مزید سامانییکرن. 372 00:22:47,100 --> 00:22:49,670 ٪ وہاں C صرف غلطی چیکنگ کے لئے ہے. 373 00:22:49,670 --> 00:22:52,510 ہم وہاں نہیں کرنا چاہتے ہیں، تعداد کے بعد کردار، 374 00:22:52,510 --> 00:22:54,980 لیکن جو مجھ سے کیا کرنے کی اجازت دیتا ہے ہے مندرجہ ذیل ہے: 375 00:22:54,980 --> 00:23:01,270 یہ پتہ چلا ہے کہ sscanf،، (ن) اور سی اقدار اس مثال میں یہاں ذخیرہ کرنے کے علاوہ 376 00:23:01,270 --> 00:23:08,170 کیا یہ بھی ہے کہ یہ متغیر کی تعداد واپس آئے تو وہ اندر اقدار ڈال 377 00:23:08,170 --> 00:23:13,330 تو اگر آپ 1 2 3 میں صرف ٹائپ کریں، اس کے بعد صرف ایک فیصد D میچ ہو رہا ہے 378 00:23:13,330 --> 00:23:18,830 اور صرف N 1 2 3 طرح ایک قدر کے ساتھ محفوظ ہو جاتا ہے اور کچھ بھی نہیں سی میں ڈال دیا جاتا ہے؛ 379 00:23:18,830 --> 00:23:20,870 ج بھی ردی کی ٹوکری کی قیمت ہے، تو بات کرنے کی. 380 00:23:20,870 --> 00:23:23,550 وجہ سے ردی کی ٹوکری میں کچھ قدر کے طور پر کیا گیا ہے کبھی نہیں initialized. 381 00:23:23,550 --> 00:23:29,390 تو اس صورت میں، sscanf 1 واپس، کیونکہ میں ان میں سے ایک اشارہ کی آبادی ہے، 382 00:23:29,390 --> 00:23:33,650 جس صورت میں، بہت اچھا. میں ایک int ہے، تو میں اوپر مفت میموری آزاد 383 00:23:33,650 --> 00:23:37,150 وہ GetString اصل میں مختص کی، اور پھر میں (ن) واپس. 384 00:23:37,150 --> 00:23:42,210 دوسری صورت میں، اگر تم نے کبھی اس جہاں دوبارہ کوشش حیران بیان سے آتا ہے، یہاں سے آتا ہے. 385 00:23:42,210 --> 00:23:45,770 اگر اس کے برعکس کی طرف سے، میں FOO 1 2 3 میں ٹائپ کریں، 386 00:23:45,770 --> 00:23:48,640 متن صرف کچھ بے ترتیب ترتیب، sscanf کو دیکھنے کے لئے کی جا رہی ہے، 387 00:23:48,640 --> 00:23:51,500 تعداد اہ، تعداد اہ، اہ، تعداد، اہ - F. 388 00:23:51,500 --> 00:23:54,190 اور یہ (ن) میں 1 2 3 کے لئے پیش کیا جا رہا ہے. 389 00:23:54,190 --> 00:23:59,970 سی F ڈال، اور پھر 2 واپس جا رہا ہے. 390 00:23:59,970 --> 00:24:02,980 تو ہم ہیں، صرف scanf رویے کی بنیادی تعریف کا استعمال کرتے ہوئے، 391 00:24:02,980 --> 00:24:06,170 ایک بہت آسان طریقہ - ٹھیک ہے، پہلی نظر میں پیچیدہ، لیکن دن کے اختتام پر 392 00:24:06,170 --> 00:24:11,460 کہنے کی کافی سادہ طریقہ کار، ایک int ہے، اور اگر ایسا ہے تو ہے، کہ صرف ایک چیز جو میں نے محسوس کیا ہے؟ 393 00:24:11,460 --> 00:24:14,950 اور سفید یہاں خلائی جان بوجھ ہے. اگر آپ sscanf کے لئے دستاویز کو پڑھنے کے، 394 00:24:14,950 --> 00:24:18,690 یہ آپ کہ، اگر آپ کو شروع یا آخر میں سفید جگہ کا ایک ٹکڑا شامل ہیں بتاتا ہے 395 00:24:18,690 --> 00:24:24,990 sscanf بھی کسی بھی وجہ سے صارف کی اجازت، اسپیس بار 1 2 3 مارا جائے گا، اور یہ کہ جائز ہو جائے گا. 396 00:24:24,990 --> 00:24:28,310 یہ صارف پر چللاو نہیں صرف اس لئے کہ وہ شروع یا آخر میں اسپیس بار مارا جائے گا، 397 00:24:28,310 --> 00:24:32,160 جو صرف تھوڑا زیادہ صارف دوست ہے. 398 00:24:32,160 --> 00:24:34,160 >> کوئی سوال، پھر، GetInts پر؟ جی ہاں؟ 399 00:24:34,160 --> 00:24:36,820 [Student کی سوال، unintelligible] 400 00:24:36,820 --> 00:24:40,740 >> اچھا سوال ہے. اگر آپ نے ابھی ایک چار میں ٹائپ، F، اور ہٹ کی طرح داخل 401 00:24:40,740 --> 00:24:47,830 کبھی 1 2 3 ٹائپ کے بغیر، کیا آپ کو لگتا ہے کہ کوڈ کے اس لائن کے رویے تو کیا ہوگا؟ 402 00:24:47,830 --> 00:24:50,500 تو sscanf کہ کا احاطہ بھی کر سکتے ہیں، کیونکہ اس صورت میں 403 00:24:50,500 --> 00:24:56,280 یہ جا ن یا سی کو بھرنے کے لئے نہیں ہے، بجائے 0 واپس جا رہا ہے. 404 00:24:56,280 --> 00:25:01,540 کس صورت میں، میں بھی اس منظر نامے پکڑ رہا ہوں، کیونکہ متوقع قدر میں چاہتا ہوں کہ 1 ہے. 405 00:25:01,540 --> 00:25:07,310 میں صرف 1 چاہتے ہیں، اور 1 صرف ایک ہی چیز بھر. اچھا سوال ہے. دیگر؟ 406 00:25:07,310 --> 00:25:09,610 >> ٹھیک ہے، لہذا ہم یہاں کے افعال میں سے سب سے نہیں جانا ہے. 407 00:25:09,610 --> 00:25:11,820 لیکن ایک ہے کہ شاید باقی دلچسپی کے لگتا ہے 408 00:25:11,820 --> 00:25:14,530 ہے GetString کیونکہ اس سے پتہ چلتا ہے کہ GetFloat، GetInt، 409 00:25:14,530 --> 00:25:19,490 ، تمام پنٹ ان GetString فعالیت کی ایک بہت GetLongLong GetDouble. 410 00:25:19,490 --> 00:25:22,860 تو وہ یہاں کس طرح لاگو کیا جاتا ہے پر ایک نظر لے. 411 00:25:22,860 --> 00:25:27,040 یہ ایک تھوڑا پیچیدہ لگتا ہے، لیکن یہ ایک ہی بنیادی اصولوں کا استعمال کرتا ہے 412 00:25:27,040 --> 00:25:29,680 کہ ہم نے گزشتہ ہفتے کے بارے میں بات کرنا شروع کر دیا. تو GetString میں، 413 00:25:29,680 --> 00:25:32,670 جو باطل کے مطابق کوئی دلیل کو یہاں سے لیتا ہے، 414 00:25:32,670 --> 00:25:37,110 اور یہ ایک تار واپس، تو میں نامی بفر سٹرنگ اعلان کر رہا ہوں. 415 00:25:37,110 --> 00:25:39,670 میں واقعی میں نہیں ہے کہ وہ کیا ابھی تک کے لئے استعمال کیا جا رہا ہے معلوم، لیکن ہم دیکھ لیں گے. 416 00:25:39,670 --> 00:25:42,950 صلاحیت کی طرح لگتا ہے ڈیفالٹ، 0 کی طرف سے ہے، جہاں یہ جا رہا ہے کافی نہیں اس بات کا یقین ہے. 417 00:25:42,950 --> 00:25:44,920 اس بات کا یقین N ابھی تک کے لئے استعمال کیا جا رہا ہے. 418 00:25:44,920 --> 00:25:47,860 لیکن اب یہ تھوڑا زیادہ دلچسپ 243 لائن میں ہو رہا ہے، 419 00:25:47,860 --> 00:25:51,760 ہم ایک int سی، اس طرح کی ایک پاگل تفصیل کے اعلان. 420 00:25:51,760 --> 00:25:58,080 ایک چار 8 بٹس ہے، اور 8 بٹس کس طرح مختلف اقدار کو محفوظ کر سکتے ہیں؟ 421 00:25:58,080 --> 00:26:03,310 256. مسئلہ ہے، اگر آپ کو 256 مختلف ASCII حروف کرنا چاہتے ہیں، 422 00:26:03,310 --> 00:26:06,210 جو ہیں، اگر تم واپس سوچتے ہیں، اور یہ حفظ کچھ نہیں ہے. 423 00:26:06,210 --> 00:26:09,100 لیکن اگر آپ کہ بڑا ASCII چارٹ واپس لگتا ہے ہم ہفتے پہلے تھا، 424 00:26:09,100 --> 00:26:13,780 اس معاملے میں 128 یا 256 ASCII حروف میں تھے. 425 00:26:13,780 --> 00:26:16,220 ہم نے 0 تمام نمونوں اور 1 ہے کا استعمال کیا ہے. 426 00:26:16,220 --> 00:26:19,410 یہ ایک مسئلہ ہے اگر آپ میں ایک خامی کا پتہ لگانے کے قابل بننا چاہتا ہوں. 427 00:26:19,410 --> 00:26:23,290 ، اگر آپ کے پاس پہلے سے ہی آپ کے لئے 256 حروف اقدار کا استعمال کرتے ہوئے کر رہے ہیں کیونکہ 428 00:26:23,290 --> 00:26:26,390 تم آگے نہیں کیا منصوبہ بندی، کیونکہ اب آپ کو کہنے کی کوئی راستہ نہیں ہے، 429 00:26:26,390 --> 00:26:29,750 "یہ ایک legit کردار ہے نہیں ہے، یہ کوئی غلط پیغام ہے." 430 00:26:29,750 --> 00:26:32,430 تو دنیا کیا ہے ہے، وہ اگلے سب سے بڑی قدر کا استعمال کرتے ہیں، 431 00:26:32,430 --> 00:26:35,790 ایک int کی طرح کچھ ہے تاکہ تم بٹس کی ایک پاگل نمبر ہے، 432 00:26:35,790 --> 00:26:39,610 4 ارب ممکن اقدار کے لئے 32، لہذا آپ کو اپ صرف استعمال کرتے ہوئے ختم کر سکتے ہیں، 433 00:26:39,610 --> 00:26:44,800 بنیادی طور پر، ان میں سے 257، 1 جن میں سے ایک غلطی کے طور پر کچھ خاص مطلب ہے. 434 00:26:44,800 --> 00:26:49,190 >> تو یہ کس طرح کام کرتا ہے کو دیکھنے کے. 246 لائن میں، میں نے اس بڑی دیر لوپ ہے 435 00:26:49,190 --> 00:26:54,530 کہ fgetc بلا رہا ہے، F معنی فائل، getc، اور پھر stdin. 436 00:26:54,530 --> 00:26:59,030 پتہ چلا ہے یہ صرف کہنے کے عین مطابق راستہ ہے "کی بورڈ سے ان پٹ پڑھ." 437 00:26:59,030 --> 00:27:02,730 معیاری ان پٹ کا مطلب ہے، کی بورڈ، معیاری پیداوار کی سکرین کا مطلب ہے کہ، 438 00:27:02,730 --> 00:27:06,920 اور معیاری غلطی، جو ہم 4 pset میں نظر آئے گا، سکرین کا مطلب ہے، 439 00:27:06,920 --> 00:27:09,670 لیکن اتنا ہے کہ سکرین کے ایک خاص حصہ نہیں conflated ہے 440 00:27:09,670 --> 00:27:13,760 اصل پیداوار کہ آپ پرنٹ کا ارادہ کے ساتھ، لیکن مستقبل میں اس کے بارے میں مزید. 441 00:27:13,760 --> 00:27:19,430 تو fgetc صرف کا مطلب ہے کہ کی بورڈ سے ایک کردار کو پڑھتے ہیں، اور اس کی دکان کہاں ہے؟ 442 00:27:19,430 --> 00:27:24,000 سی سٹور، اور پھر چیک کرنے کے لیے، تو میں صرف کچھ بولین conjunctions کا استعمال کرتے ہوئے کر رہا ہوں یہاں 443 00:27:24,000 --> 00:27:28,430 چیک کرنے کے لیے ہے کہ یہ برابر \ نہیں ن، تو صارف داخل متاثر ہے. 444 00:27:28,430 --> 00:27:31,510 ہم اس نقطہ، لوپ کے آخر میں کو روکنے کے لئے چاہتے ہیں، اور ہم بھی چیک کرنے کے لیے کرنا چاہتے ہیں 445 00:27:31,510 --> 00:27:36,170 کے لئے خصوصی مستقل مسل اختتام، جس میں اگر تم جانتے ہو یا اندازہ ہے - کیا اس کے لئے کیا مطلب ہوتا ہے؟ 446 00:27:36,170 --> 00:27:39,860 فائل کے آخر میں. تو یہ nonsensical کی طرح ہے، کیونکہ اگر میں کی بورڈ میں ٹائپ کر رہا ہوں، 447 00:27:39,860 --> 00:27:41,900 واقعی اس میں شامل نہیں فائل، 448 00:27:41,900 --> 00:27:44,330 لیکن کلی کا مطلب تھا مدت کے یہ صرف ترتیب ہے 449 00:27:44,330 --> 00:27:50,320 انسانی انگلیوں سے کہ اور کچھ نہیں آ رہا ہے. مسل اختتام. فائل کے آخر میں. 450 00:27:50,320 --> 00:27:52,600 ایک طرف ایک کے طور پر، اگر آپ نے کبھی اپنے کی بورڈ میں کنٹرول د ہے متاثر 451 00:27:52,600 --> 00:27:54,680 کہ تم ابھی تک نہیں ہوگا، آپ کنٹرول سی متاثر ہے. 452 00:27:54,680 --> 00:27:57,920 لیکن کنٹرول د اس خاص مسلسل کہا جاتا مسل اختتام بھیجتا ہے. 453 00:27:57,920 --> 00:28:03,100 >> تو اب ہم صرف کچھ متحرک میموری مختص کرنے کا ہے. 454 00:28:03,100 --> 00:28:06,460 تو اگر N + 1 صلاحیت>، اب میں (ن) کی وضاحت کریں گے. 455 00:28:06,460 --> 00:28:09,380 ن بفر میں کتنے بائٹس فی الحال ہے، 456 00:28:09,380 --> 00:28:11,970 سٹرنگ ہے کہ آپ فی الحال صارف سے کر رہے ہیں کی تعمیر. 457 00:28:11,970 --> 00:28:16,240 اگر آپ کو آپ کے بفر میں زیادہ حروف سے آپ کو بفر میں صلاحیت ہے، 458 00:28:16,240 --> 00:28:20,760 intuitively، کیا تو ہم کیا کرنے کی ضرورت ہے زیادہ صلاحیت مختص ہے. 459 00:28:20,760 --> 00:28:24,490 میں ریاضی میں سے کچھ یہاں ملائی اتارا جا رہا ہوں 460 00:28:24,490 --> 00:28:26,900 اور یہاں صرف اس تقریب پر توجہ دیتے ہیں. 461 00:28:26,900 --> 00:28:29,170 کیا تم جانتے ہو malloc ہے، یا کم از کم عام طور پر واقف ہے. 462 00:28:29,170 --> 00:28:32,380 ایک اندازہ کیا realloc کرتا ہے لے لو. [Student کی جواب، unintelligible] 463 00:28:32,380 --> 00:28:35,690 >> جی ہاں. اور یہ کافی میموری نہیں ہے انہوں نے مزید کہا، یہ مندرجہ ذیل میموری reallocates: 464 00:28:35,690 --> 00:28:40,530 اگر پھر بھی آپ اس میموری کی زیادہ دینے کے لئے تار کے آخر میں کمرے 465 00:28:40,530 --> 00:28:43,370 سے یہ اصل میں آپ کو دیتا ہے، تو آپ اس اضافی میموری ملے گی. 466 00:28:43,370 --> 00:28:46,640 تو آپ ڈور حروف واپس ڈال واپس، واپس واپس کر سکتے ہیں. 467 00:28:46,640 --> 00:28:49,290 لیکن اگر ایسی بات نہیں ہے، کیونکہ آپ بہت دیر سے انتظار کر رہے تھے 468 00:28:49,290 --> 00:28:51,700 اور بے ترتیب کچھ میموری میں وہاں plopped، لیکن اس اضافی ہے 469 00:28:51,700 --> 00:28:56,480 یہاں یاد، وہ ٹھیک ہے. Realloc آپ کے لئے تمام بھاری لفٹنگ کرنے والی ہے، 470 00:28:56,480 --> 00:28:58,810 STRING نے آپ کو پڑھا اس طرح یہاں سے دور ہے منتقل، 471 00:28:58,810 --> 00:29:02,550 وہاں نیچے رکھ اور پھر آپ کو اس وقت کے بارے میں مزید کچھ رن وے دے. 472 00:29:02,550 --> 00:29:05,610 تو ہاتھ کی لہر کے ساتھ، مجھے کا کہنا ہے کہ کہ GetString کیا کر رہا ہے 473 00:29:05,610 --> 00:29:09,540 ہے، یہ ایک چھوٹی سی بفر، شاید 1 ایک کردار کے ساتھ شروع ہو رہا ہے، 474 00:29:09,540 --> 00:29:12,300 اور 2 حروف میں صارف کی اقسام اگر، GetString تک ختم ہوتا ہے 475 00:29:12,300 --> 00:29:15,210 realloc بلا کہتے ہیں، 'اوہ، 1 کردار کافی نہیں تھا. 476 00:29:15,210 --> 00:29:18,480 2 حروف مجھے دے دو. ' پھر اگر آپ لوپ کی منطق کے ذریعے پڑھا، 477 00:29:18,480 --> 00:29:21,070 ، کا کہنا ہے کہ 'ؤہ، 3 حروف میں ٹائپ صارف جا رہا ہے. 478 00:29:21,070 --> 00:29:25,690 مجھے دے دو 2 نہیں بلکہ 4 حروف، تو آپ کے وزٹرز کا ریکارڈ رکھا 8 دے، تو مجھے 16 اور 32 دے. ' 479 00:29:25,690 --> 00:29:28,180 حقیقت یہ ہے کہ میں نے صلاحیت کو دگنا کرنے ہر بار رہا ہوں 480 00:29:28,180 --> 00:29:30,320 کا مطلب یہ ہے کہ بفر آہستہ آہستہ اضافہ نہیں ہے. 481 00:29:30,320 --> 00:29:35,870 یہ انتہائی تیز رفتار اضافہ ہو رہا ہے، اور کیا اس کا فائدہ ہو سکتا ہے؟ 482 00:29:35,870 --> 00:29:38,540 میں بفر کا سائز دگنا کرنے کیوں کر رہا ہوں، اگرچہ صارف 483 00:29:38,540 --> 00:29:41,450 صرف 1 کی بورڈ سے اضافی کردار کی ضرورت ہو سکتی ہے؟ 484 00:29:41,450 --> 00:29:44,830 [Student کی جواب، unintelligible]. >> وہ کیا ہے؟ 485 00:29:44,830 --> 00:29:46,750 بالکل. آپ کے طور پر اکثر بڑھ نہیں ہے. 486 00:29:46,750 --> 00:29:48,870 اور یہ صرف ایک قسم ہے - you're آپ کے دانو یہاں باڑ لگانا. 487 00:29:48,870 --> 00:29:54,150 خیال ہے کہ آپ کو بہت realloc فون نہیں کرتے، کیونکہ یہ سست ہو جاتا ہے. 488 00:29:54,150 --> 00:29:56,840 کسی بھی وقت آپ میموری کے لئے آپریٹنگ سسٹم سے دعا گو ہیں، جیسا کہ آپ جلد ہی نظر آئے گا 489 00:29:56,840 --> 00:30:00,620 مستقبل میں مسئلہ سیٹ میں، اس میں کچھ وقت لگ جاتا ہے. 490 00:30:00,620 --> 00:30:04,980 ہے کہ وقت کی رقم کو کم سے کم کرنا، یہاں تک کہ اگر آپ کچھ جگہ برباد کر رہے ہیں تو، ایک اچھی بات ہو جاتا ہے. 491 00:30:04,980 --> 00:30:07,250 >> لیکن اگر ہم GetString کے آخری حصہ کے ذریعے یہاں پڑھ، 492 00:30:07,250 --> 00:30:10,880 اور پھر، ہر ایک لائن یہاں سمجھنے اتنی اہم نہیں ہے آج. 493 00:30:10,880 --> 00:30:14,830 نوٹس لیکن ہے کہ وہ آخر میں مطالبہ malloc پھر، اور یہ مختص 494 00:30:14,830 --> 00:30:16,980 بالکل کے طور پر بہت سے شراکت کے طور پر اس سٹرنگ کے لئے کی ضرورت ہے 495 00:30:16,980 --> 00:30:21,620 اور پھر مفت فون کر کے دور پھینک دے، ضرورت سے زیادہ بڑے بفر، 496 00:30:21,620 --> 00:30:23,510 اگر یہ واقعی بھی کئی بار دوہرا کر لی. 497 00:30:23,510 --> 00:30:25,970 مختصر میں، اس طرح GetString کیا گیا ہے اس وقت کام کر. 498 00:30:25,970 --> 00:30:30,100 یہ ہے ایک وقت میں ایک کردار پڑھا ہے بار بار بار 499 00:30:30,100 --> 00:30:37,930 اور ہر بار یہ کچھ اضافی میموری کی ضرورت ہے، یہ اس کے لئے realloc کو فون کر کے آپریٹنگ سسٹم پوچھتا ہے. 500 00:30:37,930 --> 00:30:41,660 کوئی سوال؟ ٹھیک ہے. 501 00:30:41,660 --> 00:30:45,220 >> ایک حملہ ہے. اب جب کہ ہم اشارہ سمجھتے ہیں، یا کم از کم 502 00:30:45,220 --> 00:30:47,560 اشارہ کے ساتھ تیزی سے واقف ہیں، 503 00:30:47,560 --> 00:30:50,020 ہم غور کریں کہ کس طرح پوری دنیا گر شروع ہوتا ہے 504 00:30:50,020 --> 00:30:53,160 اگر آپ معاندانہ صارفین کے خلاف کافی نہیں ہے کا دفاع، 505 00:30:53,160 --> 00:30:55,180 لوگ ہیں جو آپ کے سسٹم میں ہیک کرنے کی کوشش کر رہے ہیں. 506 00:30:55,180 --> 00:31:00,260 وہ لوگ جو کچھ رجسٹریشن کوڈ circumventing کی طرف سے آپ کے سافٹ ویئر کی چوری کی کوشش کر رہے ہیں 507 00:31:00,260 --> 00:31:02,150 کہ وہ اندر ٹائپ کریں ورنہ ہو سکتا ہے 508 00:31:02,150 --> 00:31:04,860 اس مثال میں نظر یہاں لے لو، جس میں صرف C کوڈ آن ہے 509 00:31:04,860 --> 00:31:07,920 ہے کہ اس کے نیچے دیے گئے ایک اہم تقریب ہے، ایک تقریب FOO مطالبہ، 510 00:31:07,920 --> 00:31:12,100 اور اس FOO گزر رہا ہے؟ [Student کی] ایک دلیل ہے. 511 00:31:12,100 --> 00:31:15,660 >> اکیلی دلیل. تو argv [1] جس کا پہلا لفظ صارف ٹائپ کا مطلب ہے کہ 512 00:31:15,660 --> 00:31:19,150 a.out یا جو کچھ بھی کے بعد کمانڈ لائن میں پروگرام کا کہا جاتا ہے. 513 00:31:19,150 --> 00:31:24,920 FOO تو، سب سے اوپر، ایک چار * میں لیتا ہے، لیکن اس کی چار * کیا ہے؟ 514 00:31:24,920 --> 00:31:28,860 سلک. کوئی نئی بات نہیں ہے، اور اس سٹرنگ منمانے جا رہا ہے بار کہا جاتا ہے. 515 00:31:28,860 --> 00:31:36,090 اس لائن میں، چار سی [12]، انگریزی نیم تکنیکی طرح کی میں کیا یہ لائن کر رہی ہے؟ 516 00:31:36,090 --> 00:31:40,640 کی لڑی -؟ تصوراتی، بہترین. کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے 12 حروف کی ایک سرنی دیجئے. 517 00:31:40,640 --> 00:31:44,970 تو ہم یہ ایک بفر کو فون کر سکتے ہیں. تکنیکی C کہتے ہیں، لیکن پروگرامنگ میں ایک بفر 518 00:31:44,970 --> 00:31:47,890 جگہ کا ایک گروپ ہے کہ آپ کو کچھ چیزیں اندر رکھ سکتے ہیں کا مطلب ہے 519 00:31:47,890 --> 00:31:49,940 >> memcpy، پھر آخر میں، ہم پہلے استعمال نہیں کیا ہے. 520 00:31:49,940 --> 00:31:52,380 لیکن آپ شاید اندازہ لگا سکتے ہیں کیا اس سے فرق پڑتا ہے. یہ میموری نقل کرتا ہے. 521 00:31:52,380 --> 00:31:58,790 اس کا کیا کرنا ہے؟ ٹھیک ہے، یہ بظاہر بار نقل کرتا ہے، اس کی ان پٹ سی میں، 522 00:31:58,790 --> 00:32:03,420 لیکن صرف اس بار کی لمبائی. 523 00:32:03,420 --> 00:32:07,440 لیکن یہاں ایک بگ ہے. 524 00:32:07,440 --> 00:32:14,500 ٹھیک ہے، تو تکنیکی طور پر ہم strlen واقعی (بار) X sizeof (چار)، کیا یہ صحیح ہے کیا کرنا چاہئے. 525 00:32:14,500 --> 00:32:17,920 لیکن بدترین صورت میں یہاں دو، اس that's کو سنبھالنے - ایسا ہے، تو ٹھیک ہے. 526 00:32:17,920 --> 00:32:23,760 اس کے بعد 2 کیڑے ہے. (چار) sizeof، ٹھیک ہے، تو یہ تھوڑا وسیع بنانے کے. 527 00:32:23,760 --> 00:32:28,860 تو اب وہاں ابھی بھی ایک مسئلے جو کیا ہے؟ 528 00:32:28,860 --> 00:32:31,630 [Student کی جواب، unintelligible] کس کے لئے >> چیک؟ ٹھیک ہے، تو ہم جانچ پڑتال کی جانی چاہئے 529 00:32:31,630 --> 00:32:35,010 کے نل کے لئے، کیونکہ بری چیزوں ہوگا جب آپ کا پوائنٹر نل ہے، 530 00:32:35,010 --> 00:32:38,490 کیونکہ تم نے وہاں جا، اور تم نے کبھی نہیں کرنا چاہئے شہوت انگیز null جا سکتا ہے 531 00:32:38,490 --> 00:32:40,890 * آپریٹر کے ساتھ محولہ لقب ضبطی کی طرف سے. 532 00:32:40,890 --> 00:32:45,250 تو یہ اچھی بات ہے، اور اور کیا ہم کر رہے ہیں؟ منطقی طور پر کوئی دوش بھی یہاں ہے. 533 00:32:45,250 --> 00:32:47,650 [Student کی جواب، unintelligible] 534 00:32:47,650 --> 00:32:51,340 >> لہذا اگر argc ≥ 2 چیک کرنے کے لیے؟ 535 00:32:51,340 --> 00:32:54,130 ٹھیک ہے تو، اس پروگرام میں 3 کیڑے یہاں ہے. 536 00:32:54,130 --> 00:33:00,080 ہم جانچ پڑتال اگر صارف اصل میں [1] argv اچھا ہے، میں کچھ بھی نہیں میں ٹائپ کر رہے ہیں. 537 00:33:00,080 --> 00:33:02,240 تو تیسرا بگ ہے؟ جی ہاں؟ 538 00:33:02,240 --> 00:33:04,420 [Student کی جواب، unintelligible] >> اچھا لگا. 539 00:33:04,420 --> 00:33:09,590 تو ہم نے ایک منظر نامے کی جانچ پڑتال. ہم لپیٹ زیادہ میموری کو کاپی نہیں کی جانچ پڑتال 540 00:33:09,590 --> 00:33:12,800 سے بار کی لمبائی کی حد سے تجاوز کرے گا. 541 00:33:12,800 --> 00:33:15,720 لہذا اگر سٹرنگ میں ٹائپ صارف کو 10 حروف طویل ہے، 542 00:33:15,720 --> 00:33:18,260 یہ کہہ رہی ہے، 'صرف 10 حروف کو کاپی کر دیں.' 543 00:33:18,260 --> 00:33:21,140 اور یہ ٹھیک ہے، لیکن اگر فوری طور پر میں ایک لفظ میں ٹائپ صارف 544 00:33:21,140 --> 00:33:29,360 20 کردار لفظ کی طرح، یہ ہے، بار سے کیا میں کاپی 20 حروف کا کہنا ہے؟ 545 00:33:29,360 --> 00:33:32,840 C، دوسری صورت میں ہمارے بفر کے طور پر کہا جاتا ہے، جس کا مطلب ہے کہ آپ صرف ڈیٹا لکھا 546 00:33:32,840 --> 00:33:35,950 8 بائٹ مقامات میں کہا گیا ہے کہ تم خود نہیں، 547 00:33:35,950 --> 00:33:38,320 اور آپ کو احساس ہے کہ تم انہیں کبھی نہیں مختص میں ان کی ہی نہیں ہے. 548 00:33:38,320 --> 00:33:41,190 تو یہ ہے جو عام طور پر بفر اتپرواہ حملے کے طور پر جانا جاتا ہے، 549 00:33:41,190 --> 00:33:46,650 یا بفر overrun معنوں میں حملے اور اس حملے کہ اگر صارف 550 00:33:46,650 --> 00:33:50,650 یا پروگرام ہے جو آپ کے تقریب کو بلا رہا ہے اس maliciously کر رہا ہے، 551 00:33:50,650 --> 00:33:53,780 اصل میں کیا ہوتا ہے اگلے بہت برا ہو سکتا ہے. 552 00:33:53,780 --> 00:33:55,690 >> چلو، اس تصویر پر ایک نظر یہاں لے. 553 00:33:55,690 --> 00:33:59,070 میموری کی یہ تصویر آپ کے اسٹیک کی نمائندگی کرتا ہے. 554 00:33:59,070 --> 00:34:01,050 یاد کرتے ہیں اور یہ کہ ہر وقت آپ کو ایک تقریب کہتے ہیں، 555 00:34:01,050 --> 00:34:04,520 آپ اسٹیک پر یہ چھوٹا سا فریم ملے گا اور پھر ایک اور پھر دوسرے اور پھر دوسرے. 556 00:34:04,520 --> 00:34:07,250 اور ابھی تک ہم صرف اس قسم کی ہے ان rectangles کے طور پر abstracted دور 557 00:34:07,250 --> 00:34:09,380 یا تو وہاں کی بورڈ پر یا سکرین پر یہاں. 558 00:34:09,380 --> 00:34:12,219 لیکن، اگر ہم ان rectangles میں سے ایک پر میں زوم 559 00:34:12,219 --> 00:34:16,460 جب تم نے ایک تقریب FOO فون، پتہ چلا ہے کہ اسٹیک پر زیادہ ہے 560 00:34:16,460 --> 00:34:18,739 اس فریم اور یہ کہ مستطیل کے اندر 561 00:34:18,739 --> 00:34:23,370 سے صرف X اور Y اور A اور B، جیسا کہ ہم سویپ کے بارے میں بات کر رہا تھا. 562 00:34:23,370 --> 00:34:25,949 یہ پتہ چلا ہے کہ نچلے درجے میں کچھ تفصیلات ہیں، 563 00:34:25,949 --> 00:34:27,780 ان کے درمیان ایڈریس واپس. 564 00:34:27,780 --> 00:34:33,020 اہم تو یہ پتہ چلتا ہے جب مرکزی FOO مطالبہ، FOO کو مطلع کرنا ہے 565 00:34:33,020 --> 00:34:36,760 اہم ایڈریس کے کمپیوٹر کی میموری میں ہے. 566 00:34:36,760 --> 00:34:40,659 ورنہ وجہ سے، جلد ہی FOO کے طور پر اس صورت میں یہاں کے طور پر قتل کیا جاتا ہے، 567 00:34:40,659 --> 00:34:43,790 ایک بار آپ FOO کے آخر میں اس کے قریب گھوبگھرالی تسمہ تک پہنچنے، 568 00:34:43,790 --> 00:34:48,860 heck FOO کس طرح پتہ جہاں پروگرام کا کنٹرول کرنے کے لئے سمجھا جاتا ہے؟ 569 00:34:48,860 --> 00:34:52,460 یہ پتہ چلا ہے کہ اس سوال کا جواب وہ لال مستطیل میں ہے. 570 00:34:52,460 --> 00:34:56,130 یہ ایک پوائنٹر کی نمائندگی کرتا ہے، اور یہ کمپیوٹر پر ہے، عارضی طور پر ذخیرہ، 571 00:34:56,130 --> 00:35:00,250 نام نہاد اسٹیک کا اہم پتہ تاکہ جلد ہی FOO کے طور پر قتل کیا جاتا ہے، 572 00:35:00,250 --> 00:35:04,110 کمپیوٹر کہاں اور اہم کیا لائن پر واپس جانا جانتا ہے. 573 00:35:04,110 --> 00:35:06,900 محفوظ شدہ فریم یہ پوائنٹر اس سے اسی طرح سے متعلق ہے. 574 00:35:06,900 --> 00:35:09,620 چار * یہاں بار کیا کی نمائندگی کرتا ہے؟ 575 00:35:09,620 --> 00:35:14,740 ٹھیک ہے، اب یہ نیلی طبقہ یہاں FOO فریم ہے، کیا بار ہے؟ 576 00:35:14,740 --> 00:35:18,300 ٹھیک ہے، تو بار صرف FOO تقریب دلیل ہے. 577 00:35:18,300 --> 00:35:20,720 >> تو اب ہم واقف تصویر میں واپس آ گئے ہیں. 578 00:35:20,720 --> 00:35:22,960 اسکرین پر مزید چیزیں اور مزید خلفشار ہے 579 00:35:22,960 --> 00:35:27,490 لیکن یہ ہلکے نیلے رنگ حصہ ہے جو ہم نے سویپ کی طرح کچھ کے لئے چاکبورڈ پر ڈرائنگ. 580 00:35:27,490 --> 00:35:31,890 یہ FOO کے لئے فریم اور اب اس میں صرف ایک چیز صحیح ہے بار ہے، 581 00:35:31,890 --> 00:35:34,630 جو اس پیرامیٹر ہے. 582 00:35:34,630 --> 00:35:39,840 لیکن اور کیا اسٹیک میں اس کوڈ کے مطابق کرنا چاہئے؟ 583 00:35:39,840 --> 00:35:44,280 چار ج [12]. تو ہم میموری کا 12 چوکوں کو بھی دیکھنا چاہئے، 584 00:35:44,280 --> 00:35:46,260 نامی سی متغیر مختص. 585 00:35:46,260 --> 00:35:48,340 اور یقینا ہم سکرین پر ہے. 586 00:35:48,340 --> 00:35:51,650 سب سے اوپر ہے وہاں C [0]، اور پھر اس خاکہ کے مصنف 587 00:35:51,650 --> 00:35:55,130 تھا چوکوں کے تمام ڈرائنگ کی زحمت نہیں لیکن وہاں واقعی وہاں 12 588 00:35:55,130 --> 00:36:00,120 کیونکہ اگر آپ نیچے دائیں طرف دیکھتے ہیں، سی [11]، اگر آپ 0 سے شمار ایسے، 12 بائٹس ہے. 589 00:36:00,120 --> 00:36:06,190 لیکن یہاں مسئلہ ہے: کس سمت میں سی بڑھ رہی ہے؟ 590 00:36:06,190 --> 00:36:10,390 نیچے اوپر ترتیب دیں، ٹھیک ہے؟ اگر یہ سب سے اوپر شروع ہوتی ہے اور نیچے اگنے، 591 00:36:10,390 --> 00:36:13,480 ہے جیسا کہ ہم نے خود کو زیادہ رن وے کو چھوڑ دیا ہے یہاں بالکل نہیں دیکھو. 592 00:36:13,480 --> 00:36:15,320 ہم کی طرح ایک کونے میں خود پینٹ ہے، 593 00:36:15,320 --> 00:36:20,210 اور یہ کہ سی [11]، بار، جس میں اسٹیک فریم پوائنٹر کے خلاف ٹھیک ہے کے خلاف ٹھیک ہے 594 00:36:20,210 --> 00:36:23,800 جو واپسی ایڈریس کے خلاف ٹھیک ہے، وہاں کوئی گنجائش نہیں ہے. 595 00:36:23,800 --> 00:36:26,100 تو کیا مطلب ہے، پھر، اگر آپ کو نقصان پہنچانا، 596 00:36:26,100 --> 00:36:30,460 اور آپ کو ایک 12 بائٹ بفر میں 20 بائٹس پڑھنے کی کوشش کرتے ہیں؟ 597 00:36:30,460 --> 00:36:33,460 ان 8 اضافی بائٹس کہاں جا رہے ہیں؟ 598 00:36:33,460 --> 00:36:36,370 باقی سب کے اندر، جن میں سے بعض انتہائی اہم ہے. 599 00:36:36,370 --> 00:36:40,480 اور سب سے اہم بات ہے، ممکنہ طور پر، سرخ باکس وہاں ہے، واپسی کا پتہ ہے. 600 00:36:40,480 --> 00:36:44,720 کیونکہ لگتا ہے کہ آپ نے غلطی سے یا adversarially ہیں 601 00:36:44,720 --> 00:36:48,040 ان 4 بائٹس، کہ پوائنٹر ایڈریس ادلیکھت، 602 00:36:48,040 --> 00:36:53,190 صرف ردی کی ٹوکری کے ساتھ، لیکن ایک بڑی تعداد ہے جو میموری میں ایک حقیقی ایڈریس کی نمائندگی ہوتا ہے کے ساتھ نہیں ہے؟ 603 00:36:53,190 --> 00:36:55,930 کیا implicaiton ہے، منطقی طور پر؟ 604 00:36:55,930 --> 00:36:59,080 [Student کی جوابات، unintelligible] بالکل. >> FOO واپس جب 605 00:36:59,080 --> 00:37:03,560 اور ہٹ کہ گھوبگھرالی تسمہ، پروگرام کے اہم واپس نہیں کی کارروائی کی جا رہی ہے، 606 00:37:03,560 --> 00:37:08,320 اس سرخ باکس میں جو کچھ بھی پتہ ہے میں واپس جا رہا ہے. 607 00:37:08,320 --> 00:37:11,560 >> اب، circumventing سافٹ ویئر کی رجسٹریشن کے معاملے میں 608 00:37:11,560 --> 00:37:14,400 پتہ نہیں ہوتا جو جا رہا ہے واپس کیا ہے جشن ہے 609 00:37:14,400 --> 00:37:18,820 کہ عام طور پر کہا جاتا ہے کے بعد آپ کے سافٹ ویئر کے لئے ادائیگی کی ہے ہو جاتا ہے اور آپ کے رجسٹریشن کوڈ inputted؟ 610 00:37:18,820 --> 00:37:23,160 تم یہاں نہیں میں ٹرک کمپیوٹر ترتیب بلکہ اس کی بجائے، یہاں جا سکتا ہے. 611 00:37:23,160 --> 00:37:27,950 یا، اگر آپ واقعی ہوشیار ہو، کی بورڈ میں ایک مخالف میں اصل میں ٹائپ کر سکتے ہیں، 612 00:37:27,950 --> 00:37:32,500 مثال کے طور پر ایک اصل لفظ نہیں، 20 نہیں حروف، لیکن لگتا ہے کہ، وہ 613 00:37:32,500 --> 00:37:36,200 قسم کے کچھ ایسے حروف ہیں جو کوڈ کی نمائندگی کرتے ہیں میں ہے؟ 614 00:37:36,200 --> 00:37:38,860 اور اس C کوڈ نہیں ہے، یہ حروف کا ہونا ہو رہا ہے 615 00:37:38,860 --> 00:37:42,920 جو بائنری مشین کوڈ، 0 اور 1 کی نمائندگی کرتے ہیں. 616 00:37:42,920 --> 00:37:46,740 لیکن لگتا ہے کہ وہ کافی ہوشیار ہے کہ کسی نہ کسی طرح GetString فوری میں پیسٹ کرنے ہیں 617 00:37:46,740 --> 00:37:49,460 کچھ ہے کہ بنیادی طور پر کوڈ مرتب کیا ہے، 618 00:37:49,460 --> 00:37:56,900 اور آخری 4 بائٹس ہے کہ واپسی پتہ ادلیکھت، اور کیا پتہ ہے کہ ان پٹ کیا کرتا ہے؟ 619 00:37:56,900 --> 00:38:01,860 یہ لال مستطیل بفر کی پہلی بائٹ کے ایڈریس میں ذخیرہ ہے. 620 00:38:01,860 --> 00:38:04,270 تو کیا تم واقعی ہوشیار ہونا پڑے گا، اور اس مقدمے کی سماعت اور غلطی کا بہت ہے 621 00:38:04,270 --> 00:38:08,500 وہاں برے لوگ، لیکن اگر آپ کو اعداد و شمار کر سکتے ہیں اس بفر کتنا بڑا ہے، کے لئے 622 00:38:08,500 --> 00:38:12,170 ایسی ہے کہ ان پٹ میں گزشتہ چند بائٹس ہے کہ آپ اس پروگرام کو فراہم کی 623 00:38:12,170 --> 00:38:15,970 آپ کے بفر کے آغاز کا پتہ برابر ہوگا، 624 00:38:15,970 --> 00:38:22,270 کیا تم یہ کر سکتے ہیں. اگر ہم کہتے ہیں، عام طور پر، ہیلو، اور \ 0، کہ کیا بفر میں ختم ہو جاتی ہے. 625 00:38:22,270 --> 00:38:27,860 لیکن اگر ہم زیادہ ہوشیار ہیں، اور ہم نے کہ جو ہم حملے کا کوڈ generically فون کروں گا کے ساتھ بفر بھرنے کے، 626 00:38:27,860 --> 00:38:31,920 A، A، A، A: حملہ، حملے، حملہ، حملے، جہاں یہ صرف کچھ ہے کہ کچھ برا کرتا ہے ہے. 627 00:38:31,920 --> 00:38:35,190 ٹھیک ہے، کیا ہوتا ہے اگر تم واقعی ہوشیار ہو، تم یہ کر سکتا ہے: 628 00:38:35,190 --> 00:38:41,740 80، CO، 35، 08: سرخ باکس میں تعداد کی ایک ہی تسلسل ہے. 629 00:38:41,740 --> 00:38:44,890 نوٹس کہ وہ نمبر ہے کہ یہاں ہے سے میل کھاتا ہے. 630 00:38:44,890 --> 00:38:47,280 معکوس ترتیب میں ہے، لیکن یہ کسی اور وقت پر. 631 00:38:47,280 --> 00:38:51,430 یاد رکھیں کہ اس کی واپسی کا پتہ کیا گیا ہے جان بوجھ کر تبدیلی 632 00:38:51,430 --> 00:38:54,970 ایڈریس یہاں کے برابر، اہم نہیں پتہ. 633 00:38:54,970 --> 00:39:00,170 تو اگر برا آدمی سپر ہوشیار ہے، وہ اس حملے کے کوڈ میں شامل کرنے جا رہا ہے 634 00:39:00,170 --> 00:39:02,890 کچھ کی طرح، 'صارف کی فائلوں کی تمام خارج کر دیں.' 635 00:39:02,890 --> 00:39:06,320 یا پاس ورڈ کو کاپی کریں، 'یا' ایک صارف اکاؤنٹ ہے جس میں میں لاگ ان کر سکتے ہیں بنائیں. 636 00:39:06,320 --> 00:39:10,130 کچھ بھی، اور یہ دونوں خطرہ ہے اور سی کی طاقت ہے 637 00:39:10,130 --> 00:39:12,900 کیونکہ آپ کو اشارہ کے ذریعے ياداشت کو رسائی حاصل ہے 638 00:39:12,900 --> 00:39:15,950 اور تم کچھ بھی آپ کے کمپیوٹر کی میموری میں چاہتا ہوں اس لئے لکھ سکتے ہیں. 639 00:39:15,950 --> 00:39:19,290 آپ کو ایک کمپیوٹر کو کچھ آپ کو صرف کرنا چاہتے ہیں کی طرف سے کر سکتے ہیں 640 00:39:19,290 --> 00:39:22,780 ہے یہ اس کی اپنی میموری کی جگہ کے اندر اندر کے ارد گرد کود. 641 00:39:22,780 --> 00:39:27,230 اور اس طرح، اس دن تو، بہت سے پروگراموں اور بہت سی ویب سائٹ ہے کہ سمجھوتہ کر رہے ہیں 642 00:39:27,230 --> 00:39:29,730 اس کا فائدہ لینے والے لوگوں کو ذیل میں ابال. 643 00:39:29,730 --> 00:39:32,510 اور یہ ایک سپر بہتر حملے کی طرح لگتا ہے ہو سکتا ہے، 644 00:39:32,510 --> 00:39:34,220 لیکن یہ اس طرح ہمیشہ نہیں شروع کرتا ہے. 645 00:39:34,220 --> 00:39:36,770 >> حقیقت یہ ہے کہ کیا برے لوگ عام طور پر کیا کرے گا، 646 00:39:36,770 --> 00:39:41,470 چاہے وہ ایک کمانڈ لائن میں ایک پروگرام یا ایک GUI پروگرام یا ایک ویب سائٹ ہے، 647 00:39:41,470 --> 00:39:43,290 تم صرف قسم کی معمولی ہدایات فراہم کرنا شروع کریں. 648 00:39:43,290 --> 00:39:46,940 آپ کو تلاش کے فیلڈ اور ہٹ میں داخل میں ایک بہت بڑا لفظ میں ٹائپ کریں، 649 00:39:46,940 --> 00:39:49,030 اور آپ کو اگر ویب سائٹ گر کر تباہ کو دیکھنے کے لئے انتظار کریں. 650 00:39:49,030 --> 00:39:53,270 یا آپ اگر پروگرام کوئی غلطی پیغام اظہار انتظار کریں. 651 00:39:53,270 --> 00:39:55,480 کیونکہ اگر تم خوش ہو جاؤ، برا آدمی، 652 00:39:55,480 --> 00:39:59,610 اور آپ کو کچھ پاگل ان پٹ فراہم کرتے ہیں کہ اس پروگرام کریش ہو جاتا ہے، 653 00:39:59,610 --> 00:40:02,280 اس کا مطلب ہے کہ پروگرامر نے اپنے برے رویے کی امید نہیں تھی 654 00:40:02,280 --> 00:40:05,420 جس کا مطلب ہے کہ آپ شاید کر سکتے ہیں کافی کوشش کے ساتھ، 655 00:40:05,420 --> 00:40:09,870 کافی مقدمے کی سماعت اور غلطی، اعداد و شمار کس طرح ایک سے زیادہ عین مطابق حملے چھیڑنے. 656 00:40:09,870 --> 00:40:15,900 سلامتی کے تو زیادہ سے زیادہ ایک حصہ ان حملوں نہیں ہے مکمل طور پر گریز، لیکن ان کا پتہ لگانے 657 00:40:15,900 --> 00:40:20,250 اور اصل میں نوشتہ دیکھ اور دیکھ کر پاگل آدانوں آپ کی ویب سائٹ میں ٹائپ لوگ ہیں. 658 00:40:20,250 --> 00:40:26,040 کیا آپ کی ویب سائٹ میں تلاش کی اصطلاحات لوگوں کو کچھ بفر overflowing کی امید میں ٹائپ ہے؟ 659 00:40:26,040 --> 00:40:28,900 اور، یہ ایک صف کیا ہے سادہ مبادیات کو فوڑے 660 00:40:28,900 --> 00:40:32,510 اور اس اور استعمال کرنے کے لئے میموری مختص کیا مطلب ہے؟ 661 00:40:32,510 --> 00:40:34,920 اور اس سے متعلق بھی ہے. 662 00:40:34,920 --> 00:40:37,520 >> تو صرف ایک ہارڈ ڈرائیو کے اندر ایک بار پھر نظر. 663 00:40:37,520 --> 00:40:40,190 تو آپ کو یاد ہوگا کہ آپ سے ایک یا دو ہفتے کے پہلے فائلوں جب کھینچ کر لائیں 664 00:40:40,190 --> 00:40:45,470 اپنے ریسایکل بن یا ردی کی ٹوکری میں کر سکتے ہیں، کیا ہوتا ہے؟ 665 00:40:45,470 --> 00:40:47,850 [Student کی] کوئی بات نہیں ہے. >> جی ہاں، بالکل کچھ نہیں. آخر میں اگر آپ کو کم چلاتے ہیں 666 00:40:47,850 --> 00:40:51,370 ڈسک کی جگہ، ونڈوز یا میک OS کی طرف سے آپ کے لئے فائلوں کو حذف کرنے شروع کر دیں گے. 667 00:40:51,370 --> 00:40:53,670 لیکن اگر آپ وہاں میں کچھ کھینچ کر لائیں، تو یہ تمام محفوظ نہیں ہے. 668 00:40:53,670 --> 00:40:56,550 تمام roomate، دوست، یا خاندان کے رکن کرنا ہے ڈبل کلک کریں، ہے اور voila. 669 00:40:56,550 --> 00:40:59,720 تمام خاکہ فائلوں ہے کہ آپ کو خارج کرنے کی کوشش کی ہے. 670 00:40:59,720 --> 00:41:02,840 لہذا ہم میں سے سب سے زیادہ کم از کم پتہ ہے کہ تم صحیح یا کلک کنٹرول پر کلک کریں 671 00:41:02,840 --> 00:41:05,320 اور خالی، ردی کی ٹوکری، یا ایسا کچھ. 672 00:41:05,320 --> 00:41:07,900 لیکن پھر بھی، کہ ٹرک کافی نہیں کرتی. 673 00:41:07,900 --> 00:41:11,340 کیونکہ جب تم میں سے کسی ایک کو آپ کو آپ کی ہارڈ ڈرائیو پر ایک فائل ہے کیا ہوتا ہے 674 00:41:11,340 --> 00:41:14,590 جو کچھ لفظ دستاویز یا کوئی JPEG کی نمائندگی کرتا ہے؟ 675 00:41:14,590 --> 00:41:18,820 اور یہ آپ کی ہارڈ ڈرائیو کی نمائندگی کرتا ہے، اور چلو کا کہنا ہے کہ اس sliver کہ فائل کی نمائندگی کرتا ہے، 676 00:41:18,820 --> 00:41:21,640 اور یہ 0 اور 1 کی ایک پوری چڑھانے کے پر مشتمل ہے. 677 00:41:21,640 --> 00:41:25,470 کیا ہوتا ہے جب آپ اس فائل کو صرف trashcan یا ریسایکل بن میں مت گھسیٹو، 678 00:41:25,470 --> 00:41:30,390 بلکہ یہ خالی ہے؟ 679 00:41:30,390 --> 00:41:32,820 کچھ بھی نہیں کی بنیاد پر ترتیب دیں. یہ بالکل نہیں ہے نہیں ہے. 680 00:41:32,820 --> 00:41:37,630 اب یہ صرف کچھ بھی نہیں ہے، کیونکہ کچھ اس کے ٹیبل کی شکل میں ہوتا ہے. 681 00:41:37,630 --> 00:41:41,170 تو وہاں ایک کمپیوٹر میموری کے اندر ڈیٹا بیس یا ٹیبل کے کسی قسم ہے 682 00:41:41,170 --> 00:41:44,470 جو بنیادی طور پر فائلوں کے ناموں کے لئے 1 کالم ہے، 683 00:41:44,470 --> 00:41:50,550 اور فائل کے محل وقوع کے، جہاں یہ 123 مقام، صرف ایک بے ترتیب تعداد میں ہو سکتا ہے اس کی 1 کالم. 684 00:41:50,550 --> 00:41:58,270 تو ہم x.jpg طرح کچھ، اور 123 مقام ہو سکتے ہیں. 685 00:41:58,270 --> 00:42:02,870 اور اس کے بعد کیا ہوتا ہے، جب آپ کو آپ کی ردی کی ٹوکری خالی ہے؟ 686 00:42:02,870 --> 00:42:06,720 وہ دور چلا جاتا ہے. لیکن کیا کرتا دور نہیں جانا 0 اور 1 کی ہے. 687 00:42:06,720 --> 00:42:09,690 >> تو کیا ہوا، تو، کنکشن کی 4 pset؟ 688 00:42:09,690 --> 00:42:13,460 4 pset کے ساتھ، صرف اس لئے کہ ہم اتفاقی طور پر ختم کیا ہے 689 00:42:13,460 --> 00:42:15,890 ، کامپیکٹ فلیش کارڈ جو ان تمام تصاویر کی تھی 690 00:42:15,890 --> 00:42:18,710 یا صرف کیونکہ بدقسمتی سے یہ خراب ہوگئ بن گیا، 691 00:42:18,710 --> 00:42:21,170 کا مطلب یہ نہیں ہے کہ 0 اور 1 ابھی تک نہیں ہے. 692 00:42:21,170 --> 00:42:23,920 شاید ان میں سے کچھ کھو دیا ہے کیونکہ کچھ خراب کیا گیا ہے 693 00:42:23,920 --> 00:42:26,530 یعنی وہ اس طرح کہ کچھ 0 1 اور 1 کی بن گیا میں 0 بن گیا. 694 00:42:26,530 --> 00:42:30,460 بری چیزیں ہو چھوٹی گاڑی سافٹ ویئر یا خراب ہارڈ ویئر کی وجہ سے کر سکتے ہیں. 695 00:42:30,460 --> 00:42:33,510 لیکن ان بٹس کے بہت سے، ہو سکتا ہے ان میں سے بھی 100٪ ابھی بھی وہاں ہیں، 696 00:42:33,510 --> 00:42:38,330 یہ صرف ہے کہ کمپیوٹر یا کیمرے کا پتہ جہاں JPEG 1 شروع نہیں کرتا 697 00:42:38,330 --> 00:42:41,660 اور جہاں JPEG 2 شروع کر دیا، لیکن اگر آپ کو، پروگرامر، 698 00:42:41,660 --> 00:42:45,800 پریمی تھوڑا سا ہے، جہاں ان JPEGs ہیں یا ہے وہ کس طرح نظر آتے ہیں کے ساتھ جانتے ہیں کہ، 699 00:42:45,800 --> 00:42:49,570 آپ 0 اور 1 کا تجزیہ کرے گا اور، کا کہنا ہے کہ 'اوہ کر سکتے ہیں. JPEG. ، JPEG، ؤہ. 700 00:42:49,570 --> 00:42:52,830 آپ بنیادی طور پر کے لئے صرف ایک کے ساتھ ایک پروگرام لکھنے یا کر سکتے ہیں جبکہ لوپ 701 00:42:52,830 --> 00:42:56,100 کہ ان فائلوں میں سے ہر ایک اور ہر ایک شفاياب. 702 00:42:56,100 --> 00:42:59,360 تو سبق تو، شروع کرنے کے لئے "محفوظ" آپ کی فائلوں صفائی 703 00:42:59,360 --> 00:43:01,720 اگر آپ کو یہ مکمل طور پر سے بچنے کے لئے کرنا چاہتے ہیں. جی ہاں؟ 704 00:43:01,720 --> 00:43:06,940 [Student کی سوال، unintelligible] 705 00:43:06,940 --> 00:43:11,150 >> مزید میموری سے تم سے پہلے کیا ہے - 706 00:43:11,150 --> 00:43:14,790 اوہ! اچھا سوال ہے. کیوں تو، پھر، ردی کی ٹوکری خالی کرنے کے بعد 707 00:43:14,790 --> 00:43:18,300 کیا آپ کے کمپیوٹر میں آپ کو آگاہ کرتے ہیں کہ آپ اس کے لئے مزید مفت خلا سے تم سے پہلے کیا ہے؟ 708 00:43:18,300 --> 00:43:22,450 مختصر میں، کیونکہ یہ جھوٹ بول رہی ہے. تکنیکی طور پر، آپ کو زیادہ جگہ ہے. 709 00:43:22,450 --> 00:43:26,720 کیونکہ اب تم نے کہا ہے، تو آپ کو دوسری چیزیں ڈال جہاں اس فائل کو ایک بار کر سکتے ہیں، 710 00:43:26,720 --> 00:43:28,930 لیکن اس کا یہ مطلب یہ نہیں بٹس دور جا رہے ہیں ہے، 711 00:43:28,930 --> 00:43:33,070 پر اس کا یہ مطلب نہیں ہے بٹس سب 0 کیا جا رہا ہے کو تبدیل کر دیا گیا، مثال کے طور پر آپ کے تحفظ کے لئے،. 712 00:43:33,070 --> 00:43:37,520 اس کے برعکس، اگر آپ کو "محفوظ" مٹائیں فائلوں، یا جسمانی طور پر آلہ تباہ، 713 00:43:37,520 --> 00:43:40,810 جو واقعی صرف ایک ہی طریقہ ہے، بعض اوقات کہ ارد گرد. 714 00:43:40,810 --> 00:43:45,300 تو ہم نیم ڈراونا نوٹ کریں کہ کیوں نہیں چھوڑ دیتے، اور ہم نے تم سے پیر کو نظر آئے گا. 715 00:43:45,300 --> 00:43:52,810 CS50.TV