روب Bowden: ہیلو، میں، روب Bowden ہوں اور چلو quiz0 بارے میں بات کریں. لہذا، پہلا سوال. یہ سوال کہاں ہے آپ تعداد کوڈ کے لئے ضرورت بائنری بلب میں 127. اگر تم چاہتے تھے، آپ کر سکتے تھے باقاعدہ تبادلوں اعشاری سے بائنری، bi-- یا سے. لیکن ہے کہ شاید ہو رہا ہے وقت کی ایک بہت لینے کے لئے. میں تم سے یہ پتہ لگا سکتا ہے، مطلب، OK، 1، وہاں میں ہے، 2 میں ہے 4 وہاں میں، 8 وہاں میں ہے. آسان راستہ، 127 128 مائنس ایک ہے. یہی کہ leftmost روشنی بلب 128 بٹ ہے. لہذا 127 صرف تمام واقعی ہے دیگر روشنی بلب کی، کہ کہ leftmost کے بعد روشنی بلب مائنس 1. کہ اس سوال کے لئے ہے. سوال. 3 بٹس کے ساتھ تو آپ کر سکتے ہیں 8 مختلف اقدار کی نمائندگی. کیوں، اس کے بعد، سب سے بڑا غیر منفی 7 ہے آپ کی نمائندگی کرسکتے ہیں دشملو عددی؟ ویسے، اگر ہم صرف یہ کر سکتے ہیں 8 مختلف اقدار کی نمائندگی، پھر کیا ہم کرنے جا رہے ہیں کی نمائندگی 7 ذریعے 0 ہے. 0 اقدار میں سے ایک تک لے جاتا ہے. سوال دو. ن بٹس کے ساتھ، کس طرح بہت سے الگ اقدار آپ کی نمائندگی کر سکتے ہیں؟ لہذا، ن بٹس کے ساتھ، آپ کو 2 ہے ہر ایک تھوڑا سا کے لئے ممکن اقدار. تو ہم 2 ممکن اقدار کے لئے ہونا پہلا سا، 2 ممکنہ اقدار دوسرے کے لئے، 2 تیسرے کے لئے ممکن. اور تو ہے کہ 2 بار 2 بار 2، اور بالآخر جواب ن 2 ہے. سوال تین. بائنری میں 0x50 کیا ہے؟ لہذا شش اعشاری ایک بہت ہے کہ یاد بائنری سیدھا تبادلوں. تو یہاں، ہم صرف دیکھنے کی ضرورت 5 اور آزادانہ 0. تو بائنری میں 5 کیا ہے؟ 0101، کہ 1 بٹ اور 4 سا ہے. بائنری میں 0 کیا ہے؟ مشکل نہیں. 0000. تو صرف انہیں اکٹھا رکھا تھا، اور اس بائنری میں مکمل تعداد ہے. 01010000. تم چاہتے تھے اور اگر آپ کر سکتے تھے کہ کہ leftmost صفر اتار. یہ غیر متعلقہ ہے. تو پھر متبادل طور پر، دشملو میں 0x50 کیا ہے؟ تم چاہتے تھے تو آپ نہیں ہیں تو، آپ کو could-- بائنری کے ساتھ زیادہ آرام دہ، اگر آپ اس بائنری جواب لے سکتا ہے اور دشملو میں ہے کہ تبدیل. یا ہم صرف یاد کر سکتے ہیں کہ شش اعشاری. 0 تا کہ 0 ویں جگہ میں ہے، اور 5 سب سے پہلے جگہ کے لئے 16 میں ہے. تو یہاں، ہم پر 5 بار 16 ہے پہلا، صفر کے علاوہ 0 اوقات 16، 80 ہے. اور اگر تم کو دیکھا تو سوال کا عنوان، یہ ایک کی طرح تھا جس میں CS 80، تھا اس مسئلہ کا جواب اشارہ. سوال پانچ. ہم جو ہے، اس سکریچ سکرپٹ ہے 4 بار مونگفلی کا مکھن جیلی دہرا. تو کس طرح ہم سی کوڈ اب ایسا کریں؟ ٹھیک ہے، ہم یہاں جرات مندانہ میں حصہ ہے آپ کو نافذ کرنے کے لئے تھا صرف ایک حصہ ہے. تو ہم 4 کہ looping ایک 4 لوپ ہے اوقات، printf کا کنڈ مونگفلی کا مکھن جیلی، نئی لائن کے ساتھ مسئلہ کے لئے پوچھتا ہے کے طور پر. سوال چھ، ایک اور سکریچ مسئلہ. ہم ہمیشہ کے لئے لوپ میں ہیں کہ دیکھیں. ہم متغیر میں کہہ رہے ہیں اور پھر 1 کی طرف سے میں incrementing. اب ہم سی میں موجود ہیں ایسا کرنا چاہتے ہیں ہم یہ کر سکتا تھا ایک سے زیادہ طریقوں. یہاں ہم نے کوڈ کو کیا ہوا تھوڑی دیر (صحیح) کے طور پر ہمیشہ کے لئے لوپ. تو ہم صرف، متغیر میں اعلان جیسے ہم نے شروع میں متغیر میں دیکھا گیا. متغیر میں اعلان کریں، اور ہمیشہ کے لئے (صحیح) جبکہ، ہم متغیر میں کہنا. printf کے٪ میں ... یا آپ کو٪ ڈی کا استعمال کیا ہے تاکہ. ہم اس متغیر کہتے ہیں، اور پھر یہ اضافہ، میں + +. سوال سات. اب ہم بہت ہی اسی طرح کچھ کرنا چاہتے ہیں ماریو ڈاٹ سی پر مسئلہ سے ایک قائم. ہم ان hashtags کے پرنٹ کرنا چاہتے ہیں، ہم ایک پانچ پرنٹ کرنا چاہتے ہیں ان hashes کی تین مستطیل کی طرف سے. تو ہم کس طرح ایسا کرنے کے لئے جا رہے ہیں؟ ٹھیک ہے، ہم آپ کو ایک مکمل دے کوڈ کا جتھا، اور آپ کو صرف پرنٹ گرڈ تقریب میں بھرنے کے لئے ہے. تو کیا ہوا PrintGrid طرح لگتی ہے؟ ویسے آپ کو ماضی ہیں چوڑائی اور اونچائی. تو ہم نے ایک بیرونی ہے 4 لوپ، کہ looping ہے اس کی قطاروں میں سے سب سے زیادہ ہم باہر پرنٹ کرنے کے لئے چاہتے ہیں کہ گرڈ. پھر ہم، بین اندر در اندر 4 لوپ ہے کہ ہر کالم زائد چھپائی ہے. تاکہ ہر صف کے لئے، ہم نے کے لئے پرنٹ ہر کالم، ایک واحد ہیش. پھر قطار کے آخر میں ہم پرنٹ ایک سنگل نئی لائن اگلی صف میں جانے کے لئے. اور یہ کہ پورے گرڈ کے لئے ہے. سوال آٹھ. PrintGrid طرح ایک تقریب سے کہا جاتا ہے ایک واپسی کی ایک ضمنی اثر ہے، لیکن نہیں قدر. امتیاز سمجھاو. تو یہ آپ کو یاد پر انحصار کرتا ہے ایک ضمنی اثر ہے کیا. ویسے، ایک واپسی value-- ہم PrintGrid نہیں کرتا جانتے بعد، واپسی کی قیمت ہے یہیں پر یہ باطل کہتا ہے. باطل کو واپس کرتا ہے تا کہ کسی بھی چیز واقعی کچھ واپس نہیں کرتا. لہذا ضمنی اثر کیا ہے؟ ٹھیک ہے، ایک طرف اثر ہے قسم کے برقرار رہتا ہے کہ کسی بھی چیز تقریب ختم ہونے کے بعد کہ، صرف واپس نہیں تھا اور یہ صرف آدانوں سے نہیں تھا. لہذا مثال کے طور پر، ہم شاید کیا ایک عالمی متغیر کو تبدیل. کہ ایک طرف اثر ہو جائے گا. اس خاص معاملے میں، ایک بہت اہم ضمنی اثر سکرین پر چھپائی ہے. تو یہ ایک ضمنی اثر ہے کہ PrintGrid ہے. ہم سکرین پر ان چیزوں کو پرنٹ. اور کیا آپ کے بارے میں سوچ کر سکتے ہیں کہ ایک طرف اثر کے طور پر، کہ کچھ ہے کے بعد سے کہ اس تقریب ختم ہونے کے بعد بھی برقرار رہتا. کہ دائرہ کار سے باہر کچھ ہے اس تقریب کی کہ آخر تبدیل کر دیا جا رہا ہے، سکرین کے مندرجات. سوال نو. ، ذیل میں دیئے گئے پروگرام پر غور جس لائن نمبروں پر کے لئے شامل کیا گیا ہے بحث کی خاطر. اس پروگرام میں تو ہم صرف ہیں ذخیرہ کرنے، GetString فون اس متغیر کی میں، اور اس کے بعد اس متغیر کی پرنٹنگ. OK. لائن ایک موجود ہے تو یہی وجہ کی وضاحت. # شامل CS50 ڈاٹ ح. کیوں ہم CS50 ڈاٹ H # شامل کی ضرورت ہے؟ ویسے ہم بلا رہے ہیں تقریب GetString، اور GetString بیان کیا جاتا ہے CS50 لائبریری میں. ہمارے پاس نہیں کیا اگر ایسا ہے # شامل CS50 ڈاٹ H، ہم کہ شامل اعلان ملے گا GetString تقریب خرابی کی سنکلک سے. تو ہم نے لائبریری میں شامل کرنے کی ضرورت ہم ہیڈر فائل میں شامل کرنے کی ضرورت ہے، ورنہ سنکلک نہیں کریں گے GetString کی موجود ہے کہ تسلیم کرتے ہیں. لائن دو موجود ہے کیوں کی وضاحت. تو معیاری IO ڈاٹ ح. یہ بالکل ایسا ہی ہے سابقہ ​​مسئلہ کے طور پر، بجائے کے ساتھ نمٹنے کے سوائے GetString کے، ہم printf کے بارے میں بات کر رہے. ہم نے کی ضرورت نہیں کہا تو اگر معیاری IO ڈاٹ H شامل کرنے، پھر ہم قابل نہیں ہو گی printf تقریب کو استعمال کرنے کے، سنکلک کیونکہ اس کے بارے میں پتہ نہیں کریں گے. Why-- مفہوم کیا ہے کی لائن چار میں باطل؟ تو یہاں ہم int اہم (باطل) ہے. کہ صرف اس لئے کہ ہم کہہ رہا ہے کسی بھی کمانڈ لائن نہیں ہو رہے ہیں اہم دلائل. ہم int کہہ سکتے ہیں یاد رکھیں کہ اہم int argc سٹرنگ argv بریکٹ. لہذا ہم یہاں صرف ہم کہنے کو باطل کہنا کمانڈ لائن کے دلائل کو نظر انداز کر رہے ہیں. بالکل وہی، میموری کے لئے احترام کے ساتھ، اس بات کی وضاحت لائن میں کیا GetString کے چھ ریٹرن. GetString کی ایک بلاک واپس آ رہا ہے میموری، حروف کی ایک سرنی. یہ واقعی میں ایک واپس آ گیا ہے پہلے کردار پوائنٹر. ایک تار ایک چار ستارہ ہے یاد رکھیں کہ. لہذا پہلا پوائنٹر ہے کردار جو کچھ بھی میں تار ہے صارف کی بورڈ میں داخل ہوا. اور یہ کہ میموری malloced کر رکھا جائے ہوتا، اتنی کہ میموری ڈھیر میں ہے. سوال 13. ذیل کے پروگرام پر غور. تو یہ سب پروگرام کر رہی ہے 10 سے 1 تقسیم printf کا کنڈ جاتا. لہذا جب مرتب اور پھانسی دے دی، اس پروگرام نتائج 0.0، اگرچہ 10 سے 1 تقسیم 0.1 ہے. تو کیوں یہ 0.0 ہے؟ ٹھیک ہے، اس کی وجہ یہ ہے عددی ڈویژن کے. تو 1 ایک عددی 10 ایک عدد صحیح ہے، ہے. پس 1 10، ہر چیز کی طرف سے تقسیم integers کے طور پر سلوک کیا جاتا ہے، اور C میں، ہم عددی ڈویژن کرتے ہیں جب، ہم کسی بھی اعشاریہ تراش. پس 1 10 سے جاتا منقسم 0، اور پھر ہم کوشش کر رہے ہیں تاکہ، ایک فلوٹ کے طور پر اس کو پرنٹ کرنے کے ایک فلوٹ کے طور پر پرنٹ صفر 0.0 ہے. ہم 0.0 ملے اور یہی وجہ ہے کہ ہے. ذیل کے پروگرام پر غور. اب ہم 0.1 چھپائی رہے ہیں. تاکہ کوئی عددی ڈویژن، ہم صرف، 0.1 چھپائی رہے ہیں لیکن ہم اس چھپائی رہے ہیں 28 اعشاری مقامات پر. اور ہم اس 0،1000، ایک پوری چڑھانے ملے zeros کی، 5 5 5، بلاہ بلاہ بلاہ. یہ کرتا ہے کہ کیوں تو یہاں سوال یہ ہے بجائے بالکل کے 0.1 کے، کہ پرنٹ؟ تو یہاں وجہ اب ہے نقاط imprecision تیرتا. ایک فلوٹ صرف 32 بٹس ہے یاد رکھیں کہ. تو ہم صرف ایک محدود تعداد میں نمائندگی کر سکتے ہیں کے ان لوگوں کو 32 کے ساتھ نقطہ اقدار تیرتا بٹس. ویسے بالآخر لامتناہی نہیں ہے بہت سے چل نقاط کے اقدار، اور تیرتے infinitely کئی وہاں ہے 0 اور 1 کے درمیان میں نقطہ اقدار، اور ہم نے واضح طور پر کرنے کے قابل ہیں اس سے بھی زیادہ اقدار کی نمائندگی. تو ہم کو قربانیاں بنانے کے لئے ہے سب سے زیادہ اقدار کی نمائندگی کرنے کے قابل ہو. لہذا 0.1 طرح ایک قدر، بظاہر ہم کہ بالکل کی نمائندگی نہیں کر سکتے ہیں. تو بجائے 0.1 کی نمائندگی کرنے کا ہم کرتے ہیں بہترین ہم اس 0.100000 5 5 نمائندگی کر سکتے ہیں 5. اور یہ کہ، بہت قریب ہے لیکن ایپلی کیشنز کی ایک بہت کچھ کے لئے آپ کے بارے میں فکر کرنے کی ضرورت نقاط imprecision تیرتا، ہم صرف کی نمائندگی نہیں کر سکتے کیونکہ سب بالکل پوائنٹس تیرتا. سوال 15. نیچے دیا گیا کوڈ غور. ہم نے صرف 1 1 پلس چھپائی رہے ہیں. تو یہاں کوئی چال ہے. 1 پلس 1 سے 2 کی تشخیص کرتا ہے، اور پھر ہم اس چھپائی رہے ہیں. یہ صرف 2 پرنٹس. سوال 16. اب ہم کردار چھپائی رہے ہیں 1 پلس کردار 1. تو یہ کیوں نہیں کرتا ایک ہی بات کو پرنٹ؟ ویسے کردار 1 پلس کردار 1، کردار 1 ASCII قیمت 49 ہے. تو کیا یہ سچ کہہ 49 پلس 49، اور کیا جاتا ہے بالآخر اس 98 پرنٹ جا رہا ہے. تو کیا یہ 2 پرنٹ نہیں کرتا. سوال 17. نفاذ کو مکمل کریں اس طرح میں ذیل میں کی طاق تقریب صحیح واپس اگر کہ ن بھی ہے، اگر (ن) عجیب اور باطل ہے. یہ ایک عظیم مقصد ہے جدید آپریٹر کے لئے. تو ہم اپنے دلیل ن لے، ن جدید 2 اچھی طرح 1، برابر ہے کہ (ن) تقسیم کیا مطلب ہے کہ 2 کی طرف سے باقی تھا. ن 2 سے تقسیم کرتے ہیں تو، ایک باقی تھا کہ ن عجیب ہے، تاکہ ہم سچ واپس کا مطلب ہے کہ. نہیں تو ہم جھوٹے واپس. تم نے بھی 2 برابر جدید ن کر سکتا تھا صفر، باقی، جھوٹے واپس سچ واپس. ذیل میں پنراورتی تقریب کے بارے میں غور. (ن) ہے تو اگر اس سے کم یا 1 واپس، 1 کے برابر، ن مائنس 1 چ ورنہ واپسی ن اوقات. تو کیا یہ کام ہے؟ ٹھیک ہے، یہ صرف ہے جز ضربیہ تقریب. یہ اچھی طرح سے نمائندگی کر رہا ہے ن ضربیہ طور. تو اب میں 19 سوال، ہم چاہتے ہیں اس پنراورتی تقریب لینے. ہم اسے تکراری بنانا چاہتے ہیں. تو ہم کس طرح یہ کر سکتا ہوں؟ ویسے عملے کے لئے حل، اور میں دوبارہ وہاں ہے تم نے کیا کیا ہو سکتا تھا ایک سے زیادہ طریقوں ، ہم اس int مصنوعات کے ساتھ شروع ہے کہ 1 برابر. اور اس پورے لوپ کے لئے، ہم جا رہے ہیں بالآخر لئے مصنوعات ضرب جا کرنے مکمل ضربیہ ساتھ ختم. int کے لئے اگر میں 2 برابر لہذا، میں ہے سے کم یا (ن) کے برابر، میں + +. اگر میں 2 برابر آپ کیوں سوچ سکتا ہے. ٹھیک ہے، ہم کرنے کے لئے ہے کہ یہاں یاد ہماری بنیاد بات درست ہے بات کو یقینی بنانا. ن سے کم یا برابر ہے تو اگر 1 سے، ہم صرف 1 واپس لوٹنے رہے. اگر میں 2 برابر میں یہاں پر تو، ہم شروع. ویسے اگر میں 1، تھے تو پھر the-- یا ن لوپ کے لئے اس کے بعد 1، تھے تو بالکل عملدرآمد نہیں کریں گے. اور ہم صرف کریں گے 1 ہے، جس کی واپسی کی مصنوعات،. اسی طرح، اگر (ن) تھے سے کم کچھ نہیں 1-- یہ 0، تھے تو منفی 1، جو کچھ بھی ہم اب بھی، 1 واپس لوٹنے چاہتے جس بالکل وہی جو ہے پنراورتی ورژن کر رہا ہے. اب، (ن) زیادہ ہے تو 1 سے، پھر ہم جا رہے ہیں کم از کم ایک ایسا کرنے کا اس لوپ کے iteration کے. تو پھر اگر ہم ہیں، کے این 5 ہے کہنے دو مصنوعات کی اوقات کیا کرنے جا 2 برابر. تو اب کی مصنوعات 2 ہے. اب ہم کیا کرنے جا رہے مصنوعات کی ضرب 3 برابر ہے. اب یہ 6 ہے. پروڈکٹ اوقات اب یہ 24 ہے، 4 کے برابر ہے. پروڈکٹ اوقات اب یہ 120 ہے، 5 برابر ہے. تو پھر بالآخر، ہم واپس لوٹنے رہے درست طریقے سے 5 جز ضربیہ ہے، جو 120،. سوال 20. اس سے آپ کو بھرنے کے لئے ہے جہاں ایک ہے کسی دیئے الگورتھم کے ساتھ اس کے ٹیبل میں، ہم نے دیکھا ہے کہ کچھ بھی، کہ ان پر algorithmic رن فٹ بیٹھتا ہے اوقات ان asymptotic رن کے اوقات. لہذا ایک الگورتھم کیا ہے 1 اومیگا، لیکن بڑا این اے ہے؟ اتنی لامتناہی وہاں ہو سکتا ہے یہاں بہت سے جوابات. ہم شاید سب سے زیادہ دیکھا ہے کہ کسی ایک اکثر صرف لکیری تلاش ہے. بہترین صورت میں تو منظر نامے، ہم شے کے لئے تلاش میں ہے فہرست کے آغاز اور تو 1 اقدامات کے ومیگا میں، ہم چیک کریں سب سے پہلی چیز، ہم صرف فوری طور پر واپس کہ ہم شے پایا. بدترین حالات میں، شے، آخر میں ہے یا شے میں تمام فہرست میں نہیں ہے. تو ہم نے تلاش کرنے کی ضرورت مکمل فہرست، تمام ن عناصر، اور یہ این اے ہے یہی وجہ ہے. تو اب یہ دونوں ہے کہ کچھ ہے ن لاگ ان ن کے ومیگا، اور ن لاگ ان ن کے بڑے اے. ویسے سب سے زیادہ متعلقہ چیز ہم یہاں دیکھا ضم طرح ہے کیا ہے. تو طرح، یاد ضم، بالآخر تھیٹا ہے تھیٹا بیان کیا جاتا ہے جہاں ن لاگ ان ن، کی اومیگا اور بڑے O دونوں ایک ہی ہیں تو. دونوں ن لاگ ان ن. اومیگا ہے کہ کچھ کیا ہے (ن) کے، اور مربع ن کے O؟ اچھا، پھر وہاں ہے ایک سے زیادہ ممکن جوابات. یہاں ہم بلبلا طرح کہنا ہو. اندراج کی طرح یہاں بھی کام کریں گے. کہ بلبلا طرح یاد رکھیں کہ اصلاح جہاں ہے، آپ کو حاصل کرنے کے قابل ہیں اگر مکمل فہرست کے ذریعے ایسا کرنے کے لئے ضرورت کے بغیر کوئی سویپ، تو، اچھی طرح سے، ہم فوری طور پر اس کو واپس کر سکتے فہرست کے ساتھ شروع کرنے کے لئے کے مطابق کیا گیا. ، سب سے بہتر صورت میں So یہ ن کا صرف ومیگا ہے. یہ صرف ایک اچھی طرح سے نہیں ہے تو ، کے ساتھ شروع کرنے فہرست کے مطابق پھر ہم این اے سویپ مربع ہے. اور آخر میں، ہم انتخاب طرح ہے ن مربع لئے، اومیگا اور بڑے O. دونوں سوال نمبر 21. عددی اتپرواہ کیا ہے؟ ویسے ایک بار پھر، اس سے قبل کے لئے اسی طرح، ہم صرف finitely بہت بٹس ایک عدد صحیح نمائندگی کرنے کے لئے، تو ہو سکتا ہے 32 بٹس. چلو ہم ایک دستخط عددی ہے کا کہنا ہے. پھر بالآخر سب سے زیادہ مثبت عدد ہم نمائندگی کرسکتے ہیں 2 31 مائنس 1. ہم کرنے کی کوشش کریں اگر ایسا ہے تو کیا ہوتا ہے تو اس عددی اضافہ؟ ٹھیک ہے، ہم نے 31 کے لئے 2 سے جانے کے لئے جا رہے ہیں مائنس 1، نیچے منفی 2 کے لئے تمام طریقے 31. تو یہ عددی اتپرواہ آپ incrementing رکھنے جب، اور بالآخر تم نہیں کر سکتے کسی بھی اعلی ہے اور یہ صرف حاصل پورے راستے واپس لپیٹنے ایک منفی قدر کے ارد گرد. ایک بفر اتپرواہ کا کیا؟ تو ایک بفر overflow-- ایک بفر کیا ہے یاد. یہ صرف میموری کا ایک حصہ ہے. ایک صف کی طرح کچھ ایک بفر ہے. تو ایک بفر اتپرواہ جب ہے آپ میموری تک رسائی حاصل کرنے کی کوشش کریں اس صف کے آخر سے باہر. اگر آپ ایک ہیں تو سائز 5 اور تم میں سے سرنی صف بریکٹ تک رسائی حاصل کرنے کی کوشش کریں 5 یا 6 یا بریکٹ بریکٹ 7، اس سے آگے یا کچھ آخر، یا اس سے بھی کچھ بھی below-- صف بریکٹ منفی 1-- ان میں سے سب بفر کناروں سے باہر آ رہے ہیں. تم برے طریقے سے میموری کو چھو رہے. سوال 23. آپ کی ضرورت ہے اس میں سے ایک میں ایسا strlen کی لاگو کرنے کے لئے. اور ہم آپ کو یہ کر سکتے ہیں کہ آپ کو بتا ے، شہوت انگیز null نہیں ہو گا فرض، تاکہ آپ کی ضرورت نہیں ہے شہوت انگیز null کے لئے کسی بھی چیک کرتے ہیں. اور ایک سے زیادہ طریقے ہیں آپ نے یہ کیا کر سکتے تھے. یہاں ہم صرف براہ راست لے. ہم ن، ایک کاؤنٹر کے ساتھ شروع. (ن) ہے وہاں کتنے حروف کی گنتی. تو ہم نے اس کے بعد ہم نے 0 میں شروع، اور مکمل فہرست پر iterate. کے برابر کی بریکٹ 0 ہے شہوت انگیز null مختتم کردار؟ ہم کے لئے تلاش کر رہے ہیں یاد رکھیں شہوت انگیز null مختتم کردار ہماری سٹرنگ ہے کتنی دیر تک کا تعین کرنے کے. کہ ختم کرنے کے لئے کی جا رہی ہے کسی بھی متعلقہ سٹرنگ. تو بریکٹ برابر ہے 0 شہوت انگیز null مختتم لئے کس طرح؟ اگر یہ نہیں ہے، تو ہم کرنے جا رہے ہیں ے بریکٹ 1، ے بریکٹ 2 پر نظر ڈالیں. ہم تک جا رہو شہوت انگیز null مختتم جائے. ہم اسے مل گیا ہے ایک بار، تو N مشتمل تار کی کل لمبائی، اور ہم صرف اس کو واپس کر سکتے. سوال 24. تو یہ ایک ہے جہاں آپ کو تجارت کو بند بنانے کے لئے ہے. تو ایک بات ایک میں اچھا ہے ، لیکن جو طریقہ میں طریقہ یہ برا ہے؟ تو یہاں، ضم طرح کے لئے جاتا ہے بلبلا طرح سے تیز ہو. وہاں، اچھی طرح that-- کہنے کے بعد ایک سے زیادہ جوابات یہاں ہیں. مگر ان میں اہم یہ کہ بلبلا طرح ہے ایک کے مطابق کی فہرست کے لئے (ن) کے ومیگا ہے. ہم صرف پہلے دیکھا کہ میز یاد رکھیں. لہذا بلبلا کے اومیگا قسم ن، سب سے بہتر صورت یہ صرف پر جانے کے لئے کے قابل ہے ہے فہرست میں ایک بار، اس بات کا تعین ارے اس بات کو پہلے سے ہی ہے مطابق کیا، اور واپسی. کوئی بات نہیں، طرح ضم کیا تم کرتے ہو، ن لاگ ان ن کے ومیگا ہے. کے مطابق کی فہرست کے لئے، بلبلا تاکہ قسم کا تیز ہو رہا ہے. اب فہرستوں ہیں کے بارے میں منسلک؟ تاکہ ایک لنک کی فہرست کے بڑھنے اور سکڑ کر سکتے ہیں ضرورت کے مطابق کے طور پر بہت سے عناصر کو فٹ کرنے کے. تاکہ that-- کہنے کے بعد عام طور پر براہ راست مقابلے ایک سے منسلک ہونے جا رہا ہے ایک صف کے ساتھ کی فہرست. تو بھی arrays کے کر سکتے ہیں اگرچہ آسانی سے بڑھنے اور سکڑ کے طور پر بہت سے عناصر فٹ ہونے کے لئے ضرورت کے مطابق، ایک فہرست منسلک ایک صف میں ایک کے مقابلے سرنی رینڈم رسائی ہے. ہم کسی بھی میں انڈیکس کر سکتے ہیں صف کے خاص عنصر. تاکہ ایک لنک کی فہرست کے لئے، ہم نہیں کر سکتے صرف پانچویں عنصر کے پاس جاؤ، ہم شروع سے گزرنا ہے ہم پانچویں عنصر ملتا ہے جب تک. اور اس سے ہم کو روکنے کے لئے جا رہا ہے بائنری تلاش کی طرح کچھ کر رہی. بائنری تلاش کے خطاب کرتے ہوئے، بائنری تلاش لکیری تلاش سے تیز ہو جاتا. that-- کہنے کے بعد تاکہ، ایک ممکن چیز آپ کو بائنری ایسا نہیں کر سکتے ہیں ہے منسلک کی فہرست پر تلاش، آپ صرف arrays پر ایسا کر سکتے ہیں. لیکن شاید زیادہ اہم بات، آپ کو بائنری تلاش نہیں کر سکتے مطابق نہیں ہے کہ ایک صف پر. براہ راست آپ الگ الگ کرنے کی ضرورت ہو سکتی سرنی، اور صرف اس صورت پر کر سکتے ہیں آپ کو بائنری تلاش کرتے ہیں. آپ کی بات نہیں ہے اگر ایسا ہے تو کے ساتھ شروع کرنے کے مطابق، پھر لکیری تلاش تیزی سے ہو سکتا ہے. سوال 27. تو ذیل پروگرام پر غور، جس اگلی سلائڈ میں ہو جائے گا. اور یہ ہم ہیں جہاں سے ایک ہے واضح طور پر بیان کرنے کے لئے کرنا چاہتے ہیں جا مختلف متغیرات کے لئے اقدار. تو کی ہے کہ دیکھو. لہذا ایک ہی لائن. ہم int ایکس 1 برابر ہے. جو کچھ بھی ہوا ہے کہ صرف ایک ہی چیز ہے. تو لائن ایک میں، ہم میں دیکھتے ہمارے میز، کہ y، A، B، اور tmp تمام ہیں تاریکی میں ڈوب گیا. تو ایکس کیا ہے؟ ویسے ہم صرف اسے 1 کے برابر مقرر. اور اس کے بعد، اچھی طرح سے، دو لائن ہم، Y 2 سے مقرر کیا گیا ہے کہ دیکھیں اور ٹیبل پہلے سے ہی ہے ہمارے لیے میں بھرا ہوا. تو ایکس 1 ہے اور Y 2 ہے. اب، لائن تین، اب ہم ہیں سویپ تقریب کے اندر. کیا ہوگا اگر ہم تبادلہ کرنے کی کو منتقل ہوئی؟ ہم کے لئے ایمپرسینڈ ایکس منظور ب کے لئے ایک، اور ایمپرسینڈ Y. کہاں مسئلہ اوائل بیان کیا گیا ہے کہ ایکس کا پتہ 0x10 ہے، اور y کا ایڈریس 0x14 ہے. تو ایک اور ب کے برابر ہیں بالترتیب 0x10 اور 0x14،. اب لائن تین میں، x اور y کیا ہیں؟ ویسے، کچھ بھی نہیں تبدیل کر دیا گیا اس مقام پر X اور Y کے بارے میں. یہاں تک کہ وہ ہو اگرچہ ایک اہم اسٹیک فریم کے اندر، وہ اب بھی ایک ہی ہے اقدار وہ پہلے کیا. ہم کسی بھی میموری سے نظر ثانی نہیں کی ہے. تو ایکس 1 ہے، Y 2 ہے. ٹھیک ہے. تو اب ہم ایک ستارہ کے برابر ہے int tmp کے کہا. تو لائن چار، ہر چیز پر tmp کے علاوہ ایک ہی ہے. ہم کسی بھی اقدار کو تبدیل نہیں کیا ہے tmp کے علاوہ کسی بھی چیز کا. ہم ایک ستارہ کے برابر tmp کے قائم کر رہے ہیں. ستارہ ایک کیا ہے؟ ٹھیک ہے، ایک پوائنٹس x کی، تو ایک ستارہ 1 ہے، جس کے برابر X، میں جا رہی ہے. تو سب کچھ کاپی کیا جاتا ہے نیچے، اور tmp 1 پر متعین ہے. اب اگلی لائن. ستارہ ایک ستارہ ب برابر. تو لائن کی طرف سے پانچ اچھی طرح ایک بار پھر، سب کچھ ستارہ ایک جو کچھ بھی ہے، سوائے ایک ہی ہے. ستارہ ایک کیا ہے؟ ٹھیک ہے، ہم صرف اسٹار ایک ایکس ہے نے کہا. تو ہم برابر کے سٹار بی ایکس تبدیل کر رہے ہیں. سٹار ب کیا ہے؟ Y. Y بی پوائنٹس. لہذا سٹار ب Y ہے. تو ہم، Y ایکس برابر قائم رہے اور سب کچھ ایک ہی ہے. X اب یہ ہے کہ تو ہم اگلی صف میں دیکھنا 2، اور باقی صرف نیچے نقل کئے جاتے ہیں. اب اگلی لائن میں، ستارہ ب tmp برابر. ٹھیک ہے، ہم صرف اسٹار ب Y ہے نے کہا، تا ہم tmp کرنے Y برابر قائم رہے. باقی سب کچھ، ایک ہی ہے تو سب کچھ نیچے کی کاپی ہو جاتا ہے. ہم جو ہے، tmp کے برابر Y قائم کر رہے ہیں اور نہیں، اور سب کچھ ایک ہی ہے. اب آخر میں، لائن سات. ہم واپس مرکزی تقریب میں ہو. سویپ ختم ہو گیا ہے کے بعد ہم ہو. ہم نے ایک، ب کھو دیا، اور کیا ہے tmp کے، لیکن ہم بالآخر کسی بھی اقدار کو تبدیل نہیں کر رہے ہیں اس مقام پر کسی بھی چیز کا، ہم صرف X اور Y کو نیچے کاپی. اور ہم X اور Y ہو دیکھیں اب 2 اور 1 کے بجائے 1 اور 2. سویپ کامیابی سے پھانسی دے دی ہے. سوال 28. آپ کا سامنا کہ مان خرابی کے پیغامات دفتری اوقات کے دوران ذیل میں ایک CA یا TF طور پر اگلے سال. ان غلطیوں میں سے ہر ایک ٹھیک کرنے کے لئے کس طرح مشورہ. GetString کے لئے اتنا جانچ حوالہ. کیوں آپ کو یہ دیکھ سکتا ہے؟ ویسے، ایک طالب علم استعمال کر رہی ہے ان کے کوڈ میں GetString، وہ مناسب طریقے سے CS50 شامل ہیش کیا ہے ڈاٹ H CS50 لائبریری شامل کرنا. ٹھیک ہے، وہ کیا کریں اس خرابی کو ٹھیک کرنے کی ضرورت ہے؟ وہ بالکل ایک ڈیش lcs50 کچھ کرنے کی ضرورت وہ مرتب کر رہے ہیں، جب کمانڈ لائن. وہ پاس نہیں ہے اگر ایسا ہے تو بجنا ڈیش lcs50، وہ ہو اصل میں ہونے والا نہیں GetString کے لاگو کرتی ہے کہ کوڈ. سوال 29. لپیٹ اعلان لائبریری تقریب strlen. اچھی طرح اب یہ، وہ نہیں ہے مناسب ہیش کیا شامل ہیں. اس خاص معاملے میں، ہیڈر فائل وہ، سٹرنگ ڈاٹ H ہے شامل کرنے کی ضرورت اور اب سٹرنگ ڈاٹ H، بشمول اب طالب علم سنکلک تک رسائی حاصل ہے strlen کی کے ڈیکلیریشنز، اور یہ جانتا ہے کہ آپ کے کوڈ درست طریقے strlen کی استعمال کر رہا ہے. سوال نمبر 30. زیادہ فیصد تبادلوں ڈیٹا دلائل کے مقابلے میں. تو یہ کیا ہے؟ ویسے ان فیصد یاد رکھیں کہ وہ printf سے متعلقہ ہیں کہ کس طرح signs--. تو printf میں ہم percent-- سکتا ہم کچھ پرنٹ کر سکتے ہیں فیصد جیسے میں ن الٹا سلیش. یا ہم، فیصد میں طرح پرنٹ کر سکتے ہیں خلا، فیصد میں، خلا، فیصد میں. ان لوگوں میں سے ہر ایک کے لئے اتنا فیصد علامات، ہمیں ضرورت ہے printf کے کے اختتام پر ایک متغیر کو منتقل کرنے کی. لہذا ہم کہتے ہیں کہ اگر میں printf قوس فیصد مجھے، ن قریبی قوس الٹا سلیش ساتھ ساتھ، ہم ہم ہو یہ کہنا ایک عددی پرنٹ جا رہا، لیکن پھر ہم printf پاس نہیں ہے ایک عددی اصل میں پرنٹ کرنا. تو یہاں زیادہ فیصد ڈیٹا دلائل سے زیادہ تبادلوں؟ کہ ہم ہے کہ کہہ رہا ہے فیصد کے پورے گچرچھی، اور ہم کافی متغیر کی ضرورت نہیں ہے اصل میں ان percents میں کو بھرنے کے لئے. اور اس کے بعد یقینی طور پر، سوال 31، ضرور ایک بلاکوں میں 40 بائٹس کھو. تو یہ ایک Valgrind کے غلطی ہے. یہ کہہ رہا ہے کہ کہیں آپ کے کوڈ میں، آپ 40 ہے کہ ایک سے تین ہلاک ہے بائٹس بڑی لہذا آپ، 40 بائٹس malloced کر اور آپ اس کو آزاد کر دیا کبھی نہیں. آپ کو صرف ضرورت سب سے زیادہ امکان کچھ میموری لیک کو تلاش کرنے کے، اور آپ کو کرنے کی ضرورت ہے جہاں آپ کو مل میموری کے اس بلاک کو آزاد. اور، 32 سوال 4 سائز کے جعلی لکھنے. ایک بار پھر یہ ایک Valgrind کے غلطی ہے. ایسا کرنے کے لئے نہیں ہے اب میموری لیک کے ساتھ. یہ میرا مطلب likely-- سب سے، یہ بات ہے، ہے جعلی میموری حقوق میں سے کسی قسم کا. اور سب سے زیادہ امکان یہ ہے کچھ بفر اتپرواہ کی طرح. تم کہاں ہو سکتا ہے، ایک صف ہے ایک عددی صف، اور چلو یہ 5 سائز کے ہے کہیں، اور آپ کو صف بریکٹ 5 چھو کرنے کی کوشش. تم نے اس پر لکھنے کی کوشش تو اگر قدر، اس میموری کا ایک ٹکڑا نہیں ہے آپ اصل میں تک رسائی حاصل ہے، اور یہ کہ لہذا آپ کو اس غلطی کو حاصل کرنے کے لئے جا رہے ہیں، 4 سائز کے جعلی لکھنے کہہ. Valgrind آپ ہیں تسلیم کرنے کی جا رہی ہے نامناسب میموری کو چھو کرنے کی کوشش کر. اور یہ کہ quiz0 لئے ہے. میں روب Bowden ہوں، اور اس CS50 ہے.