1 00:00:00,000 --> 00:00:03,000 [Powered by Google Translate] [جھلکیاں] [کوئز 0] 2 00:00:03,000 --> 00:00:05,000 >> [Lexi راس، ٹومی MacWilliam، لوکاس Freitas جوزف Ong] [ہارورڈ یونیورسٹی میں] 3 00:00:05,000 --> 00:00:08,000 >> [یہ CS50 ہے.] [CS50.TV] 4 00:00:08,000 --> 00:00:10,000 >> ہے، سب لوگ. 5 00:00:10,000 --> 00:00:15,000 0 کوئز، جو اس بدھ کو ہو رہی ہے کے لئے جائزہ لینے کے سیشن میں آپ کا استقبال ہے. 6 00:00:15,000 --> 00:00:19,000 ہم آج رات کیا کرنے جا رہے ہیں، میں 3 دیگر TFs کے ساتھ ہوں، 7 00:00:19,000 --> 00:00:24,000 اور مل کر ہم نے جو ہم نے کورس میں نے اب تک کیا ہے کا جائزہ لینے کے کے ذریعے جانے کے لئے جا رہے ہیں. 8 00:00:24,000 --> 00:00:27,000 یہ 100٪ جامع نہیں ہے، لیکن یہ آپ کو ایک بہتر خیال دے دینا چاہئے 9 00:00:27,000 --> 00:00:31,000 کیا آپ کے پاس پہلے سے ہی نیچے اور کیا آپ اب بھی بدھ سے پہلے کا مطالعہ کرنے کی ضرورت ہے. 10 00:00:31,000 --> 00:00:34,000 اور سوالات کے ساتھ آپ کے ہاتھ اٹھانے کے لئے آزاد محسوس جیسا کہ ہم ساتھ جا رہے ہیں، 11 00:00:34,000 --> 00:00:38,000 لیکن اس بات کو ذہن میں رکھنا ہے کہ ہم میں وقت تھوڑا سا بھی پڑے گا آخر 12 00:00:38,000 --> 00:00:41,000 اگر ہم نے چند منٹ کے ساتھ اسپیئر کے ذریعے حاصل عمومی سوالات کرنا، 13 00:00:41,000 --> 00:00:47,000 تو یاد رکھیں کہ، اور تو ہم 0 ہفتہ کے آغاز میں شروع کرنے جا رہے ہیں. 14 00:00:47,000 --> 00:00:50,000 >> [0 جائزہ کوئز!] [0 حصہ] [Lexi راس] لیکن اس سے پہلے کہ ہم ایسا کرتے ہیں کہ لشکر طیبہ کے بارے میں بات 15 00:00:50,000 --> 00:00:53,000 کوئز کے لاجسٹکس. 16 00:00:53,000 --> 00:00:55,000 >> [رسد] [کوئز بدھ کے روز 10/10 پر لیکچر کے بدلے میں جگہ لیتا ہے] 17 00:00:55,000 --> 00:00:57,000 >> [(تفصیلات کے لئے http://cdn.cs50.net/2012/fall/quizzes/0/about0.pdf کو جانئے)] یہ بدھ، 10th اکتوبر ہے. 18 00:00:57,000 --> 00:01:00,000 >> جو اس بدھ ہے، اور اگر آپ اس یو آر ایل یہاں جاؤ، 19 00:01:00,000 --> 00:01:03,000 جو بھی ہے CS50.net وہاں کے سے قابل رسائی ایک لنک 20 00:01:03,000 --> 00:01:06,000 آپ جہاں کی بنیاد پر جانے کے لئے کے بارے میں معلومات دیکھ سکتے ہیں 21 00:01:06,000 --> 00:01:10,000 آپ کی آخری نام یا اسکول الحاق کے طور پر ساتھ ساتھ 22 00:01:10,000 --> 00:01:14,000 اس کے بارے میں بالکل کوئز کیا احاطہ اور قسم کے سوالات کے کہ آپ کو حاصل کرنے کے لئے جا رہے ہیں بتاتا ہے. 23 00:01:14,000 --> 00:01:19,000 ، اس بات کو ذہن میں رکھیں کہ آپ کے حصے میں گئے تمام سوالات کے کے لئے جائزہ لینے کا موقع بھی ہو گا 24 00:01:19,000 --> 00:01:21,000 تو آپ کے TFs کچھ پریکٹس مسائل میں جا چاہئے، 25 00:01:21,000 --> 00:01:29,000 اور یہ کہ جہاں آپ اب بھی کوئز کے لئے مطالعہ کرنے کی ضرورت ہے کو دیکھنے کے لئے کے لئے ایک اچھا موقع ہے. 26 00:01:29,000 --> 00:01:32,000 چلو بٹس 'این' بائٹس کے آغاز میں شروع ہیں. 27 00:01:32,000 --> 00:01:35,000 یاد تھوڑا صرف ایک 0 یا 1 ہے، 28 00:01:35,000 --> 00:01:38,000 اور ایک بائٹ ان میں سے 8 بٹس کے ایک مجموعہ ہے. 29 00:01:38,000 --> 00:01:42,000 چلو بٹس کے اس مجموعہ میں ابھی یہاں دیکھو. 30 00:01:42,000 --> 00:01:44,000 ہم جاننے میں کتنے بٹس ہیں کرنے کے قابل ہونا چاہئے. 31 00:01:44,000 --> 00:01:48,000 ہم کہاں شمار صرف ان میں سے 8، 0 آٹھ یا 1 یونٹ ہے. 32 00:01:48,000 --> 00:01:51,000 اور چونکہ 8 بٹس، 1 بائٹ ہے ہے، 33 00:01:51,000 --> 00:01:53,000 اور شش اعشاری پر قبول کریں. 34 00:01:53,000 --> 00:01:58,000 شش اعشاری 16 کی بنیاد ہے، اور یہ بہت آسان ہے میں تبدیل 35 00:01:58,000 --> 00:02:01,000 بائنری میں ایک بڑی تعداد ہے، جو ہے کہ وہ کیا ہے شش اعشاری میں ایک بڑی تعداد ہے. 36 00:02:01,000 --> 00:02:04,000 ہم کرتے ہیں ہم 4 گروپوں میں نظر آتے ہیں، 37 00:02:04,000 --> 00:02:07,000 اور ہم نے انہیں مناسب شش اعشاری ہندسوں پر تبدیل. 38 00:02:07,000 --> 00:02:11,000 ہم 4 دائیں سب سے زیادہ گروپ کے ساتھ شروع، تو 0011. 39 00:02:11,000 --> 00:02:16,000 1 ایک اور 2 ایک ہو، تو ایک دوسرے کے ساتھ ہے کہ 3 کرتا ہے جا رہا ہے. 40 00:02:16,000 --> 00:02:19,000 اور پھر 4 کے دوسرے بلاک کو دیکھو. 41 00:02:19,000 --> 00:02:24,000 1101. وہ 1 ایک، ایک، 4، اور ایک 8 ہونے جا رہا ہے. 42 00:02:24,000 --> 00:02:28,000 ساتھ ساتھ ہے کہ 13، جو D. کرتا ہے جا رہا ہے 43 00:02:28,000 --> 00:02:32,000 اور ہمیں یاد رکھنا ہے کہ ہم نے 9 کے ذریعے شش اعشاری میں 0 نہ صرف کرتے ہیں کریں گے. 44 00:02:32,000 --> 00:02:36,000 ہم نے 0 F ذریعے جانا، تو 9 کے بعد، ایک 10 کے مساوی 45 00:02:36,000 --> 00:02:40,000 11 B، cetera ET جہاں F 15 ہے. 46 00:02:40,000 --> 00:02:44,000 یہاں 13 D ہے، 47 00:02:44,000 --> 00:02:49,000 تو اس دشملو قبول کرنا جو ہم کرتے اصل میں ہم ہے 48 00:02:49,000 --> 00:02:52,000 2 ایک طاقت کے طور پر ہر ایک کی پوزیشن کا علاج کریں. 49 00:02:52,000 --> 00:02:58,000 یہ 1 ایک، ایک 2، صفر 4s، صفر 8s، ایک 16، cetera ET ہے، 50 00:02:58,000 --> 00:03:03,000 اور یہ تھوڑا سا مشکل ہے تمہارے دماغ میں حساب کرنے کے لئے، لیکن اگر ہم اگلی سلائڈ پر دیکھیں 51 00:03:03,000 --> 00:03:05,000 ہم اس کا جواب دیکھ سکتے ہیں. 52 00:03:05,000 --> 00:03:09,000 >> بنیادی طور پر ہم دائیں سے بھر بائیں واپس جا رہے ہیں، 53 00:03:09,000 --> 00:03:14,000 اور ہم 2 اسی طاقت کی طرف سے ایک عددی ضرب کر رہے ہیں. 54 00:03:14,000 --> 00:03:19,000 ، اور شش اعشاری کے لئے ہم نے 0x سے شروع میں ان کی تعداد کو ظاہر یاد 55 00:03:19,000 --> 00:03:23,000 تو ہم ایک دشملو تعداد کے ساتھ ملط نہیں ہے. 56 00:03:23,000 --> 00:03:29,000 پر جاری ہے، یہ ایک ASCII ٹیبل ہے، 57 00:03:29,000 --> 00:03:35,000 اور جو ہم نے کے لئے استعمال ASCII حروف سے عددی اقدار کا نقشہ ہے. 58 00:03:35,000 --> 00:03:39,000 خفیہ نگاری pset میں یاد رکھیں، ہم ASCII ٹیبل کے وسیع پیمانے پر استعمال کیا 59 00:03:39,000 --> 00:03:43,000 کے لئے خفیہ نگاری کے مختلف طریقوں کو استعمال کرنے کے لئے، 60 00:03:43,000 --> 00:03:47,000 کیسر اور Vigenère صفر، مختلف خطوط کو تبدیل کرنے کے 61 00:03:47,000 --> 00:03:52,000 صارف کی طرف سے دی گئی کلید کے مطابق ایک تار میں. 62 00:03:52,000 --> 00:03:56,000 ASCII ریاضی کا ایک تھوڑا سا میں نظر ہے. 63 00:03:56,000 --> 00:04:02,000 کردار قسم ہے جو کہ (ق) ہو گی 'P' 1 + کی تلاش میں، 64 00:04:02,000 --> 00:04:07,000 یاد ہے اور یہ کہ '5 '5 ≠. 65 00:04:07,000 --> 00:04:10,000 اور کس طرح ہم ان 2 فارم کے درمیان میں تبدیل کریں گے؟ 66 00:04:10,000 --> 00:04:13,000 یہ اصل میں بھی مشکل نہیں ہے. 67 00:04:13,000 --> 00:04:16,000 کے لئے 5 حاصل کرنے کے لئے، ہم subtract '0 ' 68 00:04:16,000 --> 00:04:20,000 کیونکہ وہاں کے درمیان '0 5 مقامات ہیں اور '5. 69 00:04:20,000 --> 00:04:23,000 تاکہ دوسرے راستہ ہے جس سے ہم صرف 0 شامل جانا ہے، 70 00:04:23,000 --> 00:04:25,000 تو یہ باقاعدگی سے ریاضی کی طرح طرح کی ہے. 71 00:04:25,000 --> 00:04:29,000 صرف یاد ہے کہ جب اس کے ارد گرد کچھ کی قیمت درج ہے یہ ایک کردار ہے 72 00:04:29,000 --> 00:04:37,000 اور اس طرح ASCII ٹیبل میں ایک قدر کے مساوی ہے. 73 00:04:37,000 --> 00:04:40,000 زیادہ عام کمپیوٹر سائنس کے موضوعات میں چل رہا ہے. 74 00:04:40,000 --> 00:04:43,000 ہم نے سیکھا ایک الگورتھم ہے اور ہم کس طرح استعمال کرتے ہیں پروگرامنگ 75 00:04:43,000 --> 00:04:45,000 الگورتھم کو لاگو کرنے کے لئے. 76 00:04:45,000 --> 00:04:48,000 یلگوردمز کی کچھ مثالیں واقعی کی طرح سادہ کچھ ہیں 77 00:04:48,000 --> 00:04:51,000 جانچ پڑتال ہے کہ ایک نمبر بھی عجیب ہے. 78 00:04:51,000 --> 00:04:54,000 اس کے لئے یاد ہے ہم نے 2 کی طرف سے نمبر MOD اور اگر نتیجہ ہے 0 چیک کرنے کے لیے. 79 00:04:54,000 --> 00:04:57,000 اگر ایسا ہے تو، یہ بھی ہے. اگر نہیں، تو یہ عجیب ہے. 80 00:04:57,000 --> 00:04:59,000 اور یہ کہ ایک بہت ہی بنیادی الگورتھم کی ایک مثال ہے. 81 00:04:59,000 --> 00:05:02,000 >> ایک سے زیادہ شامل کسی بھی تھوڑا سا بائنری تلاش ہے، 82 00:05:02,000 --> 00:05:05,000 جو ہم جائزہ لینے کے سیشن میں جانے کے بعد میں کریں گے. 83 00:05:05,000 --> 00:05:09,000 اور پروگرامنگ کی اصطلاح ہے ہم ایک الگورتھم لینے کے لئے استعمال کرتے ہیں 84 00:05:09,000 --> 00:05:15,000 اور یہ کمپیوٹر کوڈ تبدیل پڑھ سکتے ہیں. 85 00:05:15,000 --> 00:05:20,000 پروگرامنگ کی 2 مثالیں سکریچ ہے، 86 00:05:20,000 --> 00:05:22,000 ہے جو ہم 0 ہفتے میں کیا کیا. 87 00:05:22,000 --> 00:05:25,000 اگرچہ ہم اصل میں نہیں کوڈ ٹائپ کریں، اس کے نفاذ کا ایک طریقہ ہے 88 00:05:25,000 --> 00:05:29,000 اس الگورتھم، جو تعداد 1-10 چھپائی ہے، 89 00:05:29,000 --> 00:05:32,000 اور یہاں ہم C پروگرامنگ زبان میں بھی ایسا ہی ہے. 90 00:05:32,000 --> 00:05:41,000 یہ فعل کے برابر ہے، صرف مختلف زبانوں یا نحو کے وزٹرز کا ریکارڈ رکھا جائے گا. 91 00:05:41,000 --> 00:05:44,000 پھر ہم بولین اظہار کے بارے میں سیکھا، 92 00:05:44,000 --> 00:05:48,000 اور ایک بولین ایک قیمت ہے جو یا تو صحیح یا غلط ہے، 93 00:05:48,000 --> 00:05:51,000 اور یہاں اکثر بولین اظہار 94 00:05:51,000 --> 00:05:55,000 صورت حال کے اندر جاتے ہیں، اگر ایسا ہے تو (X 5 ≤) 95 00:05:55,000 --> 00:06:00,000 ٹھیک ہے، ہم نے پہلے سے ہی مقرر X 5 =، تو اس حالت صحیح اندازہ کرنے کے لئے کی جا رہی ہے. 96 00:06:00,000 --> 00:06:03,000 اور اگر یہ سچ ہے، جو کچھ بھی کوڈ شرط کے نیچے ہے 97 00:06:03,000 --> 00:06:08,000 کمپیوٹر سے اندازہ کیا جا رہا، تاکہ سٹرنگ طباعت کی جا رہی ہے 98 00:06:08,000 --> 00:06:12,000 معیاری پیداوار، اور مدت کی حالت 99 00:06:12,000 --> 00:06:16,000 بیان اگر قوسین کے اندر جو کچھ بھی ہے سے مراد. 100 00:06:16,000 --> 00:06:20,000 تمام آپریٹرز کی یاد رکھیں. 101 00:06:20,000 --> 00:06:26,000 | جمع جب ہم کوشش کر رہے ہیں 2 یا اس سے زیادہ حالات | اس && اور یاد 102 00:06:26,000 --> 00:06:30,000 نہیں == = چیک کرنے کے لیے کہ 2 چیزیں برابر ہیں. 103 00:06:30,000 --> 00:06:36,000 یاد رکھیں کہ = تفویض کے لئے ہے جبکہ == ایک بولین آپریٹر ہے. 104 00:06:36,000 --> 00:06:41,000 ≤ ≥، اور پھر آخری 2 خود وضاحتی ہے. 105 00:06:41,000 --> 00:06:45,000 بولین لاجک کا ایک عام یہاں کا جائزہ لیں. 106 00:06:45,000 --> 00:06:48,000 بولین اظہار بھی loops میں اہم ہیں، 107 00:06:48,000 --> 00:06:50,000 جو ہم اب ختم ہو جائیں گے. 108 00:06:50,000 --> 00:06:56,000 ہم loops کے بارے میں 3 اقسام اب تک CS50 میں سیکھا، جبکہ، اور جبکہ کرتے. 109 00:06:56,000 --> 00:06:59,000 اور یہ جاننا ضروری ہے کہ جب زیادہ تر مقاصد کے لئے 110 00:06:59,000 --> 00:07:02,000 ہم کسی بھی قسم کی لوپ اصل میں عام طور پر استعمال کر سکتے ہیں 111 00:07:02,000 --> 00:07:06,000 مقاصد یا عام نمونوں کے کچھ اقسام ہیں 112 00:07:06,000 --> 00:07:09,000 پروگرامنگ جو خاص طور پر ان loops میں سے ایک کے لئے فون 113 00:07:09,000 --> 00:07:13,000 کہ یہ بنانے کے لئے سب سے زیادہ موثر یا اسے اس طرح سے کرنے کے لئے کوڈ خوبصورت ہے. 114 00:07:13,000 --> 00:07:18,000 آو ختم کیا ان loops میں سے ہر ایک کے لئے استعمال کیا جاتا اکثر جاتا ہے. 115 00:07:18,000 --> 00:07:21,000 >> میں ہم لوپ کے لئے عام طور پر پہلے سے ہی پتہ ہے کتنی بار ہم iterate کرنا چاہتا ہوں. 116 00:07:21,000 --> 00:07:24,000 یہی ہے جو ہم حالت میں ڈال. 117 00:07:24,000 --> 00:07:28,000 کے لئے، میں = 0، میں 10 <، مثال کے طور پر. 118 00:07:28,000 --> 00:07:31,000 ہم پہلے ہی جانتے ہیں کہ ہم 10 بار کچھ کرنا چاہتے ہیں. 119 00:07:31,000 --> 00:07:34,000 اب، جبکہ لوپ کے لئے، عام طور پر ہم یہ ضروری نہیں کرتے 120 00:07:34,000 --> 00:07:36,000 معلوم ہے کہ کتنی بار ہم لوپ کو چلانا چاہتا ہوں. 121 00:07:36,000 --> 00:07:39,000 لیکن ہم کسی قسم کی حالت کا پتہ ہے کہ ہم اس سے کرنا چاہتے ہیں 122 00:07:39,000 --> 00:07:41,000 ہمیشہ سچ ہو یا ہمیشہ جھوٹے ہو. 123 00:07:41,000 --> 00:07:44,000 مثال کے طور پر، وقت مقرر کیا گیا ہے. 124 00:07:44,000 --> 00:07:46,000 چلو کا کہنا ہے کہ ایک بولین متغیر ہے. 125 00:07:46,000 --> 00:07:48,000 جبکہ یہ سچ ہے کہ ہم کوڈ کا اندازہ کرنا چاہتے ہیں، 126 00:07:48,000 --> 00:07:52,000 تو تھوڑا سا زیادہ قابل توسیع، لوپ کے لئے ایک چھوٹا سا ایک سے زیادہ عام سا 127 00:07:52,000 --> 00:07:55,000 لیکن لوپ کے لئے کوئی بھی تھوڑی دیر لوپ میں تبدیل کیا جا سکتا ہے. 128 00:07:55,000 --> 00:08:00,000 آخر کرتے ہیں، جبکہ loops، جو سے trickiest فورا سمجھ سکتے ہیں، 129 00:08:00,000 --> 00:08:04,000 اکثر استعمال کیا جاتا ہے جب ہم نے کوڈ پہلے اندازہ چاہتے ہیں 130 00:08:04,000 --> 00:08:06,000 پہلی بار اس سے پہلے کہ ہم حالت چیک کرنے کے لیے ہے. 131 00:08:06,000 --> 00:08:09,000 کے لئے ایک عام استعمال کے کیس کیا ہے جبکہ لوپ 132 00:08:09,000 --> 00:08:12,000 ہے جب آپ کو صارف کی ان پٹ کو حاصل کرنے کے لئے چاہتے ہیں، اور آپ کو پتہ ہے کہ آپ صارف سے پوچھنا چاہتے ہیں 133 00:08:12,000 --> 00:08:15,000 ان پٹ کے لئے کم سے کم ایک بار، لیکن اگر وہ آپ کو نہیں اچھی ان پٹ فورا 134 00:08:15,000 --> 00:08:18,000 آپ کو ان کا سوال ہے یہاں تک کہ وہ آپ کو اچھی ان پٹ دے رکھنے کے لئے چاہتے ہیں. 135 00:08:18,000 --> 00:08:21,000 یہ ایک سب سے زیادہ عام استعمال ہے جبکہ لوپ، 136 00:08:21,000 --> 00:08:23,000 اور ان loops کی اصل ساخت کو دیکھو. 137 00:08:23,000 --> 00:08:27,000 ان میں خاص طور پر ہمیشہ ان نمونوں پر عمل کرتے ہیں. 138 00:08:27,000 --> 00:08:30,000 >> کے اندر کے لئے لوپ پر آپ کو 3 اجزاء ہیں: 139 00:08:30,000 --> 00:08:35,000 ابتدا، جیسا کہ عام طور پر کچھ int میں، = 0 جہاں میں انسداد ہے 140 00:08:35,000 --> 00:08:40,000 حالت، جہاں ہم کہتے لوپ کے لئے اس کے طور پر اس کی حالت اب بھی کی ڈگری حاصل کی طویل چلانے کے لئے چاہتے ہیں، 141 00:08:40,000 --> 00:08:44,000 میں <10، اور پھر آخر میں، اپ ڈیٹ کریں، جس میں ہے کہ ہم کس طرح اضافہ کی طرح 142 00:08:44,000 --> 00:08:47,000 لوپ میں ہر موڑ پر انسداد متغیر. 143 00:08:47,000 --> 00:08:50,000 وہاں دیکھ کر ایک عام بات بس میں + + ہے، 144 00:08:50,000 --> 00:08:52,000 جس سے 1 کی طرف سے ہر بار اضافہ کا مطلب ہے. 145 00:08:52,000 --> 00:08:55,000 آپ میں + = 2 کی طرح کچھ بھی کر سکتے ہیں، 146 00:08:55,000 --> 00:08:58,000 جس کا مطلب ہے کہ میں 2 ہر وقت آپ کو لوپ کے ذریعے جاؤ شامل. 147 00:08:58,000 --> 00:09:03,000 اور پھر ایسا کوئی کوڈ ہے جو اصل میں لوپ کے حصے کے طور پر چلتا ہے سے مراد ہے. 148 00:09:03,000 --> 00:09:09,000 اور تھوڑی دیر کے لوپ کے لئے، اس وقت ہم واقعی لوپ سے باہر ابتدا ہے، 149 00:09:09,000 --> 00:09:12,000 مثال کے طور پر، کا کہنا ہے کہ ہم لوپ کے اسی قسم کے طور پر میں نے ابھی بیان کرنے کی کوشش کر رہے ہیں. 150 00:09:12,000 --> 00:09:16,000 ہم کہیں گے int میں 0 = سے پہلے لوپ شروع ہوتا ہے. 151 00:09:16,000 --> 00:09:20,000 تو پھر ہم کہتے ہیں جب میں 10 <ایسا کر سکتی ہے، 152 00:09:20,000 --> 00:09:22,000 کوڈ کے بہت پہلے کی طرح ایک ہی بلاک، 153 00:09:22,000 --> 00:09:26,000 اور اس وقت مثال کے طور پر کوڈ کے اپ ڈیٹ کا حصہ،، میں +، + 154 00:09:26,000 --> 00:09:29,000 اصل میں لوپ کے اندر جاتا ہے. 155 00:09:29,000 --> 00:09:33,000 اور آخر میں، کے لئے، جبکہ یہ وقت لوپ کی طرح ہے 156 00:09:33,000 --> 00:09:36,000 لیکن ہمیں یاد رکھنا کہ کوڈ کو ایک بار اندازہ گا 157 00:09:36,000 --> 00:09:40,000 سے پہلے کی حالت کی جانچ پڑتال ہے، تو یہ ایک بہت زیادہ احساس کرتا ہے 158 00:09:40,000 --> 00:09:44,000 اگر آپ کو اوپر سے نیچے کی ترتیب میں اس کی طرف دیکھتے ہیں. 159 00:09:44,000 --> 00:09:49,000 میں ایک جبکہ لوپ کوڈ کی تشخیص کرتا ہے اس سے پہلے کہ آپ کو وقت کی حالت کو بھی نظر کیا 160 00:09:49,000 --> 00:09:55,000 تھوڑی دیر لوپ جبکہ یہ پہلی چیک کرتا ہے. 161 00:09:55,000 --> 00:09:59,000 بیانات اور متغیر. 162 00:09:59,000 --> 00:10:04,000 جب ہم ایک نئی متغیر بنانا چاہتے ہیں تو ہم سب سے پہلے اسے ابتدا کرنا چاہتے ہیں. 163 00:10:04,000 --> 00:10:07,000 >> مثال کے طور پر، int بار متغیر بار initializes، 164 00:10:07,000 --> 00:10:10,000 لیکن یہ نہیں دے کوئی قدر، تو بار کی قیمت ہے؟ 165 00:10:10,000 --> 00:10:12,000 ہم نہیں جانتے ہیں. 166 00:10:12,000 --> 00:10:14,000 یہ کچھ ردی کی ٹوکری کی قیمت جو پہلے میموری میں محفوظ کیا گیا تھا وہاں ہو سکتا ہے، 167 00:10:14,000 --> 00:10:16,000 اور ہم اس متغیر کو استعمال کرنے کے لئے نہیں کرنا چاہتا 168 00:10:16,000 --> 00:10:19,000 جب تک ہم اصل میں یہ ایک قیمت دے، 169 00:10:19,000 --> 00:10:21,000 اس لیے ہم اسے یہاں اعلان. 170 00:10:21,000 --> 00:10:24,000 پھر ہم اس کے نیچے 42 ابتدا. 171 00:10:24,000 --> 00:10:28,000 اب، ظاہر کی، ہم جانتے ہیں کہ یہ ایک ہی لائن میں، int 42 = بار کیا جا سکتا ہے. 172 00:10:28,000 --> 00:10:30,000 لیکن صرف متعدد اقدامات پر جا رہے ہیں کو صاف کرنے، 173 00:10:30,000 --> 00:10:34,000 اعلان اور ابتدا علیحدہ یہاں ہو رہی ہیں. 174 00:10:34,000 --> 00:10:38,000 یہ ایک مرحلے پر ہوتا ہے، اور اگلے ایک int باز بار = 1 + 175 00:10:38,000 --> 00:10:44,000 اس کے نیچے اس کوڈ کو بلاک کے آخر میں بیان، کہ increments باز، 176 00:10:44,000 --> 00:10:48,000 اگر ہم باز کی قدر کو پرنٹ کرنے کے لئے 44 ہو گی 177 00:10:48,000 --> 00:10:52,000 کیونکہ ہم> 1 بار ابتدا کا اعلان، 178 00:10:52,000 --> 00:10:58,000 اور پھر ہم اس کے ساتھ ایک بار پھر اضافہ + + 179 00:10:58,000 --> 00:11:02,000 ہم نے اس خوبصورت مختصرا پر چلا گیا ہے، لیکن یہ اچھی بات ہے کہ ایک عام 180 00:11:02,000 --> 00:11:04,000 موضوعات اور واقعات ہیں کو سمجھنے. 181 00:11:04,000 --> 00:11:06,000 ہم بنیادی طور پر سکریچ میں نے یہ کیا، 182 00:11:06,000 --> 00:11:09,000 تاکہ آپ موضوعات کے کوڈ کا ایک سے زیادہ انداز کے طور پر سوچ سکتے ہیں 183 00:11:09,000 --> 00:11:11,000 ایک ہی وقت میں چل رہا ہے. 184 00:11:11,000 --> 00:11:14,000 حقیقت میں، یہ شاید ایک ہی وقت میں چل رہا نہیں ہے، 185 00:11:14,000 --> 00:11:17,000 لیکن وہ اس سے abstractly کی طرح ہم اس کے راستے میں سوچ سکتے ہیں. 186 00:11:17,000 --> 00:11:20,000 >> شروع میں، مثال کے طور پر، ہم نے ایک سے زیادہ sprites تھا. 187 00:11:20,000 --> 00:11:22,000 یہ ایک ہی وقت میں مختلف کوڈ قتل کیا جا سکتا ہے. 188 00:11:22,000 --> 00:11:26,000 جبکہ دیگر کچھ کہہ رہا ہے چل سکتا ہے 189 00:11:26,000 --> 00:11:29,000 سکرین کے ایک مختلف حصے میں. 190 00:11:29,000 --> 00:11:34,000 واقعات منطق الگ کرنے کا ایک اور طریقہ ہے 191 00:11:34,000 --> 00:11:37,000 ، آپ کے کوڈ کے مختلف عناصر کے درمیان 192 00:11:37,000 --> 00:11:40,000 اور ہم نے شروع میں واقعات براڈ کا استعمال کرتے ہوئے انکرن کے قابل تھے، 193 00:11:40,000 --> 00:11:43,000 اور یہ کہ اصل میں جب میں حاصل کرتے ہیں، جب میں نے سنا نہیں، 194 00:11:43,000 --> 00:11:47,000 لیکن بنیادی طور پر یہ معلومات منتقل کرنے کا طریقہ ہے 195 00:11:47,000 --> 00:11:49,000 سپرائٹ ایک سے دوسرے. 196 00:11:49,000 --> 00:11:52,000 مثال کے طور پر، آپ کو کھیل ختم منتقل کرنا چاہتے ہیں کر سکتے ہیں، 197 00:11:52,000 --> 00:11:56,000 اور دوسرا سپرائٹ کھیل جب سے زیادہ حاصل ہے، 198 00:11:56,000 --> 00:11:58,000 یہ ایک خاص طریقے میں جواب دیتا ہے. 199 00:11:58,000 --> 00:12:03,000 پروگرامنگ کو سمجھنے کے لئے یہ ایک اہم ماڈل ہے. 200 00:12:03,000 --> 00:12:07,000 صرف بنیادی 0 ہفتے کے دوران، کیا ہم گئے اب تک ہے 201 00:12:07,000 --> 00:12:10,000 کی اس سادہ سی پروگرام کو دیکھو. 202 00:12:10,000 --> 00:12:14,000 متن یہاں سے ایک چھوٹی سی چھوٹی سا ہو، لیکن میں اس پر واقعی جلدی کریں گے کر سکتے ہیں. 203 00:12:14,000 --> 00:12:20,000 ہم نے اوپر cs50.h، اور stdio.h میں 2 ہیڈر فائلوں کو بھی شامل رہے ہیں. 204 00:12:20,000 --> 00:12:23,000 پھر ہم نامی مسلسل کی حد کی وضاحت کر رہے ہیں 100 سال. 205 00:12:23,000 --> 00:12:26,000 پھر ہم اپنے بنیادی کام پر عمل پیرا رہے ہیں. 206 00:12:26,000 --> 00:12:29,000 چونکہ ہم کمانڈ لائن کے دلائل کا استعمال نہیں کرتے ہم یہاں باطل ڈال کرنے کی ضرورت ہے 207 00:12:29,000 --> 00:12:32,000 اہم کے لئے دلائل کے طور پر. 208 00:12:32,000 --> 00:12:38,000 ہم دیکھتے ہیں اہم اوپر int ہے. یہ واپسی کی قسم کے نیچے دیے گئے، اس وجہ سے واپس 0. 209 00:12:38,000 --> 00:12:41,000 اور ہم CS50 لائبریری تقریب کا استعمال کرتے ہوئے کر رہے ہیں int حاصل 210 00:12:41,000 --> 00:12:45,000 ان پٹ کے لئے صارف سے پوچھو، اور ہم نے اسے اس متغیر x میں جمع، 211 00:12:45,000 --> 00:12:51,000 تو ہم X اوپر کا اعلان، اور ہم نے اسے X = GetInt کے ساتھ ابتدا. 212 00:12:51,000 --> 00:12:53,000 >> پھر ہم اگر صارف نے ہمیں اچھی ان پٹ دی چیک کرنے کے لیے. 213 00:12:53,000 --> 00:12:59,000 اگر یہ ≥ LIMIT ہے ہم 1 ایک غلطی کا کوڈ واپس اور ایک غلطی پیغام کو پرنٹ کرنا چاہتے ہیں. 214 00:12:59,000 --> 00:13:02,000 اور آخر میں، اگر صارف نے ہمیں دیا ہے اچھا ان پٹ 215 00:13:02,000 --> 00:13:08,000 ہم تعداد مربع اور اس نتیجہ کو پرنٹ جا رہے ہیں. 216 00:13:08,000 --> 00:13:11,000 بس اس بات کا یقین کرنے کے لئے کہ ان تمام زدہ گھر 217 00:13:11,000 --> 00:13:17,000 آپ یہاں کوڈ کے مختلف حصوں کے لیبل میں دیکھ سکتے ہیں. 218 00:13:17,000 --> 00:13:19,000 میں مسلسل، ہیڈر فائلوں کا ذکر کیا ہے. 219 00:13:19,000 --> 00:13:21,000 اوہ، int X. یاد ہے کہ ایک مقامی متغیر ہے اس بات کا یقین کر لیں کہ. 220 00:13:21,000 --> 00:13:24,000 ہے کہ یہ ایک عالمی متغیر سے برعکس، جس کے بارے میں ہم بات کریں گے 221 00:13:24,000 --> 00:13:27,000 بعد میں تھوڑا سا جائزہ لینے کے سیشن میں 222 00:13:27,000 --> 00:13:30,000 اور ہم لائبریری کی تقریب printf کال کر رہے ہیں، 223 00:13:30,000 --> 00:13:34,000 اگر ایسا ہے تو ہم stdio.h ہیڈر فائل شامل نہیں کیا تھا 224 00:13:34,000 --> 00:13:37,000 ہم printf کو فون کرنے کے قابل نہیں ہو گا. 225 00:13:37,000 --> 00:13:42,000 اور مجھے یقین ہے کہ تیر کاٹ یہاں آئے٪ D کی طرف اشارہ ہے، 226 00:13:42,000 --> 00:13:45,000 جو printf میں فارمیٹنگ سٹرنگ ہے. 227 00:13:45,000 --> 00:13:52,000 اس کا کہنا ہے کہ ایک نمبر D،٪ کے طور پر اس متغیر پرنٹ ہے. 228 00:13:52,000 --> 00:13:58,000 اور یہ کہ اس 0 ہفتے کے لئے ہے. 229 00:13:58,000 --> 00:14:06,000 اب لوکاس جاری کی جا رہی ہے. 230 00:14:06,000 --> 00:14:08,000 ہے، لڑکوں. میرا نام lucas ہے. 231 00:14:08,000 --> 00:14:10,000 میں کیمپس، Mather پر سب سے بہترین گھر میں ایک sophomore ہوں، 232 00:14:10,000 --> 00:14:14,000 اور میں 1 ہفتہ اور 2.1 کے بارے میں تھوڑا بہت بات کرنے جا رہا ہوں. 233 00:14:14,000 --> 00:14:16,000 [1 ہفتہ اور 2.1] [لوکاس Freitas] 234 00:14:16,000 --> 00:14:19,000 جیسا کہ Lexi کہہ رہے ہو، جب ہم شروع سے C آپ کے کوڈ کو ترجمہ کرنا شروع کر دیا گیا تھا 235 00:14:19,000 --> 00:14:23,000 چیزیں ہیں کہ ہم نے دیکھا میں سے ایک یہ ہے کہ آپ کو نہ صرف یہ کر سکتے ہیں 236 00:14:23,000 --> 00:14:26,000 اپنا کوڈ لکھیں اور یہ ایک سبز پرچم اب کا استعمال کرتے ہوئے چلانے کے. 237 00:14:26,000 --> 00:14:30,000 اصل میں، آپ کو کچھ اقدامات کو اپنے C پروگرام کو بنانے کے لئے استعمال کرنے کی ضرورت 238 00:14:30,000 --> 00:14:33,000 ایک executable فائل بن جاتے ہیں. 239 00:14:33,000 --> 00:14:36,000 بنیادی طور پر جو تم کرتے ہو جب تم نے ایک پروگرام لکھ رہے ہیں وہ یہ ہے کہ 240 00:14:36,000 --> 00:14:40,000 آپ کو زبان سنکلک کہ سمجھ سکتے ہیں میں آپ کے خیال کا ترجمہ، 241 00:14:40,000 --> 00:14:44,000 لہذا جب آپ C میں ایک پروگرام کو لکھ رہے ہیں 242 00:14:44,000 --> 00:14:47,000 کہ تم کیا کر رہے ہیں وہ اصل میں کچھ لکھ کر رہا ہے کہ آپ کے سنکلک سمجھنے کی جا رہی ہے، 243 00:14:47,000 --> 00:14:50,000 اور پھر سنکلک اس کوڈ کو ترجمہ کرنے کی جا رہی ہے 244 00:14:50,000 --> 00:14:53,000 کچھ آپ کے کمپیوٹر میں یہ سمجھ جائے گی میں. 245 00:14:53,000 --> 00:14:55,000 >> اور بات، آپ کے کمپیوٹر اصل میں ہے بہت گونگا ہے. 246 00:14:55,000 --> 00:14:57,000 آپ کے کمپیوٹر 0s اور 1s ہی سمجھ سکتے ہیں، 247 00:14:57,000 --> 00:15:01,000 تو اصل میں سب سے پہلے کمپیوٹر میں لوگ عام طور پر پروگرام 248 00:15:01,000 --> 00:15:04,000 0s اور 1s، لیکن نہیں استعمال کرتے ہوئے، بھگوان کا شکریہ. 249 00:15:04,000 --> 00:15:07,000 ہم 0s اور 1s کے لئے انداز کو حفظ کرنے کی ضرورت نہیں ہے 250 00:15:07,000 --> 00:15:10,000 لوپ کے لئے یا جبکہ لوپ اور اس کے لئے ایک کے لئے. 251 00:15:10,000 --> 00:15:13,000 یہی وجہ ہے کہ ہم ایک سنکلک ہے. 252 00:15:13,000 --> 00:15:17,000 سنکلک کیا ہے یہ ہے کہ یہ بنیادی طور پر C کوڈ کا ترجمہ، 253 00:15:17,000 --> 00:15:21,000 ہمارے معاملے میں، ایک زبان ہے کہ آپ کے کمپیوٹر کو سمجھ سکے گی 254 00:15:21,000 --> 00:15:25,000 جو شئی کو، کوڈ، اور سنکلک ہے جو ہم استعمال کر رہے ہیں 255 00:15:25,000 --> 00:15:30,000 ہے بجنا کہا جاتا ہے، تو یہ اصل میں بجنا کے لئے نشانی ہے. 256 00:15:30,000 --> 00:15:33,000 جب آپ اپنے پروگرام ہے، آپ کو 2 چیز پر ہے. 257 00:15:33,000 --> 00:15:37,000 سب سے پہلے، آپ کو اپنے پروگرام کو مرتب ہے، اور پھر آپ کو اپنے پروگرام کو چلانے کے لئے جا رہے ہیں. 258 00:15:37,000 --> 00:15:41,000 اپنے پروگرام کو مرتب کرنے کے لئے آپ کو ایسا کرنے کے لئے اختیارات میں سے ایک بہت ہے. 259 00:15:41,000 --> 00:15:44,000 پہلے بھی بجنا program.c کرنا ہے 260 00:15:44,000 --> 00:15:47,000 جس میں پروگرام کے تحت اپنے پروگرام کے نام ہے. 261 00:15:47,000 --> 00:15:51,000 آپ کو اس صورت میں وہ صرف کہہ رہے ہو دیکھ کر کر سکتے ہیں "ارے، اپنے پروگرام مرتب کریں." 262 00:15:51,000 --> 00:15:56,000 تم کہہ نہیں رہے ہو یا کچھ "میں نے اپنے پروگرام کے لئے اس کا نام کرنا چاہتے ہیں". 263 00:15:56,000 --> 00:15:58,000 >> دوسرا اختیار آپ کے پروگرام کا نام دے رہا ہے. 264 00:15:58,000 --> 00:16:02,000 آپ کہہ سکتے ہیں بجنا و اور پھر وہ نام ہے جو کہ آپ چاہتے ہیں 265 00:16:02,000 --> 00:16:06,000 executable فائل کے طور پر اور پھر program.c نام پر رکھا جائے. 266 00:16:06,000 --> 00:16:11,000 اور تم بھی پروگرام بنا، اور کس طرح پہلے 2 مقدمات میں دیکھ سکتے ہیں 267 00:16:11,000 --> 00:16:15,000 میں ڈال دیا، C، اور تیسرے میں سے ایک میں میں صرف پروگراموں ہے.؟ 268 00:16:15,000 --> 00:16:18,000 جی ہاں، آپ اصل میں نہیں ڈال ج چاہئے. جب آپ کو استعمال کرتے ہیں. 269 00:16:18,000 --> 00:16:22,000 ورنہ سنکلک اصل میں تم پر چللانا کی جا رہی ہے. 270 00:16:22,000 --> 00:16:24,000 اور بھی مجھے معلوم ہے کہ اگر تم لوگ یاد نہیں ہے، 271 00:16:24,000 --> 00:16:29,000 لیکن اوقات ہم بھی استعمال کیا جاتا lcs50 یا ایل ایم کے ایک بہت. 272 00:16:29,000 --> 00:16:31,000 اس سے منسلک کہا جاتا ہے. 273 00:16:31,000 --> 00:16:35,000 یہ صرف سنکلک بتاتا ہے کہ آپ کو ان لائبریریوں کا استعمال وہیں، 274 00:16:35,000 --> 00:16:39,000 اگر ایسا ہے تو آپ کو cs50.h کو استعمال کرنے کے لئے چاہتے ہیں، آپ اصل میں ٹائپ ہے 275 00:16:39,000 --> 00:16:43,000 بجنا program.c lcs50. 276 00:16:43,000 --> 00:16:45,000 اگر آپ ایسا نہیں کرتے ہیں تو، کمپائلر معلوم نہیں ہے 277 00:16:45,000 --> 00:16:50,000 کہ آپ cs50.h. میں ان افعال کا استعمال کرتے ہوئے کر رہے ہیں 278 00:16:50,000 --> 00:16:52,000 اور جب آپ کو آپ کے پروگرام کو چلانے کے لئے آپ کو 2 اختیارات ہیں کرنا چاہتے ہیں. 279 00:16:52,000 --> 00:16:57,000 اگر آپ بجنا program.c کیا آپ اپنے پروگرام کو ایک کا نام نہیں دیا. 280 00:16:57,000 --> 00:17:01,000 آپ a.out / کا استعمال کرتے ہوئے چلانے ہے. 281 00:17:01,000 --> 00:17:06,000 A.out ایک معیاری نام ہے کہ بجنا آپ کے پروگرام فراہم کرتا ہے اگر آپ اسے نہیں دیتے ایک کا نام ہے. 282 00:17:06,000 --> 00:17:11,000 ، نہیں تو آپ کو پروگرام / کیا کرنے جا رہے ہو اگر آپ اپنے پروگرام کو ایک نام دیا 283 00:17:11,000 --> 00:17:15,000 اور اگر آپ پروگرام کا نام کیا ہے کہ ایک پروگرام حاصل کرنے کے لئے جا رہا ہے 284 00:17:15,000 --> 00:17:23,000 سی فائل کے طور پر پہلے سے ہی اسی نام پر پروگرام کیا جا رہا ہے. 285 00:17:23,000 --> 00:17:26,000 اس کے بعد ہم ڈیٹا کی اقسام اور اعداد و شمار کے بارے میں بات کی تھی. 286 00:17:26,000 --> 00:17:31,000 >> بنیادی طور پر ڈیٹا کی اقسام میں تھوڑا باکس وہ استعمال کرتے ہیں کے طور پر ایک ہی چیز ہیں 287 00:17:31,000 --> 00:17:35,000 اقدار کو ذخیرہ کرنے، لہذا ڈیٹا اقسام صرف Pokémons کی طرح اصل میں ہیں. 288 00:17:35,000 --> 00:17:39,000 وہ تمام سائز اور اقسام میں آتے ہیں. 289 00:17:39,000 --> 00:17:43,000 میں جانتا ہوں کہ اگر وہ قياس کا احساس کرتا ہے نہیں ہے. 290 00:17:43,000 --> 00:17:46,000 ڈیٹا سائز اصل میں مشین کی ساخت پر منحصر ہے. 291 00:17:46,000 --> 00:17:49,000 تمام ڈیٹا سائز ہے کہ میں یہاں دکھانے کے لئے جا رہا ہوں 292 00:17:49,000 --> 00:17:53,000 ایک 32 بٹ مشین، جو کہ ہمارے آلات کی صورت ہے اصل میں ہیں، 293 00:17:53,000 --> 00:17:56,000 لیکن اگر آپ واقعی اپنے میک یا ونڈوز میں بھی کوڈنگ کر رہے ہیں 294 00:17:56,000 --> 00:17:59,000 شاید آپ کو ایک 64 بٹ مشین کے لئے جا رہے ہیں، 295 00:17:59,000 --> 00:18:03,000 تو یاد رکھو کہ ڈیٹا سائز میں کہا گیا ہے کہ میں جا رہا ہوں یہاں ظاہر کرنے کے لئے 296 00:18:03,000 --> 00:18:06,000 32 بٹ مشین کے لئے ہیں. 297 00:18:06,000 --> 00:18:08,000 پہلا یہ ہے کہ ہم نے دیکھا ایک int تھا، 298 00:18:08,000 --> 00:18:10,000 جو بہت سیدھا ہے. 299 00:18:10,000 --> 00:18:13,000 آپ کو ایک عددی ذخیرہ کرنے int استعمال کرتے ہیں. 300 00:18:13,000 --> 00:18:16,000 ہم نے بھی کردار، چار دیکھا. 301 00:18:16,000 --> 00:18:20,000 اگر آپ کو ایک خط یا ایک چھوٹا سا علامت کو استعمال کرنے کے لئے کرنا چاہتے ہیں تو آپ شاید حروف استعمال کرنے کے لئے جا رہے ہیں. 302 00:18:20,000 --> 00:18:26,000 ایک چار 1 بائٹ، جو Lexi نے کہا کہ 8 بٹس، اس کا مطلب ہے. 303 00:18:26,000 --> 00:18:31,000 بنیادی طور پر ہم ایک ASCII ٹیبل ہے کہ 256 ہے 304 00:18:31,000 --> 00:18:34,000 0s اور 1s ممکن سنیوجنوں 305 00:18:34,000 --> 00:18:37,000 اور پھر جب آپ حروف ٹائپ ترجمہ ہو رہا ہے 306 00:18:37,000 --> 00:18:44,000 کردار آدانوں آپ کو ایک نمبر ہے کہ آپ کے پاس ASCII ٹیبل میں Lexi طرح کا کہنا ہے کہ. 307 00:18:44,000 --> 00:18:48,000 ہم نے بھی فلوٹ، جو ہم نے دشملو تعداد کو سٹور کرنے کے لئے استعمال کرتے ہیں ہے. 308 00:18:48,000 --> 00:18:53,000 اگر آپ 3،14 منتخب کرنے کے لئے کرنا چاہتے ہیں، مثال کے طور پر، آپ کو فلوٹ کو استعمال کرنے کے لئے جا رہے ہیں 309 00:18:53,000 --> 00:18:55,000 یا ڈبل ​​ہے کہ زیادہ صحت سے متعلق ہے. 310 00:18:55,000 --> 00:18:57,000 ناو 4 بائٹس ہے. 311 00:18:57,000 --> 00:19:01,000 ایک ڈبل 8 بائٹس ہے، لہذا فرق صرف اتنا ہے، صحت سے متعلق ہے. 312 00:19:01,000 --> 00:19:04,000 ہم نے بھی ایک طویل integers کے لئے استعمال کیا جاتا ہے ہے، 313 00:19:04,000 --> 00:19:09,000 اور آپ کو 32 بٹ کے لئے ایک مشین ایک int اور ایک طویل ایک ہی سائز ہے کر سکتے ہیں، 314 00:19:09,000 --> 00:19:13,000 تو یہ احساس نہیں ہوتا 32 بٹ ایک مشین میں ایک طویل کرنے کے لئے استعمال کر سکتے ہیں. 315 00:19:13,000 --> 00:19:17,000 >> لیکن اگر آپ ایک میک اور 64 بٹ مشین کا استعمال کرتے ہوئے کر رہے ہیں، اصل میں ایک طویل 8 سائز ہے، 316 00:19:17,000 --> 00:19:19,000 تو یہ واقعی ساخت پر منحصر ہے. 317 00:19:19,000 --> 00:19:22,000 32 بٹ مشین کے لئے اس کا کوئی مطلب نہیں ہے واقعی ایک طویل کرنے کے لئے استعمال کریں. 318 00:19:22,000 --> 00:19:25,000 اور پھر ایک طویل طویل، دوسری طرف، 8 بائٹس ہے، 319 00:19:25,000 --> 00:19:30,000 تو یہ بہت اچھا ہے اگر آپ کو ایک طویل عددی کرنا چاہتے ہیں. 320 00:19:30,000 --> 00:19:34,000 اور آخر میں، ہم سٹرنگ ہے، جو اصل میں ایک چار * ہے، 321 00:19:34,000 --> 00:19:37,000 جو ایک چار پوائنٹر ہے. 322 00:19:37,000 --> 00:19:40,000 یہ بہت آسان ہے لگتا ہے کہ تار کے سائز کی طرح بننے کی جا رہی ہے 323 00:19:40,000 --> 00:19:42,000 حروف کی تعداد ہے کہ آپ وہاں ہیں، 324 00:19:42,000 --> 00:19:45,000 لیکن اصل حروف * خود 325 00:19:45,000 --> 00:19:49,000 ایک چار، جس میں 4 بائٹس ہے ایک پوائنٹر کے سائز ہے. 326 00:19:49,000 --> 00:19:52,000 ایک چار * کا سائز 4 بائٹس ہے. 327 00:19:52,000 --> 00:19:56,000 اس سے کوئی فرق نہیں اگر آپ کے پاس ایک چھوٹا سا لفظ یا ایک خط یا کچھ نہیں ہے. 328 00:19:56,000 --> 00:19:58,000 4 بائٹس کو ہونے جا رہا ہے. 329 00:19:58,000 --> 00:20:01,000 ہم نے بھی کاسٹنگ کے بارے میں تھوڑا سا سیکھا، 330 00:20:01,000 --> 00:20:04,000 تم اتنے کے طور پر دیکھ سکتے ہیں، اگر آپ مثال کے طور پر، ایک پروگرام ہے جو یہ کہتا ہے کہ 331 00:20:04,000 --> 00:20:08,000 int X = 3 اور پھر printf ("٪ D"، X / 2) 332 00:20:08,000 --> 00:20:12,000 کیا تم لوگ جانتے ہو کہ سکرین پر پرنٹ کرنے کے لئے جا رہا ہے؟ 333 00:20:12,000 --> 00:20:14,000 >> کسی >> [طلباء] 2. 334 00:20:14,000 --> 00:20:16,000 1 1 >>، جی ہاں. 335 00:20:16,000 --> 00:20:20,000 جب آپ 2 3 / 1.5 حاصل کرنے کے لئے جا رہا ہے، 336 00:20:20,000 --> 00:20:24,000 لیکن جب سے ہم نے ایک عدد صحیح استعمال کر رہے ہیں دشملو حصہ کو نظر انداز کرنے کی جا رہی ہے، 337 00:20:24,000 --> 00:20:26,000 اور آپ 1 کے لئے جا رہے ہیں. 338 00:20:26,000 --> 00:20:29,000 اگر آپ یہ ہو آپ کیا کر سکتے ہیں، مثال کے طور پر، نہیں کرنا چاہتا، 339 00:20:29,000 --> 00:20:33,000 ناو کا اعلان Y = X. 340 00:20:33,000 --> 00:20:40,000 پھر ایکس ہے کہ 3 ہوا کرتے تھے اب Y میں 3،000 جا رہا ہے. 341 00:20:40,000 --> 00:20:44,000 اور پھر آپ Y / 2 پرنٹ کر سکتے ہیں. 342 00:20:44,000 --> 00:20:50,000 اصل میں، میں نے ایک 2 ہونا چاہئے. وہاں. 343 00:20:50,000 --> 00:20:55,000 یہ 3.00/2.00 کیا کرنے جا رہا ہے، 344 00:20:55,000 --> 00:20:58,000 اور آپ 1.5 حاصل کرنے کے لئے جا رہے ہیں. 345 00:20:58,000 --> 00:21:06,000 اور ہم اس .2 F دشملو حصہ میں 2 دشملو اکائیوں کے لئے پوچھنا. 346 00:21:06,000 --> 00:21:12,000 اگر آپ .3 F یہ اصل میں 1،500 پڑے. 347 00:21:12,000 --> 00:21:16,000 اگر یہ 2 1.50 ہونے جا رہا ہے. 348 00:21:16,000 --> 00:21:18,000 ہم نے بھی اس کیس یہاں ہے. 349 00:21:18,000 --> 00:21:22,000 اگر آپ کو فلوٹ کرتے X 3،14 = اور اس کے بعد آپ کو printf X 350 00:21:22,000 --> 00:21:24,000 آپ 3،14 حاصل کرنے کے لئے جا رہے ہیں. 351 00:21:24,000 --> 00:21:29,000 اور اگر آپ ایسا کرتے ہیں X = X int، 352 00:21:29,000 --> 00:21:34,000 جو ایک int کے طور پر ایکس کا علاج کا مطلب ہے اور تم X اب پرنٹ 353 00:21:34,000 --> 00:21:36,000 آپ 3.00 کے لئے جا رہے ہیں. 354 00:21:36,000 --> 00:21:38,000 کیا اس کا کوئی مطلب ہے؟ 355 00:21:38,000 --> 00:21:41,000 کیونکہ آپ نے سب سے پہلے ایک عددی طور پر ایکس کا علاج کر رہے ہیں، تو آپ کو دشملو حصہ کو نظر انداز کر رہے ہیں، 356 00:21:41,000 --> 00:21:45,000 اور پھر آپ کو X چھپائی رہے ہیں. 357 00:21:45,000 --> 00:21:47,000 اور آخر میں، آپ یہ بھی کر سکتے ہیں، 358 00:21:47,000 --> 00:21:52,000 int، X 65 =، اور اس کے بعد آپ کو ایک چار ج X = اعلان 359 00:21:52,000 --> 00:21:56,000 اور پھر اگر تم C پرنٹ آپ اصل میں حاصل کرنے کے لئے جا رہے ہیں 360 00:21:56,000 --> 00:21:59,000 A، تو بنیادی طور پر تم یہاں کیا کر رہے ہیں 361 00:21:59,000 --> 00:22:02,000 کردار میں عددی ترجمہ 362 00:22:02,000 --> 00:22:05,000 جیسا کہ ASCII ٹیبل کرتا ہے. 363 00:22:05,000 --> 00:22:08,000 ہم نے ریاضی آپریٹرز کے بارے میں بات کی تھی. 364 00:22:08,000 --> 00:22:14,000 ان میں سے زیادہ تر کافی براہ راست ہیں، لہذا + -، *، / 365 00:22:14,000 --> 00:22:20,000 اور ہم جدید ہے، جس سے 2 کی تعداد کے ایک ڈویژن کا باقی ہے کے بارے میں بات کی تھی. 366 00:22:20,000 --> 00:22:23,000 اگر آپ مثال کے طور پر 10٪ 3، ہے، 367 00:22:23,000 --> 00:22:27,000 اس کا مطلب ہے کہ 3 کی طرف سے 10 کی تقسیم، اور کیا باقی ہے؟ 368 00:22:27,000 --> 00:22:30,000 1 جا رہا ہے، تو یہ اصل میں پروگراموں میں سے ایک بہت کچھ کے لئے بہت مفید ہے. 369 00:22:30,000 --> 00:22:38,000 Vigenère اور کیسر کے لئے مجھے یقین ہے کہ تم لوگ جدید استعمال کیا ہے. 370 00:22:38,000 --> 00:22:43,000 ریاضی آپریٹرز کے بارے میں بہت ہوشیار ہو جب * اور / امتزاج ہے. 371 00:22:43,000 --> 00:22:48,000 >> مثال کے طور پر، اگر آپ ایسا کرتے ہیں (3/2) 2 * کیا آپ کو حاصل کرنے کے لئے جا رہے ہیں؟ 372 00:22:48,000 --> 00:22:50,000 [طلباء] 2. 373 00:22:50,000 --> 00:22:54,000 جی ہاں، 2، کیونکہ 3/2 1.5 ہو جا رہا ہے، 374 00:22:54,000 --> 00:22:57,000 لیکن آپ کو 2 integers کے درمیان آپریشن کر رہے ہیں 375 00:22:57,000 --> 00:22:59,000 آپ اصل میں صرف 1 پر غور کرنے جا رہے ہیں، 376 00:22:59,000 --> 00:23:03,000 اور پھر 1 2 * 2 جا رہا ہے، بہت، بہت ہوشیار رہو 377 00:23:03,000 --> 00:23:07,000 integers کے ساتھ ریاضی جب کر رہی ہوں کیونکہ 378 00:23:07,000 --> 00:23:12,000 آپ کو اس صورت میں ہے کہ 2 3 = حاصل ہو سکتا ہے. 379 00:23:12,000 --> 00:23:14,000 اور بھی مقدم کے بارے میں بہت ہوشیار رہنا. 380 00:23:14,000 --> 00:23:21,000 آپ قوسین کو عام طور پر اس بات کا یقین کر لیں کہ آپ کو معلوم ہے کہ تم کیا کر رہے ہو کا استعمال کرنا چاہئے. 381 00:23:21,000 --> 00:23:27,000 کچھ مفید شارٹ کٹ، ظاہر کی، ایک میں + + یا مجھے + = 1 ہے 382 00:23:27,000 --> 00:23:30,000 کرنے یا استعمال کرنے + =. 383 00:23:30,000 --> 00:23:34,000 میں میں = 1 + کر کے طور پر ایک ہی بات ہے. 384 00:23:34,000 --> 00:23:39,000 کیا میں تمہیں یہ بھی کر سکتے ہیں - یا میں - = 1، 385 00:23:39,000 --> 00:23:42,000 جس میں -1 میں = کے طور پر ایک ہی بات ہے، 386 00:23:42,000 --> 00:23:46,000 کچھ لوگ آپ loops کے لئے میں ایک بہت استعمال کرتے ہیں، کم سے کم. 387 00:23:46,000 --> 00:23:52,000 کے علاوہ، * کے لئے، اگر آپ استعمال کرتے ہیں * = اور اگر آپ ایسا کرتے ہیں، مثال کے طور پر 388 00:23:52,000 --> 00:23:57,000 میں *، = 2 میں میں = 2 * کہا کہ ایک ہی بات ہے 389 00:23:57,000 --> 00:23:59,000 اور ڈویژن کے لئے ایک ہی چیز ہے. 390 00:23:59,000 --> 00:24:08,000 اگر آپ ایسا کرتے I / = 2 میں = میں 2 / کے طور پر ایک ہی بات ہے. 391 00:24:08,000 --> 00:24:10,000 >> اب افعال کے بارے میں. 392 00:24:10,000 --> 00:24:13,000 تم لوگوں کو معلوم ہوا کہ افعال کو ایک بہت اچھا کوڈ کو بچانے کے لئے کی حکمت عملی 393 00:24:13,000 --> 00:24:16,000 جب تم پروگرامنگ رہے ہو، اگر ایسا ہے تو آپ ایک ہی کام کو انجام دینے کے لئے چاہتے ہیں 394 00:24:16,000 --> 00:24:20,000 کوڈ میں بار بار، شاید آپ کو ایک تقریب کو استعمال کرنے کے لئے کرنا چاہتے ہیں 395 00:24:20,000 --> 00:24:25,000 تاکہ آپ اور پیسٹ کرنے سے زیادہ بار بار کوڈ کو کاپی نہیں ہے. 396 00:24:25,000 --> 00:24:28,000 اصل میں، اہم ایک تقریب ہے، اور جب میں نے آپ کو ایک تقریب کی شکل ظاہر 397 00:24:28,000 --> 00:24:32,000 آپ دیکھتے ہیں کہ یہ بہت واضح ہے جا رہے ہیں. 398 00:24:32,000 --> 00:24:35,000 ہم نے بھی کچھ لائبریریوں سے افعال کا استعمال کرتے ہیں، 399 00:24:35,000 --> 00:24:39,000 ، printf، مثال کے طور پر، GetIn، جو CS50 لائبریری سے ہے 400 00:24:39,000 --> 00:24:43,000 toupper جیسے دوسرے کام کرتا ہے. 401 00:24:43,000 --> 00:24:46,000 ان کے افعال میں سے سب اصل میں دوسرے لائبریریوں میں لاگو کیا جاتا ہے، 402 00:24:46,000 --> 00:24:49,000 اور جب آپ کو آپ کے پروگرام کے شروع میں سب سے پہلے ان تار فائلوں کو 403 00:24:49,000 --> 00:24:53,000 آپ کہہ رہے ہیں آپ کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے ان افعال کے لئے کوڈ دے کر سکتے ہیں کر رہے ہیں 404 00:24:53,000 --> 00:24:57,000 تو میں نے خود کی طرف سے نافذ کرنے کی ضرورت نہیں ہے؟ 405 00:24:57,000 --> 00:25:00,000 اور تم اپنے اپنے افعال بھی، تو لکھنے جب آپ کو پروگرامنگ شروع کر سکتے ہیں 406 00:25:00,000 --> 00:25:04,000 آپ کو احساس ہے کہ لائبریریوں میں تمام کام کرتا ہے کہ آپ کی ضرورت ہے کی ضرورت نہیں ہے. 407 00:25:04,000 --> 00:25:10,000 آخری pset کے لیے، مثال کے طور پر، ہم نے لکھا، جدوجہد کو اپنی طرف متوجہ کریں، اور تلاش، 408 00:25:10,000 --> 00:25:13,000 اور یہ بہت، بہت ضروری ہے افعال لکھنے کے قابل ہو جائے 409 00:25:13,000 --> 00:25:17,000 کیونکہ وہ مفید ہیں، اور ہم ان سب کو پروگرامنگ میں وقت کا استعمال کرتے ہیں، 410 00:25:17,000 --> 00:25:19,000 اور اس کے کوڈ کا ایک بہت بچاتا ہے. 411 00:25:19,000 --> 00:25:21,000 ایک تقریب کی شکل اس میں سے ایک ہے. 412 00:25:21,000 --> 00:25:24,000 ہم نے شروع میں واپسی کی قسم ہے. واپسی کی قسم کیا ہے؟ 413 00:25:24,000 --> 00:25:27,000 یہ صرف ہے جب آپ فنکشن سے واپس جا رہا ہے. 414 00:25:27,000 --> 00:25:29,000 اگر آپ مثال کے طور پر ایک تقریب، جز ضربیہ ہے، 415 00:25:29,000 --> 00:25:31,000 جو ایک عددی کے جز ضربیہ حساب کرنے کے لئے کی جا رہی ہے، 416 00:25:31,000 --> 00:25:34,000 شاید یہ ایک عدد صحیح بھی واپس جا رہا ہے. 417 00:25:34,000 --> 00:25:37,000 اس کے بعد واپسی کی قسم int جا رہا ہے. 418 00:25:37,000 --> 00:25:41,000 Printf اصل میں واپسی کی قسم باطل ہے 419 00:25:41,000 --> 00:25:43,000 کیونکہ آپ کچھ بھی واپس آنے نہیں کر رہے ہیں. 420 00:25:43,000 --> 00:25:45,000 آپ صرف پردے پر چیزیں چھپائی رہے ہیں 421 00:25:45,000 --> 00:25:48,000 اور تقریب کے بعد چھوڑ. 422 00:25:48,000 --> 00:25:51,000 تو آپ کو تقریب ہے کہ آپ کا انتخاب کر سکتے ہیں کے نام ہے. 423 00:25:51,000 --> 00:25:55,000 تم تھوڑا ایک مناسب ہو، جیسا کہ اب ج کی طرح ایک نام کا انتخاب نہیں کرنا چاہئے 424 00:25:55,000 --> 00:25:58,000 یا x2f طرح. 425 00:25:58,000 --> 00:26:02,000 ایک نام ہے جو سمجھ میں آتا ہے کرنے کی کوشش کریں. 426 00:26:02,000 --> 00:26:04,000 >> مثال کے طور پر، اگر یہ جز ضربیہ ہے، جز ضربیہ کا کہنا ہے کہ. 427 00:26:04,000 --> 00:26:08,000 اگر یہ ایک تقریب ہے جو کچھ اپنی طرف متوجہ کرنے کی جا رہی ہے ہے نام، اسے اپنی طرف متوجہ. 428 00:26:08,000 --> 00:26:11,000 اور پھر ہم پیرامیٹرز، جو بھی دلائل کو کہا جاتا ہے ہے، 429 00:26:11,000 --> 00:26:14,000 جو وسائل آپ کی تقریب کی ضرورت کی طرح ہیں 430 00:26:14,000 --> 00:26:17,000 آپ کے کوڈ سے اس کام کو انجام دینے کے لئے. 431 00:26:17,000 --> 00:26:20,000 اگر آپ کو ایک نمبر کے جز ضربیہ حساب چاہتے ہیں 432 00:26:20,000 --> 00:26:23,000 شاید آپ کو ایک نمبر جز ضربیہ حساب کرنے کی ضرورت ہے. 433 00:26:23,000 --> 00:26:27,000 دلائل ہے کہ آپ جا رہے ہیں میں سے ایک تعداد خود ہے. 434 00:26:27,000 --> 00:26:31,000 اور پھر اس سے کچھ کرنا اور آخر میں قیمت واپس جا رہا ہے 435 00:26:31,000 --> 00:26:35,000 جب تک یہ ایک باطل تقریب ہے. 436 00:26:35,000 --> 00:26:37,000 کی ایک مثال دیکھ. 437 00:26:37,000 --> 00:26:40,000 اگر میں integers کے ایک صف میں ایک تقریب ہے کہ تمام نمبر خلاصہ لکھنے کے لئے چاہتے ہیں، 438 00:26:40,000 --> 00:26:43,000 سب سے پہلے، واپسی کی قسم int جا رہا ہے 439 00:26:43,000 --> 00:26:46,000 کیونکہ میں integers کے ایک صف ہے. 440 00:26:46,000 --> 00:26:51,000 اور پھر میں sumArray طرح کی تقریب کا نام کے لئے جا رہا ہوں، 441 00:26:51,000 --> 00:26:54,000 اور پھر یہ صف خود لے int nums جا رہا ہے، 442 00:26:54,000 --> 00:26:58,000 اور پھر تو میں جانتا ہوں کہ کتنی تعداد میں خلاصہ ہے صف کی لمبائی. 443 00:26:58,000 --> 00:27:02,000 پھر میں نے مثال کے طور پر ایک متغیر کہا جاتا رقم، 0، ابتدا ہے، 444 00:27:02,000 --> 00:27:08,000 اور ہر وقت میں صف میں ایک عنصر دیکھ میں یہ رقم پر شامل کرتے ہیں، تو میں لوپ کے لئے ایک کیا جانا چاہئے. 445 00:27:08,000 --> 00:27:15,000 جیسا Lexi نے کہا کہ، تم کرتے ہو int میں = 0، میں <لمبائی اور میں + +. 446 00:27:15,000 --> 00:27:20,000 اور میں صف میں ہر عنصر کے لئے کیا رقم + = nums [میں] 447 00:27:20,000 --> 00:27:24,000 اور پھر میں نے رقم واپس، تو یہ بہت آسان ہے، اور اس کے کوڈ کا ایک بہت بچاتا ہے 448 00:27:24,000 --> 00:27:28,000 اگر آپ اس تقریب کا استعمال کرتے ہوئے وقت کی ایک بہت رہے ہیں. 449 00:27:28,000 --> 00:27:32,000 پھر ہم نے حالات پر ایک نظر لیا. 450 00:27:32,000 --> 00:27:38,000 ہم ہے اگر، اور، اور اور اگر. 451 00:27:38,000 --> 00:27:42,000 چلو دیکھتے ہیں کہ ان کے درمیان کیا فرق ہے. 452 00:27:42,000 --> 00:27:45,000 ان 2 کوڈ پر ایک نظر لے لو. ان کے درمیان کیا فرق ہے؟ 453 00:27:45,000 --> 00:27:49,000 سب سے پہلے بنیادی طور پر ہے کوڈ آپ کو بتانا چاہتے ہیں 454 00:27:49,000 --> 00:27:51,000 ، یا 0 - اگر ایک نمبر +، ہے. 455 00:27:51,000 --> 00:27:55,000 سب سے پہلے میں سے ایک کا کہنا ہے کہ اگر یہ 0> ہے تو اس کے مثبت ہے. 456 00:27:55,000 --> 00:28:00,000 اگر یہ 0 = ہے تو اس 0 ہے، اور اگر یہ 0 <ہے تو یہ منفی ہے. 457 00:28:00,000 --> 00:28:04,000 >> اور ایک دوسرے کر رہے ہے، اور اگر، اور ہے. 458 00:28:04,000 --> 00:28:07,000 دونوں کے درمیان فرق یہ ہے کہ یہ ایک اصل میں جا رہا ہے 459 00:28:07,000 --> 00:28:13,000 اگر،> 0، <0 یا = 0 تین بار چیک کرنے کے لیے 460 00:28:13,000 --> 00:28:17,000 اگر ایسا ہے تو آپ کو 2 نمبر ہے، مثال کے طور پر، اسے یہاں آئے ہیں اور کہتے ہیں جا رہا ہے 461 00:28:17,000 --> 00:28:21,000 اگر (X 0>)، اور اس کے ہاں کہنے جا رہا ہے، تو میں مثبت پرنٹ. 462 00:28:21,000 --> 00:28:25,000 لیکن پھر بھی مجھے معلوم ہے کہ یہ 0> ہے اور اس 0 یا <0 نہیں ہے 463 00:28:25,000 --> 00:28:29,000 میں اب بھی کرنے جا رہا ہوں اس 0، <0، 464 00:28:29,000 --> 00:28:33,000 تو میں نے اصل میں اندر اگر کی جا رہی ہوں کہ میں نے ایسا نہیں کرنا پڑا 465 00:28:33,000 --> 00:28:38,000 کیونکہ میں نے پہلے سے ہی جانتے ہیں کہ یہ ان شرائط میں سے کسی ایک کو مطمئن کرنے والا نہیں ہے. 466 00:28:38,000 --> 00:28:41,000 اگر میں استعمال کرتے ہیں، اگر، اور بیان اور کر سکتے ہیں. 467 00:28:41,000 --> 00:28:45,000 یہ بنیادی طور پر کا کہنا ہے کہ اگر X = 0 میں مثبت پرنٹ. 468 00:28:45,000 --> 00:28:48,000 اگر یہ نہیں ہے، میں نے بھی اس کی جانچ کی جا رہی ہوں. 469 00:28:48,000 --> 00:28:51,000 اگر یہ 2 ہے، میں ایسا نہیں جا رہا ہوں. 470 00:28:51,000 --> 00:28:54,000 بنیادی طور پر آپ کو کہنا ہے کہ اگر میں X = 2 تھا 471 00:28:54,000 --> 00:28:57,000 اگر (X 0>)، جی ہاں، تو یہ پرنٹ کریں. 472 00:28:57,000 --> 00:29:00,000 اب جب کہ مجھے معلوم ہے کہ یہ 0> اور یہ کہ یہ مطمئن اگر پہلا 473 00:29:00,000 --> 00:29:02,000 میں اس کوڈ کو چلانے کے لئے بھی نہیں جا رہا ہوں. 474 00:29:02,000 --> 00:29:09,000 کوڈ زیادہ تیز چلتا ہے، اصل میں، تیزی سے 3 بار اگر آپ اس کا استعمال. 475 00:29:09,000 --> 00:29:11,000 ہم نے بھی اس کے بارے میں اور یا سیکھا. 476 00:29:11,000 --> 00:29:15,000 میں جا رہا ہوں اس کے ذریعے کیونکہ Lexi نے پہلے ہی ان کے بارے میں بات کرنے کے لئے نہیں جا رہا ہوں. 477 00:29:15,000 --> 00:29:17,000 | آپریٹر | یہ صرف && اور ہے. 478 00:29:17,000 --> 00:29:21,000 >> صرف ایک چیز مجھے کہیں گے ہے احتیاط سے جب آپ کو 3 شرائط ہیں. 479 00:29:21,000 --> 00:29:24,000 قوسین کا استعمال کریں کیونکہ یہ بہت برامک ہے جب تم نے ایک شرط ہے 480 00:29:24,000 --> 00:29:27,000 اور ایک دوسرے یا ایک دوسرے سے. 481 00:29:27,000 --> 00:29:30,000 قوسین صرف اس بات کا یقین کر لیں کہ آپ کے حالات کا کوئی مطلب کے لئے استعمال کریں 482 00:29:30,000 --> 00:29:34,000 کیونکہ مثال کے طور پر، آپ کو اس صورت میں تصور کر سکتے ہیں، کہ 483 00:29:34,000 --> 00:29:38,000 یہ پہلی شرط ہے اور ایک یا ایک سے دوسرے کو ہو سکتا ہے 484 00:29:38,000 --> 00:29:41,000 یا 2 ایک میں مشترکہ شرائط اور 485 00:29:41,000 --> 00:29:45,000 یا تیسرا، تو صرف ہوشیار رہنا ہوگا. 486 00:29:45,000 --> 00:29:48,000 اور آخر میں، ہم سوئچ کے بارے میں بات کی تھی. 487 00:29:48,000 --> 00:29:53,000 ایک سوئچ بہت مفید ہے جب آپ کو ایک متغیر ہے. 488 00:29:53,000 --> 00:29:55,000 چلو کا کہنا ہے کہ ہے کہ آپ کو (ن) کی طرح ایک متغیر ہے 489 00:29:55,000 --> 00:29:59,000 0، 1، یا 2 ہو سکتا ہے، اور ان کیسز میں سے ہر ایک 490 00:29:59,000 --> 00:30:01,000 تم ایک کام کو انجام دینے کے لئے جا رہے ہیں. 491 00:30:01,000 --> 00:30:04,000 آپ کہتے ہیں کہ متغیر سوئچ کر سکتے ہیں، اور اس کی طرف اشارہ کرتا ہے کہ 492 00:30:04,000 --> 00:30:08,000 قیمت VALUE1 کی طرح ہے تو میں اس میں کیا کرنے جا رہا ہوں، 493 00:30:08,000 --> 00:30:12,000 جو اور میں پھر توڑ ہے، کا مطلب ہے کہ میں دوسرے معاملات میں سے کسی ایک کو دیکھنے کے لئے نہیں کر رہا ہوں 494 00:30:12,000 --> 00:30:15,000 کیونکہ ہم نے پہلے سے ہی اس صورت مطمئن 495 00:30:15,000 --> 00:30:20,000 اور پھر value2 اور اسی طرح، اور میں بھی ایک پہلے سے طے شدہ سوئچ کر سکتے ہیں. 496 00:30:20,000 --> 00:30:24,000 اس کا مطلب یہ ہے کہ اگر یہ مقدمات کہ میں نے کسی کو مطمئن نہیں کر 497 00:30:24,000 --> 00:30:29,000 کہ میں کچھ اور کرنے کی رہی ہوں، لیکن اس اختیاری ہے. 498 00:30:29,000 --> 00:30:36,000 یہ سب میرے لئے ہے. اب ٹومی ہے. 499 00:30:36,000 --> 00:30:41,000 ٹھیک ہے، یہ ہفتہ 3 ish جا رہا ہے. 500 00:30:41,000 --> 00:30:45,000 یہ موضوعات ہم crypto، گنجائش، arrays، cetera ET کریں گے، کو ڈھکنے کا کچھ ہیں. 501 00:30:45,000 --> 00:30:49,000 crypto صرف ایک فوری لفظ. ہم اس گھر کو ہتھوڑا نہیں کر رہے ہیں. 502 00:30:49,000 --> 00:30:52,000 >> ہم 2 pset میں نے یہ کیا ہے، لیکن کوئز کے لئے اس بات کا یقین کر لیں کہ آپ فرق پتہ ہے 503 00:30:52,000 --> 00:30:54,000 ، کیسر صفر اور Vigenère صفر کے درمیان 504 00:30:54,000 --> 00:30:57,000 ان خفیہ کار کے کام کے دونوں اور کیا ہے کہ کس طرح خفیہ طرح ہے 505 00:30:57,000 --> 00:30:59,000 اور بےرمز ان 2 خفیہ کار کا استعمال کرتے ہوئے متن. 506 00:30:59,000 --> 00:31:03,000 یاد رکھیں، کیسر صفر صرف ایک ہی رقم کی طرف سے ہر کردار گھما، 507 00:31:03,000 --> 00:31:06,000 اس بات کا یقین کر لیں کہ آپ جدید حروف تہجی میں حروف کی تعداد کی طرف سے کر رہے ہیں. 508 00:31:06,000 --> 00:31:09,000 اور Vigenère صفر، دوسری طرف، ہر کردار گھما 509 00:31:09,000 --> 00:31:12,000 ایک مختلف رقم کی طرف سے، تو بلکہ یہ کہہ سے 510 00:31:12,000 --> 00:31:15,000 3 Vigenère کی طرف سے ہر کردار گھمایا ہر کردار باری باری دکھائے گا 511 00:31:15,000 --> 00:31:17,000 ایک مختلف کچھ مطلوبہ الفاظ کی بنیاد پر رقم کی طرف سے 512 00:31:17,000 --> 00:31:20,000 مطلوبہ الفاظ میں سے ہر ایک خط میں کچھ مختلف رقم کہاں کی نمائندگی کرتا ہے 513 00:31:20,000 --> 00:31:26,000 کی طرف سے واضح متن کو باری باری دکھائے گا. 514 00:31:26,000 --> 00:31:28,000 دو متغیر گنجائش کے بارے میں پہلی بات چیت ہے. 515 00:31:28,000 --> 00:31:30,000 متغیرات میں سے 2 مختلف اقسام ہیں. 516 00:31:30,000 --> 00:31:33,000 ہم مقامی متغیر ہے، اور یہ بیان کیا جا رہا ہے 517 00:31:33,000 --> 00:31:36,000 باہر، اہم یا کسی بھی تقریب یا بلاک کے باہر 518 00:31:36,000 --> 00:31:39,000 اور یہ قابل رسائی آپ کے پروگرام میں کسی بھی جگہ ہو جائے گا. 519 00:31:39,000 --> 00:31:41,000 اگر آپ کو ایک تقریب ہے اور اس تقریب میں ایک جبکہ لوپ 520 00:31:41,000 --> 00:31:44,000 بڑے عالمی متغیر رسائی ہر جگہ ہے. 521 00:31:44,000 --> 00:31:48,000 ایک مقامی متغیر، دوسری طرف، وہ جگہ ہے جہاں یہ بیان کیا جاتا ہے scoped ہے. 522 00:31:48,000 --> 00:31:53,000 >> اگر آپ یہاں ایک تقریب ہے، مثال کے طور پر، ہم اس تقریب میں جی ہے، 523 00:31:53,000 --> 00:31:56,000 اور جی کے اندر یہاں ایک متغیر کہا جاتا Y ہے، 524 00:31:56,000 --> 00:31:58,000 اور اس کا مطلب یہ ہے کہ یہ ایک مقامی متغیر ہے. 525 00:31:58,000 --> 00:32:00,000 اگرچہ اس متغیر Y کہا جاتا ہے 526 00:32:00,000 --> 00:32:03,000 اور اس کے متغیر ان 2 افعال Y کہا جاتا ہے 527 00:32:03,000 --> 00:32:06,000 کوئی اندازہ نہیں ہے جو ایک دوسرے کے مقامی متغیر ہیں. 528 00:32:06,000 --> 00:32:10,000 دوسری طرف، یہاں ہم کا کہنا ہے کہ int X 5 = 529 00:32:10,000 --> 00:32:12,000 اور یہ کسی بھی تقریب کے دائرہ کار سے باہر ہے. 530 00:32:12,000 --> 00:32:16,000 یہ اہم دائرہ کار سے باہر ہے، تو یہ ایک عالمی متغیر ہے. 531 00:32:16,000 --> 00:32:20,000 یہ ان 2 کے افعال میں سے ہے کہ اندر کا مطلب ہے کہ جب میں X کا کہنا ہے کہ - یا X + + 532 00:32:20,000 --> 00:32:26,000 میں اسی ایکس جس کے تحت اس Y اور اس Y مختلف متغیر ہیں تک رسائی حاصل کر رہا ہوں. 533 00:32:26,000 --> 00:32:30,000 یہ ایک عالمی متغیر اور ایک مقامی متغیر کے درمیان کیا فرق ہے. 534 00:32:30,000 --> 00:32:33,000 جہاں تک ڈیزائن کا تعلق ہے، کبھی کبھی یہ شاید ایک بہتر خیال ہے 535 00:32:33,000 --> 00:32:37,000 متغیر مقامی رکھنے کے لئے جب بھی آپ کا امکان کر سکتے ہیں 536 00:32:37,000 --> 00:32:39,000 ہونے کے بعد سے عالمی متغیرات میں سے ایک گروپ واقعی مبہم حاصل کر سکتے ہیں. 537 00:32:39,000 --> 00:32:42,000 اگر آپ کے افعال میں سے ایک گروپ ہے سب ایک ہی بات کی تجدید 538 00:32:42,000 --> 00:32:45,000 تم بھول اگر اس تقریب کو اتفاقی طور پر اس عالمی ترمیم کر سکتے ہیں، 539 00:32:45,000 --> 00:32:47,000 اور یہ دوسری تقریب میں اس کے بارے میں نہیں جانتی ہے، 540 00:32:47,000 --> 00:32:50,000 اور یہ بہت الجھا کے طور پر آپ کو زیادہ کوڈ حاصل ہے. 541 00:32:50,000 --> 00:32:53,000 متغیر مقامی رکھتے ہوئے جب بھی آپ کا امکان کر سکتے ہیں 542 00:32:53,000 --> 00:32:56,000 صرف اچھے ڈیزائن ہے. 543 00:32:56,000 --> 00:33:00,000 Arrays، یاد رکھنا، صرف اسی قسم کے عناصر کی فہرست ہیں. 544 00:33:00,000 --> 00:33:04,000 CI کے اندر 1 2.0، جیسے ایک فہرست نہیں کر سکتے ہیں، ہیلو. 545 00:33:04,000 --> 00:33:06,000 ہمیں صرف یہ نہیں کر سکتے. 546 00:33:06,000 --> 00:33:11,000 >> جب ہم C میں ایک صف کا اعلان عناصر کے سب ایک ہی قسم کی ہے. 547 00:33:11,000 --> 00:33:14,000 یہاں میں 3 integers کے ایک صف ہے. 548 00:33:14,000 --> 00:33:18,000 یہاں میں صف کی لمبائی ہے، لیکن اگر میں صرف اس نحو میں یہ اعلان کر رہا ہوں 549 00:33:18,000 --> 00:33:21,000 میں کہاں وضاحت کیا عناصر کے سب میں تکنیکی طور پر یہ 3 کی ضرورت نہیں ہے. 550 00:33:21,000 --> 00:33:25,000 سنکلک یہ اعداد و شمار صف کتنا بڑا ہونا چاہئے کافی ہوشیار ہے. 551 00:33:25,000 --> 00:33:28,000 اب جب میں یا قائم کرنے کے لئے ایک صف کی قدر حاصل کرنا چاہتے ہیں 552 00:33:28,000 --> 00:33:30,000 یہ ایسا نحو ہے. 553 00:33:30,000 --> 00:33:33,000 اس صف کے دوسرے عناصر اصل میں نظر ثانی کیونکہ یاد،، 554 00:33:33,000 --> 00:33:36,000 نمبر 0 سے شروع ہوتی ہے، 1 نہیں. 555 00:33:36,000 --> 00:33:42,000 اگر میں اس قدر پڑھنے کے لئے چاہتے ہیں، میں جیسے کچھ کہہ سکتے ہیں int X صف = [1]. 556 00:33:42,000 --> 00:33:44,000 یا اگر میں اس قدر مقرر کرنا چاہتے ہیں، میں طرح یہاں کیا کر رہا ہوں، 557 00:33:44,000 --> 00:33:47,000 میں کہتا ہوں صف [1] = 4. 558 00:33:47,000 --> 00:33:50,000 ان انڈیکس کی طرف سے یہ عناصر تک رسائی حاصل کرنے کا وقت 559 00:33:50,000 --> 00:33:52,000 یا اپنی پوزیشن یا جہاں وہ صف میں ہیں 560 00:33:52,000 --> 00:33:57,000 اور یہ کہ لسٹنگ 0 سے شروع ہوتی ہے. 561 00:33:57,000 --> 00:34:00,000 ہم arrays کے arrays بھی ہو سکتا ہے، 562 00:34:00,000 --> 00:34:03,000 اور یہ ایک کثیر جہتی صف کے نام سے جانا جاتا ہے. 563 00:34:03,000 --> 00:34:05,000 جب ہم نے ایک کثیر جہتی صف ہے 564 00:34:05,000 --> 00:34:07,000 اس کا مطلب ہے کہ ہم قطار اور کالم طرح کچھ ہو سکتا ہے، 565 00:34:07,000 --> 00:34:11,000 اور یہ صرف اس visualizing یا اس کے بارے میں سوچ کا ایک طریقہ ہے. 566 00:34:11,000 --> 00:34:14,000 جب میں ایک کثیر جہتی صف ہے اس کا مطلب ہے کہ میں کی ضرورت شروع کرنے جا رہا ہوں 567 00:34:14,000 --> 00:34:17,000 1 انڈیکس سے زیادہ کیونکہ اگر میں ایک گرڈ ہے 568 00:34:17,000 --> 00:34:19,000 ہوئے کہا کہ آپ کس صف میں ہیں صرف ہمیں ایک نمبر نہیں دے ہے. 569 00:34:19,000 --> 00:34:22,000 یہ واقعی صرف ہمیں اعداد کی ایک فہرست دینے جا رہے ہیں. 570 00:34:22,000 --> 00:34:25,000 چلو کا کہنا ہے کہ میں یہ صف یہاں ہے. 571 00:34:25,000 --> 00:34:30,000 میں ایک کہا جاتا گرڈ صف ہے، اور میں اس کی 2 قطار اور 3 کالم کو کہہ رہا ہوں، 572 00:34:30,000 --> 00:34:32,000 اور اسی طرح یہ اس visualizing میں سے ایک طریقہ ہے. 573 00:34:32,000 --> 00:34:37,000 جب میں کہتا ہوں کہ میں [1] میں عناصر حاصل کرنے کے لئے کرنا چاہتے ہیں [2] 574 00:34:37,000 --> 00:34:41,000 اس کا مطلب یہ ہے کہ کیونکہ یہ قطار سب سے پہلے اور اس کے بعد کالم 575 00:34:41,000 --> 00:34:44,000 میں 1 سے لے کر 1 نے کہا کہ قطار میں کودنے جا رہا ہوں. 576 00:34:44,000 --> 00:34:49,000 >> پھر میں 2 کالم یہاں آنے رہا ہوں اور میں قیمت 6 حاصل کرنے کے لئے جا رہا ہوں. 577 00:34:49,000 --> 00:34:51,000 احساس ہے؟ 578 00:34:51,000 --> 00:34:55,000 arrays کثیر جہتی، یاد رکھنا، تکنیکی طور پر صرف arrays کے ایک صف ہیں. 579 00:34:55,000 --> 00:34:57,000 ہم arrays کے arrays کے arrays کر سکتے ہیں. 580 00:34:57,000 --> 00:35:00,000 ہم جا رہنا ہے، لیکن واقعی ایک طریقہ کے بارے میں سوچ سکتے ہیں 581 00:35:00,000 --> 00:35:03,000 یہ کس طرح کیا جا رہا ہے باہر چڑھائی اور کیا ہو رہا ہے اسے مرئی ہے 582 00:35:03,000 --> 00:35:09,000 اس طرح ایک گرڈ میں. 583 00:35:09,000 --> 00:35:12,000 جب ہم افعال پر arrays گزرتے ہیں، وہ سلوک کرنے جا رہے ہیں 584 00:35:12,000 --> 00:35:16,000 جب ہم افعال باقاعدگی سے متغیر گزر سے تھوڑا سا مختلف سا 585 00:35:16,000 --> 00:35:18,000 ایک int یا فلوٹ سنانے جیسا. 586 00:35:18,000 --> 00:35:21,000 جب ہم ایک int یا چار یا ان دیگر ڈیٹا کے کسی بھی قسم کے گزر 587 00:35:21,000 --> 00:35:24,000 ہم صرف اگر تقریب ترمیم پر ایک نظر لیا 588 00:35:24,000 --> 00:35:28,000 اس متغیر کی قدر ہے کہ تبدیلی کی تشہیر کرنا نہیں ہے 589 00:35:28,000 --> 00:35:32,000 بلا فنکشن. 590 00:35:32,000 --> 00:35:35,000 ایک صف کے ساتھ، دوسری طرف ہو گا. 591 00:35:35,000 --> 00:35:39,000 اگر میں ایک صف میں کچھ فنکشن گزرتے ہیں اور اس تقریب میں سے کچھ عناصر تبدیل، 592 00:35:39,000 --> 00:35:43,000 میں نے جب تقریب جس نے اس کا نام واپس آ 593 00:35:43,000 --> 00:35:47,000 میری صف اب مختلف ہو جا رہا ہے، اور اس کے لئے الفاظ 594 00:35:47,000 --> 00:35:50,000 ہے arrays حوالہ کی طرف سے منظور کر رہے ہیں جیسا کہ ہم بعد میں دیکھیں گے. 595 00:35:50,000 --> 00:35:53,000 یہ کس طرح اشارہ کام، جہاں ان بنیادی ڈیٹا کی اقسام سے متعلق ہے، 596 00:35:53,000 --> 00:35:55,000 دوسری طرف، قیمت کی طرف سے گزر رہے ہیں. 597 00:35:55,000 --> 00:35:59,000 >> اس کے بارے میں ہم کچھ متغیر کی ایک کاپی بنانے اور پھر کاپی میں گزرنے والے کے طور پر سوچ سکتے ہیں. 598 00:35:59,000 --> 00:36:01,000 اس سے کوئی فرق نہیں ہے کہ ہم نے اس متغیر کے ساتھ کیا کرتا ہے. 599 00:36:01,000 --> 00:36:06,000 بلا تقریب اس بات سے آگاہ نہیں کریں گے کہ یہ تبدیل کر دیا گیا تھا. 600 00:36:06,000 --> 00:36:10,000 Arrays صرف ایک چھوٹا سا اس سلسلے میں مختلف سا ہے. 601 00:36:10,000 --> 00:36:13,000 مثال کے طور پر، جیسا کہ ہم نے ابھی دیکھا، اہم صرف ایک تقریب ہے 602 00:36:13,000 --> 00:36:15,000 جو 2 دلائل میں لے سکتے ہیں. 603 00:36:15,000 --> 00:36:20,000 بنیادی کام پر پہلی دلیل argc، یا دلائل کی تعداد ہے، 604 00:36:20,000 --> 00:36:23,000 اور دوسری دلیل argv کہا جاتا ہے، 605 00:36:23,000 --> 00:36:27,000 اور وہ ان دلائل کی اصل اقدار ہیں. 606 00:36:27,000 --> 00:36:30,000 چلو کا کہنا ہے کہ میں کہا جاتا this.c پروگرام ہے، 607 00:36:30,000 --> 00:36:34,000 اور میں کہتا ہوں کہ یہ، اور میں کمانڈ لائن پر چلانے جا رہا ہوں. 608 00:36:34,000 --> 00:36:38,000 اب کچھ دلائل میں اپنے پروگرام کو منتقل یہ کہا جاتا ہے، 609 00:36:38,000 --> 00:36:42,000 میں جیسے کچھ کہنا / 50 کاوچ سرفنگ کے ہے. 610 00:36:42,000 --> 00:36:45,000 اس کا ہے جو ہم ہر دن ٹرمینل میں ڈیوڈ کرنا تصور ہے. 611 00:36:45,000 --> 00:36:48,000 لیکن اب اس پروگرام کی مرکزی تقریب اندر 612 00:36:48,000 --> 00:36:52,000 ان اقدار ہیں، تو argc 4 ہے. 613 00:36:52,000 --> 00:36:56,000 یہ تھوڑا الجھا ہو سکتا ہے کیونکہ واقعی ہم صرف 50 کاوچ سرفنگ کے گزر رہے ہیں ہو سکتا ہے. 614 00:36:56,000 --> 00:36:58,000 جو صرف 3 ہے. 615 00:36:58,000 --> 00:37:02,000 لیکن یاد رکھنا کہ argv کے پہلے عنصر یا پہلی دلیل 616 00:37:02,000 --> 00:37:05,000 تقریب میں خود کے نام پر ہے. 617 00:37:05,000 --> 00:37:07,190 تو اس کا مطلب ہے کہ ہم نے 4 چیزیں یہاں ہے، 618 00:37:07,190 --> 00:37:10,530 اور پہلا عنصر اس / بننے جا رہا ہے. 619 00:37:10,530 --> 00:37:12,970 اور یہ ایک تار کے طور پر کی نمائندگی کریں گے. 620 00:37:12,970 --> 00:37:18,590 پھر باقی عناصر ہیں جو ہم پروگرام کے نام کے بعد میں ٹائپ. 621 00:37:18,590 --> 00:37:22,720 تو بالکل اسی طرح جیسے ایک طرف ایک، جیسا کہ ہم شاید 2 pset میں دیکھا، 622 00:37:22,720 --> 00:37:28,780 یاد رکھیں کہ 50 سٹرنگ عددی 50 ≠ ہے. 623 00:37:28,780 --> 00:37:32,520 تو کی طرح، ہم کچھ نہیں کہہ سکتے 'int = X 3 argv. 624 00:37:32,520 --> 00:37:36,470 >> وہ صرف مطلب نہیں ہے، کیونکہ یہ ایک تار ہے، اور یہ ایک عدد صحیح ہے. 625 00:37:36,470 --> 00:37:38,510 تو اگر آپ کو 2 کے درمیان میں تبدیل کرنا چاہتے ہیں، یاد رکھنا، ہم جا رہے ہیں 626 00:37:38,510 --> 00:37:40,810 نامی اس جادو atoi تقریب ہے. 627 00:37:40,810 --> 00:37:46,270 یہ ایک تار لیتا ہے اور اس سٹرنگ کے اندر کی نمائندگی عددی واپس. 628 00:37:46,270 --> 00:37:48,360 تو یہ ایک آسان غلطی ہے، کوئز بنانے، 629 00:37:48,360 --> 00:37:51,590 صرف سوچ رہا تھا کہ یہ درست قسم خود کار طریقے سے ہو جائے گا. 630 00:37:51,590 --> 00:37:53,860 لیکن صرف اتنا معلوم ہے کہ ان ڈور ہمیشہ رہیں گے 631 00:37:53,860 --> 00:38:00,920 چاہے سٹرنگ صرف ایک عددی یا کردار یا فلوٹ پر مشتمل ہے. 632 00:38:00,920 --> 00:38:03,380 تو اب وقت چل رہا کرنے کے بارے میں بات کریں. 633 00:38:03,380 --> 00:38:06,700 جب ہم ان تمام یلگوردمز ہیں کہ یہ تمام پاگل کام کرتے ہیں، 634 00:38:06,700 --> 00:38:11,580 یہ واقعی مفید ہو جاتا ہے سوال، کہ وہ کتنا وقت لگتا ہے؟ " 635 00:38:11,580 --> 00:38:15,500 ہم نام asymptotic سنکیتن کچھ کے ساتھ کی نمائندگی کرتے ہیں. 636 00:38:15,500 --> 00:38:18,430 تو اس کا مطلب یہ ہے کہ - ٹھیک ہے، کا کہنا ہے کہ ہم اپنے الگورتھم دو 637 00:38:18,430 --> 00:38:20,840 کچھ واقعی، واقعی، واقعی بڑے ان پٹ. 638 00:38:20,840 --> 00:38:23,840 ہم سوال پوچھنا چاہتے ہیں، "میں کتنا وقت پر لے جا رہا ہے؟ 639 00:38:23,840 --> 00:38:26,370 کتنے قدم ہمارے الگورتھم اسے چلانے کے لے جائے گا 640 00:38:26,370 --> 00:38:29,980 ان پٹ کے سائز کی ایک تقریب کے طور پر؟ " 641 00:38:29,980 --> 00:38:33,080 تو پہلی راستہ ہے جس سے ہم کو چلانے کے وقت کی وضاحت کر سکتے ہیں بڑی O. کے ساتھ ہے 642 00:38:33,080 --> 00:38:35,380 اور یہ ہمارے بدترین رننگ ٹائم ہے. 643 00:38:35,380 --> 00:38:38,590 تو اگر ہم ایک صف ترتیب کرنا چاہتے ہیں، اور ہم اپنے الگورتھم ایک صف دے 644 00:38:38,590 --> 00:38:41,000 نزولی ترتیب میں ہے جب یہ ترتیب صعودی میں ہونا چاہئے، 645 00:38:41,000 --> 00:38:43,130 جو بدترین ہونے جا رہا ہے. 646 00:38:43,130 --> 00:38:49,800 یہ ہمارے وقت ہماری الگورتھم میں لے جائے گا کی زیادہ سے زیادہ لمبائی میں پابند بالائی ہے. 647 00:38:49,800 --> 00:38:54,740 دوسری طرف، اس Ω بہترین رننگ ٹائم کی وضاحت کی جا رہی ہے. 648 00:38:54,740 --> 00:38:58,210 تو اگر ہم چھانٹ رہا ہے الگورتھم میں پہلے ہی کے مطابق صف دیتے ہیں، 649 00:38:58,210 --> 00:39:00,940 کب تک اسے حل کریں گے؟ 650 00:39:00,940 --> 00:39:06,610 اور یہ، تو، ایک وقت چلانے پر کم جانے کی وضاحت کرتا ہے. 651 00:39:06,610 --> 00:39:10,980 تو یہاں صرف کچھ الفاظ ہیں جو کہ کچھ عام چل رہا اوقات کی وضاحت کرتے ہیں. 652 00:39:10,980 --> 00:39:13,120 یہ صعودی میں ہیں. 653 00:39:13,120 --> 00:39:16,060 چل رہا ہے سب سے تیزی سے وقت ہم مسلسل کہا جاتا ہے. 654 00:39:16,060 --> 00:39:19,800 >> اس کا مطلب ہے کوئی بات نہیں کس طرح بہت سے عناصر پر ہم اپنے الگورتھم دے، 655 00:39:19,800 --> 00:39:22,280 کوئی بات نہیں کتنا بڑا ہماری صف ہے، اسے حل کرنے 656 00:39:22,280 --> 00:39:26,510 یا کر جو کچھ بھی ہم صف پر کر رہے ہیں وقت کے اسی رقم ہمیشہ لے گا. 657 00:39:26,510 --> 00:39:30,270 تو ہم صرف ایک 1، جو مسلسل جاری ہے کے ساتھ اس کی نمائندگی کر سکتے ہیں. 658 00:39:30,270 --> 00:39:32,410 لوگارتمی چلت وقت میں ہم نے بھی دیکھا. 659 00:39:32,410 --> 00:39:34,800 تو بائنری تلاش کی طرح کچھ لوگارتمی ہے، 660 00:39:34,800 --> 00:39:37,140 جہاں ہم نے نصف ہر وقت میں مسئلہ کاٹ 661 00:39:37,140 --> 00:39:40,970 اور پھر وہاں سے چیزیں زیادہ حاصل کریں. 662 00:39:40,970 --> 00:39:43,580 اور اگر تم نے کبھی کسی جز ضربیہ الگورتھم کی ایک O رہے ہیں لکھنے 663 00:39:43,580 --> 00:39:47,850 آپ شاید اپنے دن کے کام کے طور پر اس پر غور نہیں کرنا چاہئے. 664 00:39:47,850 --> 00:39:53,910 جب ہم چل رہا اوقات کا آپس میں موازنہ یہ ضروری ہے کہ ان چیزوں کو ذہن میں رکھ. 665 00:39:53,910 --> 00:39:57,760 تو اگر میں ایک الگورتھم ہے کہ اے (ن) ہے، اور کسی 666 00:39:57,760 --> 00:40:03,590 اے کے ایک الگورتھم (2n) ان اصل asymptotically برابر ہیں. 667 00:40:03,590 --> 00:40:06,590 تو اگر ہم ارب eleventy کی طرح ایک بڑی تعداد پر (ن) کا تصور: 668 00:40:06,590 --> 00:40:13,090 ایسا ہے، تو جب ہم ارب eleventy کی طرح کچھ + 3 ارب eleventy موازنہ کر رہے ہیں، 669 00:40:13,090 --> 00:40:17,640 اچانک کہ +3 ایک بڑا فرق واقعی نہیں ہے اب ہے. 670 00:40:17,640 --> 00:40:20,980 یہی وجہ ہے کہ ہم ان چیزوں کے برابر ہو پر غور شروع کرنے جا رہے ہیں. 671 00:40:20,980 --> 00:40:24,220 ان constants کی طرح یہاں چیزیں اتنی 2 X اس، یا 3 انہوں نے مزید کہا، 672 00:40:24,220 --> 00:40:27,180 یہ صرف constants ہیں، اور ان کو چھوڑنے جا رہے ہیں. 673 00:40:27,180 --> 00:40:32,480 تو یہی وجہ ہے کہ ان دوڑ وقت کے تمام 3 میں کہہ رہے ہیں وہ O (ن) کے ہو کے طور پر ایک ہی ہیں. 674 00:40:32,480 --> 00:40:37,490 اسی طرح، اگر ہم 2 دیگر رن اوقات ہے، کا کہنا ہے کہ O (ن + 2n ² ³) ہم شامل کر سکتے ہیں، 675 00:40:37,490 --> 00:40:42,070 + ن 7 +، اور پھر ہم ایک اور چلت وقت ہے جو صرف O ہے (ن ³) ہے. 676 00:40:42,070 --> 00:40:46,290 پھر یہ ایک ہی چیز ہیں کیونکہ یہ - یہ وہی نہیں ہیں. 677 00:40:46,290 --> 00:40:49,840 یہ وہی چیزیں ہیں، معاف کرنا. تو یہ وہی ہیں کیونکہ 678 00:40:49,840 --> 00:40:53,090 اس ن ³ اس 2n ² غلبہ حاصل کرنے کی جا رہی ہے. 679 00:40:53,090 --> 00:40:59,130 >> کیا ہے اگر ہم O (ن ³) اور اے کی طرح بار چلانے کے لئے ہے ایک ہی بات نہیں ہے (² ن) 680 00:40:59,130 --> 00:41:02,820 کیونکہ یہ ن ³ اس N ² سے زیادہ بڑا ہے. 681 00:41:02,820 --> 00:41:05,470 لہذا اگر ہم exponents ہے، اچانک یہ بات شروع ہوتا ہے، 682 00:41:05,470 --> 00:41:08,280 لیکن جب ہم صرف عوامل کے ساتھ کام کر رہے ہو جیسا کہ ہم نے یہاں ہیں، 683 00:41:08,280 --> 00:41:12,810 تو اس کیونکہ وہ صرف باہر چھوڑنے جا رہے ہیں بات نہیں ہے. 684 00:41:12,810 --> 00:41:16,760 چلو الگورتھم میں سے کچھ ہم نے اب تک دیکھا ہے میں ایک نظر ڈالیں 685 00:41:16,760 --> 00:41:19,260 اور ان کی چلت وقت کے بارے میں بات کرتے ہیں. 686 00:41:19,260 --> 00:41:23,850 ایک کی فہرست میں ایک بڑی تعداد کے لئے تلاش کرنے کا پہلا طریقہ، کہ ہم نے دیکھا، لکیری تلاش تھی. 687 00:41:23,850 --> 00:41:26,950 اور لکیری تلاش کے عمل سپر پر براہ راست ہے. 688 00:41:26,950 --> 00:41:30,490 ہم صرف ایک فہرست ہے، اور ہم فہرست میں ہر ایک عنصر پر دیکھنے جا رہے ہیں 689 00:41:30,490 --> 00:41:34,260 جب تک ہم نمبر معلوم ہم کے لئے تلاش کر رہے ہیں. 690 00:41:34,260 --> 00:41:38,370 تو اس کا مطلب ہے کہ بدترین صورت میں، اس اے (ن). 691 00:41:38,370 --> 00:41:40,860 اور سب سے زیادہ معاملہ اگر عنصر ہے 692 00:41:40,860 --> 00:41:45,710 آخری عنصر، پھر لکیری تلاش کا استعمال کرتے ہوئے ہم ہر ایک عنصر کو دیکھنے کے لئے ہے 693 00:41:45,710 --> 00:41:50,180 تک کے لئے جانتے ہیں کہ یہ فہرست میں دراصل ہم گزشتہ ایک حاصل کرنے کے لئے. 694 00:41:50,180 --> 00:41:52,910 ہم نے ابھی تک نہیں نصف دے کر سکتے ہیں اور کہتے ہیں، "یہ شاید وہاں نہیں ہے." 695 00:41:52,910 --> 00:41:55,980 لکیری تلاش کے ساتھ ہم پوری بات کو دیکھنے کے لئے ہے. 696 00:41:55,980 --> 00:41:59,090 بہترین صورت رننگ ٹائم، دوسری طرف، مسلسل جاری ہے 697 00:41:59,090 --> 00:42:04,200 کیونکہ بہترین صورت میں عنصر ہم کے لئے تلاش کر رہے ہیں صرف فہرست میں سب سے پہلے میں سے ایک ہے. 698 00:42:04,200 --> 00:42:08,930 تو یہ ہمیں بالکل مرحلہ نمبر 1، کوئی بات نہیں کتنا بڑا فہرست ہے لے جا رہا ہے 699 00:42:08,930 --> 00:42:12,140 اگر ہم ہر بار پہلے عنصر کے لئے لگ رہے ہیں. 700 00:42:12,140 --> 00:42:15,390 >> تو آپ جب تلاش، یاد رکھو اس کی ضرورت نہیں کہ ہماری فہرست کے مطابق رکھا جائے. 701 00:42:15,390 --> 00:42:19,430 کیونکہ ہم صرف ہر ایک عنصر پر دیکھو جا رہے ہیں، اور یہ واقعی کوئی فرق نہیں پڑتا 702 00:42:19,430 --> 00:42:23,560 کیا تاکہ ان عناصر کو اندر ہیں 703 00:42:23,560 --> 00:42:28,110 ایک سے زیادہ ذہین تلاش الگورتھم بائنری تلاش کی طرح کچھ ہے. 704 00:42:28,110 --> 00:42:31,500 یاد رکھیں، بائنری تلاش کے عمل یہ ہے کہ آپ جا رہے ہیں 705 00:42:31,500 --> 00:42:34,320 فہرست کے وسط میں تلاش رہو. 706 00:42:34,320 --> 00:42:38,000 اور کیونکہ ہم نے مشرق کی طرف دیکھ رہے ہیں، ہم یہ توقع کرتے ہیں کہ فہرست کے مطابق ہے 707 00:42:38,000 --> 00:42:40,580 ورنہ ہم جانتے ہیں کہ جہاں وسط ہے نہیں، اور ہم سے زیادہ دیکھ بھال کرنی ہے 708 00:42:40,580 --> 00:42:44,480 ساری اسے تلاش کرنے کے لئے کی فہرست، اور پھر ہم نے اس نقطہ پر صرف وقت برباد کر رہے ہو. 709 00:42:44,480 --> 00:42:48,480 لہذا اگر ہم نے ایک کے مطابق کی فہرست ہے اور ہم مشرق تلاش، ہم مشرق کا آپس میں موازنہ کرنے کے لئے جا رہے ہیں 710 00:42:48,480 --> 00:42:51,590 عنصر ہم کے لئے تلاش کر رہے ہیں. 711 00:42:51,590 --> 00:42:54,640 اگر یہ بہت زیادہ ہے، تو ہم صحیح نصف بھول سکتا 712 00:42:54,640 --> 00:42:57,810 کیونکہ ہم جانتے ہیں کہ اگر ہمارا عنصر پہلے ہی بہت زیادہ ہے 713 00:42:57,810 --> 00:43:01,080 اور سب کچھ اس عنصر کا حق بھی زیادہ ہے، 714 00:43:01,080 --> 00:43:02,760 تو پھر ہم وہاں کوئی نظر کی ضرورت نہیں ہے. 715 00:43:02,760 --> 00:43:05,430 کہاں دوسری طرف، اگر ہمارے عنصر بہت کم ہے، 716 00:43:05,430 --> 00:43:08,700 ہم جانتے ہیں کہ اس عنصر کے بائیں کو سب کچھ بھی ہے بہت کم ہے، 717 00:43:08,700 --> 00:43:11,390 تو اسے وہاں تلاش کرنے کا احساس نہیں کر سکتا، یا تو. 718 00:43:11,390 --> 00:43:15,760 اس طرح، کی فہرست کے midpoint میں ہر قدم اور ہر وقت ہے کہ ہم نظر آتے کے ساتھ 719 00:43:15,760 --> 00:43:19,060 ہم نے نصف میں ہماری پریشانی میں کمی کی وجہ سے اچانک ہم جانتے ہیں کہ رہے ہیں 720 00:43:19,060 --> 00:43:23,040 اعداد و شمار ہے کہ ایک ہم کے لئے تلاش کر رہے ہیں نہیں ہو سکتا کی ایک پوری چڑھانے. 721 00:43:23,040 --> 00:43:26,950 >> pseudocode میں یہ کچھ اس طرح نظر آئے گا، 722 00:43:26,950 --> 00:43:30,990 اور اس وجہ سے ہم آدھے ہر ایک وقت میں فہرست کاٹنے رہے ہیں، 723 00:43:30,990 --> 00:43:34,920 ہمارے بدترین رن لکیری سے لوگارتمی وقت چھلانگ. 724 00:43:34,920 --> 00:43:39,260 تو اچانک ہم لاگ ان اقدامات کے لئے ایک کی فہرست میں ایک عنصر کو تلاش کرنے کے لئے. 725 00:43:39,260 --> 00:43:42,460 بہترین صورت رننگ ٹائم، تاہم، اب بھی ہے مسلسل 726 00:43:42,460 --> 00:43:45,180 کیونکہ اب، چلو صرف اتنا کہنا ہے کہ عنصر ہم کے لئے تلاش کر رہے ہیں ہے 727 00:43:45,180 --> 00:43:48,380 ہمیشہ اصل فہرست کے عین مطابق وسط. 728 00:43:48,380 --> 00:43:52,080 تو ہم بڑے جیسا کہ ہم چاہتے ہیں کے طور پر ہماری فہرست میں اضافہ، لیکن کر سکتے ہیں اگر عنصر ہم کے لئے تلاش کر رہے ہیں مشرق میں ہے، 729 00:43:52,080 --> 00:43:54,910 تو وہ صرف ہمیں مرحلہ نمبر 1 پر لے جا رہا ہے. 730 00:43:54,910 --> 00:44:00,920 تو یہی وجہ ہے کہ ہم O (لاگ ان ن) اور Ω (1) یا مسلسل ہو. 731 00:44:00,920 --> 00:44:04,510 ہم اصل میں اس فہرست میں بائنری تلاش چلائیں. 732 00:44:04,510 --> 00:44:08,020 تو ہم کا کہنا ہے کہ ہم نے 164 عنصر کے لئے تلاش کر رہے ہیں. 733 00:44:08,020 --> 00:44:11,650 پہلی چیز جو ہم کرنے جا رہے ہیں اس فہرست کے midpoint تلاش. 734 00:44:11,650 --> 00:44:15,060 یہ صرف اس لئے ہوتا ہے کہ midpoint ان 2 تعداد کے درمیان میں گر جا رہا ہے، 735 00:44:15,060 --> 00:44:18,960 تو صرف منمانے کہتے ہیں، ہر بار midpoint 2 تعداد کے درمیان آتا ہے، 736 00:44:18,960 --> 00:44:21,150 ہم مہاسرا. 737 00:44:21,150 --> 00:44:24,330 ہم صرف اس بات کا یقین کریں کہ ہم اس راستے سے ہر قدم بنانے کے لئے کی ضرورت ہے. 738 00:44:24,330 --> 00:44:29,040 تو ہم نے منہاج القرآن کے چل رہا ہے، کر رہے ہیں اور ہم کا کہنا ہے کہ 161 ہماری فہرست کے درمیان میں ہے جا رہے ہیں. 739 00:44:29,040 --> 00:44:34,640 تو 161 <164، اور 161 کے بائیں ہر عنصر 740 00:44:34,640 --> 00:44:39,120 164 <ہے، تو ہم جانتے ہیں کہ یہ ہمیں بالکل مدد نہیں ہے 741 00:44:39,120 --> 00:44:42,690 یہاں تلاش شروع کرنے کے لئے کیونکہ عنصر ہم وہاں نہیں ہو سکتا کے لئے تلاش کر رہے ہیں. 742 00:44:42,690 --> 00:44:47,060 تو جو ہم کر سکتے ہیں ہے ہم فہرست ہے کہ پوری بائیں نصف کے بارے میں بھول کر سکتے ہیں، 743 00:44:47,060 --> 00:44:51,700 اور 161 آگے کے حق سے ہی سمجھتے ہیں. 744 00:44:51,700 --> 00:44:54,050 >> تو پھر، یہ midpoint ہے، ہم مہاسرا. 745 00:44:54,050 --> 00:44:56,260 اب 175 بہت بڑا ہے. 746 00:44:56,260 --> 00:44:59,180 تو ہم جانتے ہیں کہ یہ ہمیں یہاں یا یہاں دیکھ نہیں، 747 00:44:59,180 --> 00:45:06,610 تو ہم دور کہ صرف پھینک دیں اور آخر میں ہم نے 164 مار دونگا کر سکتے ہیں. 748 00:45:06,610 --> 00:45:10,560 بائنری تلاش پر میں آپ کا کوئی سوال ہے؟ 749 00:45:10,560 --> 00:45:14,180 چلو پہلے ہی حل کی فہرست کے ذریعے تلاش سے منتقل 750 00:45:14,180 --> 00:45:17,660 اصل میں کسی بھی ترتیب میں اعداد کی ایک فہرست لے کر 751 00:45:17,660 --> 00:45:20,960 اور صعودی میں اس فہرست بنانے. 752 00:45:20,960 --> 00:45:24,060 سب سے پہلے جس طریقہ سے ہم کو دیکھا بلبلا طرح بلایا گیا تھا. 753 00:45:24,060 --> 00:45:27,300 اور یہ الگورتھم ہم نے دیکھا آسان ہو جائے گا. 754 00:45:27,300 --> 00:45:32,970 بلبلا طرح کا کہنا ہے کہ ہے کہ جب فہرست کے اندر اندر کسی بھی 2 عناصر جگہ سے باہر ہیں، 755 00:45:32,970 --> 00:45:36,500 مطلب وہاں ایک کم تعداد کے بائیں زیادہ تعداد ہے، 756 00:45:36,500 --> 00:45:40,190 تو پھر ہم ان کے تبادلہ پر جا رہے ہیں، کیونکہ اس کا مطلب ہے کہ فہرست ہو جائے گا 757 00:45:40,190 --> 00:45:42,860 "کے مطابق" سے پہلے تھا. 758 00:45:42,860 --> 00:45:45,180 اور ہم صرف اس عمل کو دوبارہ جاری جا رہے ہیں اور بار بار 759 00:45:45,180 --> 00:45:52,100 یہاں تک کہ آخر میں ان کے صحیح مقام پر بلبلا عناصر کی قسم اور ہم نے ایک کے مطابق کی فہرست ہے. 760 00:45:52,100 --> 00:45:57,230 >> اس کی چلت وقت O جا رہا ہے (ن ²). کیوں؟ 761 00:45:57,230 --> 00:46:00,370 ٹھیک ہے، بدترین صورت میں وجہ سے، ہم ہر عنصر کو لے جا رہے ہیں، اور 762 00:46:00,370 --> 00:46:04,570 ہم فہرست میں ہر دوسرے عنصر موازنہ کو ختم کرنے جا رہے ہیں. 763 00:46:04,570 --> 00:46:08,030 لیکن بہترین صورت میں، ہم نے پہلے ہی کے مطابق فہرست ہے، بلبلا کی طرح 764 00:46:08,030 --> 00:46:12,230 صرف ایک بار کے ذریعے جانے کے لئے، کا کہنا ہے کہ "نہیں. میں کوئی سویپ نہیں تھا، تو میں کیا کر رہا ہوں." 765 00:46:12,230 --> 00:46:17,410 تو ہم Ω (ن) کے ایک بہترین صورت رننگ ٹائم ہے. 766 00:46:17,410 --> 00:46:20,680 کی ایک فہرست پر بلبلا طرح چلائیں. 767 00:46:20,680 --> 00:46:23,560 یا سب سے پہلے، کچھ pseudocode میں واقعی جلدی نظر. 768 00:46:23,560 --> 00:46:28,160 ہم کا کہنا ہے کہ ہم ٹریک سے لوپ کے ہر iteration میں رکھنے کے لئے چاہتے ہیں کرنا چاہتے ہیں، 769 00:46:28,160 --> 00:46:32,190 رکھنے یا نہیں ہم کسی بھی عناصر کو تبدیل کر دیا گیا باخبر رھنے کے لئے. 770 00:46:32,190 --> 00:46:37,610 تو یہ ہے کی وجہ، ہم جب ہم کسی بھی عناصر کو تبدیل نہیں کیا ہے کو روکنے کے لئے جا رہے ہیں. 771 00:46:37,610 --> 00:46:41,980 تو ہم ہمارے لوپ کے شروع میں کچھ تبدیل نہیں کیا ہے، تو ہم کہتے ہیں کہ غلط ہے گے. 772 00:46:41,980 --> 00:46:47,170 اب، ہم نے فہرست کے ذریعے جانا ہے اور عنصر میں عنصر میں 1 + موازنہ جا رہے ہیں 773 00:46:47,170 --> 00:46:50,310 اور اگر یہ معاملہ ہے کہ وہاں ایک چھوٹی تعداد کے بائیں ایک بڑی تعداد ہے، 774 00:46:50,310 --> 00:46:52,310 تو ہم صرف ان کے تبادلہ کے لئے جا رہے ہیں. 775 00:46:52,310 --> 00:46:54,490 >> اور اس کے بعد ہمیں یاد رکھنا ہے کہ ہم نے ایک عنصر تبدیل کرنے جا رہے ہیں. 776 00:46:54,490 --> 00:46:58,900 اس کا مطلب یہ ہے کہ ہم فہرست کے ذریعے کم از کم 1 بار جانے کی ضرورت 777 00:46:58,900 --> 00:47:02,160 کیونکہ حالت ہے جس میں ہم رک ہے، اور جب ساری فہرست پہلے ہی کے مطابق ہے، 778 00:47:02,160 --> 00:47:04,890 مطلب ہم کسی سویپ نہیں کیا ہے. 779 00:47:04,890 --> 00:47:09,960 تو یہی وجہ ہے کہ ہماری حالت یہاں نیچے ہے جبکہ بعض عناصر کی تبدیل کیا گیا ہے. ' 780 00:47:09,960 --> 00:47:13,720 تو اب ہم صرف یہ فہرست پر چلنے دیکھو. 781 00:47:13,720 --> 00:47:16,640 میں 5،0،1،6،4 فہرست ہے. 782 00:47:16,640 --> 00:47:19,850 بلبلا طرح بائیں میں ہر طریقے سے شروع کرنے جا رہا ہے، اور اس کا موازنہ کرنے جا رہا ہے 783 00:47:19,850 --> 00:47:24,700 میں عناصر، تو 0 1 +، جس میں 1 عنصر ہے. 784 00:47:24,700 --> 00:47:29,020 یہ، اچھی طرح 5 0> کہنے جا رہا ہے، لیکن ابھی 5 بائیں، 785 00:47:29,020 --> 00:47:32,500 تو میں 5 اور 0 تبادلہ کرنے کی ضرورت ہے. 786 00:47:32,500 --> 00:47:35,470 جب میں نے ان سے تبادلہ، اچانک میں یہ مختلف فہرست حاصل کریں. 787 00:47:35,470 --> 00:47:38,260 5 اب> 1، تو ہم ان کے تبادلہ کے لئے جا رہے ہیں. 788 00:47:38,260 --> 00:47:42,160 5 6> نہیں ہے، تو ہم یہاں کچھ کرنے کی ضرورت نہیں ہے. 789 00:47:42,160 --> 00:47:46,690 لیکن 6 4>، تو ہم تبادلہ کرنے کی ضرورت ہے. 790 00:47:46,690 --> 00:47:49,740 ایک بار پھر، ہم پوری بالآخر دریافت کی فہرست کے ذریعے چلانے کے لئے کی ضرورت ہے 791 00:47:49,740 --> 00:47:52,330 کہ یہ حکم سے باہر ہو گیا ہے، ہم ان کے تبادلہ، 792 00:47:52,330 --> 00:47:57,120 اور ہم اس وقت کی فہرست کے ذریعے 1 مزید وقت چلانے کی ضرورت ہے 793 00:47:57,120 --> 00:48:05,390 اس بات کا یقین کر لیں کہ کہ یہ سب کچھ اس کی ترتیب میں ہے، اور اس نقطہ بلبلا طرح میں ختم ہو گیا ہے. 794 00:48:05,390 --> 00:48:10,720 بعض عناصر کر رہی ہیں اور انہیں حل کرنے کے لئے ایک مختلف الگورتھم انتخاب طرح ہے. 795 00:48:10,720 --> 00:48:15,740 انتخاب طرح کے پیچھے خیال یہ ہے کہ ہم نے فہرست کے مطابق حصہ تعمیر کرنے جا رہے ہیں 796 00:48:15,740 --> 00:48:18,150 ایک وقت میں 1 عنصر. 797 00:48:18,150 --> 00:48:23,170 >> اور کی فہرست کے بائیں طبقہ کی تعمیر کی طرف سے جس طرح سے ہم ایسا کرنے کے لئے جا رہے ہیں ہے. 798 00:48:23,170 --> 00:48:27,510 اور بنیادی طور پر، ہر - ہر قدم پر، ہم سب سے چھوٹی عنصر ہم نے چھوڑ دیا ہے جا رہے ہیں 799 00:48:27,510 --> 00:48:32,310 جو ابھی نہیں کیا گیا کے مطابق، اور ہم اسے اس کے مطابق طبقہ میں منتقل کی جا رہے ہیں. 800 00:48:32,310 --> 00:48:35,850 اس کا مطلب ہے کہ ہم مسلسل کم از کم ناچھانٹا ہوا عنصر تلاش کرنے کی ضرورت ہے 801 00:48:35,850 --> 00:48:40,720 اور پھر اس کم از کم عنصر لے اور جو کچھ بھی کے ساتھ اس کا تبادلہ 802 00:48:40,720 --> 00:48:45,090 چھوڑ سب سے زیادہ عنصر ہے کہ نہیں کے مطابق ہے. 803 00:48:45,090 --> 00:48:50,890 اس کی چلت وقت O جا رہا ہے (² ن) کیونکہ بدترین صورت میں 804 00:48:50,890 --> 00:48:55,070 ہم ہر دوسرے عنصر ہر ایک عنصر موازنہ کرنے کی ضرورت ہے. 805 00:48:55,070 --> 00:48:59,250 کیونکہ ہم کہہ رہے ہیں کہ اگر ہم فہرست کے بائیں نصف میں شروع، ہمیں ضرورت رہے ہیں 806 00:48:59,250 --> 00:49:02,970 پوری صحیح طبقہ کے ذریعے سب سے چھوٹی عنصر کو تلاش کرنے کے لئے جانا. 807 00:49:02,970 --> 00:49:05,430 اور پھر، پھر، ہم پوری صحیح طبقہ کے پاس جاؤ اور کی ضرورت ہے 808 00:49:05,430 --> 00:49:08,210 سے زیادہ سے زیادہ اور اس سے زیادہ سے زیادہ جا پھر رکھیں. 809 00:49:08,210 --> 00:49:11,350 یہ ن ² ہونے جا رہا ہے. ہم ایک لوپ کے لئے دوسرے کے لوپ کے اندر کے لئے کرنے کی ضرورت جا رہے ہیں 810 00:49:11,350 --> 00:49:13,350 جو ن ² پتہ چلتا ہے. 811 00:49:13,350 --> 00:49:16,530 بہترین کیس سوچ میں، کا کہنا ہے کہ ہم نے اسے پہلے ہی حل کی فہرست دے؛ 812 00:49:16,530 --> 00:49:19,270 ہم اصل میں ن ² سے کوئی بہتر نہیں ہے. 813 00:49:19,270 --> 00:49:21,730 کیونکہ انتخاب طرح یہ جان کر کہ کوئی راستہ نہیں ہے 814 00:49:21,730 --> 00:49:25,540 کم از کم عنصر صرف ایک ہے میں دیکھ ہو. 815 00:49:25,540 --> 00:49:28,970 یہ اب بھی اس بات کا یقین کر لیں کہ کہ یہ اصل میں کم از کم ہے بنانے کے لئے کی ضرورت ہے ہے. 816 00:49:28,970 --> 00:49:31,670 >> اور صرف اس بات کا یقین کر لیں کہ کہ یہ کم از کم ہے بنانے کے لئے، اس الگورتھم کو استعمال کرتے ہوئے کا طریقہ 817 00:49:31,670 --> 00:49:34,640 ہر ایک عنصر پر دوبارہ نظر ہے. 818 00:49:34,640 --> 00:49:38,420 تو واقعی، اگر آپ اسے دے - اگر آپ کو انتخاب کی طرح پہلے ہی حل کی فہرست دیتے ہیں، 819 00:49:38,420 --> 00:49:42,720 یہ یہ ایک فہرست ہے جو کے مطابق نہیں ہے دینے کے سے بہتر کوئی نہیں ہے. 820 00:49:42,720 --> 00:49:46,320 ویسے، اگر یہ معاملہ ہوتا ہے کہ کچھ O (کچھ) ہے 821 00:49:46,320 --> 00:49:50,640 اور کسی چیز کے ومیگا، ہم زیادہ succinctly کہ اس چیز کی θ ہے صرف کہہ سکتے ہیں. 822 00:49:50,640 --> 00:49:52,760 تو اگر آپ دیکھتے ہیں کہ کہیں بھی آئے، کہ اس کا کیا مطلب صرف اتنا ہے. 823 00:49:52,760 --> 00:49:57,580 >> اگر کچھ (ن) کے تھیٹا ²، دونوں بڑی O (² ن) اور Ω (² ن) ہے. 824 00:49:57,580 --> 00:49:59,790 بہترین اور سب سے زیادہ کیس تو، اس سے کوئی فرق نہیں ہے، 825 00:49:59,790 --> 00:50:04,400 الگورتھم ایک ہی بات کو ہر وقت کیا جا رہا ہے. 826 00:50:04,400 --> 00:50:06,610 تو یہ ہے جو انتخاب کی طرح کے لئے pseudocode کی طرح نظر سکتی ہے. 827 00:50:06,610 --> 00:50:10,630 ہم بنیادی طور پر اس کا کہنا ہے کہ میں کی فہرست iterate چاہتے ہیں جا رہے ہیں 828 00:50:10,630 --> 00:50:15,180 حق، اور لوپ میں سے ہر ایک iteration میں بائیں سے، میں منتقل کرنے جا رہا ہوں 829 00:50:15,180 --> 00:50:19,780 فہرست کے اس کے مطابق حصہ میں کم از کم عنصر. 830 00:50:19,780 --> 00:50:23,260 اور ایک بار میں نے کچھ وہاں منتقل، مجھے اس کی ضرورت اس عنصر میں دوبارہ نظر نہیں ہے. 831 00:50:23,260 --> 00:50:28,600 کیونکہ جیسے ہی مجھے میں فہرست کے بائیں طبقہ ایک عنصر تبادلہ، اس کے مطابق ہے 832 00:50:28,600 --> 00:50:32,600 کیونکہ ہم minimums کا استعمال کرتے ہوئے کی طرف سے صعودی میں سب کچھ کر رہے ہیں. 833 00:50:32,600 --> 00:50:38,740 تو ہم نے کہا، ٹھیک ہے، ہم میں پوزیشن میں ہیں، اور ہم عناصر کے سب دیکھنے کی کیا ضرورت ہے 834 00:50:38,740 --> 00:50:42,260 میں کا حق کے لئے کم از کم تلاش کرنے کے لئے. 835 00:50:42,260 --> 00:50:46,150 تو اس کا مطلب ہے کہ ہم 1 + سے فہرست کے اختتام پر دیکھنا چاہتا ہوں. 836 00:50:46,150 --> 00:50:51,610 اور اب، اگر عنصر ہے کہ ہم فی الحال دیکھ رہے ہیں ہماری کم از کم سے کم اب تک ہے، 837 00:50:51,610 --> 00:50:54,190 جو یاد رکھو، ہم نے کم از کم آف شروع ہو رہے ہیں 838 00:50:54,190 --> 00:50:57,020 ہم جو بھی عنصر اس وقت ہے، مجھے لگتا ہے کہ کم از کم ہے. ہے. 839 00:50:57,020 --> 00:51:00,270 اگر میں ایک عنصر ہے جو اس سے چھوٹا ہے، تو میں کہنے جا رہا، ٹھیک کر رہا ہوں، 840 00:51:00,270 --> 00:51:02,700 ٹھیک ہے، میں نے ایک نئی کم از کم مل گیا ہے. 841 00:51:02,700 --> 00:51:06,080 میں جہاں تھا کہ کم از کم کو یاد کرنے جا رہا ہوں. 842 00:51:06,080 --> 00:51:09,560 >> تو اب، ایک بار میں یہ درست ناچھانٹا ہوا طبقہ کے ذریعے چلا گیا ہے، 843 00:51:09,560 --> 00:51:16,690 میں کہتا ہوں کہ میں عنصر جو میں پوزیشن میں ہے کے ساتھ کم از کم عنصر تبادلہ جا رہا ہوں کر سکتے ہیں. 844 00:51:16,690 --> 00:51:21,100 اس کی فہرست بنانے جا رہا ہے، میرے بائیں سے دائیں جانب فہرست کے مطابق حصہ 845 00:51:21,100 --> 00:51:25,190 اور ہم ایک عنصر میں دوبارہ نظر کے بعد اس حصے میں ہے کبھی ضرورت نہیں ہے. 846 00:51:25,190 --> 00:51:27,930 ایک بار جب ہم اسے تبدیل کر دیا ہے. 847 00:51:27,930 --> 00:51:30,260 تو اس فہرست پر انتخاب طرح چلائیں. 848 00:51:30,260 --> 00:51:38,220 نیلے یہاں عنصر میں جا رہا ہے، اور سرخ عنصر کم از کم عنصر بننے جا رہا ہے. 849 00:51:38,220 --> 00:51:41,570 تو میں فہرست کے بائیں میں تمام طرح شروع، 5 بجے. 850 00:51:41,570 --> 00:51:44,610 اب ہم کم از کم ناچھانٹا ہوا عناصر کو تلاش کرنے کے لئے کی ضرورت ہے. 851 00:51:44,610 --> 00:51:49,480 تو ہم کا کہنا ہے کہ 0 <5، تاکہ 0 میری نئی کم از کم ہے. 852 00:51:49,480 --> 00:51:53,820 >> لیکن میں وہاں نہیں روک، کیونکہ ہم اگرچہ یہ تسلیم کرتے ہیں کہ 0 سب سے چھوٹی ہے کر سکتے ہیں، 853 00:51:53,820 --> 00:51:59,390 ہم اس بات کو یقینی بنانے کے لئے کی فہرست کے ہر دوسرے عنصر کے ذریعے چلانے کے لئے کی ضرورت ہے. 854 00:51:59,390 --> 00:52:01,760 4 1 تو بڑا ہے، 6 بڑی ہے، بڑا ہے. 855 00:52:01,760 --> 00:52:05,850 اس کا مطلب یہ ہے کہ ان عناصر کا سب دیکھنے کے بعد، میں نے فیصلہ کیا ہے 0 سب سے چھوٹی ہے. 856 00:52:05,850 --> 00:52:09,800 تو کیا میں 5 اور 0 تبادلہ کرنے جا رہا ہوں. 857 00:52:09,800 --> 00:52:15,480 ایک بار میں اس تبادلہ، میں ایک نئی فہرست حاصل کرنے کے لئے جا رہا ہوں، اور میں جانتا ہوں کہ مجھے اس کی ضرورت 0 کہ میں دوبارہ نظر نہیں 858 00:52:15,480 --> 00:52:19,380 کیونکہ ایک بار میں نے اسے تبدیل کر دیا ہے، میں اسے حل کر لیا ہے اور ہم نے کیا کر رہے ہیں. 859 00:52:19,380 --> 00:52:22,730 اب یہ صرف اس لئے ہوتا ہے کہ نیلے عنصر دوبارہ 5، 860 00:52:22,730 --> 00:52:26,030 اور ہم 1 کو دیکھنے کے لئے کی ضرورت ہے، 6 اور 4 1 یہ تعین کرنے کے لئے 861 00:52:26,030 --> 00:52:31,520 سب سے چھوٹی کم از کم عنصر ہے، تو ہم نے 1 اور 5 تبادلہ کریں گے. 862 00:52:31,520 --> 00:52:36,890 ایک بار پھر، ہم کو دیکھنے کے لئے کی ضرورت ہے - 6 اور 4 سے 5 موازنہ، 863 00:52:36,890 --> 00:52:39,830 اور ہم نے 4 اور 5 تبادلہ ہو رہا ہے، کر رہے ہیں اور آخر میں موازنہ، 864 00:52:39,830 --> 00:52:45,740 ان 2 نمبر اور ان سے تبادلہ جب تک ہم اپنے مطابق فہرست حاصل کریں. 865 00:52:45,740 --> 00:52:49,730 انتخاب طرح کوئی سوال؟ 866 00:52:49,730 --> 00:52:56,420 ٹھیک ہے. موضوع میں آخری بار یہاں منتقل، اور یہ کہ تکرار ہے. 867 00:52:56,420 --> 00:52:59,810 >> تکرار، یاد رکھنا، یہ سچ میٹا بات یہ ہے جہاں ایک تقریب 868 00:52:59,810 --> 00:53:02,740 بار بار مطالبہ خود. 869 00:53:02,740 --> 00:53:05,620 تو کچھ نقطہ پر، جبکہ ہمارا fuction بار بار خود کو بلا رہا ہے 870 00:53:05,620 --> 00:53:10,100 کچھ نقطہ ہے جس میں ہم نے خود کو بلا کو روکنے کی ضرورت ہے. 871 00:53:10,100 --> 00:53:13,670 کیونکہ اگر ہم ایسا نہیں کرتے، تو ہم صرف یہ ہمیشہ کے لئے جاری رکھنے کے لئے جا رہے ہیں، 872 00:53:13,670 --> 00:53:16,660 اور ہمارے پروگرام صرف پر ختم نہیں ہے. 873 00:53:16,660 --> 00:53:19,200 ہم اس شرط کی بنیاد کیس کہتے ہیں. 874 00:53:19,200 --> 00:53:22,570 اور بیس کیس ایک تقریب نہیں بلکہ ایک بار پھر بلا سے کہتے ہیں، 875 00:53:22,570 --> 00:53:25,330 میں صرف کچھ قدر واپس جا رہا ہوں. 876 00:53:25,330 --> 00:53:28,080 تو ایک بار ہم نے ایک قیمت کو اس لئے واپس بھیج چکے ہیں ہے، ہم نے خود کو بلا بند کر دیا ہے، 877 00:53:28,080 --> 00:53:32,550 اور ہم نے اب تک کر دیا ہے کالز کے باقی بھی واپس جا سکتے ہیں. 878 00:53:32,550 --> 00:53:36,050 بیس کیس کی مخالف پنراورتی معاملہ ہے. 879 00:53:36,050 --> 00:53:39,050 اور یہ اس وقت ہے جب ہم تقریب کہ ہم اندر اس وقت ہو ایک فون کرنا چاہتے ہیں 880 00:53:39,050 --> 00:53:44,690 اور ہم شاید اگرچہ ہمیشہ نہیں، مختلف دلائل کو استعمال کرنے کے لئے کرنا چاہتے ہیں. 881 00:53:44,690 --> 00:53:48,940 >> تو اگر ہم نے ایف کہا جاتا ایک تقریب ہے، اور F 1 دلیل لے فون کیا تھا، 882 00:53:48,940 --> 00:53:52,010 اور ہم صرف F (1)، F (1)، F (1) بلا رکھنے، اور یہ صرف اس لئے ہوتا ہے کہ 883 00:53:52,010 --> 00:53:56,510 دلیل 1 پنراورتی کیس میں آتا ہے، ہم ابھی تک روکنے رہے ہیں کبھی نہیں. 884 00:53:56,510 --> 00:54:01,620 یہاں تک کہ اگر ہم نے ایک بنیاد کا معاملہ ہے، ہمیں اس بات کا یقین کر لیں کہ آخر میں ہم کہ بنیاد مقدمہ کو نشانہ بنانے جا رہے ہیں بنانے کے لئے کی ضرورت ہے. 885 00:54:01,620 --> 00:54:04,250 ہم اس پنراورتی صورت میں رہنے ہی نہیں رکھتے. 886 00:54:04,250 --> 00:54:09,870 عام طور پر، جب ہم خود کہتے ہیں، ہم شاید ایک مختلف دلیل ہر وقت جا رہے ہیں. 887 00:54:09,870 --> 00:54:12,700 یہ ایک بہت سادہ پنراورتی تقریب ہے. 888 00:54:12,700 --> 00:54:15,090 تو یہ ایک نمبر کے جز ضربیہ حساب کرے گا. 889 00:54:15,090 --> 00:54:17,790 یہاں اوپر ہم اپنے بیس کا معاملہ ہے. 890 00:54:17,790 --> 00:54:22,330 کیس ہے کہ (ن) ≤ 1، ہم جا جز ضربیہ دوبارہ کال نہیں کر رہے ہیں. 891 00:54:22,330 --> 00:54:26,490 ہم روکنے جا رہے ہیں، ہم صرف کچھ قدر واپس جا رہے ہیں. 892 00:54:26,490 --> 00:54:30,170 اگر یہ سچ نہیں ہے، تو پھر ہم ہمارے پنراورتی مقدمہ کو نشانہ بنانے جا رہے ہیں. 893 00:54:30,170 --> 00:54:33,550 یہاں نوٹس کہ ہم جز ضربیہ (ن) ہی نہیں رہے ہیں بلا، کیونکہ یہ بہت مددگار ثابت نہیں ہوگا. 894 00:54:33,550 --> 00:54:36,810 ہم کچھ اور جز ضربیہ فون کرنے جا رہے ہیں. 895 00:54:36,810 --> 00:54:40,850 >> اور تمہیں دیکھ کر بہت، آخر میں اگر ہم نے ایک جز ضربیہ (5) یا کچھ منتقل کر سکتی ہیں، 896 00:54:40,850 --> 00:54:45,900 ہم جز ضربیہ (4) اور اس فون پر جا رہے ہیں، اور آخر میں ہم اس کی بنیاد مقدمہ کو نشانہ بنانے جا رہے ہیں. 897 00:54:45,900 --> 00:54:51,730 تو یہ اچھا لگ رہا ہے. چلو دیکھتے ہیں کیا ہوتا ہے جب ہم واقعی اس کو چلانے کے. 898 00:54:51,730 --> 00:54:57,840 یہ اسٹیک ہے، اور چلو کا کہنا ہے کہ اہم بحث (4) کے ساتھ اس تقریب کو فون کرنے جا رہا ہے. 899 00:54:57,840 --> 00:55:02,200 تو ایک بار دیکھتا ہے جز ضربیہ = 4، جز ضربیہ خود کو فون کروں گا. 900 00:55:02,200 --> 00:55:05,010 ، اچانک، اب ہم جز ضربیہ (3) ہے. 901 00:55:05,010 --> 00:55:10,780 تو ان افعال کو بڑھتی ہوئی تک آخر میں ہم اپنی بنیاد کیس مارا رکھنے کے لئے جا رہے ہیں. 902 00:55:10,780 --> 00:55:17,830 اس وقت اس کی واپسی کی قیمت کی واپسی (nx اس کی واپسی کی قیمت) ہے، 903 00:55:17,830 --> 00:55:21,290 اس کی واپسی کی قیمت اس کی nx واپسی قیمت ہے. 904 00:55:21,290 --> 00:55:23,290 آخر میں ہم کچھ تعداد کو نشانہ بنانے کی ضرورت ہے. 905 00:55:23,290 --> 00:55:26,560 یہاں سب سے اوپر دیئے گئے، ہم 1 واپسی کا کہنا ہے کہ. 906 00:55:26,560 --> 00:55:30,650 اس کا مطلب ہے کہ ایک بار ہم اس تعداد کو واپس، ہم نے اسٹیک اس پاپ کر سکتے ہیں. 907 00:55:30,650 --> 00:55:36,570 تو یہ جز ضربیہ کیا (1) کیا جاتا ہے. 908 00:55:36,570 --> 00:55:41,190 جب 1 ریٹرن، اس جز ضربیہ کی واپسی (1)، 1 اس کی واپسی. 909 00:55:41,190 --> 00:55:46,910 ، یاد رکھو، اس کی واپسی کی قیمت nx اس کی واپسی کی قیمت تھی. 910 00:55:46,910 --> 00:55:50,720 تو اچانک، اس آدمی کو جانتا ہے کہ میں نے 2 واپس کرنا چاہتے ہیں. 911 00:55:50,720 --> 00:55:55,910 >> تو، واپس اس کی قدر صرف nx واپسی قیمت ہے یہاں یاد ہے. 912 00:55:55,910 --> 00:56:01,160 تو اب ہم 2 3 X کہتے ہیں، اور آخر میں، ہم یہاں کہہ سکتے ہیں کر سکتے ہیں 913 00:56:01,160 --> 00:56:04,010 یہ تو صرف 3 4 X 2 X جا رہا ہے. 914 00:56:04,010 --> 00:56:09,570 اور ہم اس کی واپسی میں ایک بار کا اہم عددی اندر نیچے اترو. 915 00:56:09,570 --> 00:56:15,460 تکرار پر میں آپ کا کوئی سوال ہے؟ 916 00:56:15,460 --> 00:56:17,090 ٹھیک ہے. تو آخر میں سوالات کے لئے وقت ہے، 917 00:56:17,090 --> 00:56:23,360 لیکن اب جوزف باقی موضوعات کا احاطہ کرے گا. 918 00:56:23,360 --> 00:56:25,590 >> [یوسف Ong] ٹھیک ہے. تو اب کہ ہم recursions کے بارے میں بات کر چکے ہیں، 919 00:56:25,590 --> 00:56:27,840 کیا ضم طرح ہے کے بارے میں تھوڑا بات. 920 00:56:27,840 --> 00:56:31,740 طرح ضم بنیادی طور پر تعداد کی ایک فہرست چھانٹ رہا ہے کا ایک اور طریقہ ہے. 921 00:56:31,740 --> 00:56:36,430 اور یہ کس طرح کام کرتا ہے ضم طرح کے ساتھ ہے، آپ کو ایک فہرست ہے، اور ہم کیا کرتے ہیں ہے 922 00:56:36,430 --> 00:56:39,120 ہم کہتے ہیں، 2 حصوں میں اس تقسیم. 923 00:56:39,120 --> 00:56:42,750 ہم کو سب سے پہلے طرح بائیں نصف پر دوبارہ ضم چلانے گے، 924 00:56:42,750 --> 00:56:45,040 تو ہم صحیح نصف پر طرح ضم چلانے گے، 925 00:56:45,040 --> 00:56:50,240 اور یہ کہ اب ہم دیتا ہے 2 حصوں کے مطابق کر رہے ہیں، اور اب ہم ان حصوں کو ایک ساتھ جمع کی جا رہے ہیں. 926 00:56:50,240 --> 00:56:55,010 یہ تھوڑا سا مشکل ہے ایک مثال کے بغیر دیکھ کر، تو ہم حرکات کے ذریعے جاؤ اور دیکھتے ہیں کیا ہوتا کریں گے. 927 00:56:55,010 --> 00:56:59,590 تو آپ شروع اس فہرست کے ساتھ، ہم نے 2 حصوں میں تقسیم ہے. 928 00:56:59,590 --> 00:57:02,300 ہم بائیں نصف طرح پہلے ضم چلاتے ہیں. 929 00:57:02,300 --> 00:57:06,660 تو کہ بائیں نصف ہے، اور اب ہم انہیں اس فہرست کے ذریعے دوبارہ چلائیں 930 00:57:06,660 --> 00:57:09,800 جس میں ضم طرح میں منظور ہو جاتا ہے اور پھر ہم نظر، پھر، 931 00:57:09,800 --> 00:57:13,270 اس فہرست کے بائیں جانب اور ہم اس پر طرح ضم چلاتے ہیں. 932 00:57:13,270 --> 00:57:15,880 اب، ہم 2 نمبروں کی ایک فہرست ملے، 933 00:57:15,880 --> 00:57:19,010 اور اب بائیں نصف صرف 1 عنصر طویل ہے، اور ہم نہیں کر سکتے 934 00:57:19,010 --> 00:57:23,380 تقسیم، ایک فہرست ہے جو نصف میں صرف 1 عنصر ہے، تو ہم صرف کا کہنا ہے کہ، ایک بار ہم 50 ہے 935 00:57:23,380 --> 00:57:26,400 جس میں صرف 1 عنصر ہے، اس کے پاس پہلے سے ہی کے مطابق ہے. 936 00:57:26,400 --> 00:57:29,860 >> ایک بار ہم نے اس کے ساتھ کیا کیا کر رہے ہیں، ہم دیکھتے ہیں، کہ ہم کر سکتے ہیں 937 00:57:29,860 --> 00:57:32,230 اس فہرست کے دائیں حصے پر منتقل 938 00:57:32,230 --> 00:57:36,480 اور 3 بھی مطابق ہے اور تو اب ہے کہ اس فہرست کے دونوں حصوں کے مطابق کر رہے ہیں 939 00:57:36,480 --> 00:57:39,080 ہم نے ان کی تعداد کو واپس ساتھ شامل ہو سکتے ہیں. 940 00:57:39,080 --> 00:57:45,320 تو ہم 50 اور 3 بجے دیکھو، 3 50 سے چھوٹا ہے، تو یہ پہلے میں جاتا ہے اور پھر 50 اندر آتا ہے 941 00:57:45,320 --> 00:57:49,340 اب، یہ کیا ہے، ہم واپس اس فہرست اور ترتیب دیں یہ صحیح نصف ہے اپ. 942 00:57:49,340 --> 00:57:52,440 42 یہ اپنا نمبر ہے، تو یہ پہلے ہی حل ہے. 943 00:57:52,440 --> 00:57:57,850 تو اب ہم ان کا موازنہ 2 اور 3 42 سے چھوٹا ہے، کہ سب سے پہلے میں ڈال دیا جاتا ہے، 944 00:57:57,850 --> 00:58:02,340 اب 42 میں ڈال دیا جاتا اور 50 اندر ڈال دیا ہو جاتا ہے 945 00:58:02,340 --> 00:58:07,220 اب، اس کے مطابق ہے، ہم سب واپس سب سے اوپر، 1337 اور 15. 946 00:58:07,220 --> 00:58:14,560 ٹھیک ہے، اب ہم اس فہرست کے بائیں حصے میں دیکھو، 1337 خود کی طرف سے ہے تو یہ اور 15 کے ساتھ اسی کے مطابق ہے. 947 00:58:14,560 --> 00:58:19,020 تو اب ہم ان 2 تعداد جو کہ اصل فہرست، 15 <1337 ترتیب پر جمع کرنے کے لئے، 948 00:58:19,020 --> 00:58:23,060 تو یہ پہلے میں جاتا ہے، تو 1337 اندر جاتا ہے 949 00:58:23,060 --> 00:58:26,640 اور اب ہم اوپر اصل فہرست کے دونوں حصوں کے مطابق. 950 00:58:26,640 --> 00:58:30,440 اور ہم سب کرنا ہے یہ جمع ہے. 951 00:58:30,440 --> 00:58:36,890 ہم اس فہرست کے پہلے 2 نمبر، <3 15 میں دیکھتے ہیں، تو اس طرح صف میں سب سے پہلے جاتا ہے. 952 00:58:36,890 --> 00:58:44,460 15 <42، تو اس اندر اب جاتا ہے، 42 <1337، کہ اندر جاتا ہے 953 00:58:44,460 --> 00:58:51,010 50 <1337، تو اس اندر جاتا ہے اور یہ محسوس کریں کہ ہم صرف 2 نمبروں کو اس فہرست پر سے چھٹی لی ہیں. 954 00:58:51,010 --> 00:58:53,640 تو ہم 2 فہرستوں کے درمیان نہ صرف باری کر رہے ہیں. 955 00:58:53,640 --> 00:58:56,050 ہم نے صرف شروع میں تلاش کر رہے ہیں، اور ہم عنصر لے جا رہے ہو 956 00:58:56,050 --> 00:59:00,270 اور پھر چھوٹے ہمارے صف میں ڈال ہے. 957 00:59:00,270 --> 00:59:04,080 اب ہم نے تمام حصوں کو ملا دیا گیا ہے اور ہم کیا کر رہے ہیں. 958 00:59:04,080 --> 00:59:07,780 >> کے بارے میں کوئی بھی سوال کو ترتیب دیں ضم؟ جی ہاں؟ 959 00:59:07,780 --> 00:59:14,190 [Student کی] اگر یہ مختلف گروپوں میں تقسیم ہے، کیوں وہ نہیں ہے ایک بار اسے تقسیم 960 00:59:14,190 --> 00:59:19,970 اور آپ کو ایک گروپ میں 3 اور 2 ہے؟ [سوال unintelligible آرام] 961 00:59:19,970 --> 00:59:24,940 وجہ - تو سوال یہ ہے کہ وجہ سے ہم نے اس پہلے قدم پر نہ صرف ان کے بعد ہم ان کے ہیں کر سکتے ہیں ضم؟ 962 00:59:24,940 --> 00:59:29,530 وجہ سے ہم یہ کر سکتے ہیں، دونوں اطراف کے بائیں سب سے عناصر پر شروع، 963 00:59:29,530 --> 00:59:33,040 اور پھر اس سے چھوٹا ایک رکھنا اور اس میں ڈال دیا ہے، کہ ہم ان یہ معلوم 964 00:59:33,040 --> 00:59:35,290 انفرادی فہرستوں کے مطابق احکامات میں ہیں. 965 00:59:35,290 --> 00:59:37,290 تو اگر میں دونوں حصوں کے بائیں سب سے زیادہ عناصر کو دیکھ رہا ہوں، 966 00:59:37,290 --> 00:59:40,490 مجھے معلوم ہے کہ وہ ان کی فہرست کے سب سے چھوٹی عناصر کے لئے جا رہے ہیں. 967 00:59:40,490 --> 00:59:43,930 تو میں نے ان سے اس بڑی فہرست کے سب سے چھوٹی عنصر مقامات میں ڈال کر سکتے ہیں. 968 00:59:43,930 --> 00:59:47,810 دوسری طرف، اگر میں وہاں دوسرے درجے میں ان 2 فہرستوں میں دیکھتے ہیں، 969 00:59:47,810 --> 00:59:51,640 50، 3، 42، 1337، اور 15، ان کے مطابق نہیں ہیں. 970 00:59:51,640 --> 00:59:55,770 تو اگر میں 50 اور 1337 میں دیکھتے ہیں، میں نے میری فہرست میں 50 سب سے پہلے ڈال جا رہا ہوں. 971 00:59:55,770 --> 01:00:00,130 لیکن یہ احساس نہیں کر سکتا، کیونکہ 3 ان میں سے سب سے باہر سب سے چھوٹی عنصر ہے. 972 01:00:00,130 --> 01:00:04,390 تو صرف ایک وجہ سے ہم اس کو ملا قدم کر سکتے ہیں ہے کیونکہ ہماری کی فہرست کے مطابق پہلے ہی کر رہے ہیں. 973 01:00:04,390 --> 01:00:07,010 یہی وجہ ہے کہ ہم نیچے تمام طرح ہے 974 01:00:07,010 --> 01:00:09,800 کیونکہ جب ہم صرف ایک نمبر ہے، کہ تم کسی ایک کا نمبر معلوم ہے 975 01:00:09,800 --> 01:00:14,120 میں بذات خود پہلے سے ہی ایک کے مطابق کی فہرست ہے. 976 01:00:14,120 --> 01:00:19,360 >> کوئی سوال؟ نہیں؟ 977 01:00:19,360 --> 01:00:24,260 پیچیدگی؟ ٹھیک ہے، تمہیں دیکھ کر سکتے ہیں کہ ہر قدم پر آخر تعداد، 978 01:00:24,260 --> 01:00:27,590 اور ہم نے نصف لاگ ان کریں (ن) کے دور میں ایک فہرست کی تقسیم کر سکتے ہیں، 979 01:00:27,590 --> 01:00:31,700 جس کا ہے جہاں ہم یہ ن X لاگ ان کریں ن پیچیدگی ملے. 980 01:00:31,700 --> 01:00:34,940 تمہیں دیکھ کر اور ضم طرح کے لئے سب سے بہتر کیس این لاگ ان ن ہے، اور یہ صرف اس لئے ہوتا ہے. 981 01:00:34,940 --> 01:00:39,340 کہ بدترین، یا وہاں Ω بھی ہے ن ن لاگ ان کریں. 982 01:00:39,340 --> 01:00:42,480 کو ذہن میں رکھنے کے لئے کچھ ہے. 983 01:00:42,480 --> 01:00:45,750 پر منتقل، کچھ سپر بنیادی فائل میں O. / 984 01:00:45,750 --> 01:00:48,830 اگر آپ جدوجہد کو دیکھا، آپ کو نوٹس، ہم نے کچھ قسم کی نظام کی تھی گے 985 01:00:48,830 --> 01:00:51,270 جہاں آپ کو ایک لاگ فائل لکھیں اگر آپ کو کوڈ کے ذریعے پڑھا جا سکتا ہے. 986 01:00:51,270 --> 01:00:53,730 چلو دیکھتے تم یہ کیسے ہو سکتا ہے. 987 01:00:53,730 --> 01:00:57,450 ٹھیک ہے، ہم fprintf ہے، آپ کے طور پر صرف printf سوچ سکتے ہیں، 988 01:00:57,450 --> 01:01:01,720 لیکن صرف ایک فائل کی بجائے، پرنٹنگ اور اس وجہ سے شروع میں F. 989 01:01:01,720 --> 01:01:07,570 کوڈ کا اس طرح یہاں، کیا اس سے فرق پڑتا ہے، جیسا کہ آپ جدوجہد میں دیکھا ہے ہو سکتا ہے 990 01:01:07,570 --> 01:01:12,310 کیا تعداد ہے قطار کی طرف سے قطار سے باہر آپ کی 2 جہتی صف پرنٹنگ کے ذریعے جاتا ہے. 991 01:01:12,310 --> 01:01:17,850 اس صورت میں، printf آپ کے ٹرمینل سے پرنٹ یا جو ہم کہتے سیکشن کے معیار پیداوار ہے. 992 01:01:17,850 --> 01:01:22,170 >> اور اب، اس صورت میں، ہم سب کرنا ہے fprintf کے ساتھ printf کی جگہ، 993 01:01:22,170 --> 01:01:26,770 یہ بتاو کیا آپ نے جو فائل کو پرنٹ کرنے کے لئے چاہتے ہیں، اور اس صورت میں یہ صرف اس فائل پرنٹ باہر 994 01:01:26,770 --> 01:01:32,230 بجائے اس کے کہ یہ آپ کے ٹرمینل چھپائی باہر. 995 01:01:32,230 --> 01:01:36,500 ٹھیک ہے، تو وہ سوال جنم لیتا: ہم کہاں سے اس طرح کی فائل حاصل، ہے نا؟ 996 01:01:36,500 --> 01:01:39,840 ہم اس fprintf fuction میں لاگ ان کریں گزر گئے لیکن ہم نے کوئی اندازہ نہیں ہے وہ کہاں سے آیا تھا. 997 01:01:39,840 --> 01:01:43,980 ٹھیک ہے، جلد کوڈ میں، جو ہم نے یہاں پر کوڈ کے اس حصہ تھا، 998 01:01:43,980 --> 01:01:48,340 جو بنیادی طور پر کہتے ہیں کہ کہ کھلے کی فائل log.txt مطالبہ. 999 01:01:48,340 --> 01:01:53,220 ہم کیا کرتے ہیں کے بعد یہ ہے کہ ہم اس بات کا یقین کر لیں کہ یہ فائل اصل میں کامیابی سے کھول دیا ہے بنانے کے لئے ہے. 1000 01:01:53,220 --> 01:01:57,070 تو یہ کئی وجوہات کی بناء پر ناکام ہو سکتی ہے، آپ کو آپ کے کمپیوٹر پر کافی جگہ نہیں ہے مثال کے طور پر،. 1001 01:01:57,070 --> 01:01:59,790 تو یہ ہمیشہ اہم ہے قبل اس کے کہ آپ کی فائل کے ساتھ کسی بھی آپریشن کیا 1002 01:01:59,790 --> 01:02:03,300 ہم اس چیک کرنے کے لیے چاہے وہ فائل کو کامیابی سے تشکیل دیا گیا تھا. 1003 01:02:03,300 --> 01:02:09,330 تو وہ کیا ہے کہ ایک، fopen میں ایک دلیل ہے، ٹھیک ہے، ہم نے بہت سے طریقوں سے ایک فائل کھول سکتے ہیں. 1004 01:02:09,330 --> 01:02:13,510 ہم جو کر سکتے ہیں ہے، ہم اسے W گزر جس سے فائل کی جگہ لے لے کا مطلب ہے پہلے ہی اگر یہ exits کر سکتے ہیں، 1005 01:02:13,510 --> 01:02:18,070 ہم ایک کے پاس ہے، جس میں وہ فائل کے آخر میں شامل یہ زیرکر رہا ہے کی بجائے کر سکتے ہیں، 1006 01:02:18,070 --> 01:02:22,730 یا ہم ر کی وضاحت کر سکتے ہیں جس کا مطلب ہے، کے طور پر صرف پڑھنے فائل کو کھولنے. 1007 01:02:22,730 --> 01:02:24,890 تو اگر پروگرام فائل میں کسی قسم کی تبدیلی کرنے کی کی کوشش کرتا ہے، 1008 01:02:24,890 --> 01:02:30,140 ان میں چللانا اور انہیں ایسا. 1009 01:02:30,140 --> 01:02:33,320 آخر میں، ایک بار ہم فائل کے ساتھ کیا کر رہے ہیں، کیا اس پر آپریشن کر رہی، 1010 01:02:33,320 --> 01:02:35,860 ہم اس بات کا یقین کر لیں کہ ہم فائل کو بند کرنے کے لئے کی ضرورت ہے. 1011 01:02:35,860 --> 01:02:38,830 اور اس وجہ سے آپ کے پروگرام کے آخر میں، آپ کو انہیں دوبارہ منظور جا رہے ہیں 1012 01:02:38,830 --> 01:02:42,120 کہ آپ اس فائل کو کھولا، اور اسے بند. 1013 01:02:42,120 --> 01:02:44,650 تو یہ کچھ ضروری بات ہے کہ آپ کو اس بات کا یقین کر لیں کہ آپ کیا کرنے کے لئے ہے ہے. 1014 01:02:44,650 --> 01:02:47,180 تو یاد رکھو، آپ کو ایک فائل کھول سکتے ہیں، تو آپ نے فائل پر لکھ سکتے ہیں، 1015 01:02:47,180 --> 01:02:51,270 فائل میں آپریشن کیا، لیکن اس کے بعد آپ کو آخر میں فائل قریب ہے. 1016 01:02:51,270 --> 01:02:53,270 >> بنیادی فائل میں آپ کا کوئی سوال I / O؟ جی ہاں؟ 1017 01:02:53,270 --> 01:02:58,050 [Student کی سوال، unintelligible] 1018 01:02:58,050 --> 01:03:02,480 یہاں. سوال ہے، اس log.txt فائل کہاں ہے ظاہر کرتا ہے؟ 1019 01:03:02,480 --> 01:03:07,890 ٹھیک ہے، اگر آپ صرف اس log.txt دے، یہ کارکردگی کے طور پر ایک ہی ڈائریکٹری میں پیدا کرتا ہے. 1020 01:03:07,890 --> 01:03:10,500 لہذا اگر you're - >> [Student کی سوال، unintelligible] 1021 01:03:10,500 --> 01:03:18,830 جی ہاں. اسی فولڈر میں، یا ایک ہی ڈائریکٹری میں، جیسا کہ آپ کہتے ہیں. 1022 01:03:18,830 --> 01:03:21,400 اب میموری، اسٹیک، اور ڈھیر. 1023 01:03:21,400 --> 01:03:23,400 تو کہ کس طرح کمپیوٹر میں طے کردہ میموری ہے؟ 1024 01:03:23,400 --> 01:03:26,270 ٹھیک ہے، آپ کو یہاں اس بلاک کی طرح کے طور پر میموری کا تصور کر سکتے ہیں. 1025 01:03:26,270 --> 01:03:30,260 اور ہم یاد میں وہاں پھنس ڈھیر، اور اسٹیک ہے کہ وہاں ہے کیا کہتے ہیں. 1026 01:03:30,260 --> 01:03:34,480 اور ڈھیر گرنے کا اگنے اور اسٹیک بھیجا اگتا ہے. 1027 01:03:34,480 --> 01:03:38,620 تاکہ ٹومی کا ذکر ہے - اوہ، ٹھیک ہے، اور ہم ان 4 طبقات جو میں نے ایک سیکنڈ میں حاصل کرنے کے لئے کریں گے - 1028 01:03:38,620 --> 01:03:42,890 کے طور پر ٹومی نے پہلے کہا، آپ کو پتہ ہے کہ کس طرح اس کے افعال خود کہتے ہیں اور ایک دوسرے کو فون؟ 1029 01:03:42,890 --> 01:03:44,930 انہوں نے اسٹیک فریم کے اس طرح سے تعمیر. 1030 01:03:44,930 --> 01:03:47,360 ٹھیک ہے، اگر اہم کالز FOO، FOO اسٹیک پر ڈال دیا جاتا ہے. 1031 01:03:47,360 --> 01:03:52,430 FOO کا مطالبہ بار، بار حاصل اسٹیک پر ڈال دیا، اور اس کے بعد اسٹیک پر ڈال دیا ہو جاتا ہے. 1032 01:03:52,430 --> 01:03:57,040 اور جیسا کہ وہ واپس، وہ ہر دور اسٹیک لیا ہو. 1033 01:03:57,040 --> 01:04:00,140 ان مقامات میں سے ہر ایک اور میموری کیا منعقد کرتے ہیں؟ 1034 01:04:00,140 --> 01:04:03,110 ٹھیک ہے، سب سے اوپر، جو کہ متن حصہ ہے، پروگرام خود پر مشتمل ہے. 1035 01:04:03,110 --> 01:04:06,390 تو مشین کوڈ، جو وہاں ہے، ایک بار آپ کو اپنے پروگرام مرتب کریں. 1036 01:04:06,390 --> 01:04:08,520 اگلا، کسی بھی عالمی متغیر initialized. 1037 01:04:08,520 --> 01:04:12,660 >> تو آپ کو آپ کے پروگرام میں عالمی متغیر ہے، اور آپ کی طرح، 5 = کا کہنا ہے کہ، 1038 01:04:12,660 --> 01:04:15,260 ، جو کہ اس کے علاقے میں ڈال دیا ہو جاتا ہے، اور یہ حق ہے کہ تحت 1039 01:04:15,260 --> 01:04:18,990 آپ کے ذہن میں کوئی غیر ابتدا شدہ عالمی ڈیٹا، جو صرف ایک int ہے، 1040 01:04:18,990 --> 01:04:20,990 لیکن تم کہتے ہو کہ نہیں یہ کچھ کے برابر ہے. 1041 01:04:20,990 --> 01:04:23,870 احساس یہ عالمی متغیر ہیں، تاکہ وہ اہم باہر ہیں. 1042 01:04:23,870 --> 01:04:28,560 تو یہ کسی بھی عالمی متغیر کا اعلان کر رہے ہیں لیکن نہیں initialized ہیں کا مطلب ہے. 1043 01:04:28,560 --> 01:04:32,310 تو کیا ڈھیر میں ہے؟ میموری malloc ہے، جو ہم تھوڑا سا میں حاصل کرنے کے لئے کریں گے کا استعمال کرتے ہوئے مختص ہے. 1044 01:04:32,310 --> 01:04:35,990 اور آخر میں، آپ اسٹیک کے ساتھ کسی بھی مقامی متغیر ہے 1045 01:04:35,990 --> 01:04:39,950 اور کسی بھی کام کرتا ہے آپ کو ان کے پیرامیٹرز میں سے کسی ایک میں فون کر سکتے ہیں. 1046 01:04:39,950 --> 01:04:43,720 آخری بات، آپ جانتے ہیں کہ کیا ماحول متغیر نہیں ہے، 1047 01:04:43,720 --> 01:04:46,700 لیکن جب بھی آپ پروگرام چلاتے ہیں، تو منسلک کچھ کی طرح ہے، 1048 01:04:46,700 --> 01:04:49,550 یہ شخص جو پروگرام دوڑ کا صارف نام ہے. 1049 01:04:49,550 --> 01:04:51,550 اور اس کے نیچے دیے گئے کی طرح ہو رہا ہے. 1050 01:04:51,550 --> 01:04:54,540 ، میموری پتے، جو شش اعشاری اقدار ہیں کی شرائط میں، 1051 01:04:54,540 --> 01:04:58,170 0 میں سب سے اوپر شروع میں اقدار، اور وہ سب کے سب اور طریقہ یہ ہے کہ نیچے جاتے. 1052 01:04:58,170 --> 01:05:00,440 اس صورت میں، اگر آپ 32 بٹ نظام پر ہیں، 1053 01:05:00,440 --> 01:05:05,390 کے نیچے دیے گئے ایڈریس 0x جا رہا ہے، AF کے بعد، کیونکہ اس میں اس کا 32 بٹیں 1054 01:05:05,390 --> 01:05:10,890 جو 8 بائٹس ہے، اور اس معاملے میں 8 بائٹس 8 شش اعشاری ہندسے کے مساوی ہے. 1055 01:05:10,890 --> 01:05:20,110 تو یہاں ذیل ہے، پسند، 0xffffff جا رہے ہیں، اور وہاں آپ 0 کے لئے جا رہے ہیں. 1056 01:05:20,110 --> 01:05:23,660 تو کیا اشارہ ہیں؟ تم میں سے کچھ حصے میں یہ ہو سکتا ہے اس سے پہلے نہیں احاطہ کرتا ہے. 1057 01:05:23,660 --> 01:05:26,660 کیا ہے لیکن ہم اس پر لیکچر میں چلے گئے، ایک پوائنٹر صرف ایک ڈیٹا کی قسم ہے 1058 01:05:26,660 --> 01:05:34,030 جس اسٹورز، 50 کی طرح قدر کی کسی قسم کی بجائے، یہ یاد میں کچھ مقام کا پتہ ذخیرہ. 1059 01:05:34,030 --> 01:05:36,020 کہ میموری کی طرح [unintelligible]. 1060 01:05:36,020 --> 01:05:41,120 تو اس صورت میں، ہم کیا ہے، ہم ایک عددی یا int * ایک پوائنٹر ہے، 1061 01:05:41,120 --> 01:05:46,210 اور یہ 0xDEADBEEF کے اس شش اعشاری ایڈریس پر مشتمل ہے. 1062 01:05:46,210 --> 01:05:50,880 >> ، تو ہم نے ہے، اب، یاد میں کسی نہ کسی مقام پر اس پوائنٹر پوائنٹس 1063 01:05:50,880 --> 01:05:56,020 50 قیمت ہے اور یہ کہ صرف ایک ہے، اس میموری مقام پر ہے. 1064 01:05:56,020 --> 01:06:01,810 کچھ 32 بٹ نظام، تمام 32 بٹ نظام پر اشارہ 32 بٹیں یا 4 بائٹس لے لو. 1065 01:06:01,810 --> 01:06:06,020 لیکن، مثال کے طور پر، 64 بٹ نظام پر اشارہ 64 بٹس ہیں. 1066 01:06:06,020 --> 01:06:08,040 تو وہ کچھ ہے آپ اس بات کو ذہن میں رکھنا چاہیں گے. 1067 01:06:08,040 --> 01:06:12,310 تو ایک نظام کو ختم بٹ، پوائنٹر آخر بٹس طویل ہے. 1068 01:06:12,310 --> 01:06:17,320 نوٹیفائر طرح کی اضافی چیزوں کے بغیر مشکل پچا 1069 01:06:17,320 --> 01:06:20,300 تو متحرک میموری تقرری کی ایک مثال کے ذریعے جانا. 1070 01:06:20,300 --> 01:06:25,130 کیا متحرک میموری مختص کرنے کے لئے ہوتا ہے، یا جو ہم کہتے ہیں malloc 1071 01:06:25,130 --> 01:06:29,280 اس کی مدد سے آپ کو سیٹ سے باہر کسی قسم کے ڈیٹا کی مختص. 1072 01:06:29,280 --> 01:06:31,830 تو اس کے ڈیٹا کی طرح ہے اس پروگرام کی مدت کے لئے زیادہ مستقل ہے. 1073 01:06:31,830 --> 01:06:36,430 جیسا کہ آپ جانتے ہیں کیونکہ، اگر آپ کو ایک تقریب کے اندر ایکس، اور اس تقریب کی واپسی کا اعلان 1074 01:06:36,430 --> 01:06:40,910 آپ کو ڈیٹا ہے جو کہ آپ نے X میں محفوظ کیا گیا تھا ہے وہ یہ کہ یہ کو رسائی حاصل ہے. 1075 01:06:40,910 --> 01:06:44,420 اشارہ ہمیں کیا ہے کہ وہ ہمیں میموری یا سٹور کی اقدار کو محفوظ 1076 01:06:44,420 --> 01:06:46,840 میموری کا ایک مختلف طبقہ، یعنی ڈھیر میں. 1077 01:06:46,840 --> 01:06:49,340 اب ایک بار ہم نے تقریب کے باہر واپس جب تک ہم ایک پوائنٹر ہے 1078 01:06:49,340 --> 01:06:54,960 یاد میں اس مقام پر، تو پھر ہم کیا کر سکتے ہیں ہے کہ ہم وہاں کی اقدار میں صرف دیکھ سکتے ہیں. 1079 01:06:54,960 --> 01:06:58,020 چلو ایک مثال میں نظر: یہ ہماری میموری کی ترتیب دوبارہ ہے. 1080 01:06:58,020 --> 01:07:00,050 اور ہم اس تقریب ہے، اہم ہے. 1081 01:07:00,050 --> 01:07:06,870 کیا اس سے فرق پڑتا ہے - ٹھیک ہے، بہت آسان ہے، صحیح - int X 5 =، یہ صرف اہم اسٹیک پر ایک متغیر ہے. 1082 01:07:06,870 --> 01:07:12,450 >> دوسری طرف، اب ہم پوائنٹر جو تقریب giveMeThreeInts مطالبہ کا اعلان. 1083 01:07:12,450 --> 01:07:16,800 اور اس طرح ہم اب اس تقریب میں جانا ہے اور ہم اس کے لئے ایک نئے اسٹیک فریم بناتے ہیں. 1084 01:07:16,800 --> 01:07:20,440 تاہم، اس اسٹیک فریم میں، ہم * int TEMP کا اعلان، 1085 01:07:20,440 --> 01:07:23,210 جو mallocs 3 integers میں ہمارے لئے. 1086 01:07:23,210 --> 01:07:25,880 تو int کے سائز ہمیں اس int کتنے بائٹس ہے، 1087 01:07:25,880 --> 01:07:29,620 اور malloc ہمیں دیتا ہے کہ ڈھیر پر جگہ کے بہت سے شراکت ہے. 1088 01:07:29,620 --> 01:07:32,890 تو اس صورت میں، ہم نے 3 integers کے لئے کافی جگہ کو پیدا کیا ہے، 1089 01:07:32,890 --> 01:07:36,830 اور ڈھیر کی طرح وہاں ہے، جس کی وجہ سے میں نے اسے تیار اعلی اپ کیا ہے. 1090 01:07:36,830 --> 01:07:42,900 ایک بار ہم کیا کر رہے ہیں، ہم واپس آتے ہیں یہاں، آپ کو صرف ضرورت ہے 3 ints واپس، 1091 01:07:42,900 --> 01:07:47,000 اور یہ ایڈریس واپس، جہاں کہ میموری ہے پر اس معاملے میں. 1092 01:07:47,000 --> 01:07:51,250 اور ہم پوائنٹر سوئچ = مقرر کریں، اور وہاں ہم صرف ایک پوائنٹر ہے. 1093 01:07:51,250 --> 01:07:54,550 لیکن کیا ہے کہ تقریب کی واپسی یہاں سجا دیئے ہے اور غائب ہو. 1094 01:07:54,550 --> 01:07:59,250 تو TEMP غائب ہے، لیکن ہم اب بھی جہاں ایڈریس کو برقرار رکھنے 1095 01:07:59,250 --> 01:08:01,850 ان 3 integers مینز کے اندر ہیں. 1096 01:08:01,850 --> 01:08:06,180 تو اس سیٹ میں اشارہ scoped سجا دیئے فریم کے لئے ہیں مقامی 1097 01:08:06,180 --> 01:08:09,860 لیکن میموری جس سے وہ حوالہ دیتے ڈھیر میں ہے. 1098 01:08:09,860 --> 01:08:12,190 >> کیا اس کا کوئی مطلب ہے؟ 1099 01:08:12,190 --> 01:08:14,960 [Student کی] آپ اسے پھر سے کہہ سکتے ہیں؟ >> [جوزف] جی ہاں. 1100 01:08:14,960 --> 01:08:20,270 اگر ایسا ہے تو میں واپس صرف تھوڑا سا جاؤ، تم نے دیکھا ہے کہ TEMP مختص 1101 01:08:20,270 --> 01:08:23,500 وہاں ڈھیر پر کچھ یاد ہے. 1102 01:08:23,500 --> 01:08:28,680 تو جب اس تقریب کی واپسی giveMeThreeInts، یہاں اسٹیک غائب ہو رہا ہے. 1103 01:08:28,680 --> 01:08:35,819 اور یہ متغیرات میں سے کسی، اس صورت میں، اس پوائنٹر ہے جو کہ آپ نے سجا دیئے فریم میں مختص کیا گیا تھا ہے وہ یہ کہ یہ ہے. 1104 01:08:35,819 --> 01:08:39,649 جو غائب ہو رہا ہے، لیکن چونکہ ہم TEMP واپس 1105 01:08:39,649 --> 01:08:46,330 اور ہم پوائنٹر سیٹ = TEMP، پوائنٹر اب جگہ ایک ہی میموری کے طور پر عارضی تھی کی طرف اشارہ کرنے جا رہا ہے. 1106 01:08:46,330 --> 01:08:50,370 تو اب، اگرچہ ہم TEMP، کہ مقامی پوائنٹر کھو دیتے ہیں، 1107 01:08:50,370 --> 01:08:59,109 ہم اب بھی کیا یہ اس متغیر پوائنٹر کے اندر کی طرف اشارہ کرتے ہوئے کیا گیا تھا کی یاد کا پتہ رکھتے ہیں. 1108 01:08:59,109 --> 01:09:03,740 سوال؟ اس طرح کی ایک مبہم اور موضوع کے ہو گا اگر آپ اس کے حصے میں نہیں گیا ہے کر سکتے ہیں. 1109 01:09:03,740 --> 01:09:09,240 ہم آپ TF، یہ ختم کر سکتے ہیں ضرور جانا اور یقینا ہم سوالات کے جواب دے 1110 01:09:09,240 --> 01:09:11,500 اس کے لئے جائزہ لینے کے سیشن کے آخر میں. 1111 01:09:11,500 --> 01:09:14,220 لیکن یہ ایک پیچیدہ موضوع کے طرح ہے، اور اس میں مزید مثال کے طور پر کہ ظاہر کرنے کے لئے جا رہے ہیں 1112 01:09:14,220 --> 01:09:18,790 واضح کیا اشارہ اصل میں مدد کرے گا. 1113 01:09:18,790 --> 01:09:22,500 >> اس صورت میں، اشارہ arrays کے برابر ہیں، 1114 01:09:22,500 --> 01:09:25,229 تو میں اس کو ایک int صف کے طور پر ایک ہی بات کے طور پر پوائنٹر استعمال کر سکتے ہیں. 1115 01:09:25,229 --> 01:09:29,840 تو میں 0 میں تخکرمن رہا ہوں اور 1 سب سے پہلے عددی تبدیل کرنے، 1116 01:09:29,840 --> 01:09:39,689 2 عددی تبدیل کرنے، اور 3rd عددی 3. 1117 01:09:39,689 --> 01:09:44,210 تو اشارہ. ٹھیک ہے، Binky یاد. 1118 01:09:44,210 --> 01:09:48,319 اس صورت میں ہم ایک پوائنٹر مختص کی ہے، یا ہم نے پوائنٹر اعلان کیا، 1119 01:09:48,319 --> 01:09:52,760 لیکن ابتدائی طور پر، جب میں صرف ایک پوائنٹر اعلان کیا، اسے میموری میں کہیں بھی کی طرف اشارہ کرتے ہوئے نہیں ہے. 1120 01:09:52,760 --> 01:09:54,930 یہ صرف اس کے اندر ردی کی ٹوکری اقدار ہے. 1121 01:09:54,930 --> 01:09:56,470 تو مجھے کوئی اندازہ نہیں ہے جہاں اس پوائنٹر اشارہ کر رہا ہے. 1122 01:09:56,470 --> 01:10:01,630 یہ ایک پتہ جس 0 اور 1 جہاں یہ ابتدائی طور پر اعلان کیا گیا تھا کے ساتھ بھری ہوئی ہے. 1123 01:10:01,630 --> 01:10:04,810 میں نے اس کے ساتھ کچھ نہیں ہے جب تک کہ میں اس پر malloc کال کر سکتے ہیں 1124 01:10:04,810 --> 01:10:08,390 اور پھر اس کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے ڈھیر جہاں میں اقدار کے اندر ڈال کر سکتے ہیں پر ایک چھوٹی سی جگہ فراہم کرتا ہے. 1125 01:10:08,390 --> 01:10:11,980 پھر، مجھے نہیں معلوم اس میموری کے اندر کیا ہے. 1126 01:10:11,980 --> 01:10:16,780 تو پہلی بات یہ ہے مجھے کیا کرنا ہے ہے چیک کرنے کے لیے کیا نظام کافی میموری تھی 1127 01:10:16,780 --> 01:10:20,850 مجھے واپس پہلی جگہ ہے، جس کی وجہ سے میں نے کر یہ چیک کرنے کے لیے کر رہا ہوں ہے 1 عددی دے. 1128 01:10:20,850 --> 01:10:25,020 اگر پوائنٹر شہوت انگیز null ہے، اس کا مطلب یہ ہے کہ یہ کافی جگہ ہے یا کسی اور خامی پیش آگئی نہیں تھا، 1129 01:10:25,020 --> 01:10:26,320 تو میں اپنے پروگرام سے باہر سے باہر نکلنے چاہئے. 1130 01:10:26,320 --> 01:10:29,400  لیکن اگر اس نے کامیاب، اب میں اس پوائنٹر استعمال کر سکتے ہیں 1131 01:10:29,400 --> 01:10:35,020 اور کیا * پوائنٹر ہے، یہ مندرجہ ذیل ہے جہاں پتہ ہے 1132 01:10:35,020 --> 01:10:38,480 جہاں اس قدر ہے، اور اسے 1 کے برابر کا تعین کرتا ہے. 1133 01:10:38,480 --> 01:10:41,850 تو یہاں ہم جانچ پڑتال اگر اس میموری موجود رہے ہیں. 1134 01:10:41,850 --> 01:10:45,380 >> ایک بار جب آپ کو پتہ ہے کہ یہ موجود ہے، آپ اس میں ڈال کر سکتے ہیں 1135 01:10:45,380 --> 01:10:50,460 اس 1 کے معاملے میں کس قدر آپ کو اس میں ڈال کرنا چاہتے ہیں. 1136 01:10:50,460 --> 01:10:53,060 ایک بار ہم نے اس کے ساتھ کیا کیا کر رہے ہیں، آپ کو پوائنٹر کہ آزاد کرنے کی ضرورت ہے 1137 01:10:53,060 --> 01:10:57,160 کیونکہ ہم میموری ہے کہ ہے کہ آپ کو پہلی جگہ میں پوچھا سسٹم کو واپس حاصل کرنے کے لئے کی ضرورت ہے. 1138 01:10:57,160 --> 01:10:59,690 کمپیوٹر کیونکہ معلوم نہیں ہے جب ہم نے اس کے ساتھ کیا کیا کر رہے ہیں. 1139 01:10:59,690 --> 01:11:02,510 اس صورت میں ہم واضح طور پر یہ کہہ رہے ہیں، ٹھیک ہے، ہم نے اس میموری کے ساتھ کیا کر رہے ہیں. 1140 01:11:02,510 --> 01:11:10,780 اگر کسی دوسرے عمل کی ضرورت ہے، کسی دوسرے پروگرام کی ضرورت ہے، آگے جانا ہے اور اسے لے لو مفت محسوس ہو رہا ہے. 1141 01:11:10,780 --> 01:11:15,110 ہم بھی کیا کر سکتے ہیں ہم سیٹ پر مقامی متغیرات میں سے پتہ حاصل کر سکتے ہیں. 1142 01:11:15,110 --> 01:11:19,080 تو int ایکس کا اہم سجا دیئے فریم کے اندر ہے. 1143 01:11:19,080 --> 01:11:23,060 اور جب ہم نے اس ایمپرسینڈ کا استعمال کرتے ہیں، اور اس آپریٹر، کیا اس سے فرق پڑتا ہے 1144 01:11:23,060 --> 01:11:27,310 یہ x لیتا ہے، اور ایکس یاد میں کچھ معلومات ہے، لیکن یہ پتہ ہے. 1145 01:11:27,310 --> 01:11:33,790 یہ کہیں واقع ہے. کی طرف سے کالنگ اور عمومی X، اس کا کیا ہے، یہ ہمیں ایکس کا پتہ دیتا ہے. 1146 01:11:33,790 --> 01:11:38,430 ایسا کرنے سے، ہم جہاں X یاد میں ہے پوائنٹر نقطہ کر رہے ہیں. 1147 01:11:38,430 --> 01:11:41,710 اب ہم صرف * ایسا کچھ X، ہم 5 واپس حاصل کرنے کے لئے جا رہی ہے. 1148 01:11:41,710 --> 01:11:43,820 ستارہ یہ محولہ لقب ضبطی کہا جاتا ہے. 1149 01:11:43,820 --> 01:11:46,640 آپ نے پتے کی پیروی کرتے ہیں اور آپ کو اس کی قدر وہاں ذخیرہ ملتا ہے. 1150 01:11:51,000 --> 01:11:53,310 >> کوئی سوال؟ جی ہاں؟ 1151 01:11:53,310 --> 01:11:56,500 [Student کی] اگر آپ کے پاس 3 نکیلی چیز نہیں ہے، یہ اب بھی مرتب؟ 1152 01:11:56,500 --> 01:11:59,490 جی ہاں. اگر آپ نے 3 پوائنٹر بات نہیں ہے، یہ اب بھی مرتب ہو رہا ہے، 1153 01:11:59,490 --> 01:12:02,720 لیکن میں تم سے جو ایک سیکنڈ میں ہوتا ہے، یہ ہے کہ ایسا کیے بغیر گے، 1154 01:12:02,720 --> 01:12:04,860 ہے کہ جو ہم کہتے ہیں ایک میموری لیک. آپ کو دے نظام نہیں کر رہے ہیں 1155 01:12:04,860 --> 01:12:07,850 اس کی یاد واپس، اس لیے ایک کے بعد جبکہ پروگرام جمع ہو رہا ہے 1156 01:12:07,850 --> 01:12:10,940 کہ میموری کا استعمال کرتے ہوئے، نہیں ہے اور کچھ بھی نہیں اس کا استعمال کر سکتے ہیں. 1157 01:12:10,940 --> 01:12:15,750 اگر تم نے کبھی آپ کے کمپیوٹر پر 1.5 ملین کلو بائٹ کے ساتھ فائر فاکس دیکھا ہے، 1158 01:12:15,750 --> 01:12:17,840 ٹاسک مینیجر میں، یہ کیا ہو رہا ہے. 1159 01:12:17,840 --> 01:12:20,760 آپ کو پروگرام ہے کہ وہ نہیں ہینڈلنگ رہے ہیں میں ایک میموری لیک ہے. 1160 01:12:23,080 --> 01:12:26,240 تو کس طرح پوائنٹر اس کی ریاضی کا کام ہے؟ 1161 01:12:26,240 --> 01:12:29,480 ٹھیک ہے، پوئینٹر ریاضی ایک صف میں جیسے تخکرمن کی طرح ہے. 1162 01:12:29,480 --> 01:12:36,370 اس صورت میں، میں نے پوائنٹر ہے، اور مجھے کیا کرنا ہے میں پہلی عنصر پوائنٹر نقطہ 1163 01:12:36,370 --> 01:12:42,100 3 integers کہ میں نے مختص کیا ہے اس صف. 1164 01:12:42,100 --> 01:12:46,670 تو اب میں کیا کرتا ہوں، ستارہ پوائنٹر فہرست میں پہلا عنصر کو تبدیل کر. 1165 01:12:46,670 --> 01:12:49,140 سٹار پوائنٹر یہاں +1 پوائنٹس. 1166 01:12:49,140 --> 01:12:53,140 +2 پوائنٹر +1 پوائنٹر تو پوائنٹر یہاں ختم ہو گیا ہے، یہاں ہے، یہاں ہے. 1167 01:12:53,140 --> 01:12:56,610 >> تو 1 کو شامل کرنے سے اس صف کے ساتھ منتقل کے طور پر ایک ہی بات ہے. 1168 01:12:56,610 --> 01:12:59,880 ہم کیا کرتے ہیں ہے، جب ہم +1 پوائنٹر کیا آپ یہاں ایڈریس ملتا ہے، 1169 01:12:59,880 --> 01:13:04,180 اور یہاں قیمت حاصل کرنے کے لئے کی ترتیب میں، آپ کو پورے اظہار سے میں ایک ستارہ ڈالا 1170 01:13:04,180 --> 01:13:05,990 یہ dereference. 1171 01:13:05,990 --> 01:13:09,940 لہذا، اس معاملے میں، میں 1 اس صف میں سب سے پہلے جگہ قائم رہا ہوں، 1172 01:13:09,940 --> 01:13:13,970 2، محل وقوع، اور تیسری 3 محل وقوع. 1173 01:13:13,970 --> 01:13:18,180 تو کیا میں یہاں کر رہا ہوں میں ہمارے +1 پوائنٹر چھپائی رہا ہوں، 1174 01:13:18,180 --> 01:13:19,970 جس میں صرف آپ کے وزٹرز کا ریکارڈ رکھا 2 دیتا ہے. 1175 01:13:19,970 --> 01:13:23,650 اب میں پوائنٹر incrementing رہا ہوں تو پوائنٹر +1 پوائنٹر برابر، 1176 01:13:23,650 --> 01:13:26,780 جو اسے آگے لے جاتا ہے. 1177 01:13:26,780 --> 01:13:30,810 اور تو اب اگر میں باہر +1 پوائنٹر پرنٹ پوائنٹر +1 3 ہے، 1178 01:13:30,810 --> 01:13:33,990 اس معاملے میں جو 3 پرنٹ. 1179 01:13:33,990 --> 01:13:36,560 اور کے لئے ڈاؤن لوڈ، اتارنا مفت کچھ پوائنٹر ہے کہ میں نے اسے دے 1180 01:13:36,560 --> 01:13:40,540 صف جو میں malloc سے واپس مل گیا کے آغاز کی طرف اشارہ جانا چاہیے. 1181 01:13:40,540 --> 01:13:43,430 تو، اس معاملے میں، اگر میں 3 یہاں کال، یہ صحیح نہیں کریں گے، 1182 01:13:43,430 --> 01:13:45,070 کیونکہ یہ صف کے وسط میں ہے. 1183 01:13:45,070 --> 01:13:48,820 میں اصل مقام پر حاصل کرنے کے لئے منہا کرنا ہے 1184 01:13:48,820 --> 01:13:50,420 ابتدائی پہلی جگہ اس سے پہلے کہ میں اسے آزاد کر سکتے ہیں. 1185 01:13:56,300 --> 01:13:58,450 تو، یہاں ایک سے زیادہ شامل مثال ہے. 1186 01:13:58,450 --> 01:14:03,360 اس صورت میں، ہم نے ایک کردار کی صف میں 7 حروف آونٹن کر رہے ہیں. 1187 01:14:03,360 --> 01:14:06,480 >> اور اس معاملے میں جو ہم کر رہے ہیں وہ یہ ہے کہ ہم ان میں سے پہلے 6 سے زیادہ looping کر رہے ہیں، 1188 01:14:06,480 --> 01:14:09,900 اور ہم نے ان Z. پر قائم کرنے کر رہے ہیں 1189 01:14:09,900 --> 01:14:13,350 لہذا، int کے لئے میں = 0، میں 6>، میں +، + 1190 01:14:13,350 --> 01:14:16,220 تو، پوئینٹر + میں ہمارے صرف اس صورت میں دے گا، 1191 01:14:16,220 --> 01:14:20,860 پوئینٹر، پوائنٹر +1 پوائنٹر، +2، +3 پوائنٹر، اور تو اور لوپ میں بیان. 1192 01:14:20,860 --> 01:14:24,040 یہ کیا ہو رہا ہے یہ ہے کہ یہ جو پتہ ملتا ہے، dereferences قیمت حاصل کرنے کے لئے، 1193 01:14:24,040 --> 01:14:27,440 اور تبدیلیوں ہے کہ ایک Z. قدر 1194 01:14:27,440 --> 01:14:30,350 اس کے بعد آخر میں یاد یہ ایک تار ہے، ٹھیک ہے؟ 1195 01:14:30,350 --> 01:14:33,560 تمام ڈور شہوت انگیز null ختم حرف سے ختم کرنے کے لئے ہے. 1196 01:14:33,560 --> 01:14:38,620 تو، مجھے کیا کرنا ہے 6 پوائنٹر میں اندر شہوت انگیز null مختتم کردار ڈالا 1197 01:14:38,620 --> 01:14:43,980 اور اب کیا میں بنیادی طور پر ختم کر رہا ہوں یہاں ایک تار کے لئے printf عمل کر رہا ہے، ٹھیک ہے؟ 1198 01:14:43,980 --> 01:14:46,190 >> تو، جب printf اب جب ہے یہ ایک تار کے آخر میں پہنچ گئی؟ 1199 01:14:46,190 --> 01:14:48,230 جب تم میں سے کسی ایک کو شہوت انگیز null ختم کردار اختیار کرنے. 1200 01:14:48,230 --> 01:14:52,030 لہذا، اس صورت میں، اس صف کے آغاز کا اصل پوائنٹر پوائنٹس. 1201 01:14:52,030 --> 01:14:56,410 میں پہلا کردار پرنٹ. میں یہ ایک سے زیادہ عمر کے منتقل. 1202 01:14:56,410 --> 01:14:58,420 میں اس کردار کو پرنٹ. میں اس پر منتقل. 1203 01:14:58,420 --> 01:15:02,180 اور میں نے یہ کر رہی جب تک کہ میں آخر تک پہنچنے کے رکھو. 1204 01:15:02,180 --> 01:15:07,750 اور اب آخر * یہ پوائنٹر اس شہوت انگیز null ختم کردار واپس لے dereference گے. 1205 01:15:07,750 --> 01:15:11,780 اور اس وجہ سے میری دیر لوپ بھی چلاتی ہے صرف اس وقت جب اس قدر خالی ختم حرف نہیں ہے. 1206 01:15:11,780 --> 01:15:13,770 تو، اب میں اس لوپ سے باہر سے باہر نکلیں. 1207 01:15:18,780 --> 01:15:21,180 اور اگر ایسا ہے تو میں اس پوائنٹر سے 6 منہا، 1208 01:15:21,180 --> 01:15:22,860 میں واپس شروع کرنے کا طریقہ جاتے ہیں. 1209 01:15:22,860 --> 01:15:27,880 یاد ہے، میں یہ کر رہا ہوں کیونکہ میں نے شروع میں یہ مفت کے لئے جانا ہے. 1210 01:15:27,880 --> 01:15:30,270 >> تو، میں جانتا ہوں کہ بہت تھا. کے ذہن میں کوئی سوالات ہیں؟ 1211 01:15:30,270 --> 01:15:31,870 براہ مہربانی، جی ہاں؟ 1212 01:15:31,870 --> 01:15:36,610 [Student کی سوال unintelligible] 1213 01:15:36,610 --> 01:15:38,190 کہ آپ کو زور کا کہنا ہے کہ کر سکتے ہیں؟ معاف کیجئے گا. 1214 01:15:38,190 --> 01:15:44,140 [Student کی]، آخری سلائڈ ٹھیک ہے قبل اس کے کہ آپ پوائنٹر آزاد 1215 01:15:44,140 --> 01:15:47,300 واقعی میں آپ جہاں پوائنٹر کی قدر تبدیل کر رہے تھے؟ 1216 01:15:47,300 --> 01:15:50,370 [جوزف] تو، ٹھیک ہے یہاں. >> [Student کی] اوہ، ٹھیک ہے. 1217 01:15:50,370 --> 01:15:51,890 ، [جوزف] سو، میں ایک پوائنٹر مائنس مائنس ہے، ٹھیک ہے 1218 01:15:51,890 --> 01:15:54,140 جو چیز واپس ایک بڑھتا رہتا ہے، اور پھر میں نے اسے آزاد، 1219 01:15:54,140 --> 01:15:57,000 کیونکہ اس پوائنٹر صف کے آغاز کی طرف اشارہ کیا ہے. 1220 01:15:57,000 --> 01:16:00,420 [Student کی] لیکن یہ اگر آپ کو اس لائن کے بعد روک دیا جائے گا کی ضرورت ہے. 1221 01:16:00,420 --> 01:16:03,130 تو [جوزف]، اگر میں اس کے بعد بند کر دیا تھا، یہ ایک میموری لیک پر غور کیا جائے گے، 1222 01:16:03,130 --> 01:16:04,810 کیونکہ میں آزاد نہیں چلا تھا. 1223 01:16:04,810 --> 01:16:11,290 [Student کی] میں [unintelligible] پہلے تین لائنوں کے بعد جہاں آپ +1 پوائنٹر [unintelligible] نے. 1224 01:16:11,290 --> 01:16:13,140 [جوزف] اہ ہہ. تو کیا وہاں سوال ہے؟ 1225 01:16:13,140 --> 01:16:14,780 معاف کیجئے گا. نہیں، نہیں. جاؤ، جاؤ، براہ مہربانی. 1226 01:16:14,780 --> 01:16:16,870 تو [Student کی]، آپ کو اشارہ کی قیمت تبدیل نہیں کر رہے ہیں. 1227 01:16:16,870 --> 01:16:19,130 آپ پوائنٹر مائنس مائنس کرنا نہیں پڑتا. 1228 01:16:19,130 --> 01:16:19,730 [جوزف] جی ہاں، بالکل. 1229 01:16:19,730 --> 01:16:21,890 تو، جب میں +1 پوائنٹر اور پوائنٹر +2 1230 01:16:21,890 --> 01:16:24,410 میں پوائنٹر نہیں کر رہا ہوں +1 پوائنٹر برابر ہوتی ہے. 1231 01:16:24,410 --> 01:16:27,260 لہذا، پوئینٹر صف کے آغاز کی طرف اشارہ رہتا ہے. 1232 01:16:27,260 --> 01:16:31,460 یہ صرف ہے جب میں پلس کرتے کے علاوہ کہ یہ پوائنٹر کے اندر قیمت کا تعین کرتا ہے واپس، 1233 01:16:31,460 --> 01:16:33,550 ہے کہ یہ اصل میں اس کے ساتھ چلتا ہے. 1234 01:16:36,860 --> 01:16:37,780 ٹھیک ہے. 1235 01:16:40,550 --> 01:16:42,030 مزید سوال؟ 1236 01:16:44,680 --> 01:16:47,790 >> ایک بار پھر، اگر یہ غالب کی طرح ہے، اس سیشن میں شامل کریں گے. 1237 01:16:47,790 --> 01:16:50,710 اس کے بارے میں آپ کی تعلیم فیلو سے پوچھیں، اور ہم آخر میں سوالات کا جواب دے سکتا ہے. 1238 01:16:53,510 --> 01:16:56,600 اور عام طور پر ہم اس مائنس کام کرنا پسند نہیں ہے. 1239 01:16:56,600 --> 01:16:59,760 یہ کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے میں صف میں کتنا آفسیٹ ہے ٹریک رکھنے کی ضرورت ہے. 1240 01:16:59,760 --> 01:17:04,520 تو، عام طور پر، یہ صرف ہے کہ کس طرح پوائنٹر ریاضی کا کام اس بات کی وضاحت کرتے ہیں. 1241 01:17:04,520 --> 01:17:07,970 لیکن کیا ہم عام طور پر پسند ہے ہم پوائنٹر کی ایک کاپی بنانے کے لئے اچھا لگتا ہے، 1242 01:17:07,970 --> 01:17:11,640 اور پھر ہم اس نقل کو استعمال کرتے ہیں جب ہم سٹرنگ میں ادھر ادھر جا رہے ہیں کریں گے. 1243 01:17:11,640 --> 01:17:14,660 تو، آپ کو ان کے معاملے میں کاپی پورے سٹرنگ پرنٹ کرنے کے لئے استعمال کرتے ہیں، 1244 01:17:14,660 --> 01:17:19,040 لیکن ہم پوائنٹر مائنس 6 کی طرح نہیں ہے یا کہ ہم کس طرح اس میں منتقل کر دیا گیا ٹریک رکھنے، 1245 01:17:19,040 --> 01:17:22,700 صرف کیونکہ ہم جانتے ہیں کہ ہمارے اصل مسئلہ اب بھی فہرست کے آغاز کی طرف اشارہ کیا جاتا ہے 1246 01:17:22,700 --> 01:17:25,340 اور کہ ہم تبدیل یہ کاپی ہے. 1247 01:17:25,340 --> 01:17:28,250 لہذا، عام طور پر، اپنے اصل پوائنٹر کی کاپیاں کو تبدیل کریں. 1248 01:17:28,250 --> 01:17:32,350 طرح کی کوشش نہیں کی - اصل کاپیاں تبدیل مت پہنچاو. 1249 01:17:32,350 --> 01:17:35,290 صرف اپنے اصل کی نقول کو تبدیل کرنے کی کوشش کر رہا ہے. 1250 01:17:41,540 --> 01:17:44,870 تو، آپ کو نوٹس ہے جب ہم printf میں سٹرنگ گزر 1251 01:17:44,870 --> 01:17:48,990 آپ کو اس کے سامنے ایک ستارہ جیسا کہ ہم نے دیگر تمام dereferences کے ساتھ کیا تھا ڈال نہیں ہے، ٹھیک ہے؟ 1252 01:17:48,990 --> 01:17:54,180 لہذا، اگر آپ کو باہر پرنٹ پورے سٹرنگ٪ S کی توقع ایک پتہ ہے، 1253 01:17:54,180 --> 01:17:57,610 اور اس معاملے میں پوائنٹر یا کرداروں میں سے ایک صف کی طرح اس معاملے میں. 1254 01:17:57,610 --> 01:18:00,330 >> سنہرے بالوں والی، چار ایس *، اور arrays میں ایک ہی بات ہے. 1255 01:18:00,330 --> 01:18:03,690 پوائنٹر حروف ہے، اور کردار arrays ایک ہی چیز ہیں. 1256 01:18:03,690 --> 01:18:05,720 اور اس پوائنٹر میں ہم سب کرنا ہے گزر جاتا ہے. 1257 01:18:05,720 --> 01:18:08,150 * پوائنٹر یا اس طرح کچھ کی طرح ہم کو منتقل کرنے کی ضرورت نہیں ہے. 1258 01:18:13,110 --> 01:18:14,930 تو، arrays اور اشارہ ایک ہی بات ہے. 1259 01:18:14,930 --> 01:18:19,160 جب آپ X کی طرح کچھ کر رہے ہیں، یہاں ایک صف کے لئے [Y] 1260 01:18:19,160 --> 01:18:21,960 جو ہڈ کے تحت کر رہی ہے یہ ہے کہ یہ کہہ رہا ہے، ٹھیک ہے، یہ ایک حروف کی صف ہے، 1261 01:18:21,960 --> 01:18:23,690 تو یہ ایک پوائنٹر ہے. 1262 01:18:23,690 --> 01:18:26,510 اور اس طرح X ایک ہی چیز ہے، 1263 01:18:26,510 --> 01:18:28,650 تو کیا اس سے فرق پڑتا ہے یہ ہے کہ یہ X Y جوڑتا ہے، 1264 01:18:28,650 --> 01:18:31,820 جو یاد میں آگے بڑھنے اتنا کے طور پر ایک ہی بات ہے. 1265 01:18:31,820 --> 01:18:34,930 اور اب X + Y ہمیں کسی قسم کا پتہ دیتا ہے، 1266 01:18:34,930 --> 01:18:37,570 اور ہم ایڈریس dereference یا تیر کی پیروی 1267 01:18:37,570 --> 01:18:41,640 جہاں کی یاد میں اس مقام پر ہے اور ہم یاد میں اس جگہ قدر. 1268 01:18:41,640 --> 01:18:43,720 تو، تو ان دونوں بالکل ایک ہی چیز ہیں. 1269 01:18:43,720 --> 01:18:45,840 یہ صرف ایک syntactic چینی ہے. 1270 01:18:45,840 --> 01:18:48,090 وہ ایک ہی بات کرتے ہیں. وہ ایک دوسرے کے لیے مختلف syntactics ہیں. 1271 01:18:51,500 --> 01:18:57,590 >> تو اشارہ کے ساتھ، کیا ہوا جا سکتا ہے؟ کی طرح، بہت بہت شکریہ. ٹھیک ہے. تو، بری چیزیں ہیں. 1272 01:18:57,590 --> 01:19:02,410 کچھ بری باتیں آپ کر سکتے ہیں کی جانچ پڑتال اگر آپ malloc کال خالی ٹھیک ہے، واپس نہیں کر رہے ہیں؟ 1273 01:19:02,410 --> 01:19:06,560 اس صورت میں، میں نے نظام سے مجھے دینا رہا ہوں - یہ تعداد کیا ہے 1274 01:19:06,560 --> 01:19:11,200 2 ارب 4 اوقات کی طرح، کیونکہ ایک عددی کے سائز 4 بائٹس ہے. 1275 01:19:11,200 --> 01:19:13,810 میں نے اس کے لئے 8 ارب بائٹس کی طرح پوچھ رہا ہوں. 1276 01:19:13,810 --> 01:19:17,270 بالکل میرے کمپیوٹر آپ کے وزٹرز کا ریکارڈ رکھا کہ بہت یاد واپس دینے کے قابل نہیں ہے. 1277 01:19:17,270 --> 01:19:20,960 اور ہم چیک کرنے کے لیے اگر یہ شہوت انگیز null ہے نہیں کیا، تو جب ہم وہاں dereference کی کوشش کرتے ہیں - 1278 01:19:20,960 --> 01:19:24,270 جہاں وہ جا رہا ہے تیر کی پیروی کرتے ہیں - ہم اس میموری نہیں ہے. 1279 01:19:24,270 --> 01:19:27,150 اس کا ہے جو ہم شہوت انگیز null پوائنٹر محولہ لقب ضبطی کہتے ہیں. 1280 01:19:27,150 --> 01:19:29,710 اور یہ بنیادی طور پر آپ segfault کا سبب بنتا ہے. 1281 01:19:29,710 --> 01:19:31,790 یہ طریقوں آپ segfault کر سکتے ہیں میں سے ایک ہے. 1282 01:19:34,090 --> 01:19:38,090 دیگر بری چیزیں آپ کر سکتے ہیں - اوہ اچھا. 1283 01:19:38,090 --> 01:19:40,650 یہ ایک لوڈ، اتارنا null پوائنٹر محولہ لقب ضبطی کیا گیا تھا. ٹھیک ہے. 1284 01:19:40,650 --> 01:19:45,160 دیگر بری چیزیں - ٹھیک کرنے کے ساتھ ساتھ، کہ آپ صرف وہاں میں چیک لگا 1285 01:19:45,160 --> 01:19:46,980 کہ چیک کرتا ہے کہ آیا پوائنٹر شہوت انگیز null ہے 1286 01:19:46,980 --> 01:19:51,000 اور پروگرام سے باہر سے باہر نکلیں، اگر یہ ہوتا ہے کہ کی malloc شہوت انگیز null پوائنٹر واپس. 1287 01:19:55,110 --> 01:19:59,850 xkcd مزاحیہ ہے. وہ لوگ ہیں جن سے اب یہ سمجھ سکتا ہوں. قسم کی. 1288 01:20:06,120 --> 01:20:09,350 >> تو، میموری. اور میں نے یہ ختم ہو گیا تھا. 1289 01:20:09,350 --> 01:20:12,000 ہم ایک لوپ میں malloc بلا رہے ہیں، لیکن ہر وقت ہے کہ ہم کہتے ہیں malloc 1290 01:20:12,000 --> 01:20:14,370 ہم جہاں اس پوائنٹر اشارہ کر رہا ہے کے ٹریک کو کھو رہے ہیں، 1291 01:20:14,370 --> 01:20:15,750 کیونکہ ہم اسے clobbering رہے ہیں. 1292 01:20:15,750 --> 01:20:18,410 تو، ابتدائی malloc پر کال آپ کے وزٹرز کا ریکارڈ رکھا میموری دیتا ہے یہاں. 1293 01:20:18,410 --> 01:20:19,990 اس سے میری پوائنٹر اشارہ. 1294 01:20:19,990 --> 01:20:23,020 اب، میں اسے آزاد نہیں ہے، لہذا اب میں malloc پھر کہتے ہیں. 1295 01:20:23,020 --> 01:20:26,070 اب یہ یہاں اشارہ ہے. اب میری یاداشت یہاں اشارہ کر رہا ہے. 1296 01:20:26,070 --> 01:20:27,640 یہاں کی طرف اشارہ کرتے ہوئے. یہاں کی طرف اشارہ کرتے ہوئے. 1297 01:20:27,640 --> 01:20:31,820 لیکن میں یہاں کہ میں مختص تمام میموری کے پتے سے ٹریک کھو دیا ہے. 1298 01:20:31,820 --> 01:20:35,100 اور اس طرح اب میں ان کے پاس کوئی حوالہ نہیں ہے اب. 1299 01:20:35,100 --> 01:20:37,230 لہذا، میں اس لوپ سے باہر ان کے آزاد نہیں کر سکتے. 1300 01:20:37,230 --> 01:20:39,390 اور اس کے لئے کچھ اس طرح طے کرنے کے لئے، 1301 01:20:39,390 --> 01:20:42,250 اگر آپ کو مفت میموری بھول جاتے ہیں اور آپ کو اس میموری لیک، 1302 01:20:42,250 --> 01:20:45,810 آپ اس لوپ کے اندر یاد ایک بار آپ نے اس کے ساتھ کیا کیا کر رہے ہیں آزاد ہے. 1303 01:20:45,810 --> 01:20:51,400 ٹھیک ہے، یہ ہے کیا ہوتا ہے. مجھے معلوم ہے کہ تم میں سے بہت سے اس سے نفرت ہے. 1304 01:20:51,400 --> 01:20:55,270 لیکن اب - yay! آپ کے پاس 44،000 کلو بائٹ کی طرح ملتا ہے. 1305 01:20:55,270 --> 01:20:57,110 تو، آپ کو لوپ کے آخر میں آزاد، 1306 01:20:57,110 --> 01:20:59,770 اور یہ کہ یاد ہر وقت آزاد ہو رہا ہے. 1307 01:20:59,770 --> 01:21:03,620 بنیادی طور پر، آپ کا پروگرام میموری لیک نہیں ہے اب. 1308 01:21:03,620 --> 01:21:08,150 >> اور اب کچھ اور آپ کر سکتے ہیں ہے، کچھ میموری آزاد ہے کہ آپ نے دو مرتبہ کے لیے کہا ہے. 1309 01:21:08,150 --> 01:21:11,060 اس صورت میں، آپ کو malloc کچھ، آپ کو اس کی قدر تبدیل. 1310 01:21:11,060 --> 01:21:13,140 آپ یہ مفت ایک بار کیونکہ تم نے کہا تھا کہ تم اس کے ساتھ کیا کیا گیا ہے. 1311 01:21:13,140 --> 01:21:14,940 لیکن پھر ہم نے اسے پھر سے آزاد کر دیا. 1312 01:21:14,940 --> 01:21:16,730 یہ کچھ ہے جو بہت بری بات ہے ہے. 1313 01:21:16,730 --> 01:21:18,820 یہ ابتدائی طور پر segfault نہیں ہے، 1314 01:21:18,820 --> 01:21:23,350 لیکن ایک کے بعد، یہ کیا ہے ڈبل اس corrupts آپ کے ڈھیر ڈھانچے آزاد ہوئے 1315 01:21:23,350 --> 01:21:27,200 اور آپ کو اس کے بارے میں تھوڑا سا مزید جاننے کے لئے اگر آپ CS61 کی طرح ایک کلاس لینے کا انتخاب کریں گے. 1316 01:21:27,200 --> 01:21:30,000 لیکن بنیادی طور پر ایک کے بعد جبکہ آپ کے کمپیوٹر الجھن میں ہو جا رہا ہے 1317 01:21:30,000 --> 01:21:33,010 کیا میموری مقامات ہیں کہاں اور کہاں یہ محفوظ ہے کے بارے میں - 1318 01:21:33,010 --> 01:21:34,800 اعداد و شمار کی یاد میں کہاں جاتی ہے. 1319 01:21:34,800 --> 01:21:38,080 اور اس پوائنٹر آزاد دو مرتبہ ایک بری چیز ہے جو آپ کو نہیں کرنا چاہتا ہے. 1320 01:21:38,080 --> 01:21:41,600 >> دیگر چیزیں جو کہ غلط جا سکتے ہیں sizeof کا استعمال نہیں ہے. 1321 01:21:41,600 --> 01:21:44,460 تو، آپ کو اس کیس میں 8 بائٹس malloc 1322 01:21:44,460 --> 01:21:46,700 اور یہ کہ دو integers کے طور پر ایک ہی بات ہے، ہے نا؟ 1323 01:21:46,700 --> 01:21:49,580 تو، یہ بالکل محفوظ ہے، لیکن یہ ہے کہ یہ ہے؟ 1324 01:21:49,580 --> 01:21:52,160 ٹھیک ہے، کے طور پر مختلف architectures پر لوکاس کے بارے میں بات کی، 1325 01:21:52,160 --> 01:21:54,220 integers مختلف لمبائی کے ہیں. 1326 01:21:54,220 --> 01:21:57,970 لہذا، آلے ہے کہ آپ استعمال کر رہے ہیں، integers کے بارے میں 4 بائٹس ہیں، 1327 01:21:57,970 --> 01:22:02,370 لیکن وہ کسی دوسرے نظام 8 بائٹس یا انہوں نے 16 بائٹس ہو سکتا ہے کر سکتے ہیں. 1328 01:22:02,370 --> 01:22:05,680 لہذا، اگر میں یہاں صرف اس نمبر کا استعمال، 1329 01:22:05,680 --> 01:22:07,310 اس پروگرام کے آلے پر کام ہو سکتا ہے، 1330 01:22:07,310 --> 01:22:10,360 لیکن یہ کسی دوسرے نظام پر کافی میموری مختص نہیں ہے. 1331 01:22:10,360 --> 01:22:14,020 اس صورت میں، یہ وہی ہے جو sizeof آپریٹر کے لئے استعمال کیا جاتا ہے. 1332 01:22:14,020 --> 01:22:16,880 جب ہم کہتے ہیں (int) sizeof، اس کا کیا ہے 1333 01:22:16,880 --> 01:22:21,910  یہ ہمارے نظام ہے جو کہ پروگرام چلا رہا ہے ایک عددی کے سائز فراہم کرتا ہے. 1334 01:22:21,910 --> 01:22:25,490 تو، اس صورت میں، (int) sizeof 4 آلات کی طرح کچھ واپس آ جائیں گے، 1335 01:22:25,490 --> 01:22:29,980 اور اب یہ مرضی 4 2 *، جو 8 ہے، 1336 01:22:29,980 --> 01:22:32,330 جس میں صرف دو integers کے لئے ضروری جگہ کی رقم ہے. 1337 01:22:32,330 --> 01:22:36,710 ایک مختلف نظام پر، اگر ایک int 16 بائٹس یا 8 بائٹس کی طرح ہے، 1338 01:22:36,710 --> 01:22:39,380 یہ صرف کافی بائٹس اس رقم کو محفوظ کرنے کے واپس جا رہا ہے. 1339 01:22:41,830 --> 01:22:45,310 >> اور آخر میں، structs. 1340 01:22:45,310 --> 01:22:48,340 تو، اگر آپ کو یاد میں ایک سڈوکو بورڈ جمع کرنا چاہتے تھے، ہم اس کس طرح کر سکتا ہے؟ 1341 01:22:48,340 --> 01:22:51,570 تم پہلی چیز کے لئے ایک متغیر کی طرح لگتا ہے ہو سکتا ہے، 1342 01:22:51,570 --> 01:22:53,820 دوسری بات کے لئے ایک متغیر، تیسری بات کے لئے ایک متغیر، 1343 01:22:53,820 --> 01:22:56,420 برا، ٹھیک ہے - چوتھی بات کے لئے ایک متغیر ہے؟ 1344 01:22:56,420 --> 01:23:00,750 لہذا، ایک بہتر بنانے کے آپ کو اس کے سب سے اوپر پر کر سکتے ہیں ایک 9 X 9 صف بنانا ہے. 1345 01:23:00,750 --> 01:23:04,480 یہ ٹھیک ہے، لیکن اگر آپ سڈوکو بورڈ کے ساتھ دیگر چیزوں کے مربوط کرنا چاہتا تھا 1346 01:23:04,480 --> 01:23:06,490 پسند ہے کہ بورڈ کے مشکل ہے، 1347 01:23:06,490 --> 01:23:11,740 یا، مثال کے طور پر، آپ کا سکور کیا ہے، یا کتنا وقت آپ کو یہ بورڈ کو حل کرنے کے لئے لیا ہے؟ 1348 01:23:11,740 --> 01:23:14,970 ٹھیک ہے، جو آپ کر سکتے ہیں ہے کہ آپ کو ایک struct تشکیل دے سکتے ہیں. 1349 01:23:14,970 --> 01:23:18,910 میں بنیادی طور پر کہہ رہا ہوں میں یہاں پر اس کی ساخت کی وضاحت کر رہا ہوں، 1350 01:23:18,910 --> 01:23:23,230 اور میں نے ایک سڈوکو بورڈ کی وضاحت کر رہا ہوں جو بورڈ ہے جو 9 X 9 پر مشتمل ہے. 1351 01:23:23,230 --> 01:23:26,650 >> اور کیا ہے کہ سطح کے نام پر اشارہ ہے. 1352 01:23:26,650 --> 01:23:30,730 یہ بھی X اور Y، جو جہاں میں ابھی ہوں نقاط ہیں. 1353 01:23:30,730 --> 01:23:35,980 یہ بھی وقت [unintelligible] خرچ کیا ہے، اور یہ حرکت میں اب تک inputted ہے کی کل تعداد ہے. 1354 01:23:35,980 --> 01:23:40,010 اور تو اس صورت میں، میں صرف ایک ڈھانچہ میں ڈیٹا کا ایک مکمل جھوبڈ گروپ کر سکتے ہیں 1355 01:23:40,010 --> 01:23:42,790 کے ارد گرد مختلف متغیر کی طرح اڑ میں ہونے کے بجائے 1356 01:23:42,790 --> 01:23:44,540 ہے کہ میں واقعی میں ٹریک نہیں رکھ سکتے ہیں. 1357 01:23:44,540 --> 01:23:49,720 اور اس کی اجازت دیتا ہے ہے ہمیں صرف اس struct کے اندر مختلف چیزوں کے حوالہ قسم کی کے لئے اچھا نحو ہے. 1358 01:23:49,720 --> 01:23:53,430 میں board.board صرف کرنا، کر سکتے ہیں اور میں سڈوکو بورڈ کو واپس ملتا ہے. 1359 01:23:53,430 --> 01:23:56,320 Board.level، مجھے کتنا مشکل ہے. 1360 01:23:56,320 --> 01:24:00,540 Board.x اور board.y کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے جہاں میں بورڈ میں ہو سکتا ہے نقاط دے. 1361 01:24:00,540 --> 01:24:04,730 اور اس میں تک رسائی حاصل ہے جو ہم کہتے ہیں struct میں خانوں رہا ہوں. 1362 01:24:04,730 --> 01:24:08,840 یہ sudokuBoard، جس میں ایک قسم ہے کہ میں وضاحت کرتا ہے. 1363 01:24:08,840 --> 01:24:14,800 اور اب ہم یہاں ہیں. میں قسم sudokuBoard "بورڈ" کے نام سے متغیر ہے. 1364 01:24:14,800 --> 01:24:18,820 اور اس طرح اب میں تمام شعبوں تک رسائی حاصل کر سکتے ہیں کہ یہاں بنا یہ ساخت. 1365 01:24:20,830 --> 01:24:22,450 >> structs کے بارے میں کوئی بھی سوال ہے؟ جی ہاں؟ 1366 01:24:22,450 --> 01:24:25,890 int X، Y [Student کی]، آپ کو ایک ہی لائن میں اعلان کیا دونوں؟ >> [جوزف] اہ ہہ. 1367 01:24:25,890 --> 01:24:27,400 [Student کی] تو، صرف تم ان میں سے سب کے ساتھ ایسا کر سکتا ہے؟ 1368 01:24:27,400 --> 01:24:31,200 X کی طرح، Y کوما اوقات کل کہ؟ 1369 01:24:31,200 --> 01:24:34,460 [جوزف] جی ہاں، آپ اس بات کو یقینی طور، لیکن وجہ ہے کہ میں نے ایک ہی لائن پر X اور Y ڈال سکتا ہے - 1370 01:24:34,460 --> 01:24:36,330 اور سوال یہ ہے کہ ہم ایک ہی لائن پر ایسا کر سکتے ہیں؟ 1371 01:24:36,330 --> 01:24:38,600 ہم ایک ہی لائن پر کیوں نہیں کرتے ان میں سے سب ڈال دیا ہے 1372 01:24:38,600 --> 01:24:42,090 X اور Y ایک دوسرے سے جڑے ہوئے ہیں، 1373 01:24:42,090 --> 01:24:44,780 اور یہ تو صرف stylistically زیادہ درست ہے، ایک طرح سے، 1374 01:24:44,780 --> 01:24:46,600 کیونکہ یہ ایک ہی لائن پر دو چیزوں گروہ بندی کر رہا ہے 1375 01:24:46,600 --> 01:24:49,340 اس طرح طرح کی ایک ہی بات سے متعلق ہے. 1376 01:24:49,340 --> 01:24:51,440 اور میں نے صرف ان کے علاوہ علیحدہ. یہ صرف ایک سٹائل کی بات ہے. 1377 01:24:51,440 --> 01:24:53,720 یہ فعل نہیں جو فرق پڑتا ہے. 1378 01:24:58,150 --> 01:24:59,270 structs پر کوئی سوال؟ 1379 01:25:03,030 --> 01:25:06,620 تم ایک struct کے ساتھ ایک Pokédex وضاحت کر سکتے ہیں. 1380 01:25:06,620 --> 01:25:11,720 پوکیمون ایک نمبر ہے اور یہ ایک خط ہے، ایک مالک ایک قسم ہے. 1381 01:25:11,720 --> 01:25:16,990 اور پھر اگر آپ پوکیمون کا ایک صف ہے، آپ کو Pokédex، ٹھیک ہے کر سکتے ہیں؟ 1382 01:25:16,990 --> 01:25:20,810 ٹھیک ہے ڈاؤن لوڈ، اتارنا،. تو، structs سوال ہیں. وہ structs سے متعلق ہیں. 1383 01:25:20,810 --> 01:25:25,270 >> آخر میں، GDB. کیا GDB آپ کو کیا کرتا ہے؟ یہ اجازت دیتا ہے آپ کو اپنے پروگرام کو ڈیبگ. 1384 01:25:25,270 --> 01:25:27,650 اور اگر تم GDB کو استعمال نہیں کیا ہے، میں نے سفارش کی مختصر دیکھ 1385 01:25:27,650 --> 01:25:31,250 اور کیا GDB ہے زائد جا، کس طرح تم اس کے ساتھ کام کرتے ہیں، کہ آپ کس طرح اس کا استعمال کر سکتے ہیں، 1386 01:25:31,250 --> 01:25:32,900 اور یہ پروگرام کی جانچ. 1387 01:25:32,900 --> 01:25:37,400 اور اس وجہ سے ہے جو GDB کی اجازت دیتا ہے تم کرتے ہو [unintelligible] اپنے پروگرام کو روکنے کی مدد سے 1388 01:25:37,400 --> 01:25:38,920 اور ایک عملی لائن. 1389 01:25:38,920 --> 01:25:42,600 مثال کے طور پر، میں نے اپنے پروگرام کے 3 لائن کی طرح کو روکنے پر عملدرآمد کرنا چاہتے ہیں، 1390 01:25:42,600 --> 01:25:46,010 اور جب میں 3 لائن پر ہوں میں تمام اقدار جو وہاں ہیں پرنٹ کر سکتے ہیں. 1391 01:25:46,010 --> 01:25:49,710 اور اس طرح جو ہم کہتے ہیں کی طرح ایک سطر میں روک 1392 01:25:49,710 --> 01:25:52,350 ہمیں کال یہ اس لائن پر توڑ مقام ڈال 1393 01:25:52,350 --> 01:25:55,920 اور پھر ہم باہر اس وقت میں پروگرام کی حالت میں متغیر کو پرنٹ کر سکتے ہیں. 1394 01:25:55,920 --> 01:25:58,990 >> ہم سے تو اس لائن کی طرف سے لائن پروگرام کے ذریعے قدم کر سکتے ہیں. 1395 01:25:58,990 --> 01:26:03,200 اور پھر ہم اس وقت اسٹیک کی حالت میں دیکھ سکتے ہیں. 1396 01:26:03,200 --> 01:26:08,600 اور اس کے لئے GDB، ہم کیا کرتے ہیں ہم C فائل بجنا فون استعمال کرنے کے لئے، 1397 01:26:08,600 --> 01:26:11,290 لیکن ہم نے اسے ggdb کے پرچم کو منتقل ہے. 1398 01:26:11,290 --> 01:26:15,850 اور ایک بار ہم نے اس کے ساتھ ہم نتیجے میں آؤٹ پٹ فائل صرف gdb چلانے رہے ہیں. 1399 01:26:15,850 --> 01:26:18,810 اور اس لئے تم اس طرح متن میں سے کچھ کی طرح بڑے پیمانے پر حاصل 1400 01:26:18,810 --> 01:26:21,990 لیکن حکم میں واقعی تمہیں کیا کرنا ہے شروع میں ٹائپ ہے. 1401 01:26:21,990 --> 01:26:24,250 اہم توڑ کے مرکزی میں توڑ مقام رکھتا ہے. 1402 01:26:24,250 --> 01:26:28,470 400 لائن کے ارد گرد 400 کی فہرست کوڈ کی لائنوں کی فہرست ہے. 1403 01:26:28,470 --> 01:26:31,410 اور اس لئے تم اس کیس میں چاروں طرف صرف اور کہتے ہیں، دیکھو کر سکتے ہیں اوہ، 1404 01:26:31,410 --> 01:26:34,360 میں 397 لائن پر توڑ مقام، جس میں اس لائن ہے مقرر کرنا چاہتے ہیں، 1405 01:26:34,360 --> 01:26:37,170 اور پھر اپنے پروگرام اس قدم میں چلتا ہے اور اس کو توڑنے جا رہا ہے. 1406 01:26:37,170 --> 01:26:41,120 یہ وہاں روکنا جا رہا ہے، اور آپ کو مثال کے طور پر پرنٹ، کم یا زیادہ کی قدر کر سکتے ہیں. 1407 01:26:41,120 --> 01:26:46,410 اور اس حکم آپ کو جاننے کی ضرورت کا ایک گروپ ہے، 1408 01:26:46,410 --> 01:26:48,660 اور اس سلائیڈ شو کی ویب سائٹ پر جائیں گے، 1409 01:26:48,660 --> 01:26:54,000 اگر ایسا ہے تو آپ کو صرف ان کا حوالہ کرنا چاہتے ہیں یا پسند اپنے دھوکے باز شیٹ پر ڈال، بلا جھجھک. 1410 01:26:54,000 --> 01:27:00,650 >> ڈاؤن لوڈ، اتارنا. اس کوئز 0 جائزہ تھا، اور ہم اس کے ارد گرد رہنا اگر آپ کے ذہن میں کوئی سوالات ہیں کریں گے. 1411 01:27:00,650 --> 01:27:03,850 ٹھیک ہے. 1412 01:27:03,850 --> 01:27:09,030 >>  [تعریف] 1413 01:27:09,030 --> 01:27:13,000 >> [CS50.TV]