[موسیقی بجانا] روب BODEN: ٹھیک ہے. ویڈیو کے پہلے تو، پہلی بات یہ ہے، ایک واقف چہرے سے. [ویڈیو پلے بیک] ٹھیک ہے. یہ CS50 ہے، اور یہ ہے ہفتے میں تین کے آغاز. میں آپ کے ساتھ وہاں نہیں ہو سکتا معافی چاہتا ہوں آج، لیکن میرے متعارف کرانے کے لئے کی اجازت دیتے ہیں CS50 اپنے روب Boden. [END ویڈیو پلے بیک] [تعریف اور چیرس] روب BODEN: میں filmography اس ویڈیو بہت اچھا ہے. ٹھیک ہے. تو سب سے پہلے، دوسرے دوپہر کے کھانے کے ہے. یہ 1:15 میں کل کے. اس جمعہ کوئی دوپہر کے کھانے کے نہیں ہے. یہ Quora کے ساتھ ہے. اور ٹومی ایک کی لیکن ابھی تک یہاں نہیں ہے سابق سربراہ سییف ہے لوگوں، ٹومی McWilliam. تو وہ ایک مذاق آدمی ہے. آپ آنا چاہئے. ٹھیک ہے. تو گزشتہ ہفتے، ہم علاوہ توڑ شروع کر دیا ایک سٹرنگ واقعی ہے کے بارے میں. ہم شروع سے جانا جاتا ہے یہ حروف کی ترتیب ہے. لیکن گزشتہ ہفتے، ہم حقیقت میں delved کیا واقعی میں ایک ہی تسلسل ہے حروف، ٹھیک ہے، اب ہم حروف کی arrays کے. اور ہم نے ایک تار، یہ ایک صف ہے کو معلوم ہے کہ حروف کی، آخر میں، ہم اس خصوصی شہوت انگیز null بائٹ ہے، اس الٹا سلیش 0، کہ آخر کے طرف اشارہ کرتا ہے تار. اور اس طرح ایک تار کے ایک صف ہے حروف، لیکن ہم کر سکتے ہیں کے مقابلے میں زیادہ صرف حروف کا ایک صف، ہم کسی کی ایک سرنی کر سکتے ہیں ہم چاہتے ہیں بات کی قسم. تو، آپ کو گزشتہ ہفتے سے یاد ہے، ڈیوڈ متعارف کرایا قرون پروگرام واقعی بہت تیزی سے. ہم کیا کرنے جا رہے ہیں تو سب سے پہلی چیز ہے ، ایک عددی کے لئے صارف سے پوچھو کمرے میں لوگوں کی تعداد. ہم اس عددی ہے ایک بار، ہم ایک صف اعلان کر رہے ہیں. اس بریکٹ نحو نوٹس. آپ اس پر استعمال کرنے کے لئے جا رہے ہیں. تو ہم integers کے ایک صف اعلان کر رہے ہیں عمر کہا جاتا ہے، اور ن ہیں اس صف میں integers کے. یہاں تو یہ پیٹرن، اس 4 INT میں نے اس کے علاوہ، میں نے کم سے کم (ن) ہے، 0 کے برابر ہے کے علاوہ، یہ بھی ایک پیٹرن کی جا رہی ہے آپ کو بہت سے استعمال کرنے کے کہ. کہ بہت تم کس طرح کیونکہ ہمیشہ arrays پر iterate جا رہا. تو (ن) ہے یاد رکھیں کہ ہمارے صف کی لمبائی. اور تو یہاں، ہم نے بار بار پوچھ رہے ہیں کمرے میں اس شخص میں عمر کے لئے. اس کے بعد، ہم نیچے جاؤ، اور جو کچھ بھی کے لئے صوابدیدی کی وجہ سے، تو ہم وہ جا رہے ہیں کہ کس طرح پرانے باہر پرنٹ اب سے ایک سال ہو. اور یہ پروگرام چلا رہا، چلو ، عمر بنانے سلیش عمر ڈاٹ. تو کمرے میں لوگوں کی تعداد میں، تین ہیں کا کہنا ہے کہ. اور، سب سے پہلے 13 ہے، کا کہنا ہے کہ اگلا 26 ہے، اور گزشتہ 30 ہے. تو پھر یہ ان تین iterate گے لوگ،، 14 27، اور 31 کو پرنٹ. تو یاد ہے کہ ہم نے ایک اعلان جب سائز ن کی صف، کہ میں سوچکانکوں صف، صف اقدار ہیں اور سوچکانکوں 0، 1، 2، تمام طریقہ اپ ن مائنس 1. تو ہم نے کہا کہ جب تین لوگ تھے کمرے میں، اور ہم یہاں میں ڈال دیا اس کے ذریعے پہلی iteration لوپ، میں 0 ہونے جا رہا ہے. تو 0 انڈیکس میں. ہم سب سے پہلے بتائے جاتے ہیں صارف داخل عمر. پھر اگلے ایک میں، ہم داخل کر رہے ہیں دوسرے صارف داخل ہے، اور میں دو، آخری ن اگلا. تو محسوس ہے کہ سائز کے ایک صف تین کچھ بھی نہیں ہے انڈیکس تین میں. یہ درست نہیں ہے. ٹھیک ہے. تو، یہاں واپس جا رہا. تو اب ہم arrays کے ساتھ نمٹا ہے، ہم نے کچھ واقف ہے. اب ہم کمانڈ پر منتقل کرنے کے لئے جا رہے ہیں جا رہے ہیں جس میں لائن کے دلائل، اس مسئلہ کو سیٹ کرنے کے لئے بہت متعلقہ. تو اب تک، جب بھی آپ نے آپ کی اہم تقریب کا اعلان کر دیا، ہم نے int اہم باطل کہا. تو باطل صرف کا مطلب ہے کہ ہم کسی بھی گزر نہیں کر رہے ہیں اس تقریب کے دلائل. اب ہم اس اہم کو دیکھنے کے لئے جا رہے ہیں کچھ دلائل لے جا سکتے ہیں. یہاں ہم جہاں argc INT انہیں فون اور سٹرنگ argv بریکٹ. بریکٹ، ایک بار پھر، کا اشارہ ہم arrays کے ساتھ نمٹنے کر رہے ہیں. تو یہاں، سٹرنگ argv بریکٹ، ہم ڈور کی ایک صف کے ساتھ نمٹنے. تو جہاں argc، یہ ظاہر کرنے جا رہا ہے ہم نے کس طرح بہت سے دلائل اس پروگرام کے لئے منظور. اور، کا مطلب ہے کہ کیا دیکھنے کے لئے اس کو بند کرتے ہیں. ٹھیک ہے. تو اب تک، ہم نے ہر چلائے گئے ڈاٹ سلیش عمر کی طرح پروگرام. ہم بھی کر سکتے ہیں، کمانڈ لائن پر، ماضی دلائل کے پاس، اس طرح مدت، کمانڈ لائن کے دلائل. تو پہلی دلیل، ہیلو دنیا. تو یہاں، جہاں argc تین ہو جائے گا. اس کے دلائل کی تعداد ہے کمانڈ لائن پر. جہاں argc، ہمیشہ کم از کم 1 ہے کے بعد ڈاٹ ، خود عمر سلیش، میں سے ایک کے طور پر شمار کمانڈ لائن کے دلائل. اس کے بعد خوش سب سے پہلے ہے. ڈاٹ سلیش عمر تو، zeroth ہے تو خوش سب سے پہلے ہے، اور دنیا ہے دوسری کمانڈ لائن کی دلیل. تو سٹرنگ argv، ہم کو دیکھنے کے لئے جا رہے ہیں، ڈور، ڈاٹ سلیش پر مشتمل ہے عمر، خوش، اور دنیا. اور، ڈیوڈ کی درخواست کی طرف سے، ہم جا رہے ہیں کہ متعارف کرانے کی ایک ویڈیو کو کھیلنے کے لئے. [ویڈیو پلے بیک] اپ ہم نے پروگرام میں اب تک لکھا، ہم کا اعلان کیا ہے بنیادی طور پر int اہم صفر. اور یہ سب اس وقت، کہ باطل ہے بس کی وضاحت کی گئی ہے کہ پروگرام کسی بھی لے نہیں ہے کمانڈ لائن کے دلائل. ایک صارف ایک چلتا ہے جب دوسرے الفاظ میں، پروگرام، وہ یا وہ کمانڈ فراہم کر سکتے ہیں اضافی لکھنے کی طرف سے لائن کے دلائل الفاظ یا جملے کے بعد پروگرام کے فوری طور پر نام. ٹھیک ہے، آپ کو آپ کے پروگرام کے لئے چاہتے ہیں اگر آپ ایسا کرتے کمانڈ لائن کے دلائل، ایک یا ایک سے لے اس طرح کے الفاظ، ہم تبدیل کرنے کی ضرورت دلائل کی ایک جوڑے کے ساتھ خالی. تو یہ کرتے ہیں. CS50.h. شامل کریں معیاری io.h. شامل کریں int اہم. اور اب، اس کی بجائے باطل کی، میں جا رہا ہوں ایک جہاں argc کہا جاتا INT، اور ایک وضاحت ہے argv کہا جاتا ڈور کی صف. اب، argc اور argv ہیں بس کنونشن. ہم ان دلائل کو کہا جاتا ہے کر سکتے ہیں ہم چاہتے ہیں سب سے زیادہ کچھ. لیکن کیا ضروری ہے جہاں argc ہے ایک int تعریف کی طرف سے، یہ ہے، کیونکہ دلیل شمار پر مشتمل کرنے کے لئے جا، کل میں الفاظ کی تعداد ہے صارف اس کا یا اس فوری طور پر ٹائپ کیا ہے. ہے argv، دریں اثنا، دلیل ویکٹر، ہے اصل میں ذخیرہ کرنے کے ایک صف ہو جا صارف ہے کہ تمام الفاظ کے اس کا یا اس فوری طور پر ٹائپ. اب کچھ کرنے کے لئے آگے بڑھنے کے ہیں ان میں سے ایک یا اس سے زیادہ کے ساتھ کمانڈ لائن کے دلائل. خاص طور پر، آگے اور پرنٹ جانے جو لفظ میں صارف اقسام پروگرام کے نام کے بعد فوری طور پر. کھلا بریکٹ. بند بریکٹ. printf کے فیصد کے الٹا سلیش اور کوما. اور اب میں printf کیا قیمت بتانے کی ضرورت کہ پلیس ہولڈر میں پلگ کرنے کے لئے. میں صارف ہے کہ پہلا لفظ چاہتے ہیں پروگرام کے نام کے بعد ٹائپ، اور تو میں وضاحت کرنے کے لئے جا رہا ہوں ہے argv بریکٹ 1، بند قوسین، نیم وقفہ. اب، کیوں بریکٹ 1 اور نہ بریکٹ 0؟ ٹھیک ہے، یہ خود کار طریقے سے ذخیرہ، باہر کر دیتا ہے argv میں 0 ہونے جا رہا ہے پروگرام کا اصل نام. تو پہلا لفظ ہے کہ صارف اقسام پروگرام کے نام کی طرف سے، کے بعد کنونشن، ہو جا ہے argv 1 میں محفوظ کیا. اب تالیف اور اس پروگرام کو چلانے. ہے argv 0، ڈاٹ سلیش ہے argv 0 بنائیں. اور اب ایک لفظ خوش کی طرح. درج کریں. اور وہاں ہم خوش، یہ ہے. [END ویڈیو پلے بیک] روب BODEN: ٹھیک ہے. جو قریب. تو اس پروگرام پر ایک نظر لے کہ ہم صرف، اچھی طرح سے، ہمارے پاس صرف متعارف کرایا ہم 0 پرنٹ argv اب اگر، بنا،، ظاہر کرنے کے لئے یہ، ہے argv 0، ڈاٹ سلیش ہے argv 0 کیا ہے. امید کی جاتی ہے تو کے طور پر،، اسے باہر پرنٹ ہے ہے argv 0 ہے، پروگرام کے نام ہمیشہ کے لئے جا پروگرام کا نام. لیکن کچھ کرتے ہیں زیادہ دلچسپ کاٹا. تو مسئلہ سیٹ میں، آپ کو ہو جائے گا اس تقریب، atoi متعارف کرایا. تو کیا ہم اس کے لئے atoi استعمال کرتے ہیں؟ کہ تبدیل کرنے جا رہا ہے ایک ایک عدد صحیح سٹرنگ. تو میں نے تار پاس کرجاتے ہیں تو، ایک دو تین، atoi کرنے کے لئے، کہ میں تبدیل کریں گے عددی، ایک دو تین. تو ہم نے سب سے پہلے تبدیل کرنے کے لئے جا رہے ہیں ایک عددی کے لئے کمانڈ لائن کی دلیل، اور پھر صرف اس عددی پرنٹ. تو بنیادی طور پر، ہم اس قسم کی ہیں صرف، GetInt کا reimplementing عددی کمان میں داخل کیا جاتا ہے لائن کی بجائے پروگرام میں interactively. تو پھر، ہے argv 0 بنانے، کی کرتے ہیں یہاں میں اس، اور یہ کہ بند. تو argv 0 چل رہا ہے، اور میں داخل ہونے عددی، ایک دو تین چار ایک سے دو. تو یہ، ایک عددی پرنٹ کریں گے دو تین چار ایک سے دو. کہ atoi کچھ subtleties کے ہیں اس چیز کے بارے میں دیکھ بھال روک دیں گے ایک درست عددی کردار سے باہر، لیکن اس سے کوئی فرق نہیں پڑتا. تو آپ کو کیا ہوتا ہے لگتا ہے میں یہ کروں تو کیا ہوگا؟ انقطاع غلطی. تو کیوں ہے؟ آپ ہمارے پروگرام میں واپس دیکھو، ہم ہے argv 1، پہلی دلیل میں تبدیل پروگرام کے نام کے بعد، ایک عدد صحیح. لیکن منظور کوئی دلیل ہے، پروگرام کے نام کے بعد. تو یہاں ہم یہ ایک چھوٹی گاڑی ہے دیکھتے ہیں کہ پروگرام، کے بعد سے، ہم اسے چلانے کی کوشش کرتے ہیں کسی بھی دلائل کے بغیر، یہ صرف کریش گا. آپ دیکھیں گے تو ایک عام پیٹرن کچھ کی طرح، جہاں argc کم ہے تو وہاں نہیں تھا اشارہ ہے کہ دو، سے کم از کم پروگرام کا نام اور ایک پہلی دلیل، اس وقت ہم کچھ کروں گا طرح printf، کافی نہیں کمانڈ لائن کے دلائل. یہ شاید پرنٹ کرنے کے لئے ایک اچھا نہیں ہے، اس طرح، شاید کچھ ہے آپ کو ایک عددی باندھے کمانڈ لائن پر. میں صرف وہاں ختم ہو جائے گا. اور پھر واپس 1. تو ہمارے کے آخر میں یاد رکھیں کہ پروگرام، ہم 0 واپس تو، اس طرح کا کامیابی کی طرف اشارہ کرتا ہے. اور اہم بھی خود کار طریقے آپ ایسا نہیں کرتے تو 0 واپس. تو یہاں ہم اس بات کی نشاندہی کرنے کے لئے 1 retuning رہے ہیں اس کامیابی نہیں ہے. اور اگر آپ چاہتے ہیں جو کچھ بھی واپس آ سکتے ہیں، صرف، 0 کامیابی کی طرف اشارہ کرتا، اور اور کچھ ناکامی کی طرف اشارہ کرتا ہے. تو چیزوں کے اس ورژن چلاتے ہیں. تو اب، ہم ایک کمانڈ لائن میں داخل نہیں ہے تو دلیل، یہ درست طریقے سے بتا دونگا ہم، کافی کمانڈ لائن نہیں. سزا ختم نہیں کیا. ورنہ، ہم اصل میں یہ ایک پاس ہیں، اس پروگرام مکمل کر سکتے ہیں. تو اس میں آپ جہاں argc استعمال کریں گے کس طرح ہے کی تعداد کو درست کرنے کے لئے کمانڈ لائن کے دلائل کہ اصل میں گزر رہے ہیں. تو تھوڑا سا زیادہ اس پروگرام بنانے پیچیدہ، اور دوسرے پر نظر چیزوں کی iteration کے. تو اب، ہم صرف پرنٹ نہیں کر رہے پہلی کمانڈ لائن کی دلیل. یہاں، ہم int میں برابر سے iterating کر رہے 0، میں، میں جہاں argc سے بھی کم ہے اس کے علاوہ کے علاوہ، اور پرنٹنگ ہے argv، انڈیکس میں. تو اس پیٹرن، ایک بار پھر، یہ ایک ہی ہے بجائے اس کے علاوہ اس سے پہلے کے طور پر پیٹرن، متغیر بلانے کی (ن)، ہم جہاں argc استعمال کر رہے ہیں. تو یہ ہر ایک کے انڈیکس پر iterating ہے صف، اور ہر پرنٹنگ اس صف میں عنصر. اور اس طرح، ہم اس پروگرام چلاتے ہیں، اچھی طرح سے، میں کسی بھی کمانڈ لائن میں داخل نہیں کیا دلائل، صرف پرنٹ یہ تو پروگرام کا نام. میں چیزوں کا ایک گروپ درج کرتے ہیں، یہ کریں گے ایک، اس کی اپنی لائن پر ہر پرنٹ. ٹھیک ہے. تو مزید ایک قدم لے. اور اس کے بجائے ہر ایک کی دلیل پرنٹنگ کے اپنی ہی سطر میں، ایک پرنٹ ہر دلیل کا کردار اپنی ہی سطر میں. تو argv ہے یاد رکھیں کہ ڈور کی ایک صف. تو کیا ایک تار ہے، لیکن حروف کی ایک سرنی؟ تو یہ ہے argv واقعی مطلب یہ ہے کہ ایک حروف کی ایک سرنی کے ایک صف. تو اس کا فائدہ اٹھاتے ہوئے، اب کے لئے اس کو نظر انداز. صرف سٹرنگ argv 0 غور کریں. ہم ایک کردار کا لانا چاہتے ہیں تو ہے argv 0 اپنی ہی سطر میں، تو میں چاہتا ہوں ہم استعمال کر رہے ہیں پیٹرن کرنے کے لئے، میں ہے صف کی لمبائی سے بھی کم، یہاں، کے سے strlen ہے جس میں، ہے مجھے کیا کرنا نہیں چاہتے کیا، تار ے ہے argv 0 برابر. تو میں نے اپنے کی لمبائی سے بھی کم ہے اس معاملے میں ایک صف ہے جس میں صف، حروف کی، میں نے اس کے علاوہ کے علاوہ. ہم نے گزشتہ ہفتے دیکھا اور اس طرح،، یہ مثالی ہے ہم باہر سے strlen اس اقدام سے اگر حالت کے، کے بعد (ن) انہوں نے مزید کہا جائے گا ے کی strlen کی ہم جا ہر وقت لوپ کے ذریعے، اور یہ کو تبدیل نہیں کیا جا سکتا. تو ہم یہاں (ن) کے برابر مقرر کریں گے. ٹھیک ہے. تو اب، ہم پر iterating کر رہے ہیں صف میں ہر انڈیکس. اور اس طرح، ہم میں سے ہر پرنٹ کرنے کے لئے چاہتے ہیں تو اس صف، فیصد C میں کردار ہے ہم استعمال کرنا چاہتے ہیں پرچم حروف کے لئے. اور اب ایک بریکٹ میں ہونے جا رہا ہے سٹرنگ، انڈیکس کردار میں، اگر ایسا ہے تو سٹرنگ خوش تھے. پھر بریکٹ، 0 H جا رہا ہے S S 1 ای ہو جائے گا، اور. تو اب ہم جمع کرنے کے لئے چاہتے ان دو چیزوں. ہم ہر کردار پرنٹ کرنا چاہتے ہیں ہر ایک کمانڈ لائن کی دلیل کے. تو ہم جا رہے ہیں ایک لوپ کے لئے اندر در اندر. اور روایتی، پہلے انسداد میں، اگلے J جا رہا، ن ہے ہے ہے argv میں strlen کی ہو جائے گا، میں نے کم سے کم ن، میں پلس پلس ہے. اور اب اس کی بجائے پرنٹنگ ہے argv میں، تو میں انڈیکس جا رہا ہے ہے argv بریکٹ - کہ میں ویں کمانڈ لائن جا رہا ہے دلیل ہے، argv میں، J جا رہا ہے JTH کردار کی ہو میں ویں دلیل. میں اب یہاں اس سے چھٹکارا حاصل کریں گے ہم اس لوپ میں ڈال کے بعد. تو سٹرنگ کے برابر کے برابر ہے ہے argv میں، اور اس کے بعد کی بریکٹ J. ٹھیک ہے، ہم اعلان کرنے کی ضرورت نہیں ہے اس کے متغیر کے. اس کے بجائے، ہم صرف ان کو جمع کریں گے ہم نے کیا میں دو،، جموں میں میں argv. اسپیکر 1: [اشراوی]. روب BODEN: اچھا کال. تو یہ ٹوٹا ہوا ہے. میں واقعی میں اس دوڑ، تو ہم کریں گے یہ احساس ہو گیا ہے. مجھے پرواہ تو کاؤنٹر کے لئے یہ خاص طور پر لوپ J، iterator ہے. تو آپ کو مسائل میں چلاتے ہیں کیا جائے گا، شاید ایک لامحدود لوپ، تو ہم کہ طے نہیں تھا. ہم بھی بات کر رہے ہیں یہی وجہ ہے کہ آج ٹھیک. ٹھیک ہے. تو اس پروگرام چلاتے ہیں. اور اصل میں ایک الگ printf کے شامل ہیں یہاں صرف پرنٹ گا کہ اس کا مطلب کے بعد ایک اور لائن، جب ہم پروگرام کو چلانے کے، ایک خالی ہو جائے گا ہر کردار کے درمیان میں لائن ہر ایک کمانڈ لائن کی دلیل. ٹھیک ہے، ہم اس کا کیا مطلب ہے نظر آئے گا. OOP. کچھ بگ مل گیا. خرابی لپیٹ اعلان لائبریری تقریب سے strlen. تو اپنے پروگرام میں واپس جا، میں string.h شامل ہیش بھول گیا. تو string.h جا رہا ہے اعلان ہے کہ ہیڈر فائل تقریب سے strlen. ٹھیک ہے، اس سے آگاہ کریں. اب، چلو اسے چلاتے ہیں. تو صرف یہ ہے کہ. اسے باہر پرنٹ کرنے کے لئے جا رہا ہے ہماری پروگرام کا نام، ہیلو دنیا. یہ ہر ایک، ہر چیز پرنٹ کرنے کے لئے جا رہا ہے اپنی ہی سطر میں کردار،. ٹھیک ہے. تو اصل میں یہ لے لو مزید ایک قدم. اور اس کے بجائے string.h کا استعمال کرتے ہوئے، چلو ہم اپنے پر عملدرآمد چاہتے ہیں کس طرح کے بارے میں سوچنا سے strlen تقریب. تو میں نے فوری طور پر دے دیں گے ایک تقریب کے دستخط. تو my_strlen میں کہتے ہیں، اور یہ ایک دلیل کے طور ایک تار پر لے جا، اور ہم واپس آنے کی توقع کہ سٹرنگ کی لمبائی. تو، جہاں اس آدمی ہے؟ جی ہاں. ٹھیک ہے. تو پہلے سلائڈ سے یاد ہے ، گزشتہ ہفتے سے بھی تھا کہ ایک حروف کی صف ہے، کے ساتھ ساتھ، ایک تار، تو یہ ہماری سٹرنگ کا کہنا ہے کہ دو. تو کی تار ہے تو، خوش، اس کے بعد، ایچ ای ایل ایل اے، کی یاد میں، کہ جا رہا ہے تو یہ الٹا سلیش، اور 0 کردار. تو ہم کس طرح کے کی لمبائی ہے؟ ٹھیک ہے، چال اس کے لئے لگ رہا ہے 0 کردار، اس، شہوت انگیز null ردعمل ٹرمنیٹر. تو الگورتھم جا رہا ہے کچھ کچھ اس طرح ہونا کافی حروف ہے - اس کے ہاتھ میں کچھ کی نمائندگی کرتے ہیں انسداد، اس INT لمبائی کہتے ہیں. تو، یہاں سے شروع، ہم ہمارے سٹرنگ پر iterate جا رہا. لہذا، یہ ایچ پہلا کردار ہے، اور اسے واپس تو، 0 سلیش نہیں ہے لمبائی 1 ہے. اگلا کردار iterate کے، ای، اور یہ 0 الٹا سلیش نہیں ہے. لمبائی ہے 2. ایل، 3. ایل، 4. اے، 5. اور آخر میں، ہم الٹا سلیش تک پہنچنے 0، اور تو اس کا مطلب، اچھی طرح سے، اس جملے سے زیادہ ہے. تو 5 لوٹ چلیں. تو اصل میں، سب سے پہلے، کہ عمل درآمد اپنے ن لمبائی میرے دائیں ہاتھ، 0 کے برابر ہے. اور ہم iterate کرنے کے لئے جا رہے ہیں - اسپیکر 1: [اشراوی] روب BODEN: اوہ، گولی مار. اچھی کال. بوم. تو ن 0 لمبائی کے برابر ہے. تو اب، جبکہ کی لمبائی نہیں ہے پھر برابر اور، الٹا سلیش 0. تو، اس الٹا سلیش 0 یاد، یہ ایک ہے اصل کردار، اور اس کی طرف اشارہ کرتا تار کے آخر. ، جیسا بھی، الٹا سلیش N ایک حقیقی کردار ہے. الٹا سلیش 0 اس بات کی نشاندہی کی جا رہی ہے ہماری تار کے آخر. میں وہاں ڈال نہیں کرنا چاہتا. اور لمبائی کی طرف سے حساب سے ترتیب کی نہیں ہے شہوت انگیز null ٹرمنیٹر کے برابر، پھر ہم صرف لمبائی اضافہ کرنے جا رہے ہیں. تو پھر، ہمارے پروگرام کے آخر میں، لمبائی آخر میں کی جا رہی ہے اس کیس میں 5 ہو. اور ہم صرف لمبائی واپس آ جائیں گے. ٹھیک ہے. تو اب یہاں نیچے، میں نہیں my_strlen کرتے ہیں. اس بات کا یقین کرنے کے لئے اس تالیف سب کچھ آسانی سے چلتا ہے. میں 2 میں کر رہا تھا؟ یا 1 تھا؟ کہ کیا کرنا چاہئے. ٹھیک ہے. تو یہ ہے argv ہے 2. متوقع طور پر، کام اگرچہ ایک میں اس میں کیا تھا؟ جی ہاں. ٹھیک ہے. چیزوں کی یہ ورژن نہیں تھا printf کے نئے بعد لائن، لیکن یہ کوئی فرق نہیں ہے. ٹھیک ہے. امید کی جاتی ہے تو کے طور پر کام کیا. اب ہم اس سے ایک قدم جمع کر سکتے ہیں اس کے علاوہ، یہاں جہاں نوٹس، اچھی طرح سے، سب سے پہلے، ہم argv کے strlen کی پکڑ رہے ہیں میں، اور پھر ہم پر iterating کر رہے ہیں اس سٹرنگ میں ہر کردار. تو بجائے اس کے کہ ایسا کرنے کے، کیا تو ہم صرف انتظار کر رہے ہیں کے اس منطق کی جمع ہم الٹا سلیش 0 حق مارا ہے جب تک لوپ کے لئے اس میں؟ ہے argv میں، J کرتا ہے تو iterate کے برابر نہیں الٹا سلیش 0. تو سب سے پہلے اسے چلاتے ہیں. ٹھیک ہے. تو یہاں، اس کی حالت کہہ رہا ہے - کی واضح ہیں. تو اب، یہ ہماری ہے argv ہو. تو میں نے اس سے پہلے اس پروگرام بھاگ گیا جب، ہے argv ڈور کی ایک صف ہے. اور اس طرح، میں ڈاٹ سلیش ہے argv کے ساتھ اسے چلاتے ہیں 2، ہیلو دنیا، تو ہے argv خود ہے argv کے لئے، لمبائی 3 ہے صفر، خوش، اور دنیا. اور ان سوچکانکوں میں سے ہر ایک کے اندر، ہے خود کو اس ہو جائے گا جہاں ایک صف، ڈاٹ، اس سلیش ہو جائے گا، میں نہیں جانتا یہ صحیح سمت تھا، میں یہ نہیں لگتا ہے. ایک آر وی ڈیش، زیادہ جگہ کی ضرورت ہے. کی اس صف میں کاٹ دو. ایک آر وی ڈیش 0، اور پھر الٹا سلیش 0. اور پھر گڑبڑ میں خوش ہو جائے گا. کی، ایچ ای الٹا سلیش 0 کہتے ہیں. اور آخر میں، ڈبلیو اے الٹا سلیش 0. تو ہم صرف لکھا ہے کہ الگورتھم، وہ ہو کیا بات ہے loops کے لئے اندر در اندر ہے کر، ہم سب سے پہلے ہے میں اور پھر J مقابلہ. اس کوڈ کے ساتھ آسان ہو جائے گا سکرین، کی اس کے واپس جانے دو. ٹھیک ہے. تو میں ہے کہ iterator نوٹس ہے کہ ہر کمانڈ پر iterating لائن کی دلیل. اور جے iterator iterating کر ہے اس میں ہر کردار پر کمانڈ لائن کی دلیل. تو اس سب سے اندرونی printf کا کیا کر رہا ہے ، ہم ہے argv 0 0، printf کے پر printf ہے ہے argv 0 1، printf کا ہے argv 0 2 0 3، 0 4، 0 5، 0 6، لیکن اب، ہے argv 0 7 جا رہا ہے برابر الٹا سلیش 0. تو پھر ہم لوپ کے لئے اس سے باہر نکلنے کے، اور اب میں 1 iterates ہے. اور اب ہم پرنٹ جا رہے ہیں ہے argv 1 0، ہے argv 1 1 - ٹھیک ہے، اب، میں مختصر خوش کاٹ کے بعد، ہے argv 1 2 پھر جا رہا ہے الٹا سلیش 0. اور اس طرح، میں اضافہ اور جاری رکھیں، اور تو، جب تک ہم سب کے سب باہر پرنٹ دنیا، اور ان تین کمانڈ لائن ہیں دلائل، اور ہم باہر سے باہر نکلیں گے outermost لوپ، اور ہمارے پروگرام کو ختم. ٹھیک ہے. تو یہاں واپس آنے دو. تو آپ کے ساتھ کچھ واقف حاصل کریں گے اس پر کمانڈ لائن کے دلائل خاص مسئلہ مقرر. اب، ٹھیک کرنا. تو آپ شاید پہلے سے ہی کرنا پڑا ہے اپنے سابقہ ​​کے ساتھ کچھ ٹھیک کرنا مسئلہ سیٹ کی. اور ٹھیک کرنا میں سے ایک بہت آسان طریقہ، سب سے پہلے، ایک چھوٹی گاڑی کے پروگرام کو دیکھو. ٹھیک ہے،، اس پروگرام کے ذریعے چلنا ہم ایک لئے صارف سے پوچھو جا رہے ہیں عددی، اس عددی قبضہ، اور اس کے بعد، منمانے، ہم ایک جبکہ لوپ ہے صرف تدریج کی جا رہی ہے یہ 10 کے برابر ہے میں جب تک. چلو بس میں داخل ہونے رہا ہوں فرض 10 سے زیادہ ایک عددی. یہ 10 کے برابر ہے جب تک تو میں تدریج کریں. اور پھر ہم ایک دوسرے جبکہ لوپ ہے میں 0 کے برابر نہیں ہے، ہم، ہے کی طرف سے 3 میں تدریج کے لئے جا رہا. تو کیا تم مسئلے کے ارادے دیکھتے ہیں یہاں، اس میں تدریج کریں گے کہ 10، اور پھر اس دیر لوپ جائے 1 4 7 10،،، کی طرف سے تدریج میں، منفی 2،، تو 5 منفی، اور منفی انفینٹی، میں نے گا کے بعد اصل میں 0 کے برابر کبھی نہیں. اور پھر اس پروگرام کے آخر میں، ہم ہے جو FOO تقریب ہے پرنٹ پر باہر جانے میں اس. تو یہ، ایک مختصر اور چھوٹی سی پروگرام ہے اور بگ واضح ہے، خاص طور پر کے بعد میں نے صرف بگ کیا تھا انہوں نے کہا کہ. لیکن یہاں کے ارادے ٹھیک ہے، یہ ہو سکتا ہے، اصل میں میں سے کچھ کی طرح نظر آتے آپ آخری سے لالچی سے حل مسئلہ سیٹ، اور شاید آپ ہیں آپ کے پروگرام میں کچھ لامحدود لوپ، اور آپ کو کوئی اندازہ نہیں ہے کیا اس کی وجہ سے ہے. تو ایک بہت ہی مفید بگ ٹیکنالوجی صرف printfs شامل کرنے کے لئے ہے تمام آپ کے کوڈ پر. تو میں یہاں سے باہر ایک printf کے چاہتے ہیں پہلی جبکہ لوپ. اور یہاں میں نے ایک printf کے لئے چاہتے ہیں، اور میں صرف میں پرنٹ کریں گے. جبکہ لوپ میں بھی، سب سے پہلے کریں گے. باہر، دوسری جبکہ لوپ. ایک بار پھر، کے اندر پرنٹ یہاں، قیمت میں. اور ہم اس کو چلانے کے. تو ڈاٹ سلیش ڈیبگ. ایک عدد صحیح درج کریں. 13 کرتے ہیں. اور تیزی. ہم لامحدود looping دیکھتے ہیں کہ دوسری جبکہ لوپ کے اندر. تو اب ہم مسئلے کیا ہے. لیکن printf کے ٹھیک، بالکل بہت اچھا ہے لیکن آپ کے پروگرام ایک بار اب اور زیادہ پیچیدہ ہیں، کرنے کے لئے زیادہ بہتر حل چیزوں کو کام کر رہی ہے. تو ان تمام printfs ہٹانے. اور اس بات کا یقین میں نے نہیں کیا بنا کچھ توڑ. ٹھیک ہے. تو ہم جا رہے ہیں پروگرام متعارف کرانے کے لئے کہا جاتا ہے GNU ٹھیک کرنے والا کھولتا کے لئے GDB،. ٹھیک ہے، اصل میں، کے لئے ڈیبگ ہٹانے ایک دوسرے، اور پھر ڈبگ بنانے کے. ٹھیک ہے، اصل میں سب سے پہلے، ایک اچھا سبق کمانڈ لائن کے دلائل میں. اس بجنا کمانڈ ہے کہ نوٹس سب کچھ منظور کیا جا رہا ہے کی تالیف کمانڈ لائن پر، ان کمانڈ لائن کے دلائل. آپ کو استعمال کرتے ہوئے کیا جا رہا ہے تو کس طرح کمانڈ لائن کے دلائل، کے طور پر ہم پہلے کیا، اور آپ pset میں جائے گا کے طور پر 2، کہ بجنا ان کا استعمال کرتے ہوئے ہے کس طرح ہے. تو محسوس ہے کہ اس سے پہلے پرچم، ڈیش ggdb3، یہ ​​ہے کہ کیا کہہ رہا ہے، بجنا، آپ کے ساتھ اس فائل کو مرتب کرنا چاہئے ارادے کہ ہم آخر میں کرے گا یہ ڈیبگ کرنے کی ضرورت ہے. تو جب تک آپ اس پرچم کے طور پر، پھر ہم GDB ڈبگ کر سکتے ہیں. اور یہ GNU ٹھیک کرنے والا کھولتا کو کھولنے گے. تو حکم دیتا ہے کی ایک بہت ہیں آپ کو استعمال کرنے کے لئے کی ضرورت ہے. سب سے پہلے ایک ہے کہ آپ شاید گے فوری طور پر ضرورت سے چلایا جاتا ہے. تو کیا کیا کرنے جا چلایا جاتا ہے؟ یہ ہمارے پروگرام شروع کرنے کے لئے جا رہا ہے. تو، شروع کرنے کے پروگرام، پروگرام کو چلانے کے ایک عدد صحیح، 13 کے لئے ہم سے پوچھتا ہے. اور پھر یہ لامحدود looping کے طور پر میں ہٹا دیا سوائے، توقع printfs، تو ہم نے بھی نہیں دیکھا کہ. عام طور پر باہر. اوہ. یہ لپیٹ ممکن ہے کہ تمام جس طرح سے ارد گرد، واپس کرنے کے لئے - کہ نظر انداز. یہ عام طور پر باہر نکلنے نہیں کیا فرض. کہ ایک پیچیدہ سوال کا جواب نہیں ہے. تو اب، کہ بہت مفید نہیں ہے. تو صرف کے اندر ہمارے پروگرام چل رہا ہے یہ ٹھیک کرنے والا کھولتا کسی میں ہماری مدد نہیں کرتا ہم صرف کیا جا سکتا ہے کے بعد سے جس طرح سے، ڈاٹ GDB کے باہر سے ڈیبگ سلیش. تو ایک کمانڈ ہے آپ شاید گے - اور میں نے اس کو چھوڑ دیا کریں گے. کنٹرول D یا، کام دونوں کو چھوڑ دیا. تو اسے دوبارہ کھول. ایک اور کمانڈ ہے کہ آپ شاید گے فوری طور پر کرنا چاہتے ہیں کرنے کے لئے استعمال کرنے کے ٹوٹ جاتا ہے. تو ہم نے، اب کے لئے اہم پر توڑ دونگا اور پھر میں نے اس کی وضاحت کریں گے. ٹھیک ہے، یہاں ہم ایک توڑ مقام مقرر دیکھ debug.c میں اس لائن پر. تو کیا وقفے کا مطلب یہ ہے کہ جب میں رن ٹائپ، پروگرام کے لئے جا رہا ہے جب تک چل رہا ہے جاری رکھیں میں توڑ مقام مارا. میں چلانے مارا تو، پروگرام، شروع ہوتا ہے اور پھر اس کے طور پر جلد کے طور پر ٹوٹ جاتا ہے مرکزی تقریب میں داخل ہوتا ہے. اہم توڑ کچھ ہونے جا رہا ہے آپ کو بہت عام طور پر کرتے ہیں. اور اب، آپ کو متعارف کرانے کچھ حکم دیتا ہے. یہ ہم کہہ رہا ہے کہ یہاں پر نوٹس، ہے جس میں 11 لائن، میں توڑ دیا printf کا، ایک عددی داخل. تو کمانڈ اگلا کس طرح کی جا رہی ہے ہم نے کوڈ کی اگلی لائن پر جانا. اس سے ہمیں قدم کرنے کی اجازت دے جا رہی ہے لائن کی طرف سے ہمارے پروگرام لائن کے ذریعے. تو اگلے. اب لائن 12، ہم جا رہے ہیں عددی حاصل کرنے کے لئے. اگلا. آپ صرف درج کریں پھر مارا، یہ کریں گے تم نے آخری بات پھر سے. تو میں ٹائپ کرنے کی ضرورت نہیں ہے اگلا ہر وقت. تو ایک عدد صحیح، 13 میں داخل. تو اب، لائن 14، میں زیادہ سے زیادہ ہے جبکہ 10 سے، اور میں اگلے کروں گا. اور ہم میں تدریج لئے جا رہے ہیں کو دیکھنے کے. تو ہم پھر میں تدریج کرنے جا رہے ہیں. تو اب، ایک اور مفید کمانڈ پرنٹ. تو پرنٹ باہر پرنٹ کرنے کے لئے کی جا رہی ہے متغیر کی قدر. کی قیمت لانے دو متغیر میں. کی میں پرنٹ. یہ میں 11 کا کہنا ہے کہ جا رہا ہے. اب ہم اگلے پھر جبکہ میں نے 10 سے زیادہ ہے. تو میں اب بھی سے بڑا ہے اسے 11 کے بعد سے 10،. میں مائنس مائنس. پھر میں پرنٹ. امید کی جاتی ہے کے طور پر، یہ 10 ہے. تو اب، اگلے. یہ واپس شرط پر ہو رہا ہے، میں ہے 10 سے زیادہ، لیکن میں نے تو، اب 10 ہے یہ 10 سے زیادہ نہیں ہے، تو ہم توقع جبکہ لوپ سے باہر گر. اور اب ہم کوڈ کی اس لائن کے نیچے ہیں. اور ایک اور کمانڈ، کی فہرست، صرف کی جا رہی ہے پچھلے اور اگلے ظاہر کرنے کے لئے کوڈ کی لائنیں، میں جوڑے کیس تم اپنے آپ کو کھو دیا ہے. تو ہم صرف، اس دیر لوپ سے باہر اور اب ہم اس میں داخل ہے جبکہ لوپ، 18 لائن. میں 0 کے برابر نہیں ہے تو. اور، اگلا، میں ہم کریں گے میں مائنس 3 کے برابر ہے، اور نوٹس، یہ صرف جا رہا رکھیں گے. اور ہم نے پرنٹ کر سکتے ہیں. ہر کمانڈ طرح کی شارٹ کٹ ہے. تو p تعداد کے لئے مختصر ہے. تو ہم پی میں کر سکتے ہیں. صرف ن انعقاد رکھنے کے، یا اگلے کر رکھنے. پھر میں پرنٹ. آپ اس 167 منفی اب دیکھتے. تو یہ ہمیشہ کے لئے جانا، نہیں بلکہ سچ ہمیشہ کے لئے، آپ کو صرف دیکھا، یہ اصل میں کچھ نقطہ پر ختم ہو جائے گا. تو ہے کہ GDB کے آغاز ہے. لیکن GDB میں ایک اور بات کرتے ہیں. اہ، ڈیبگ. تو، اس خاص معاملے میں، لامحدود لوپ کے اندر ہوا مرکزی تقریب. اور اب کے لئے، صرف میں ہوں کہ قبول میں لامحدود لوپ کو منتقل کرنے کے لئے جا FOO تقریب. بس اس کے آخر میں، یاد رکھیں کہ پروگرام، ٹھیک ہے، یہ اصل میں تھا صرف تھی جس FOO کو، بلا میں پرنٹ کرنے کے لئے جا رہا ہے. لیکن اب ہم ہے جو، FOO کو بلا رہے ہیں یہ 0 ہے جب تک میں تدریج کریں، اور کرنے کے لئے جا پھر اس متغیر پرنٹ. ٹھیک ہے. کو بچانے کے. ڈیبگ بنائیں. اور اب، GDB ڈیبگ. ٹھیک ہے. میں صرف چلاتے ہیں تو پھر میں نہیں جا رہا ہوں اصل کے ذریعے قدم کے قابل ہو جائے میری پروگرام لائن کی طرف سے لائن. تو مرکزی توڑ دو، اور پھر چلائیں ٹائپ. تو اس کے ذریعے جانا، printf کے، داخل ایک عدد صحیح، عددی، 13 حاصل. تو ہم decrementing رکھنے کے لئے جا رہے ہیں میں نے 10 سے زیادہ ہے جب تک. پھر ہم کے ذریعے آتے جا رہے ہیں جبکہ لوپ، اور لائن حاصل کرنے کے لئے - کی ایک الگ ونڈو میں کھول. میں اب جب تک تو ہم decremented پھر 10 سے زیادہ، اور ہم FOO کو، تقریب میں بلایا. تو کیا ہوا جیسے ہی میں مارا ہوا تقریب FOO، ٹھیک ہے، میں نے کہا جاتا FOO، اور تو میں اب GDB پر کنٹرول تھا. تو جیسے ہی میں اس لائن پر اگلے مارا کے طور پر، یہ ہوا، جب تک چیزوں جاری، جب جہاں پروگرام سے باہر - اس کے آخر میں موجود ہی نہیں تھی فرض. تم نے اسے اگرچہ تھوڑا سا کے لئے روکنے کے دیکھا. تو کیوں میں نے کنٹرول کھو دیا اس وقت پروگرام؟ میں اگلے ٹائپ جب،، اس پر جاتا ہے کوڈ کے لغوی اگلی لائن ہے عملدرآمد کیا جائے گا. تو اس کے بعد 21 لائن، کوڈ کی اگلی لائن کہ، 22 ​​لائن ہے عملدرآمد کیا جائے گا مرکزی سے باہر نکلنے، ہے. تو میں صرف جانے کے لئے نہیں کرنا چاہتا کوڈ کی اگلی لائن پر. میں تقریب، FOO میں جانا چاہتے ہیں، اور پھر بھی کے ذریعے قدم کوڈ کا ان لائنوں. تو اس کے لئے، ہم ایک متبادل ہے. پھر یہ کہ چھوڑ. اہم توڑ. اہ، 1، اگلے، اگلے، 13، اگلا، اگلے، اگلے، احتیاط سے، ہم لائن FOO کو مارنے سے پہلے. ٹھیک ہے. تو اب، ہم، 21 لائن پر ہیں ہم FOO کو کال جہاں. ہم اگلے ٹائپ کرنے کے لئے نہیں چاہتے کہ بعد صرف تقریب FOO فون، اور کوڈ کی اگلی لائن پر جانا. کیا ہم استعمال کرنا چاہتے ہیں قدم ہے. تو قدم درمیان ایک فرق ہے اور مرحلہ میں قدم جہاں اگلے، تقریب، اور اگلے جاتا ہے تقریب کے دوران. یہ صرف کی مکمل executes ہے تقریب اور رکھتا جا رہا. تو قدم ہمارے لانے کی جا رہی ہے تقریب میں، FOO کو. اور اب ہم، ہم واپس آ گئے ہیں، یہاں دیکھ اصول میں، ہے کہ اس دیر لوپ، ہمیشہ کے لئے جاری رکھنے کے لئے جا رہا ہے. اور تم یہ بھی نہیں ہے جب مرحلہ، مارا فون کرنے کے لئے ایک تقریب، تو یہ ہے اگلا جیسی. آپ کو ایک لائن میں ہیں تو جب یہ صرف ہے کہ مرحلہ ایک تقریب ہے کہ بلا رہا ہے اگلا سے مختلف ہونے جا رہا ہے. تو قدم ہمیں یہاں لے آئے گا. مرحلہ، قدم، قدم، قدم، قدم، قدم، اور ہم ہمیشہ کے لئے صرف لامتناہی لوپ گے. تو آپ کے طور پر اس کے لئے استعمال ہو سکتا ہے آپ لامحدود loops کی شناخت کی راہ ہے، صرف اس اہم داخل انعقاد تم پھنس گئے ہو جہاں دیکھنے کے. وہاں ایسا کرنے کے لئے بہتر طریقے ہیں، لیکن اب کے لئے، یہ بالکل کافی ہے. اور stylistically، انداز کے مطابق 50، میں نے یہ کیا کیا جانا چاہئے. ٹھیک ہے. تو ایک آخری حکم کو متعارف کرانے. ٹھیک ہے، اندر ڈیبگ GDB دو تو بجائے اہم میں توڑنے کی، تو میں FOO تقریب جانتے بھی ہے مسئلہ، اس کے بعد میں کر سکتے ہیں، صرف ، اس کے بجائے، FOO کو توڑ نے کہا کہ. کے میں کو توڑنے کا کہنا ہے کہ اہم اور FOO دونوں. تو آپ کو بہت سے breakpoints مقرر کر سکتے ہیں آپ چاہتے ہیں کے طور پر. میں چلانے ٹائپ کرتے ہیں تو، یہ جا رہا ہے کو روکنے کے لئے - اوہ، بعد، کی recompile کر دو میں چیزیں بدل. آپ اس لائن، انتباہ، ذریعہ دیکھیں گے فائل کارکردگی سے زیادہ حال ہی میں ہے. تو اس میں صرف یہاں میں چلا گیا کہ اس کا مطلب اور سٹائل کے مطابق کرنے کے لئے ان کو تبدیل کر دیا 50 لیکن میں recompile نہیں کیا پروگرام. تو gdb ہے کہ میرے بارے میں آگاہ کرتا ہے. میں، پھر ڈبگ بنانے، چھوڑ دیں گے GDB ڈبگ مارا. ٹھیک ہے. تو اب، واپس کر کیا گیا تھا. اہم، وقفے FOO کو توڑ. اب میں پروگرام کو چلانے کے، تو یہ ہے مار دیتی ہے جب تک جاری رکھنے کے لئے جا توڑ مقام. اس توڑ مقام پر ہوتا ہے اہم میں سب سے پہلے ہو. اب، اس کی بجائے اگلے کرنے کے، اگلے، اگلے، اگلے، اگلے، میں FOO مارا، جب تک میں جاری رہے گا جس میں، جاری ٹائپ کر سکتے ہیں آپ کو اگلے توڑ مقام مارا جب تک. میں سب سے پہلے عددی داخل ہے. میں مارا تک جاری رہے گا آگے یہ ہے کہ جس اگلا توڑ مقام، FOO کی تقریب. آپ کو ایک ہٹ تک تو چلائیں چلائیں گے جب توڑ مقام، لیکن آپ کو صرف رن ٹائپ کریں تم، تو پروگرام شروع کرنے کے، اور کر رہے ہیں اس وقت سے، یہ جاری ہے. میں صرف بنیادی توڑا اور اگر پھر بھاگ گیا، اس میں توڑ دونگا پھر سب سے اہم، اور جاری رکھیں. میں FOO میں ایک بریک پوائنٹ ہے، نہیں ہے عددی داخل، تو اب میں ہوں FOO کو میں کو توڑنے کے لئے نہیں جا رہا. یہ صرف لامحدود جا رہا ہے کہ جب تک لوپ. ٹھیک ہے. تو اس GDB انٹرو ہے. آپ اس کا استعمال کرتے ہوئے شروع کر دینا چاہئے آپ کا مسئلہ سیٹ میں. یہ بہت مددگار ثابت ہو سکتا کیڑے کی شناخت کے لئے. تم صرف اصل میں، لائن کی طرف سے لائن، جاتے ہیں آپ کوڈ کے ذریعے، اور آپس میں موازنہ کیا اصل میں آپ کی توقع کے ساتھ ہو ایسا کرنے کے لئے، تو یہ خوبصورت ہے آپ کیڑے کی کمی محسوس کرنے کے لئے مشکل. ٹھیک ہے. تو گزشتہ ہفتے ڈیوڈ اس کی پرورش کے لئے خفیہ اہم خفیہ نگاری کی چیزیں ہم چاہتے ہیں نہیں ہے جہاں میں پہلی بار، پاس ورڈ صرف ذخیرہ کیا جائے ہماری کچھ سادہ ٹیکسٹ فائل میں کمپیوٹر، جہاں کسی سے زیادہ اور صرف آ سکتے ہیں اسے کھولو اور ان پڑھ. مثالی طور پر، وہ خفیہ کردہ کیا جائے گا کسی طرح سے. اور مسئلہ 2 سیٹ میں، آپ کو نمٹنے گے خفیہ کاری کا ایک طریقہ کے ساتھ، یا، اچھی طرح سے، دو طریقوں، لیکن وہ اتنی عظیم نہیں ہیں. آپ ہیکر ایڈیشن کرتے ہیں، تم ہو بھی ساتھ نمٹنے جا کچھ چیزیں خفیہ کشائی. تو مسئلہ اب ٹھیک ہے، یہاں تک کہ اگر، ہے ہم مضبوط خفیہ کاری کا ہے دنیا میں الگورتھم، تو آپ کو ایک کا انتخاب کرتے ہیں خاص طور پر غریب پاس، تو یہ ، آپ کا بہت بہت مدد نہیں کرے گا کے بعد سے لوگوں کے اب بھی اس کے اعداد و شمار کرنے کے قابل ہو جائے گا. مرموز سٹرنگ دیکھنے اور یہاں تک کہ اگر یہ ردی کی ٹوکری کے ایک گندگی کی طرح لگتا ہے کہ اگر، ان کے لئے کچھ بھی نہیں ہے وہ اب بھی صرف چند پاس ورڈ کوشش کرنے کی ضرورت اگر آپ یہ معلوم کرنا بہت محفوظ نہیں ہیں. تو ایک ویڈیو دیکھ کر کہ اس نقطہ ہوتا ہے. [ویڈیو پلے بیک] ہیلمیٹ، آپ پریت. کیا ہو رہا ہے؟ آپ میری بیٹی کو کیا کر رہے ہیں؟ شاندار متعارف کرانے کے لئے مجھے اجازت نوجوان پلاسٹک سرجن، ڈاکٹر فلپ Schlotkin، سب سے بڑی ناک پورے میں کام آدمی کائنات، اور بیورلی ہلز. -مہارانی. ناک کام؟ مجھے سمجھ نہیں آتا. وہ پہلے سے ہی ایک ناک کام تھا. یہ ایک میٹھی سولہ موجود تھے. نہیں. یہ آپ کو لگتا ہے نہیں ہے. یہ بہت، بہت برا ہے. آپ کو آپ کے وزٹرز کا مجموعہ نہیں دیتے تو ہوائی ڈھال، ڈاکٹر Schlotkin گے اپنے پرانے ناک آپ کی بیٹی واپس دے. نہیں. کہ تم کہاں سے حاصل کیا؟ ٹھیک ہے. میں بتا دونگا. میں بتا دونگا. نہیں، والد. نہیں، تم نہیں کرنا چاہئے. -تم حق، میری پیاری. میں اپنے نئے ناک کی کمی محسوس کریں گے. لیکن میں نے اس مجموعہ نہیں بتائے گا، کوئی بات نہیں. بھی بہت ہے. ڈاکٹر Schlotkin، تمہاری سب سے بری کرنا. میری خوشی ہے. [اوزار تیز کیا جا رہا ہے.] نہیں. انتظار کریں. انتظار کریں. میں بتا دونگا. میں بتا دونگا. میں یہ کام کرے گا جانتا تھا. ٹھیک ہے. یہ مجھے دے دو. مجموعہ میں سے ایک ہے. ایک. ایک. دو. دو. دو. تین. تین. تین. چار. چار. چار. پانچ. پانچ. پانچ. تو مجموعہ، ایک ہے دو، تین، چار، پانچ. یہ بیوکوفی مجموعہ میں نے کبھی اپنی زندگی میں سنا. اس چیز کی طرح ایک بیوکوف ہے اس کے سامان پر ہوگا. راجہ صاحب، آپ کا شکریہ. تم نے کیا کیا؟ میں نے دیوار کو بند کر دیا. نہیں تم نے نہیں. تم نے پوری فلم کو بند کر دیا. میں نے غلط بٹن پر زور دیا ضروری. ٹھیک ہے، اسے واپس رکھ. فلم واپس رکھو. جی ہاں، صاحب. جی ہاں، صاحب. کی، آرنلڈ جانے دو. ، Gretchen آو. کورس کے، آپ مجھے اب بھی کریں گے اس کے لئے آپ کو بل کے لئے ہے. [END ویڈیو پلے بیک] روب BODEN: ٹھیک ہے. ہم نے پہلے ہی کے بارے میں بات کر رہے ہیں تو اب ہے کہ کچھ طریقوں میں سیکورٹی، اچھا چھوٹی سی فلم کے پوسٹر، تو حال ہی میں این ایس اے کے ساتھ دن، ان مسائل سب کچھ نگرانی. یہ آپ کی طرح محسوس کرنے کے لئے مشکل ہو سکتا ہے میں رازداری کے کچھ قسم ہے آن لائن دنیا، میں بتا نہیں سکتا اگرچہ آپ PRISM کی تفصیلات کے سب سے زیادہ. تو PRISM سے باہر منتقل، ہم نہیں جا رہے ہیں اب، اس کے بارے میں بات کرنے کے لئے آپ اپنے لیپ ٹاپ کے بارے میں سوچنا. تو یہاں، میں سوئچ کرنا چاہتے ہیں میری اصل اکاؤنٹ، میرے چھوٹے پینگوئن کے ساتھ. تو میں نے ایک پاس ورڈ مقرر ہے، اور یہ کہ پاس میں نے اسے بننا چاہتا ہوں جو کچھ بھی ہے. لیکن یاد رکھنا کہ جو میں لاگ ان ہوں ، تو یہ لاگ ان کے ساتھ فوری طور پر، کچھ پروگرام ہے. یہ تھا کہ کچھ پروگرام ہے کسی شخص کی طرف سے لکھا. اور اس طرح، اس شخص، اگر وہ کر رہے ہیں خاص طور پر بدنیتی پر مبنی، وہ کر سکتے تھے کہا ہے، ٹھیک ہے، اگر ایسا ہے تو پاس میں داخل ہے کہ برابر ہے میری اصل پاس، یا اس کے برابر ہے کچھ خاص پاس ورڈ - ڈیوڈ خوفناک یا کچھ اور ہے - پھر ان کے اندر دو تو ایک درنساوناپورن پروگرامر کر سکتے ہیں آپ میکس کے تمام، یا تک رسائی ونڈوز، یا کسی بھی چیز. تو اس کے بعد، ایک تشویش کی زیادہ سے زیادہ نہیں ہے میرا مطلب ہے، اس لاگ ان کا پروگرام ہے کہ OS X، سینکڑوں کے ساتھ بھیج دیا ہے یا ہزاروں لوگوں کی ہے اس کوڈ کا جائزہ لیا. اور اس طرح، آپ کو، کہیں آپ کے کوڈ میں، اگر اس جملے کو برابر برابر کہنا ہے کہ اگر ڈیوڈ بہت اچھا ہے، لاگ ان، تو کسی کی ہو جا، جیسے، انتظار. یہ ٹھیک نہیں ہے. یہ یہاں نہیں ہونا چاہئے. تو ہے کہ ہم چیزوں کو حاصل کرنے کے ایک طریقہ ہے قسم کے محفوظ ہونے کی. لیکن پھر بھی پروگرام کے بارے میں سوچنا آپ لکھتے ہیں کہ. آپ لاگ ان پروگرام لکھا کہتے ہیں. آپ نے لکھا ہے کہ تو یہ لاگ ان پروگرام، تو ظاہر ہے، آپ کو ایک اچھا ہیں پروگرامر. آپ کسی بھی درنساوناپورن ڈال کرنے نہیں جا رہے ہیں ایکس برابر برابر اگر ڈیوڈ بہت اچھا ہے آپ کے کوڈ میں. لیکن اس پروگرام، آپ کیا اس پروگرام مرتب کرنے کے لئے استعمال کرتے ہیں؟ بجنا کی طرح کچھ. تو کیا ہوا اگر ہوا وہ شخص جو بجنا میں cased بجنا خصوصی لکھنا کچھ، جیسے میں مرتب ہوں تو پروگرام لاگ ان، تو یہ کوڈ درج کریں اگر، کا کہنا ہے کہ لاگ ان کے پروگرام میں ایکس برابر ڈیوڈ بہت اچھا ہے کے برابر ہے؟ تو کافی نہیں ابھی تک، لیکن ہم ایک ہی ہے یہاں جاری، جہاں بجنا، اچھی طرح سے، ہزاروں کی تعداد میں، اگر نہیں، تو دسیوں ہزاروں کی لوگوں کے، ہے، بجنا میں دیکھا ہے کوڈ کی اس کی لائنوں کی طرف دیکھا اور کہا، ٹھیک ہے، یہاں برا کچھ بھی نہیں ہے. ظاہر ہے، کوئی نہیں کر رہا ہے یہ بدنیتی پر مبنی کچھ. لیکن کیا، کی طرح، خود بجنا ہے کیا بجنا میں مرتب ہے؟ کیا میں نے کچھ سنکلک ہے کہ اگر بجنا میں اضافہ ہے کہ بجنا آگاہ کا کہنا ہے کہ اس خصوصی ہیک، ٹھیک ہے، بجنا میں مرتب تو کارکردگی میں خاص طور پر نظر آنا چاہئے ہو لاگ ان پروگرام اور ڈالیں کے اندر اس پاس، برابر برابر ڈیو بہت اچھا ہے؟ تو یاد رکھیں کہ آپ کی سنکلک خود کچھ نقطہ پر مرتب کرنے کی ضرورت ہے. تو آپ بجنا مرتب کرنے کے لئے منتخب کیا ہے تو ، خود آپ کو تو، بدنیتی پر مبنی ہے کے ساتھ پوری خراب کیا جا سکتا ہے راستے لائن. تو یہاں ہم کین تھامسن ہے ڈینس رچی. تو یہ ایک شاندار تصویر ہے. ڈینس رچی حق پر ہے. انہوں نے ایک اہم ہے - بہت سی لکھا ہے تو آپ کر سکتے ہیں اس کلاس کے لئے اس کا شکریہ ادا. کین تھامسن بائیں طرف ہے. ان میں سے دو بنیادی طور پر یونیکس لکھا. ٹھیک ہے، وہ بڑی شراکت تھے یونیکس میں. کچھ دوسرے تھے. کسی وقت تو کین تھامسن،، وہ ٹیورنگ ایوارڈ جیت لیا. اور ٹیورنگ ایوارڈ، میں نے ہمیشہ سنا ہے یہ اس طرح محولہ، یہ ہے کمپیوٹر سائنس کے نوبل انعام. تو ٹیورنگ حوالے کرنا AT، وہ ہے ان کی قبولیت کی تقریر. اور وہ اس بہت مشہور تقریر دیتا ہے اب، یقین کرنے پر مظاہر ملاقات کی ہم سے منسلک ہے جس میں ٹرسٹ، کورس کی ویب سائٹ پر. اور اس تقریر میں، وہ، ٹھیک ہے، کا کہنا ہے کہ تو میں UNIX لکھا، اور اب سب سے آپ لوگوں UNIX استعمال کر رہے ہیں. اب، لینکس ہے کہ آج یاد یونیکس کے ایک براہ راست ونشج. OS X کے براہ راست UNIX کا استعمال کرتا ہے. ونڈوز اتنا نہیں ہے، لیکن ایک بہت خیالات کی UNIX سے لیا گیا. تو وہ، اسٹیج پر جاتا ہے اور کہتے ہیں کہ ٹھیک ہے، میں UNIX لکھا. اور صرف تو تم لوگ جانتے ہو، میں ہوں ہر میں لاگ ان کرنے کے قابل آپ کے کمپیوٹر کے ایک ایک. ایکس اگر میں ان خصوصی کی ایک ڈال کے بعد سے برابر، کین تھامسن بہت اچھا ہے برابر پھر میں لاگ ان کرنے کی اجازت کر رہا ہوں. تو لوگوں، اچھی طرح، کی طرح ہیں تمہیں کیسے دے؟ ہم لاگ ان پروگرام میں دیکھا اور کچھ بھی نہیں ہے. انہوں نے کہا کہ ٹھیک ہے، میں سنکلک نظر ثانی، کی طرح ہے لاگ ان پروگرام میں لاگ ان کرنے کے لاگ ان پروگرام اب پڑے گا تاکہ کہ ایکس کین تھامسن برابر برابر بہت اچھا ہے. اور وہ ٹھیک ہے، یہ سچ نہیں ہے، کا کہنا ہے کہ. ہم سنکلک کی طرف دیکھ، اور کر رہے ہیں سنکلک میں سے کسی کی لائنز کی ضرورت نہیں ہے اس طرح کے کوڈ. انہوں نے کہا کہ ٹھیک ہے، کی طرح ہے، لیکن آپ کیا کر رہے ہیں سنکلک کے ساتھ تالیف؟ اور، ساتھ ساتھ، طرح، وہ سوچتے ہیں، اور وہ ہے میں آپ سنکلک دی جو ایک ہوں آپ سنکلک مرتب کرنے کے لئے استعمال کرتے ہوئے، تو کر رہے ہیں آپ، ایک سنکلک کی تالیف کر رہے ہیں خود کو بدنیتی پر مبنی ہے، اور لاگ ان پروگرام کو توڑنے کے. تو بنیادی طور پر، اس وقت، وہاں ہے آپ ماخذ کو دیکھنے کے کر سکتے ہیں کوئی راستہ نہیں لاگ ان کے پروگرام کے کوڈ کیا غلط ہے کو دیکھنے کے لئے. آپ کو بھی میں نظر نہیں کر سکتے ہیں سنکلک کی ماخذ کوڈ کیا غلط ہے کو دیکھنے کے لئے. آپ مشین کو دیکھنے کے لئے کی ضرورت ہو گی کوڈ، کی اصل بائنری ان، انتظار، کو دیکھنے کے لئے مرتب کی سنکلک کوڈ کی لائنیں یہاں نہیں ہونا چاہئے. لیکن کین تھامسن یہ ایک قدم اٹھایا مزید اور کے ساتھ ساتھ، ہیں، نے کہا ہے کہ ان خصوصی پروگراموں کہ اصل میں آپ کے پروگراموں کی بائنری پڑھنے میں مدد، اور تو کسی کو اس پروگرام کا استعمال اگر ثنائی پڑھا، وہ ان کو دیکھیں گے کوڈ کی لائنیں. انہوں نے تمام، کا کہنا ہے کہ ان پروگراموں پر نظر ثانی حق، آپ کو تلاش کر رہے ہیں سنکلک، یہ خاص طور پر ظاہر نہیں کرتے ثنائی کے سیٹ. تو پھر آپ کو لینے کی ضرورت ہے کہ ایک قدم مزید اور بنیادی طور پر، یہ ہے کہ کر سکتے ہیں indirection لیا ایک سے زیادہ کی سطح، اور کچھ نقطہ پر، کوئی نہیں اصل میں ہے کی جانچ پڑتال کی جا رہا ہے. تو کہانی کا اخلاقی تم، ہے لکھ نہیں کیا جا سکتا اس کلاس میں بجنا. آپ چڑھنے کا استعمال کرتے ہوئے جا رہے ہیں اس کلاس میں ایک بہت بجنا. آپ کو معلوم ہے سب کے لئے، بجنا بدنیتی پر مبنی ہے ہر سبوتاژ کیا جاتا ہے کہ پروگرام ایک پروگرام کیا تم نے کبھی مرتب کیا ہے. اور یہ کہ بہت اشوب پر آپ کو چھوڑنے کے لئے بدھ کو نظر آئے، نوٹ. [تعریف] اسپیکر 2: اگلا CS50 میں. 3 اسپیکر: تم کا کہنا ہے کہ ہمت نہ کرنا. آپ یہ کر سکتے ہیں. تم سے پہلے یہ کیا ہے، آپ یہ کر سکتے ہیں آج، آپ کو کل یہ کر سکتے ہیں. آپ سال کے لئے یہ کر رہا ہوں. بس وہاں جانا ہے اور ایسا. آپ یہ کر سکتے ہیں. [موسیقی بجانا]