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