DAVID J. MALAN: یہ CS50 ہے اور اس ہفتے چار کا آغاز ہے. اور، لڑکے، ووکس ویگن میں ہے تمام کیونکہ سافٹ ویئر کی مصیبت. ہمیں ایک نظر ڈالیں. [ویڈیو پلے بیک] -Cars، ہوشیار حروف تیز رفتار اور غصے فلموں میں. اس ہفتے جرمن کارساز ادارے ووکس ویگن خود کو پایا کا ایک اسکینڈل کے وسط میں ممکنہ طور پر مجرمانہ تناسب. -Volkswagen اربوں کے لئے bracing ہے جرمانے میں، ممکنہ فوجداری الزامات اس کے ایگزیکٹوز کے لئے، کے طور پر کمپنی معافی 11 ملین کاروں دھاندلی کے لئے یہ اخراج ٹیسٹ کو شکست میں مدد. -Certain ڈیزل ماڈل تھے جدید ترین سافٹ ویئر کے ساتھ ڈیزائن کیا گیا سمیت استعمال شدہ معلومات اسٹیئرنگ اور گاڑی کی پوزیشن گاڑی تھی تعین کرنے کے لئے تیز اخراج ٹیسٹنگ سے گزر. کہ حالات کے تحت، کے انجن زہریلے اخراج کو کم کریں گے. لیکن گاڑی بائی پاس پر دھاندلی کی گئی تھی کہ حوصلہ افزائی کی جا رہی تھی جب. اخراج 40 کرنے کے لئے 10 میں اضافہ قابل قبول EPA سطح سے اوپر بار. [END پلے بیک] DAVID J. MALAN: تو چلو اس پر ایک نظر ڈالیں اور کس طرح اس کو دیکھنے کے لاگو کیا جا سکتا ہے اور اس پر اثر انداز ہو سکتا ہے کہ کس طرح اس طرح اتنے بہت سے کاروں. تو میرے ہاتھ میں یہاں دبائیں ہیں کہ EPA-- کی طرف سے جاری کیا گیا تھا کی رہائی ماحولیاتی تحفظ ایجنسی جو امریکی ریگولیٹری ایجنسی ہے ماحولیاتی خدشات ہینڈل، اور پھر اصل تھا کہ قانونی نوٹس صرف چند روز قبل ووکس ویگن کو بھیجنے. تو EPA لکھتے ہیں، اور اب انکشاف عوامی سطح پر، ایک جدید ترین سافٹ ویئر بعض پر الگورتھم ووکس ویگن گاڑیوں کا پتہ لگاتا ہے جب گاڑی سے گزر رہا ہے سرکاری اخراج کی ٹیسٹنگ اور مکمل اخراج دیتا ہے صرف ٹیسٹ کے دوران پر کنٹرول. کی تاثیر ان گاڑیوں کی آلودگی اخراج کنٹرول آلات بہت ہے تمام عام ڈرائیونگ کے دوران کم حالات. یہ پورا ہے کہ گاڑیوں میں نتائج لیبارٹری یا ٹیسٹنگ میں معیار اسٹیشن، لیکن معمول کے آپریشن کے دوران نائٹروجن oxides-- یا NOx-- اخراج میں 40 بار معیاری. ووکس ویگن کی طرف سے تیار سافٹ ویئر ایک اقتباس unquote، شکست آلہ ہے کلین کی طرف سے وضاحت کے طور پر امریکہ میں ایئر ایکٹ. انہوں نے کا کہنا ہے کہ پر جائیں EPA اور کسی اور ایجنسی شکست آلہ بے نقاب آزاد تجزیہ کے بعد سافٹ ویئر مغرب میں محققین کی طرف سے ورجینیا یونیورسٹی. NOX آلودگی کے لئے حصہ نائٹروجن ڈائی آکسائیڈ، زمین کی سطح وجون، اور ٹھیک particulate معاملہ. ان کے لئے کی نمائش آلودگی سے منسلک کیا گیا ہے کی ایک وسیع رینج کے ساتھ سنگین صحت کے اثرات، اضافہ دمہ سمیت حملوں اور دیگر سانس کافی سنگین ہو سکتا ہے کہ بیماریوں ہسپتال لوگوں کو بھیجنے کے لئے. وجون نمائش اور particulate معاملہ بھی قبل از وقت کے ساتھ منسلک کر دیا گیا متعلقہ سانس کی وجہ سے موت یا قلبی اثرات سے متعلق. بچوں، بوڑھوں، کے ساتھ لوگوں پہلے سے موجود سانس کی بیماری خاص طور پر خطرے میں ہیں ان آلودگی کی صحت اثرات. کافی یہ بہت سنگین ہے، کا کہنا ہے کہ. اور کے پڑھنے کے لئے پر جانے صرف ایک اقتباس اور پھر ہم پر ایک نظر لے لیں گے بنیادی مضمرات ایک گاڑی کے سیاق و سباق میں اس کی. خاص طور پر، ووکس ویگن تیار اور نصب نام نہاد میں سافٹ ویئر الیکٹرانک کنٹرول module-- یا ECM-- کے محسوس کہ ان گاڑیوں گاڑی کے لئے تجربہ کیا جا رہا تھا جب EPA اخراج کے معیار کے ساتھ عمل. سمیت مختلف آدانوں کی بنیاد پر سٹیئرنگ وہیل کی پوزیشن، گاڑی رفتار، انجن کی مدت آپریشن اور barometric دباؤ، ان آدانوں مختصرا پیرامیٹرز ٹریک کے لئے استعمال کیا وفاقی ٹیسٹ کے طریقہ کار کے EPA تصدیق کے لئے اخراج کی جانچ مقاصد. EPA کی اخراج کی جانچ کے دوران، گاڑیاں ECM سافٹ ویئر پیداوار ہے جس میں سافٹ ویئر بھاگ گیا مطابق اخراج نتائج. تمام دوسرے اوقات میں، گاڑی ECM سافٹ ویئر ایک علیحدہ سڑک بھاگ گیا کم جس انشانکن کی تاثیر مجموعی طور پر اخراج کنٹرول سسٹم، خاص طور پر منتخب اتپریرک دبلی NOX میں کمی trap-- جو ہم ایک لمحے میں نظر آئے گا. NOX کے نتیجے میں، اخراج 10 سے 40 اوقات کے ایک پہلو کی طرف سے اضافہ ہوا ہے EPA کے مطابق سطح سے اوپر ڈرائیو سائیکل کی قسم پر منحصر. یہ واقعی مطلب ہے، اور تو کیا سافٹ ویئر چلانے کے لئے ماخذ کوڈ ووکس ویگن کی نہیں ہے ابھی تک عوامی طور، انکشاف کیا گیا کہ، مؤثر طریقے سے، یہ ہے برابر کہیں اندر ہے ووکس ویگن کے کوڈ کا. تو آپ کو ٹیسٹ، اور کیا جا رہا ہے تو کار بعض ماحولیاتی عوامل کا پتہ لگاتا ہے سٹیئرنگ وہیل کی طرح پوزیشن یا تحریک یا اس کی کمی کار کی یا اس دوسرے عوامل کی کسی بھی تعداد اس وقت hypothesized ہے ہیں اس فارمولے کا حصہ بننا، وہ صرف پر تبدیل مکمل اخراج کنٹرول. دوسرے الفاظ میں، وہ شروع آلودگی کی کم اتسرجک. ورنہ، ہر دوسرے کی صورت حال میں یہ کیا جا رہا ہے کے طور پر پتہ نہیں ہے جب تجربہ گاہیں میں، وہ صرف نہیں ہے. اور اس لئے تم سے زیادہ میں اس کو آسان بنانے کر سکتے ہیں کچھ کے ساتھ ٹھوس pseudocode کے اس طرح. پہیوں کا رخ کر رہے ہیں لیکن اگر سٹیئرنگ وہیل، تجویز نہیں ہے گاڑی سے کچھ پر ہے گھومنے سلنڈر کی قسم لیکن کچھ قسم میں گودام تجربہ کیا جا رہا، تو کے طور پر برتاؤ EPA آپ کرنا چاہوں گا. ورنہ ایسا نہیں کرتے. تو ایک نظر ڈالیں ایک مختصر ویڈیو ہے کہ کیا مضمرات پر ایک نظر سے لیتا ہے اصل میکانکی اس کے ہیں. [ویڈیو پلے بیک] جمعہ -آخری EPA اعلان کیا ہے کہ کچھ ووکس ویگن آڈی کاروں 2009 کے درمیان بنایا اور اس سال کا استعمال کرتے ہوئے ایک نام نہاد شکست آلہ اخراج قوانین کے ارد گرد حاصل کرنے کے لئے ہوا صاف رکھنے کے لئے ڈیزائن کیا گیا. لیکن ہے کہ بالکل کیا مطلب ہے؟ ویسے، جدید کاروں درجنوں ہیں ان کے اندر کمپیوٹرز کی. اور ان کے بعد کچھ کمپیوٹروں افعال سمنوی مدد زیادہ سے زیادہ کے لئے انجن کے کارکردگی کو یقینی بنانے جبکہ بہت زیادہ ردی کی ٹوکری میں نہیں ہے کہ راستہ پائپ سے باہر آ رہے. وہ اصل میں کام کر رہا ہوں اب کئی دہائیوں کے لئے اس طرح. بنیادی طور پر، ہر حصے ایک جدید کی گاڑی کے انجن کے ایک سینسر یا کنٹرولر ہے یہ، اور ان کمپیوٹر پر اعداد و شمار کے ہزاروں کی تعداد میں پڑھ رہے ہیں دوسری سازی ایڈجسٹمنٹ فی اوقات ہوائی ایندھن کے تناسب کی طرح کہ سلنڈر میں جا رہا ہے. یہ دھوکہ ووکس ویگن اور آڈی ماڈل diesels کے، ہیں اور diesels کے ایک زیادہ ہے واقعی اہم کمپیوٹر ہے جس میں کنٹرول پیرامیٹرز، جا unburned ایندھن کی رقم راستہ میں. اب جب کہ برا لگتا ہے. آپ چاہتے ہیں کی طرح نہیں لگتی راستہ میں جانے unburned ایندھن. لیکن ایک کی صورت میں ڈیزل، آپ ڈھونڈ رھے ہیں ایک آلہ ہے جو ایک نیٹ ورک NOX کہا جاتا ہے کہ اوشوشیت اور نائٹروجن آکسائڈ کے لئے نیٹ ورک آلودگی ہوتا ہو دوسری صورت میں فضا میں جانا. اس NOX نیٹ ورک کا اثر unburned ایندھن کے ساتھ بڑھا ہے. تو ایک شکست آلہ ایک خصوصی پروگرام ہے ان کمپیوٹرز اندر یہ کر سکتے ہیں گاڑی اخراج ملاقات کی طرح نظر آتے معیار یہ نہیں ہے اس وقت بھی جب. ووکس ویگن اس کے ہاتھ پر ایک مسئلہ تھا. اس ڈیزل انجنوں پر جانا جاتا تھا عظیم ایندھن کی معیشت حاصل کرنے کے لئے، لیکن NOX ٹریپ صرف اچھی طرح کام کرتا ہے زیادہ ایندھن استعمال کیا جا رہا ہے جب. تو گاڑی، کا پتہ لگانے کے گا اس ہار آلہ استعمال کرتے ہوئے، یہ ایک اخراج ہو رہی تھی جب ٹیسٹ، یہ زیادہ ایندھن کا استعمال کریں گے، اچھی طرح NOX نیٹ ورک کام بنانے، اخراج ٹھیک ہو جائے گا. لیکن پھر آپ کو، سڑک پر آلہ حاصل بند کر دیتا ہے، اگر آپ کو کم ایندھن جلا رہے ہیں لیکن تم جتنا 40 اوقات ڈال رہے ہیں ماحول میں زیادہ آلودگی. لیکن heck کیسے کار یہ تھا کہ جانتے ہیں اخراج تعمیل کے لئے تجربہ کیا جا رہا؟ EPA یہ ایک جدید ترین کا کہنا ہے کہ چیزوں کی جانچ پڑتال کہ نظام سٹیئرنگ وہیل پوزیشن کی طرح، رفتار، انجن پر تھا کتنی دیر تک، اور یہاں تک کہ وایمنڈلیی دباؤ. دوسرے الفاظ میں، وہاں تھا کوئی راستہ نہیں اس حادثاتی تھا سافٹ ویئر تھا کیونکہ پتہ لگانے کے لئے بہت احتیاط سے ڈیزائن ایک سرکاری اخراج ٹیسٹ. کہ کچھ بہت سنجیدہ ہے دھوکہ دہی اور ہے کیوں ووکس ویگن میں ہے اس طرح کے سنگین مصیبت. اصل میں، ان کے سی ای او، مارٹن ونٹرکورن، صرف نیچے قدم رکھا. تو اس کے بعد کیا ہوتا ہے؟ ویسے آپ کو نصف ملین میں سے ایک ہیں، تو ڈیزل Jettas، بیٹلس، Golfs، Passats، یا آڈی A3s، متاثر اچھی خبر ہے کہ آپ کی گاڑی بھی ڈرائیو کرنے کے لئے محفوظ ہے. آپ کو اسے دور ڈال کرنے کی ضرورت نہیں ووکس ویگن ایک یاد جاری تک. لیکن کچھ نقطہ پر وہ کر رہے ہیں شاید کے لئے جا آپ کی گاڑی کے اندر سافٹ ویئر کو اپ ڈیٹ کرنے. ایسا ہوتا ہے جب آپ کو ہو سکتا ہے ٹینک کے مطابق کم میل حاصل کرنے کے. وکیل نے پہلے ہی تیاریاں پکڑ رہے ہیں کلاس ایکشن قانونی مقدموں کے لئے سائن اپ تو مالکان معاوضہ ہو سکتا ہے مستقبل میں کسی وقت. لیکن اس لئے نہیں جا رہا جلد ہی کسی بھی وقت ہو. [END پلے بیک] DAVID J. MALAN: تو یہ اصل میں اٹھاتا ہے ایک دلچسپ بڑی تصویر سوال کے طور پر پر اعتماد کرنا. ٹھیک ہے؟ ہم تمام فونز یا Androids کی ہے یا اپنی جیب میں کچھ سب سے زیادہ امکان ان دنوں، یا لیپ ٹاپ ہیں کہ ہماری گود پر بنا چلنے والے سافٹ ویئر ایپل اور مائیکروسافٹ کی طرف سے دیگر کمپنیوں کے اور bunches. لیکن ہم کس طرح جانتے ہیں کہ کیا ان سافٹ ویئر کی پیداوار کر رہے ہیں کیا یہ اصل میں ہے کمپنیوں وہ کر رہے ہیں کا کہنا ہے کہ؟ مثال کے طور پر، جو کرنے کے لئے ہے کا کہنا ہے کہ ہر وقت آپ کو آپ کے فون پر ایک فون کال لوڈ، اتارنا Android فون یا کی طرح، اس فون نمبر بھی نہیں ہے کہ کچھ کمپنی کے سرور پر اپ لوڈ کیا جا رہا ہے کچھ پروگرام آپ کو ہے کیونکہ یہ آپریٹنگ ہے کہ آیا، لکھا iOS یا لوڈ، اتارنا Android کی طرح کے نظام خود، یا آپ کو ڈاؤن لوڈ کیا ہے کیونکہ کسی تیسری پارٹی اپلی کیشن کسی نہ کسی طرح سن رہا ہے کہ ہر چیز کو میں ٹائپ کر رہے ہیں یا سب کچھ آپ کو اصل میں کہہ رہے ہیں. آپ جانتے ہیں کہ کس طرح، جب تم لوگوں کو بجنا چل رہے ہیں یا مرتب کرنے کے لئے یقینی بنائیں کہ آپ CS50، کہ کس طرح میں اپنے سافٹ ویئر آپ کو اس CS50 اپنے عملے کرتے، CS50 لائبریری کی راہ کی طرف، ہر لاگ ان نہیں کیا گیا ہے کیا تم نے کبھی ملا ہے سٹرنگ یا ہر آپ کبھی ملا ہے انچ؟ ویسے، آپ کو یقینی طور نظر کر سکتے ہیں کسی چیز کے لئے منبع کوڈ میں CS50 لائبریری کی طرح، آپ ماخذ کوڈ کو دیکھ سکتا ہے لینکس آپریٹنگ سسٹم کے لئے CS50 IDE پر چلنے. لیکن ایک حیرت انگیز پریزنٹیشن 1984 ء میں واپس دیا گیا ایک طرف ٹیورنگ ایوارڈ کی وصولی میں نام سے جانا جاتا بہت مشہور کمپیوٹر سائنسدان نام کین تھامسن as-- جو ٹیورنگ ایوارڈ موصول ہوئی ہے جس کمپیوٹر سائنس کی طرح ہے نوبل انعام، اگر آپ، ایک پر ان کے کام کے لئے آپریٹنگ سسٹم کہا جاتا میں بہت ملتا جلتا ہے جو یونیکس، ہم جو استعمال کیا روح لینکس ہے. اور سوال میں پوچھا وہ ان بنیادی طور پر قبولیت کی تقریر، کے لئے فریم ورک نیچے بچھانے سال اور بحث کا سال اعتماد اور سیکورٹی کے بارے میں، یہ تھا. کس حد تک چاہئے ایک پر بھروسا رکھتے ہیں کرنے کے لئے ایک ٹکڑا پروگرام اس بیان کے software-- ٹروجن گھوڑوں کی مفت ہے؟ شاید اس پر اعتماد کرنے کے لئے زیادہ اہم ہے سافٹ ویئر لکھا جو لوگوں. اور حقیقت میں، ہم سے منسلک ہے بات ہے کہ وہ اس ایوارڈ کو قبول جب دی CS50 کی ویب سائٹ پر '80s میں آج کے لئے لیکچرز کے صفحے کے تحت. آپ دیکھیں گے کیا کیونکہ وہ اصل میں دیتا ہے کس طرح بھی ایک کافی آسان مثال بجنا یا جو کچھ بھی طرح ایک سنکلک دوسروں ماضی میں استعمال کیا ہے مرتب، سنکلک ہم میں سرایت تو کیا خود تو ایک چھوٹی سی ہے استعمال کر رہے ہیں بنیادی طور پر کا کہنا ہے کہ حالت، آپ اس کوڈ کو استعمال کر رہا ہے کہ محسوس کریں تو GetString تقریب یا میں GetInt تقریب، آگے بڑھو اور داخل ایک پیچھے کے دروازے یا ایک ٹروجن گھوڑے اس طرح ہے کہ اس پروگرام اب کچھ سے zeros ہے اور بدنیتی پر مبنی کچھ کرنا ہے کہ لوگ. تمام لاگنگ آپ کہ اعداد و شمار کو اپ لوڈ keystrokes کے، کچھ سرور، یا واقعی کچھ کرنے کے لئے. اور کیا کین تھامسن اپنی گفتگو میں ایسا کرنے پر جاتا ہے یہاں تک کہ اگر اس کا مظاہرہ کرنے کے لئے ہے آپ ماخذ تک رسائی حاصل ہے ایک سنکلک کے کوڈ اس بدنیتی، ایسا ہو سکتا ہے اس کی وجہ سے کوئی فرق نہیں پڑتا یہ چکن اور انڈے ہے گزشتہ کئی کی حقیقت سال جس compilers کے خود مرتب کرنے کے لئے استعمال کیا جاتا ہے. دوسرے الفاظ میں، راستے واپس جب کوئی پہلے سنکلک لکھا ہے تھا. اور اس کے بعد کسی بھی وقت وہ اپ ڈیٹ کر دیا اس کے منبع کوڈ کو تبدیل کرنے کے کی طرف سے ایک سنکلک، خصوصیات کا اضافہ اور یہ recompiling ہم جیسے لوگوں کو استعمال کرنے کے لئے، اچھی طرح سے، وہ پرانے استعمال کر رہے ہیں سنکلک کے ورژن نئے مرتب کرنے کے لئے سنکلک کے ورژن. اور آپ کو ایک نظر ڈالیں تو وہ دیا ہے کہ بات پر، آپ کی وجہ سے اس کو دیکھ لیں گے کہ circularity کے، آپ اصل میں کیڑے ہو سکتا ہے یا ٹروجن گھوڑوں سافٹ ویئر میں سرایت ہم استعمال کر رہے ہیں. اور آپ کو نظر آئے یہاں تک کہ اگر ان پروگراموں کے لئے ماخذ کوڈ، یہ بھی واضح نہیں ہو سکتا ہے trickery کے اصل میں ہے کیونکہ ایک میں سے کچھ پرانے ورژن میں کبھی کے بعد کیا گیا ہے کہ سنکلک ہمارے سافٹ ویئر میں خطرہ انجیکشن. کون سی ہے صرف ہم، کا کہنا ہے کہ واقعی نہیں کر سکتے ہیں اور نہیں کرنا چاہئے اعتماد سافٹ ویئر ہمارے لیپ ٹاپ پر چلانے کے فونز یا جگہوں میں سے کسی نمبر یا. اور حقیقت میں، بعد میں جب اس سمسٹر میں ہم ویب پروگرامنگ کے بارے میں بات کرنا شروع اور اصل کی تعمیر شروع ویب اطلاقات خود، ہم ان کے بارے میں بات کریں گے خطرات اور دیگر. اب، آپ کو حیران اور محسوس کیا ہے ہو سکتا ہے ایک چھوٹی سی ڈارت تھا کہ کلپس میں Vader کی کہ کناروں سے دکھا رہا تھا ووکس ویگن کے بارے میں. تو آپ کبھی نہیں دیکھا ہے، میں ہم ہلکا چاہئے سوچا موڈ یہ سب ہے کیونکہ بہت مایوسی اور خوفناک. میں واپس دیکھنے کے لئے جا رہا ہوں سپر باؤل 2011 جب کی طرف سے ایک تجارتی Volkswagen-- اور اس تقریبا again-- ان پر likable ہے ٹی وی پر پہلی بار کے لئے نشر. یہ 60 دوسرے کلپ میں آپ لطف اندوز ہوں گے لگتا ہے کہ. [ویڈیو پلے بیک] [MUSIC - "سٹار وار" سے تھیم] [کتے چھال] [کار شروع ہوتا ہے] [END پلے بیک] DAVID J. MALAN: جی ہاں. میں صرف دیکھ رہا تھا. وہ گاڑی کی خلاف ورزیوں کی فہرست پر ہے. بالکل ٹھیک. تو ہم نے کچھ دیکھو ایک لمحے پہلے pseudocode کے. اور یہاں ایک بڑا ہے pseudocode کے کوڈ کا ٹکڑا کہ ہم نے ابھی تک چند بار دیکھا ہے. اور ہم اس کے لئے ایک موقع ہے کا استعمال کرتے ہیں اب ایک نئی پروگرامنگ متعارف کرانے کے لئے ہم نے کیا ہے کہ ٹیکنالوجی algorithmically ہے دیکھیں پچھلے ہفتے ہم نے ضم طرح دیکھا جب. لیکن یہ رسمی طور پر اور کس طرح دیکھتے ہیں ہم اصل کوڈ میں استعمال کر سکتے ہیں اور پھر ہم اس کا استعمال کرنے جا رہے ہیں سڑک کے نیچے سب سے زیادہ ٹیکنالوجی بعض دیگر مسائل کو حل کرنے کا امکان. تو یہ پہلا پروگراموں میں سے ایک تھا، ہم کبھی pseudocode کے کوڈ میں ہی سہی، لکھا. اور کیا اس پروگرام ہمارے کورس ایسا کرنے کی اجازت ایک فون کی کتاب میں مائیک سمتھ تلاش کرنا تھا. اور خاص طور پر لائنوں آٹھ میں محسوس اور اس کے جانے کا بیان تھا جس میں 11. اور حقیقت میں، کچھ زبانوں، ان کے درمیان سی، اصل میں ایک ہے لفظی ہے کہ بیان اس کے لئے آپ کی اجازت دیتا ہے جانا ایک مخصوص لائن پر کودنے. یہ عام طور پر کیونکہ وسلم frowned ہے یہ بہت آسانی سے کیا جا سکتا ہے کے ساتھ زیادتی اور آپ کو کود شروع کر سکتے ہیں آپ مخالفت کے طور پر سب جگہ پروگرام قسم کا استعمال کرتے ہوئے کرنے کے لئے منطق اور کنٹرول بہاؤ ہم صرف کے ساتھ اس طرح اب تک استعمال کیا ہے کہ loops اور حالات اور طرح. لیکن ہم اس الگورتھم کو آسان بنانے کے کر سکتے ہیں pseudocode کے کوڈ میں کے طور پر مندرجہ ذیل ہے. بجائے اس کے تکراری یا نقطہ نظر looping کے جہاں ہم واپس جاری رکھنے اور واپس اور واپس تین لائن، کیوں ہم صرف کی قسم پنٹ اور زیادہ نہیں عام طور پر، آن لائن سات اور 10 میں کہتے ہیں صرف دو ان لوگوں کی جگہ کے ساتھ لائنوں کے جوڑے، سمتھ پہلے ہے اور اگر کتاب میں ہم کریں گے میں مائیک کے لئے تلاش کتاب کے بائیں نصف. سمتھ میں بعد میں ہے اور اگر کتاب، حق میں مائیک کے لئے تلاش نصف کتاب. اور پہلے ہی circularity محسوس. ٹھیک ہے؟ میں مائیک کے لئے تلاش کر رہا ہوں فون بک اور پھر میں نے آخر میں شاید مارا لائن سات یا شاید لائن 10 اور اپنے آپ کو میری ہدایات پر تلاش ہے فون بک کے نصف میں مائیک کے لئے. ویسے، کس طرح میں مائیک کے لئے تلاش کرتے ہیں؟ میں کے وسط میں ہوں مائیک، کیوں کے لئے تلاش آپ کی طرح ایک دائرے کی مانند میں مجھے بھیج رہے ہیں؟ لیکن یہ ہے کہ کیا کیونکہ ٹھیک ہے مسئلہ کے سائز کے ہو، 7 لائن اور 10 میں لکھا ہے؟ ہم صرف تلاش نہیں کہہ رہے ہیں مائیک کے لئے، مائیک کے لئے تلاش. ہم خاص طور پر کیا کہہ رہے ہو؟ کے بائیں نصف میں اس کے لئے تلاش مؤثر طریقے سے ہے جس میں دائیں نصف مسئلے کا نصف سائز. تو یہ ہم اس قسم کی ہیں کہ ٹھیک ہے اس circularity میں مشغول، اس سرکلر دلیل، کم از کم ہم ہیں کیونکہ مسئلہ چھوٹے اور چھوٹے بنانے. اور آخر میں ہم تک پہنچنے کے لئے جا رہے ہیں کہ نام نہاد بنیاد کیس جہاں ہم صرف ایک صفحہ ہے left-- ہمارے رضاکار گزشتہ ہفتے کے طور پر did-- ہم ایک صفحہ پر پھر چھوڑ دیا اور ہم ایسا نہیں کرتے مائیک سمتھ کی تلاش رکھنے کے لئے ہے وہ اس صفحے پر تو ہے کیونکہ یا وہ نہیں ہے. تو ہم نے اس خیال، اس پر عمل درآمد کر سکتے ہیں کس طرح اصل کوڈ میں circularity کی طرح؟ ٹھیک ہے، ہم ایک ٹیکنالوجی بیعانہ کر سکتے ہیں کہ عام طور پر تکرار کے طور پر جانا جاتا ہے. اور ہم میں اس کو دیکھا ہے ضم طرح کے لئے pseudocode گزشتہ ہفتے. یہ تھا کہ یاد ضم طرح کے لئے pseudocode. یہ arguably سے بھی آسان ہے بلبلا یا انتخاب یا اندراج کی طرح صرف سادگی کے لحاظ سے جس کے ساتھ آپ اس کا اظہار کر سکتے ہیں. لیکن اس کی وجہ ہے ہم قسم کے ہیں circularly ہیں کسی چیز کے لئے تلاش، کہہ پھر اس کے لئے تلاش کی طرف سے. لیکن ہم تو پر تلاش کر رہے ہیں بائیں نصف یا دائیں نصف اور پھر آخر میں ہم ہیں اس معاملے میں ضم. لیکن یہاں، بھی، کے ساتھ ان دونوں قسم کی لائنز، ہم ایک بار پھر اس کی کیا ضرورت تھی تکرار کا خیال. اور ٹھوس اس کا مطلب کیا، ایک الگورتھم کے تناظر میں، ایک الگورتھم پنراورتی ہے اسے استعمال کرتا ہے یا خود بلاتا ہے تو. یا C کے لحاظ سے، ایک تقریب ہے نامی ایک تقریب recursive-- FOO کو، FOO اگر پنراورتی ہے کہیں اس کے منبع کوڈ میں، تقریب FOO کہلاتی ہے. اور یہ کہ تمام FOO کو کبھی کرتا ہے تو برا ہے بار بار خود کہتے ہیں. FOO کو بالآخر رک جاتا ہے تو کرتا ہے کے طور پر اسے ٹھیک ہے ، کہہ کر، ضم طرح ایک منٹ رکو، اس مسئلہ سپر ہے چھوٹے، مثال کے طور پر، یا میں ہوں جسے وہ مل گیا کے لئے تلاش کر، صرف واپسی. تکراری طور پر، نہ کریں کے cyclically پھر اپنے آپ کو کال. اور اس طرح کی پر ایک نظر ڈالیں یہ اصل میں کام کر سکتے ہیں کہ کس طرح. تو میں نے آگے اور کھلے جانے کے لئے جا رہا ہوں یہاں دو ماخذ کوڈ مثالیں. جن میں سے ایک سگما 0 کہا جاتا ہے. یہ بالکل نہیں ہے پنراورتی، لیکن ڈالیں ایک اس پروگرام کرتا ہے کو دیکھنے کے. میں سب سے باہر چھین لیا ہے یہ لیکن تمام کی طرف سے تبصرے CS50 کی پر ماخذ کوڈ کے ویب سائٹ اگر آپ تبصرہ بعد میں دوبارہ اس کے ذریعے پڑھنے کے لئے چاہتے. اور ایک جوڑے کرتے ہیں وویک کے یہاں کی جانچ پڑتال. ، اس کوڈ کے سب سے اوپر تو ہم CS50.h. شامل ہے یہ کیا کرتا ہے؟ کیوں یہ یہاں ہے؟ مناسب عام آدمی کی شرائط میں. یہ کیا کرتا ہے؟ جی ہاں. سامعین: GetInt تقریب کام کرتا ہے تاکہ. DAVID J. MALAN: تو اس GetInt تقریب کام کرتا ہے. اس کے اندر کی وجہ سے فائل، میں، CS50.h جس ہم طویل عرصے سے پہلے دیکھیں گے اس کے منبع کوڈ کی شرائط، کے افعال میں سے ایک گروپ ہے declared-- میں GetInt، GetString کے، others-- اور جب تک ایک گروپ اور ہم اصل میں، اس لائن میں شامل ہے سنکلک بجنا نہیں ہے یہ موجود ہے کہ جاننے کے لئے جا. اور ایک ہی لائن کے لئے جاتا ہے INT بیان کیا جاتا ہے جہاں دو ایک تقریب ہے جس printf، ہم بہت تھوڑا سا استعمال کرتے ہوئے رکھنے. اب، لائن چار ایک چھوٹا سا funky لگتا ہے یہ صرف ایک لائنر ہے کیونکہ. یہ کوئی گھوبگھرالی، ایک نیم وقفہ ہے منحنی خطوط وحدانی، اس کے اندر کوئی کوڈ. لیکن کیا ہم کہتے ہیں کیا گزشتہ ہفتوں میں اس بات کو؟ جی ہاں. تو ایک پروٹوٹائپ. اور کیوں ہم ایک ہیں لگتا ہے جس میں پروٹوٹائپ ایک چھوٹا سا فالتو ہونا عام طور پر عام طور پر ہم نے پھر تقریب دیکھیں بعد فائل میں، ٹھیک ہے؟ تو کیوں نہ ہم آپ کو صرف ہو have-- کرتے اپنے سر scratching لیکن میں لے جاتا ہوں. جی ہاں. سامعین: [اشراوی] اہم کے بعد تقریب. DAVID J. MALAN: بالکل. سنکلک آپ کو جانتا ہے تاکہ آخر میں وضاحت یا نافذ کرے گا شاید اہم کے بعد اس تقریب،. اس طرح بجنا اور سب سے زیادہ compilers کے قسم کی گونگے ہیں اور وہ صرف پتہ چل جائے گا کیا آپ ان کو بتا. اور آپ کو استعمال کرنا چاہتے ہیں تو سگما نامی ایک تقریب، آپ کو بہتر سنکلک سکھانے کہ یہ پیشگی موجود. اب، اہم خود، یہاں تک کہ یہ لائنز کے ایک گروپ ہے، اگرچہ، اب امید ہے کہ بہت واقف ہے. یہ ایک ایسا جبکہ لوپ ہے زندگی میں جس کا مقصد یہاں بظاہر ایک حاصل کرنے کے لئے صارف کی طرف سے مثبت عدد صحیح. اور صرف اس کو تنگ رکھنے یا اس وہ تعاون تک. پھر لائن 16 میں ہے ایک دلچسپ کال. IntAnswer. بائیں ہاتھ پر جو کی طرف مجھے ایک int ہے Answer-- بلایا store-- سکتا ہے جس میں ذخیرہ کرنے کے لئے جا رہی ہے جس، بظاہر، سگما کی واپسی کی قیمت. تو سگما صرف ایک ہے صوابدیدی لیکن بامعنی نام میں ایک تقریب میں دیا ہے زندگی میں جس کا مقصد ایک دلیل لینے کے لئے ہے ہم اس کیس میں (ن) کو بلاتا ہوں اور صرف اس تعداد کی رقم لینے کے لئے علاوہ ہر مثبت نمبر ہے اس سے چھوٹا. میں نمبر 2 میں منتقل تو سگما، میں شامل کرنا چاہتے ہیں 2 کے علاوہ 1 علاوہ 0-- تاکہ مجھے 3 دیتا ہے نہ 0--. میں سگما 3 میں منتقل تو، میں چاہتا ہوں 3 علاوہ 2 کے علاوہ 1، جس نے مجھے 6 دیتا. علی هذا القیاس. تو یہ صرف تک اضافہ کر دیتی تمام تعداد اس سے کم یا برابر. اب، یہاں ذیل میں جا رہا ہوں جواب پرنٹ کرنے کے لئے. تو ایک فوری وویک چیک کے طور پر، چلو سگما 0-- ڈاٹ سلیش سگما بنانے 0-- اور مجھے 2 میں ٹائپ کریں. اور بیشک میں 3 حاصل. مجھے 3 میں ٹائپ کریں. میں یقینا 6 حاصل. اور کسی کو بھی فوری طور پر ریاضی کر سکتے ہیں تو، میں نے حاصل کیا جا رہا ہوں 50 کیا ہے؟ سامعین: [اشراوی]. DAVID J. MALAN: ٹھیک ہے، کوئی. لیکن 1،275 خوبصورت قریب ہے جس میں. تو یہ 50 کرنے کے نتیجہ ہے کے علاوہ 49 کے علاوہ 48 کے علاوہ 47 کے علاوہ 46 1 تمام طریقے سے نیچے. تو ہے کہ تمام سگما ہے. لیکن ہم نے کس طرح دیکھتے ہیں اب اس پر عمل کیا. یہاں تو نیچے تقریب خود ہے. یہ حاصل کرنے کے لئے نہیں لگ رہا ہے کچھ ابھی تک تکرار کے ساتھ کیا کرنا. اصل میں، ہم نے ایک استعمال کر رہے ہیں پرانے اسکول ٹیکنالوجی. میں ایک متغیر کہا جاتا رقم کی ابتدا کر رہا صفر کے، تو میں یہاں ایک foreloop ہے، اور میں نامی ایک int اعلان کر رہا ہوں میں، 1-- کے برابر مقرر کرنے میں اس کے برابر مقرر کر سکتے ہیں اگرچہ صفر، لیکن میں اس کے علاوہ کر رہا ہوں کے بعد، یہ صفر یا ایک ہے تو کسے پرواہ ہے. یہ کوئی اثر نہیں پڑے جا رہا ہے. لہذا میں جب تک میں ہے کے طور پر iterating رہا ہوں سے کم یا میٹر کے برابر ہے جس میں منظور کیا گیا تھا کہ دلیل ہے. اور پھر میں رکھنے I. اور بصیرت incrementing کی لوپ کے تمام میں رقم کر رہا ہے کر رہا ہوں کے علاوہ میں برابر ہے اور یہ جان بوجھ ہے. میں اس میں، ایسا کرنے کے لئے نہیں کرنا چاہتے کیس، رقم پلس پلس کی طرح. میں واقعی میں شامل کرنا چاہتے ہیں میں موجودہ قیمت جس میں بڑے اور بڑے ہو رہی رکھتا ہے اور چلانے اعداد و شمار کے بڑے. اور پھر میں نے رقم واپس. اور اس کا جواب قدر رقم ہو جاتا ہے. اور پھر میں نے اسے باہر پرنٹ. تو ایک موقع یہاں ہے، اگرچہ، قسم کی آسان بنانے کے لئے اس کوڈ تصوراتی اور دھچکا کی قسم سے ایک ہے کے معاملے میں کوئی اعتراض سادگی کرتایہ اگرچہ الگ الگ کرنے کیلئے ایک جبکہ لیتا ہے کیوں اس کی تعریف ان چھوٹے مثالوں میں طاقتور ہے. یہاں تو one-- سگما ہے اس کوڈ کے دوسرے ورژن. اوپر سب کچھ اتنی ایک جیسی ہے کہ ایک ہی کہانی سے پہلے کے طور پر لاگو ہوتا ہے. لیکن اب دیکھو سگما کے نفاذ جس میں صرف ان کے نیچے آئی ہے لائنوں کوڈ کے چار لائنوں، واقعی، کے علاوہ کچھ گھوبگھرالی منحنی خطوط وحدانی اور سفید جگہ. لیکن میں کیا کر رہا ہوں؟ میٹر سے کم یا برابر ہے صفر، میں قسم کی ہینڈل کرنے کی ضرورت کہ سپر سادہ کیس. اور تم نے مجھے صفر یا کچھ ہاتھ تو ، صرف عجیب ہے جس کے منفی میں صرف منمانے جا رہا ہوں لیکن مسلسل صفر واپس. میں نے یہ بات نہیں کرنا چاہتا کچھ عجیب لامحدود میں حاصل کیونکہ ایک منفی قدر کے لوپ. تم مجھے دے تو میں صرف یہ کہہ رہا ہوں صفر یا اس سے کم، میں صفر واپس آ رہا ہوں. کہ ہے کیونکہ لیکن یہ اچھی بات ہے فون بک کے کہ ایک صفحے کہ چھوڑ دیا ہے. میں ایک بہت ہی خاص مسئلہ دور کاٹ رہا ہوں اور تکراری چیز بلا نہیں. لیکن اوپر 31 میں، کیا میں کیا کر رہے ہیں؟ قوسین صرف رکھ رہے ہیں چیزیں، امید ہے کہ، ایک چھوٹا سا واضح. لیکن میں کیا کر رہا ہوں ہوں ہے m-- آرہے ہیں جو کچھ بھی آپ me-- علاوہ ہاتھ m-- معذرت کی قدر، علاوہ میٹر مائنس 1 سگما کی قدر. تو اس کا کیا مطلب ہے؟ آپ کو ان پٹ کے طور پر مجھے نمبر 3 دیتے ہیں تو، جواب میں آخر میں حاصل کرنا چاہتے ہیں 3 کے علاوہ 2 کے علاوہ 1 مجھے 6 فراہم کرتا ہے کیونکہ 6. لیکن میں کے بارے میں کیسے لگتا ہے اس کوڈ کے لئے کس طرح چل رہا ہے؟ میں سگما فون پہلی بار اور میں، قیمت 3 میں منتقل کہ ایک ٹکڑے پر کہہ طرح ہے کاغذ کی، یہاں قیمت 3 اور میں سگما کے طور پر اس منظور کیا گیا ہے. 3 واضح طور پر ایسا نہیں 0 سے کم ہے اگر شرط لاگو نہیں ہوتا. ورنہ کرتا. تو میں کیا کروں؟ میں ہے جو، میٹر واپس کرنا چاہتے ہیں میٹر مائنس 1 کے 3، کے علاوہ سگما. تو مجھے اس کا ٹریک رکھنے کی اجازت. میں اس ڈال کرنے کے لئے جا رہا ہوں کاغذ کا ٹکڑا نیچے. اور کیا قیمت، ہونا واضح، میں منتقل کرنے کے لئے جا رہا ہوں کہانی میں اس وقت سگما میں؟ کیا تعداد؟ 2، ٹھیک ہے؟ 3 مائنس 1 2 ہے. تو میں صرف ایک چھوٹا سا کی ضرورت ہے یہاں کاغذ کے سکریپ. تو اب سگما دوبارہ بلایا جا رہا ہے. اور میں نے جان بوجھ ڈال دیا ہے اس کے نیچے ہے کیونکہ قسم کی روک طرح کہانی کے اس ورژن اب میں مرکوز ہوں کیونکہ میٹر مائنس 1 سگنل پر. تو میٹر 3، میٹر تھا مائنس 1 2. تو یہاں میں منظور کیا گیا ہے کہ 2. 2 ظاہر ہے کے مقابلے میں کم نہیں ہے 0 تو اس صورت لاگو نہیں ہوتا. ورنہ میں یہ کون سی، میٹر واپس کیا قیمت کی بات، کے علاوہ سگما؟ تو سگما کے 1-- میٹر ہے کیونکہ اگر اب 2 تو 2 مائنس 1 1. تو اب میں صرف قیمت 1. میں صرف تعداد کو منظور کر رہا ہوں تقریب sigma-- 1 یا خود یہاں تو 1 ظاہر نہیں ہے صفر سے بھی کم، اب بھی لاگو نہیں ہوتا. ورنہ واپسی 1 پلس کیا سگما؟ 0. تو مجھے صرف یاد رکھیں کہ. میں بعد میں واپس اس سے ملے گی. اب میں آگے اور جوٹ جانے کے لئے جا رہا ہوں تعداد 0 نیچے ہے کیونکہ میری دلیل یا پیرامیٹر. میں تعداد 0 منظور ہوں اور آخر میں اس کے عمل کے صرف اپنے اشتھار بار بار Nauseum جو کیا کیونکہ ختم ہے میں اس 0 دیکھ کر ایک بار میں نے فوری طور کروں؟ میں صفر واپس. تو اب آپ کی کہانی ماضی کے لئے ہے. اب وقت میں پیچھے کی طرف جاتے ہیں، سب سے زیادہ حال ہی میں بات کیا تھی آپ لفظی تھے تو میں نے کیا ایک ویڈیو پر rewinding؟ میں سب سے زیادہ حال ہی میں لینے کے لئے جا رہا ہوں 1 اور یہ کہ میرے 1 دیتا ہے پلس 0 1 ہے. میں پر rewinding رکھنا تو کہانی، کہ مجھے دینے جا رہا ہے 1 جس میں 2 کے علاوہ اس کو چلانے کی قیمت،. تو ہے کہ 3. اور پھر میں لپیٹنے رکھنے کے لئے جا رہا ہوں. میں سب سے پہلے نمبر نیچے رکھ جب 3-- تو 3 کے علاوہ 3 سے 6 مجھے دیتا ہے. اور اب، آپ rewound ہے تو اس نقطہ تک ویڈیو، یہ تھا پہلا سوال میں نے پوچھا. 3 منظور کیا جب، 3 سگما کیا ہے؟ یہ واقعی 6، کی رقم ہے کاغذ کے ان تمام ٹکڑے ٹکڑے. کہ ایک چھوٹی سی لیتا ہے تو جبکہ ٹھیک ہے، آپ کے دماغ کے ارد گرد لپیٹ. لیکن یہ چھوٹی سی ایک تھا پر غور میں سجا دیئے کہ بہت جان بوجھ کر کیا گیا تھا ایک دوسرے کے سب سے اوپر پر ان کی تعداد. یہ ایک طرح کی قسم ہے وقت میں ایک ریکارڈ میموری، ایک ویڈیو میں ایک Scrubber کے کی طرح، میں واقعی میں ماضی کر سکتے ہیں. اور ہم واپس آ جا رہے ہیں صرف ایک چھوٹا سا تھوڑا سا میں اس استعارہ. لیکن سب سے پہلے، یہ وہاں ہے کہ باہر کر دیتا گیکس اور مضحکہ خیز لوگوں کی ایک بہت، میں نے گوگل پر، لگتا ہے. گے بہت ہے کسی ایسے شخص ہیں Googling ذہن میں اچھا صرف ایک لمحے کے لئے سائن اپ آ رہے ہیں اور مجھ سے کچھ کے لئے تلاش میں مدد؟ بہت، بہت کم اہم. نہیں ہے کوئی جو شاید، پہلے آنے. ٹھیک ہے. جی ہاں؟ آ جاؤ. ذیل آو. آپ کا نام کیا ہے؟ SAM: سیم. DAVID J. MALAN: سیم، نیچے آو. یہ وہی ہے. آپ سے مل کر خوشی ہوئی. ارے. پر آئے. تو تمام میں نے آپ کو، تو ایسا کرنے کی ضرورت آپ، سیم، یہاں گوگل سکتا ہے. آپ اصطلاح تکرار کے لئے تلاش کر سکتے ہیں؟ خراب نہ کرو. اور اب ہاں let's--. ٹھیک ہے اس پر کلک کریں. بہتر ہے پر کلک کریں. آہ، اسے حاصل. نہیں؟ ٹھیک ہے. تو ایک جوڑے دوسروں کرتے ہیں. متعلقہ اتنا نہیں تعلیمی یہاں، لیکن آپ کو کرنا پڑے کبھی anagram کے لئے گوگل کی تلاشی لی؟ SAM: نمبر DAVID J. MALAN: ٹھیک ہے. anagram بجائے تکرار کے لئے تلاش کریں. کس طرح کے بارے میں ترچھا. کیا تم نے کبھی ترچھا کے لئے تلاش؟ اب، اس سے تھوڑا مشکل ہے دیکھتے ہیں لیکن امید ہے کہ ٹھیک everything's--. یہ صرف آپ کو اور مجھے اس سے لطف اندوز ہے. ٹھیک ہے. تو آخر، اس one's-- یہ ایک چھوٹا سا ترچھا ہے. اب ایک بیرل رول کرتے. کمال. بالکل ٹھیک. بگ سیم لئے آپ کا شکریہ. یہاں تم جاؤ. شکریہ. تو کیا میں چل رہا ہے ان بیوکوف مثالوں کے؟ تو واقعی، کی ہڈ کے نیچے کوڈ کی لائنوں کی گوگل کی لاکھوں بظاہر اگر چند پاگل ہے بنیادی طور پر ہیں کہ حالات صارف ہے اگر جانچ پڑتال اس جملے میں ٹائپ، شاید لے لی ہے کہ کچھ وقت کی ایک nontrivial نجی رقم صرف لاگو کرنے کے لئے اس طرح دل لگی ہو. لیکن یہ فوڑے سب ہڈ کے نیچے کے نیچے. لیکن، کورس کے، تکرار geekier سے زیادہ ہے ان خصوصی چالوں کے درمیان مثال کے طور پر. اور بے شک وہاں دوسروں وہاں سے باہر ہے کے ساتھ ساتھ ہم شاید ہے کہ بھی نہیں ابھی تک دریافت کیا. تو ایک نظر ڈالیں، یا کے بارے میں غور اب مندرجہ ذیل پروگرام، اور یقینی طور پر کوئی قبضہ آپ کے باہر نکلنے کا راستہ پر ان میں سے. میں آگے جانے کے لئے جا رہا ہوں اور ہے کہ ایک پروگرام کو کھولنے دونوں اقدار کا تبادلہ کرنے کی کوشش کرنے کے لئے جا. ہم وہاں جانے سے پہلے، یہ کرتے ہیں. ہم ایک سے زیادہ حاصل کر سکتے ہیں رضاکار، مجھے لگتا ہے کہ؟ آپ رضاکارانہ کام کرنا چاہتے ہیں؟ نہیں؟ اپ چلو. اپ چلو. بالکل ٹھیک. تو آپ کا نام کیا ہے؟ لارین: لارین. DAVID J. MALAN: لارین. ، اپ لارین چلو. تو لارین کیا جا رہا ہے مندرجہ ذیل کے طور پر یہاں چیلنج. آپ سے مل کر خوشی ہوئی. تو لارین یہاں سامنے ہے اس کی دو خالی کپ. اور ہم نے کچھ اورینج رس اور کچھ دودھ اور ہم جا رہے ہیں آگے اور مندرجہ ذیل کام کریں. ہم صرف اس کو بھرنے کے لئے جا رہے ہیں. یہاں دودھ کے چند ونس اور چلو یہاں ایک چھوٹا سا سنتری کا رس بھرنے. اور سب کے سامنے میں ان سامعین کے اراکین، یہ کپ کے دونوں اقدار کا تبادلہ. دودھ کپ میں سنتری کا رس ڈال دیا اور سنتری کا رس کپ میں دودھ. تم پر تھے تو آپ کو یہ کروں گا کے لئے کس طرح گھر اور دیگر سامان تک رسائی حاصل تھی؟ لارین: ایک کپ میں ڈال دیا. DAVID J. MALAN: ٹھیک ہے. تو ایک عارضی ہے دو متغیر، ہم تو. اور اب آگے بڑھو اور پر عمل درآمد یہ وہی گماگمن طریقہ کار. بہت اچھا. ہم عارضی میں OJ ڈال دیا ہے متغیر، OJ متغیر میں دودھ، اور اب عارضی متغیر دودھ متغیر میں. ٹھیک ہے. تو بہت اچھی طرح سے اب تک کیا. تو یہ ہے کہ منعقد out-- دیتا صرف ایک لمحے کے لئے سوچا. یہاں، صرف تھوڑا سا اسے GEEK، اس اسی C کوڈ جائے گا ہم صرف لاگو. ہم دو آدانوں، A اور B، دونوں تھا جس میں ہم صرف سادگی کے لئے کہیں گے INT کی. میں تبادلہ کرنا چاہتے ہیں تو، یہاں محسوس دو متغیر، A اور B کی اقدار، بیشک ہم نے ایک درمیانی کی ضرورت ہے، ایک عارضی متغیر، ایک عارضی کپ، جس میں اقدار میں سے ایک ڈال تاکہ ہم اس کے لئے ایک پلیس ہولڈر ہے. لیکن پھر کوڈ بالکل وہی جو ہے لارین کے طور پر یہاں لاگو. اب، صرف ایک حاصل کرنے کے لئے تھوڑا پاگل، باہر کر دیتا ہے آپ کے بغیر ایسا کر سکتے ہیں کہ ایک عارضی متغیر. اگرچہ، ہم جا رہے ہیں، مناسب طریقے سے ایسا کرنے کے لیے کچھ کیمسٹری کے ساتھ دھوکہ کرنے کے لئے. ہم یہاں کچھ اضافی کپ ہے. تو قریب ترین بات یہ ہے کہ لگتا ہے دودھ اور پانی perhaps-- طرح یا دودھ اور OJ-- ہم کچھ ہے ہے پانی، تو ہم نے اس سے ایک کو بھر دیں گے واضح پانی کے چند ایک ونس کے ساتھ. کہ بہت زیادہ شاید ہے. جی ہاں. کہ بہت زیادہ یقینی طور پر ہے. ایک سیکنڈ رکو. اور اب ہم مجھے یاد کے طور پر، جس میں تیل، ہے مڈل اسکول کیمسٹری کلاس سے، امید ہے کہ یہ پانی کے ساتھ مکس نہیں. لیکن اس قسم کی قسم کی دودھ اور OJ کی طرح لگتا ہے. اب تو، استعمال کرتے ہوئے بغیر ایک عارضی متغیر، آپ کو ان دونوں اقدار کا تبادلہ کر سکتے ہیں؟ ، پانی کے کپ میں چلا جاتا ہے تو تیل پانی تیل کپ میں چلا جاتا ہے. لارین: کوئی دیگر کپ؟ DAVID J. MALAN: کوئی دیگر کپ. اور میں واقعی میں نہیں ہے اس سال سے پہلے اس کا تجربہ کیا اس کی مرضی تو مجھے نہیں معلوم اصل میں کیمیائی کام. ایسا کرنے کے لئے توقع نہیں تھی. یہ کام کر رہا ہے؟ بالکل ٹھیک. تو الگ؟ اچھا. اب ہم حاصل کرنے کے لئے دیگر کپ میں پانی. بہتر کیمسٹری concentrators سکتا شاید مجھ سے بہتر کرتے ہیں. لارین: پانی کے نیچے پر ہے. DAVID J. MALAN: تھا کہ water-- کیا ہم اس نے آخری بار کلید ہے. آپ کو صحیح ترتیب میں کیا کرنا ہے. جی ہاں. ٹھیک ہے. تو اب ہم تیل کے دو کپ ہے. ٹھیک ہے. ٹھیک ہے. لیکن اس میں ... سے کام کیمیائی تو لارین: یہ پانی ہے. DAVID J. MALAN: یہ زیادہ تر پانی ہے. بالکل ٹھیک. لیکن یہ اب بھی پہلے کی طرح اسی کپ ہے. تو اندازہ لگانے والے وہاں اس کی کوشش ڈال. ٹھیک ہے. یہ کلاس کے وقت کا ایک اچھا استعمال آج ہے. ٹھیک ہے. تو اب اچھا we--. ایک طرح سے. بالکل ٹھیک. بہت اچھا. لارین لئے آپ کا شکریہ. بہت اچھا کیا. تو، آپ کے دماغ اڑانے اور یہ شاید کچھ ہے آپ CS50 ID میں چاہوں تو ساتھ کھیلنے کے لئے، آپ، حقیقت میں، دو متغیر تبادلہ کر سکتے ہیں ایک عارضی عددی استعمال کرتے ہوئے بغیر. یہ اسی C کوڈ ہے. اور آپ آخری سے یاد تو بدھ، ہم، تو مختصر طور پر متعارف کرایا سی اور کرتا ہے میں کچھ نئے آپریٹرز کوئی کیا چھوٹا سا گاجر یاد علامت، اس چھوٹی سی سہ رخی ہے بورڈ کی طرف سے علامت کی نمائندگی کرتا ہے؟ کیا bitwise آپریٹر؟ سامعین: EXOR. DAVID J. MALAN: EXOR. خصوصی یا. آپ کو صرف مذاق میں کے لئے چاہتے ہیں، تو گھر، A اور B دونوں صوابدیدی دینے کے لئے کوئی eight-- اور میں کی طرح اقدار ایک آٹھ بٹ کی قیمت کا انتخاب کریں گے. آپ کے پاس 32 بٹس کے ساتھ ایسا کرتے ہیں، آپ کو بہت جلد ؤب گا. لیکن صرف ایک ایک آٹھ تھوڑا سا دے ، ایک یا دو جو کچھ بھی ہے اس قدر، اور اسی طرح کی قیمت ب دے. اور پھر تعریف کا استعمال کرتے ہوئے گزشتہ بدھ سے XOR کی، ، بٹ کی طرف سے ہر ایک ہے کہ تھوڑا سا لاگو A اور B میں سے ہر ایک میں ان آٹھ بٹس، اور پھر اس کوڈ کو فی بالکل ایسا. اور یہ غلط نہیں ہے کیا آپ کی سکرین پر یہاں دیکھ. یہ واقعی فوڑے تین XOR آپریشن کے لئے اور کسی نہ کسی طرح جادوئی ایک اور ب عہدوں کا تبادلہ کریں گے کوئی معلومات کو کھونے کے بغیر. تو تیل اور پانی چال ہے قریبی حقیقی دنیا اوتار میں اس کی نقل کرنے کے بارے میں سوچ سکتا ہے. لیکن یہ ضرور آسان ہے ایک عارضی متغیر کا استعمال، یہاں اس صورت میں کے طور پر. اور یہ بھی ایک موقع، کا کہنا ہے کہ بھی، مائکرو کی اصلاح کے اس قسم، ایک کمپیوٹر سائنسدان کے طور پر ، کا کہنا ہے کہ جبکہ مذاق کی طرح آپ کے بغیر یہ کیا کس طرح کے بارے میں ڈینگ ہانکنا ایک اضافی متغیر کے ساتھ گماگمن کی طرح، یہ سب کہ مجبور نہیں ہے. 32 بٹس، کے طور پر محفوظ کرنے کی وجہ ایک اصل INT کی صورت میں، وہ سب مجبور نہیں ہے ایک ایسا نظام ہے جہاں پر آپ میگا بائٹ کی دسیوں استعمال کیا جا سکتا ہے یا اس سے بھی زیادہ اس طرح کی میموری ان دنوں. اور حقیقت میں، ہم جب حاصل بعد میں کسی مسئلہ سیٹ کرنے کے لئے اور آپ کو جادو لاگو چیکر اور تمہیں تو کے ساتھ کیا کرنا چیلنج کیا اس کے طور پر تھوڑا RAM اور کے طور پر کم پر ممکن طور پر وقت اب بھی آپ کو کمپیوٹر لاگو کرنے کے لئے ایک ہفتے ہے آپ ہو جائے گا have-- گا اندازہ لگانے والے ان وسائل کو کم سے کم کرنے کے لئے چیلنج. اور یہ کہ واقعی صرف ہے اس سمسٹر موقع آپ کو مونڈنا کرنے کی حوصلہ افزائی کی جائے گی جہاں یہاں تک کہ سب سے بہترین کارکردگی بند دوسری صورت میں قیمت ادا کرنی پڑتی. تو ہم کس طرح کر سکتے ہیں what-- یہ اصل کوڈ میں دیکھ رہے ہو؟ اب مجھے آگے جانے دو اور ایک مثال کے طور پر کھولنے کہ جان بوجھ کر کہا جاتا ہے کوئی تبادلہ نہیں ہے کیونکہ حقیقت یہ ہے کہ میں متغیر تبادلہ آپ اصل میں توقع کر سکتے ہیں کے طور پر. تو ایک نظر ڈالیں. یہاں کوئی CS50 ہے کہ ایک پروگرام ہے لائبریری، صرف معیاری I / O پر جا. اب ہم ایک پروٹوٹائپ ہے اوپر سویپ کے لئے جس میں صرف اس کے بعد بیان کیا جا کرنے کے لئے ہے کا مطلب ہے. اور یہاں اہم ہے. میں منمانے X اور Y تفویض، بالترتیب، اقدار ایک اور دو صرف وہ چھوٹے ہیں کیونکہ اور آسان کے بارے میں سوچنا. اور پھر میں نے صرف printfs کا ایک گروپ ہے میں نے ایک وویک چیک ہے جہاں. X 1 ہے اور Y 2 شاید ہے ان printfs کیا کہیں گے. تو کوئی جادو اس طرح اب تک. پھر میں نے کے ساتھ کا دعوی کرنے جا رہا ہوں ڈاٹ ڈاٹ ڈاٹ گماگمن، def کی پرنٹ. میں سویپ فون کرنے جا رہا ہوں تقریب، X اور Y میں گزر. اور اب اس کے لئے فرض تبدیل کردہ لسٹ بالکل لاگو کیا جاتا ہے اس ایک لمحے پہلے تھا کے طور پر ایک عارضی متغیر کے ساتھ. اور اس طرح میں نے دلیری کا دعوی، تبدیل. ایکس اور اس Y اب ہے اب ہے. لیکن فائل، کورس کے، کوئی سویپ کہا جاتا ہے. تو اصل میں کیا ہوتا ہے دیکھتے ہیں. مجھے تو کوئی تبادلہ اور مرتب تو ./noswap کرتے، X 1 ہے، Y 2 ہے. تبدیل گماگمن. X Y 2 ہے، 1 ہے. تو یہ اصل میں بھی غلطی کیا جا رہا ہے swap-- اگرچہ now-- نیچے سکرال چلو فی بالکل لاگو کیا جاتا ہے کوڈ میں ایک لمحے پہلے تجویز پیش کی. تو ہم پسند حاصل کرنے کے لئے نہیں جا رہے ہیں اب کے لئے XOR سامان کے ساتھ. یہ بھی، صرف کام کرنا چاہئے دودھ اور OJ کے ساتھ کی طرح، لیکن یہ کام کرنے کے لئے نہیں لگ رہا ہے. تو پھر ایسا کرنے دو. ہو سکتا ہے کہ میں نے صرف اس کا حق نہیں چل رہا تھا. تو پھر کوئی سویپ چلاتے ہیں. ہو سکتا ہے کہ میں ... کوئی. تو یہ صرف کام نہیں کر رہا. تو ایک چھوٹا سا وویک چیک کرتے ہیں. مجھے کردہ میں یہاں سے آگے جانے دو اور صرف، شامل، ایک منٹ انتظار کرو، ایک میں نے ہے / (ن) اور چلو پلگ ان میں ایک کی قیمت. مجھے سچ میں کرنا چاہتے ہیں کیونکہ کیا ہو رہا ہے کو دیکھنے کے لئے. اور یقینا، یہ ہے بگ ٹیکنالوجی آپ میں استعمال کیا جا سکتا ہے دفتری اوقات یا پہلے سے ہی گھر میں، ڈین کی پہلی ششماہی کے مشابہ PSET3 میں Armendariz کی ویڈیو ہم نے پرنٹ متعارف کرایا جس کے طور پر تحفظ کم از کم ایک کی سفارش کی تکنیک، سادہ مقدمات کے لئے. مجھے آگے بڑھو اور بنانے چلاتے ہیں پھر کوئی سویپ، ./noswap. دلچسپ. تو سچ ہو رہا ہے کیا محسوس. X 1، Y 2 ہے، لیکن B 1 ہے جب ایک 2 ہے. تو ان دونوں کسی نہ کسی طرح تبدیل کر لی لیکن X اور Y تبدیل نہیں ہو رہے ہیں. تو کیا ہو رہا ہے، واضح ہونا ، میں یہاں X اور Y ہے ہے اور ان میں مقامی متغیر ہیں اہم دائرہ کار، میں X اور Y میں گزر رہا ہوں تبادلہ کرنا. اب، سویپ، ایک علیحدہ تقریب کے طور پر، اس کے دلائل فون کرنے کے لئے ہے یا اس کے پیرامیٹرز کچھ یہ چاہتا ہے. Foo کی ایکس یا Y یا ایک یا B یا بار یا. بس وہ ہیں کہ واضح کرنے کے لئے X کے لئے ایک جیسی نہیں ہے اور Y SE فی، میں نے ایک اور ب کہا ہے. لیکن ہم ان سب کو ہم چاہتے ہیں کچھ بھی کہہ سکتے ہیں. اور تو اس کی طرح لگتا ہے تبدیل کردہ لسٹ منظور کیا جا رہا ہے x-- AKA a-- اور یہ y-- AKA ب منظور کیا جا رہا. کسی نہ کسی طرح ان تین لائنوں ہیں بالکل ان اقدار کو گماگمن لارین دودھ اور OJ کے ساتھ کیا تھا کے طور پر. لیکن ہم باہر پرنٹ جب اقدار، A اور B تبادلہ یقینا ہیں لیکن X اور Y ان سے کوئی تبدیلی نہیں ہے. کہ X اور Y یہاں ہیں یاد کرتے ہیں. تو ہم کے ذریعے یہ دیکھ سکتے ہیں اس کے ساتھ ساتھ ایک اور تکنیک. اور یہ بھی ایک ٹیکنالوجی ہے مسئلہ میں سرایت تین سیٹ. چلو آگے بڑھو اور ایسا CS50 ID آپ پہلے ہی نہیں ہے تو. دائیں ہاتھ کی طرف ہم اس ٹھیک کرنے والا کھولتا ٹیب ہے. اور تم اس کو کھولنے تو، کچھ جادو معلومات نہیں ہے کہ ابتدائی طور پر تم پر پھینک دیا ہے. لیکن اصلی روزہ اس کے علاوہ چڑھاو دیں. تو ایک، آپ کو مقامی متغیر دیکھیں. CS50 IDE میں تعمیر ہے کہ باہر کر دیتا ہے، اور پروگرامنگ کے ماحول کی ایک بہت زیادہ عام طور پر، ایک ٹھیک کرنے والا کھولتا ہے. اگر آپ ضعف کو دیکھنے کے لئے کی اجازت دیتا ہے کہ ایک آلہ کیا آپ کے پروگرام کے اندر چل رہا ہے انہوں نے مزید کہا پر مائل کرنے کے لئے بغیر printfs اور مرتب کرنے اور چلانے اور printf کا اضافہ اور تالیف اور دفتری اوقات میں، جو پہلے سے ہی چل رہا ہے یا گھر، شاید ہے خوبصورت تکاؤ ہو رہی ہے. تو یہاں، صرف ایک لمحے میں، ہم ہیں حقیقی وقت میں دیکھنے کے لئے کی جا رہی ہمارے مقامی متغیر کی اقدار. ہم نے بھی قائم کرنے کے لئے کے قابل ہو جائے کرنے کے لئے جا رہے ہیں breakpoints کے کہا جاتا ہے جس مواقع کو روکنے کے لئے اپنے پروگرام میں ہیں کوڈ کا ایک مخصوص لائن پر عملدرآمد کے بارے میں جاننا چاہتا ہوں کہ. ٹھیک ہے؟ یہ پروگرام ایک تقسیم دوسری میں چلانے کے. یہ ہمیں سست انسانوں کے لئے اچھی قسم کا ہے ، کو روکنے کے ایک لمحے کے لے کرنے کے قابل ہو، دیکھیں کے ارد گرد کیا ہو رہا ہے کوڈ کا ایک مخصوص لائن پروگرام ہل چلا کے بغیر اس کے ذریعے اور مکمل طور پر ختم. تو ایک breakpoints کے لئے ہمیں اجازت دینے جا رہا کو توڑنے اور ایک خاص نقطہ پر روک. کال اسٹیک کی پسند ہیں طریقہ ہے افعال ہیں کیا کہہ اس وقت بلایا جا رہا ہے. اہم ہمیشہ سب سے پہلے کہا جاتا ہے. لیکن اہم ایک بلاتا ہے تو تبدیل ھو نے والے نام نہاد تقریب، ہم اصل میں اس کو دیکھنے کے لئے جا رہے ہیں کیا گیا ہے کہ افعال کے ٹاور ریورس تاریخ آرڈر میں کہا جاتا ہے. تو دیکھنے دو. میں باہر زوم کرنے کے لئے جا رہا ہوں. میں اپنے کوڈ میں واپس جانے کے لئے جا رہا ہوں. اور صرف میں چاہتا ہوں کیونکہ یہاں pedantic ہونا، میں آگے بڑھو اور کلک کرنے کے لئے جا رہا ہوں صرف لائن پانچ کے بائیں. اور یہ کہ ایک سرخ نقطہ پیدا. اور دائیں ہاتھ کی طرف پر توجہ ٹھیک کرنے والا کھولتا ارے، جانتا ہے کہ، میں نے ابھی کہا ایک توڑ مقام پر noswap.c لائن پانچ، خاص طور پر کوڈ کی اس لائن پر. تو ٹھیک کرنے والا کھولتا ہے کہ میں جانتا اگلی بار اس کا درخواستکردہ میں نے اپنے پروگرام کو روکنے چلانے وہاں کی بجائے صرف پھانسی سپر روزہ پوری بات چل رہا ہے. تو اب میں ٹھیک کلک کرنے کے لئے جا رہا ہوں IDE کے سب سے اوپر کے بٹن پر اور اس کے بعد کیا جا رہا ہے. یہ ابتدائی طور پر کسی حد تک ایک کو کھولنے کے لئے جا رہا ہے خوفناک تلاش کر دوسرے ٹرمینل ونڈو کی طرف سے ریموٹ بگ اس طرح کی میزبانی اور such-- اور ہم واپس آ جائیں گے کیا تمام ہے کہ طویل عرصے سے پہلے کا مطلب. لیکن اب کے لئے اہم ہے اس سرخ ڈاٹ مارا گیا ہے، ٹھیک کرنے والا کھولتا جان بوجھ کر ہے execution-- روک دیا گیا نہیں SE فی ہے کہ لائن پر لیکن سب سے پہلے پر اس تقریب میں اصل کوڈ کے مطابق. لائن سات ہے یہی وجہ ہے کہ اب پیلے رنگ میں روشنی ڈالی. اور اب ایک نظر ڈالیں دائیں ہاتھ کی طرف. یہ ڈیفالٹ کی طرف، کی طرح لگتا ہے، اچھی طرح سے کافی، ایکس کیا قیمت ہے؟ 0. اور Y کیا قیمت ہے؟ زیرو. اور اس معنی میں متوقع ہے ہے کہ ایکس اور زرد line-- ہے کہ y-- ابھی تک پھانسی نہیں. تو ایکس قیمت 1 نہیں ہونا چاہئے. یہ کسی بھی دوسرے قدر ہو سکتا ہے، ایک نام نہاد ردی کی ٹوکری کی قیمت. اور ہم یہ ہے کہ میں خوش قسمت ہو گیا بنیادی طور پر، اس وقت صفر. تو اب صرف چند ہے بٹن ہم پرواہ کرنے کی ضرورت ہے اس طرح ٹھیک ہے کے بارے میں. یہاں نوٹس، ہم ایک کھیل کے بٹن ہے. اور ہم کھیلنے یا اگر مارا صرف اتنا ہے کہ، دوبارہ شروع کے ذریعے چلانے کے لئے جا پروگرام کے باقی یا یہ ایک توڑ مقام پر مار دیتی ہے جب تک. لیکن میں کسی بھی دوسرے مقرر نہیں ہے breakpoints کے تو یہ صرف ہے اختتام کے ذریعے چلانے کے لئے جا. شکست اس طرح کے ارد گرد poking کا مقصد. تو بجائے، مجھے پرواہ درست کرنے کے لئے ان شبیہیں. اور میں اوپر ہوور تو ان، کے طور پر آپ، بھی ہونا چاہئے آپ کو تھوڑا tips-- آلے تجاویز دیکھیں گے. یہ ایک سے زیادہ قدم ہے. اب اس کا مطلب یہ نہیں پر جائیں کوڈ کی مندرجہ ذیل لائن. یہ صرف اس پر عمل کا مطلب ہے اور ، اگلے کرنے کے لئے منتقل کرنے کو اگلے منتقل، اگلے منتقل. دوسرے الفاظ میں، کے ذریعے اس بٹن، میں چل سکتا ہوں ایک وقت میں میرا کوڈ ایک قدم کے ذریعے. لفظی لائن کی طرف سے لائن،. اب، کے دائیں جانب ایک ہے، کہ ہم صرف ایک لمحے میں دیکھیں گے کہ. یہ نام نہاد ہے ہے کہ آئکن میں قدم مجھے ڈوبکی کی اجازت دینے جا ایک اور تقریب میں. لیکن صرف ایک لمحے میں یہ دیکھتے ہیں. تو میں نے قدم پر کلک کریں کرنے کے لئے جا رہا ہوں. میں پر کلک کریں اور اب، نوٹس سب سے اوپر دائیں اس بٹن، مقامی تحت تقریبا آپ کی آنکھوں کو رکھنا تغیر اور ایکس دیکھتے ہیں کیا ہوتا. ابھی کیونکہ 1 پیلے رنگ کی لائن اب پھانسی دے دی ہے اور ہم لائن 8 پر منتقل کر دیا ہے. اور صرف ایک لمحے Y میں امید ہے کہ 2 ہونا چاہئے. اب، کچھ دلچسپ کہ تھوڑی دیر کے لئے ہوتا ہے. یہ سب printf کا ہے. اور میرے ثانوی ٹرمینل میں، نوٹس ونڈو، میں پرنٹ def سے پیداوار کو دیکھنے کے. اور اب میں ایک بنانے کے لئے ہے پروگرامر کے طور پر فیصلہ. میں اس لائن پر قدم کر سکتے ہیں کوڈ، اسے عملی جامہ نہیں بلکہ اندر کیا ہے کے بارے میں جاننا ہو رہی ہے. یا میں نے اصل میں اس میں قدم کر سکتے ہیں اور سویپ خود کے اندر جانے. تو مؤخر الذکر کرتے ہیں. مجھے آگے بڑھو اور پر کلک کریں نہ پھلانگنا لیکن میں قدم. نوٹس، اچانک ونڈو تبدیلیاں پہلے اجاگر کرنے کے لئے تبدیل ھو نے والے میں کوڈ کی لائن. اس لائن 21 سال کا ہے. اور اب، میں Funky کی قسم ہے کہ کیا ہے، تم یہاں نظر آتے ہیں تو،، کے طور پر توقع کوما ب بالترتیب 1 اور 2، ہے. کیوں temp کی 32.767 ہے؟ زیادہ کی طرح، کہ TEMP کا ذکر کرتے ہوئے ایک لمحے پہلے خالی کپ، 21 لائن پر اعلان کیا جاتا ہے. میرا مطلب ہے کیوں 32،000-، یہی وجہ ہے یہ صرف کچھ عجیب قیمت؟ جی ہاں؟ سامعین: یہ initialized نہیں ہے. DAVID J. MALAN: یہ ہے سے initialized نہیں کیا گیا. لہذا ہمارے کمپیوٹر کو ہمیشہ جسمانی میموری ہے. یہ ہمیشہ جسمانی RAM ہے. اور ہمیشہ وہاں ہے صفر اور ایک صحیح، وہاں ہے؟ ہم استعمال کر رہے ہیں کیونکہ ہمارے سارا دن کمپیوٹر، آپ CS50 IDE استعمال کر رہے ہیں یا سرورز سارا دن. کہ رام کچھ zeros ہے یا تو یا کسی یا کچھ zeros اور ہیں. کوئی فرق نہیں پڑتا ہے یا تم ان کا استعمال کر رہے نہیں. تم بس خالی نہیں کر سکتے ہیں خالی جگہوں جہاں آپ بٹس چاہتے. وہ zeros اور ہیں تو ہو. تو اس کی وجہ سے، کہ TEMP باہر کر دیتا ہے ہم ابھی تک یہ initialized نہیں ہے ہم ان 32 بٹیں ہے لیکن وہ نہیں ہے کسی بھی نام سے جانا جاتا اقدار initialized کیا گیا. تو وہ تھے جو کچھ بھی سب سے زیادہ حال ہی میں ان 32 bits-- for-- استعمال ہم صرف کچھ کے نمونے دیکھ رہے ہیں ان مخصوص 32 کے پچھلے استعمال بٹس. جیسے ہی میں نے اگرچہ پھلانگنا پر کلک کریں، وفف، TEMP قیمت 1 حاصل کرنے کی جا رہی ہے. میں اسے دوبارہ کرتے ہیں تو، ایک ہے 2 قدر دیا جا رہا اور پھر ب کی جا رہی ہے قیمت 1 دیا جائے. اور تو کیا میں اب اچھا ہے کہانی میں اس وقت ٹھیک کرنے والا کھولتا ہے سپر آہستہ آہستہ، مجھے دکھا میری اپنی رفتار سے، کیا تبدیل ھو نے والے کی ریاست ہے. لیکن یہاں سب سے اوپر، نوٹس پر نوٹس کہ اصل میں کال اسٹیک اس کی دو تہوں ہے. طور پر روشنی ڈالی ہے کہ اب ایک تبدیل ھو نے والے، میں بجائے مین پر کلک کریں تو، مقامی متغیر تبدیل کس طرح محسوس ڈویلپر صرف ہاپ کر سکتے ہیں کی وجہ سے کے ارد گرد اور کسی بھی مختلف دائرہ کار میں جانا. ہم اس کے تمام کر رہے ہیں تو اگرچہ کام کرتے ہیں اور درست طریقے سے ایک اور بی گماگمن، میں تبدیل ھو نے والے کے درمیان آگے پیچھے جانا ہے تو ایک 2 ہے اور B 1 اور اہم ہے جہاں، مین بالکل متاثر کیا گیا ہے؟ نہیں. تو takeaway ہے یہاں کیا ہے؟ ٹھیک ہے، یہ کسی بھی وقت پتہ چلا ہے کہ آپ، سویپ کی طرح ایک تقریب کو فون اور آپ کو اس کے دلائل، منتقل کیا کیا آپ کو سویپ تقریب میں گزر رہے ہیں اس معاملے میں ایک نقل ہے ان دلائل کی. تو X اور Y بالترتیب ہر ہیں 32 بٹس، کیا تبدیل ہو رہی ہے دو نئے مقامی ہے متغیر، یا دلائل، نامی ایک اور b-- لیکن ان صوابدیدی ہیں names-- لیکن zeros کی پیٹرن اور اندر ایک اور ب کے ہیں لائن میں کھڑا کر X اور Y کے لئے ایک جیسی ہونا لیکن وہ نہیں ہیں X اور Y کے طور پر ایک ہی بات. اہم اس ٹکڑے پر ہے جیسے یہ ہے کاغذ نمبر 1 اور X اور Y کے لئے 2، اور یہ کہ ہاتھ پھر جب کاغذ کا ٹکڑا کو سویپ، تبدیل ھو نے والے بہت تیزی سے ہو جاتا ہے اپنے قلم، لکھتے ہیں 1 اور کاغذ کا اپنا شیٹ 2، ہاتھوں اہم اصل XY بیک اور پھر اپنا کرتا A اور B کے ساتھ بات. اور اب یہ کیونکہ انتہائی اہم ہے اس nontrivial نجی اثر پڑتا ہے اصل میں درست کوڈ لکھنے کے لئے یہ لگتا ہے کیونکہ ہم تبادلہ نہیں کر سکتے ہیں دو متغیر. میں نے ایک صحیح سویپ کی تقریب لکھا ہے. ہم جتنی لارین کے ساتھ نافذ ہے حقیقت میں ایک صحیح سویپ تقریب، لیکن اس کی بظاہر کوئی معاملات اگر آپ اصل میں نہیں کر سکتے ہیں مستقل طور پر دونوں اقدار کا تبادلہ. تو ہم دوسرے طریقہ کی ضرورت ہے اصل میں اس میں حاصل کرنے کے، اور ہم کرنے کے قابل ہونے کی ضرورت ہے اصل میں اس مسئلہ کو حل. اور یہ out-- بدل جاتا ہے اور ہم آ جائیں گے واپس اس مخصوص تصویر کے لئے long-- سے پہلے اس ایک طریقہ یہ ہے کہ آپ کو آپ کے کمپیوٹر کی میموری کو اپنی طرف متوجہ کر سکتے ہیں. یہ صرف ایک مستطیل ہے. آپ کسی بھی اپنی طرف متوجہ کر سکتے ہیں طریقوں لیکن یہ کی تعداد ایک کے طور پر اپنی طرف متوجہ کرنے کے لئے آسان درج ذیل وجہ کی مستطیل. ہم باہر آج شروع کریں اور کرنے جا رہے ہیں نام نہاد اسٹیک کے بارے میں بات. اور اسٹیک صرف ایک حصہ ہے کی میموری کا ایک حصہ RAM-- افعال تک رسائی حاصل ہے کہ انہوں نے کہا رہے ہیں جب. اور اس طرح یہ اس پر باہر کر دیتا ہے یہ اسٹیک کے سب سے نیچے مین کی مقامی متغیرات میں سے سب کہاں ہے کواپریٹیو سی اور کواپریٹیو وی اور تمام ہے کہ چیزیں اور ڈیفالٹ کی طرف سے جانے کے لئے جا رہے ہیں. اور اہم تو ، سویپ کی طرح کچھ دوسری تقریب بلاتا ہے اچھی طرح سے، سویپ دوسرے حاصل کرنے کے لئے کی جا رہی ہے اس کے اوپر میموری کی پرت. اور اس طرح صرف آپ کو ایک فوری سرسری دینا اس کی تصویر، میں نے جانا ہے تو یہاں اور مجھ پر اس کا عکس دو ہیڈ کے طور پر واقعی میں نے کیا کیا well--، ہم کے بارے میں صرف دیکھ بھال تو اب کے لئے اس تصویر کے نیچے، ہے کہ میں نے ایک پروگرام چلاتے ہیں اور مین، بلایا جاتا ہے مین کا ایک حصہ دیا جاتا ہے ہے کہ میرے کمپیوٹر میں RAM اس نام نہاد اسٹیک کے سب سے نیچے دیئے. اور میں نے اس کو اپنی طرف متوجہ کرنے کے لئے جا رہا ہوں جان بوجھ کر ایک مربع کے طور پر. تو یہ 32 بٹیں یا چار بائٹس کی طرح ہے. یہ اہم تقریب ہے تو ایک 1 کی قیمت کے ساتھ متغیر کہا جاتا X اور یہ ایک متغیر کہا جاتا ہے 2 کی قدر کے ساتھ Y، ہے میموری کے اس sliver کے لینے کی طرح ہے اہم کام کی طرف سے دی گئی ہے نظام اور تاکہ اسے تقسیم پہلے مقامی متغیر، یہاں جاتا ہے دوسرا یہاں جاتا ہے، اور یہ بات ہے. مین تبدیل ھو نے والے، سویپ بلاتا ہے میموری کا اپنا ٹکڑا ہو جاتا ہے ہم اس طرح اپنی طرف متوجہ کریں گے کہ آپریٹنگ سسٹم سے، اور اس لئے جا رہا ہے اس کی اپنے مقامی متغیر کی بنیاد پر ہمارے عمل پر پہلے مقامی متغیر کے ساتھ ایک ابتدائی طور پر اور B کہ اقدار 1 اور 2 ملتا ہے. لیکن اس وقت، جیسے ہی کے طور پر تبدیل ھو نے والے کوڈ، executes ہے اور لارین اصل سویپ OJ اور دودھ، کیا ہو رہا ہے؟ ویسے، یہ 2 1، اس جا رہا ہے 1، راہ کی طرف سے، ایک 2 بننے، اور جا رہا ہے کہ ایک عارضی متغیر ہے کہ آخر میں اس پورے وقت استعمال کیا جاتا ہے دور ہو جاتا ہے. لیکن اس سے کوئی فرق نہیں ہے کتنا کام تم کرتے ہو اس لائن اس میں میموری کی جگہ of-- میں، X اور Y کو مکمل طور پر اچھوتا ہے. تو ہم دینے کے کچھ طریقہ کی ضرورت اس طرح تبادلہ اور افعال خفیہ رسائی، اگر آپ، کرنے کے لئے افعال X اور Y کی طرح یاد کرنے کے لئے like--. تو میں ایک نظر ڈالیں میں مدد ملتی ہے کہ ایک مثال ہم کیا گیا ہے بالکل وہی جو دیکھنے اس پورے وقت چل رہا. میں آگے جانے کے لئے جا رہا ہوں اور کھول زیرو کا موازنہ کریں. اور میں بند کرنے کے لئے جا رہا ہوں ہماری ٹھیک کرنے والا کھولتا، میں جا رہا ہوں اس خوفناک تلاش پیغام کو بند کرنے صرف ایک منٹ انتظار کرو کہنا، آپ درمیان میں ہیں ٹھیک. میں یہاں اس ٹیب کو چھپانے کے لئے جا رہا ہوں صرف واپس سادگی پر جانے کے لئے. GDB ہلاک کیا جاتا ہے اگر ایسا ہے تو، فکر نہ کرو. یہ صرف پروگرام کا مطلب ہے کہ جان بوجھ کر اس معاملے میں، چھوڑ دیا گیا، میری طرف سے. اور اب زیرو اس کرتا ہے آپس میں موازنہ. میں CS50 استعمال کر رہا ہوں معیاری I / O لائبریری. مجھے لگتا ہے کہ سب سے پہلے ایک اہم تقریب مل گیا ہے کا کہنا ہے کہ، کچھ کا کہنا ہے کہ، اور ایک تار ہو جاتا ہے. پھر اور اس کا کہنا ہے کہ ایک تار ہو جاتا. اور یہ کہ ان دونوں ڈور بالترتیب، ے اور ٹی کہا جاتا ہے. اور اب اس پروگرام، کا موازنہ کریں زیرو، زندگی میں اس کا مقصد، یہ مجھے بتانے کے لئے توقع کی جاتی ہے، میں ایک ہی بات ٹائپ کیا؟ اور اس میں ایک ہفتے میں واپس جا رہا ہوں. میں نے اپنے برابر برابر آپریٹر استعمال کر رہا ہوں جو معیار آپریٹر ہے. نہیں تفویض آپریٹر، مساوات آپریٹر. میں صرف کی اور ٹی موازنہ کر رہا ہوں. تو اصل میں آگے جانا ہے اور ایسا کرنے دو. اور میں آگے جانے کے لئے جا رہا ہوں اور زیرو کا موازنہ کر سکتے ہیں. میں ./comparezero کرنے جا رہا ہوں. اور میں جا رہا ہوں آگے اور کچھ کا کہنا ہے کہ کی طرح، کی خفی میں ماں کرتے ہیں اور کس طرح بڑے میں ماں کے بارے میں. اور کورس میں مختلف چیزیں ٹائپ کریں. بالکل ٹھیک. یہ متوقع ہے. چلو پھر سے چلاتے ہیں. دونوں مرتبہ، چھوٹے چھوٹے ہیں. یہ میرے لئے سپر جیسی دکھائی دیتی ہے. درج. ٹھیک ہے. ہو سکتا ہے کہ اس کی وجہ سے صرف عجیب ہے یہ میری گرائمر پسند نہیں ہے. تو سرمایہ ماں کرتے ہیں، دارالحکومت ماں، ایک جیسی. مختلف چیزیں. تو ایسا کیوں ہے؟ ویسے، اصل میں کیا جا رہا ہے یہاں ہڈ کے نیچے؟ تو واپس جانے یہاں صرف ایک لمحے کے لئے اور غور کیا GetString کے اصل میں کر رہی ہے. آپ GetString کال کرتے، کہ ایک تقریب ہم نے خود لکھا اور اسے کسی نہ کسی طرح ہو جاتا ہے صارف کی طرف سے حروف کی ترتیب. اور کا پہلا فرض ہے کہ دو وقت میں GetString کال، کہ مجھے دیتا ہے میموری کا ایک حصہ ہے کہ اس طرح لگ رہا ہے. اور میں تمام چھوٹے ٹائپ تو M-O-m-- اور جو اس کے بعد جاتا ہے؟ بس ایک فوری وویک چیک. الٹا سلیش صفر. ہم جانتے ہیں کہ. اور ہم نے ادا کیا ہے کہ یاد کے ارد گرد Zamila کے نام کے ساتھ اور دیگر ناموں میں سے ایک گروپ جب روب یہاں تلاش کر رہا تھا میموری کے اندر کیا ہو رہا ہے میں. تو اس کہانی بالکل ویسا ہی ہے. یہ کیا ہے GetString کے مجھ سے واپس آ رہا ہے. اب، میرا کوڈ ایک لمحے پہلے ذخیرہ GetString کی واپسی کی قیمت ایک متغیر میں کہا جاتا. اور پھر دوسری بار مجھے یہ کہا جاتا ہے، یہ ایک متغیر کہا جاتا T میں ذخیرہ. میں یہاں جانا تو، مجھے اس کی ضرورت اس مقامی متغیر کو اپنی طرف متوجہ کرنے کے لئے اور میں عام طور پر جا رہا ہوں just-- ہم کریں گے کے طور پر ایک تار کو اپنی طرف متوجہ یہاں ایک چھوٹا سا مربع کے طور پر اس s-- کال. ماں کیسے اور اب، somehow-- اس متغیر کی کے اندر جانا ہے؟ ٹھیک ہے، ہم واپس جانے کی ضرورت یہاں پہلی اصولوں پر. GetString اصل کیا واپس آ رہا ہے؟ تو یہ ہے کہ ایم اے ایم باہر کر دیتا ہے الٹا سلیش صفر، اور کسی بھی تعداد طرح یاد میں تاروں کی Zamila اور روب یا اینڈی یا کسی بھی دوسروں، میں کورس کی ہیں ہماری کمپیوٹر کی RAM یا میموری. اور آپ کے RAM آپ کے پاس like-- ہے RAM کے ایک ٹمٹم، RAM کے دو gigs، یا ایک ارب یا دو ارب بائٹس، یا شاید اس سے بھی زیادہ ان دنوں. تو آج کے مقاصد کے لئے، فرض، یہ ہم تعداد کس طرح سے کوئی فرق نہیں ہے کہ ان، لیکن ہم ایک کو گن سکے ان ارب یا دو بلین یا چار ارب بائٹس. اور صرف منمانے کہتے ہیں کہ یہ پہلی کاٹنے، دوسری کاٹنے ہے، تیسرا، چوتھا. میں نے جان بوجھ کے لئے صفر کا استعمال کرتے ہوئے نہیں کر رہا ہوں لیکن آج ہم اس پر واپس آ جائیں گے. تو دوسرے الفاظ میں یہ ہے بہت ہی پہلی بار میں، پروگرام استعمال کر رہا ہوں میں صرف خوش اور سب سے پہلے ہو رہی ہے کاٹنے کے بعد محل وقوع سے ایک میں دو ہے اس کے بعد تین چار. اور میں ڈرائنگ رہا ہے، باکس نمبر دو ارب طریقہ کے یہاں ہو جائے گا. تو کیا تم، کیا سوچتے ہیں، GetString اصل واپس؟ یہ ایم اے ایم الٹا سلیش واپس نہیں آ رہا صفر SE فی واضح طور پر اس کی وجہ سے میں تیار کی ہے کہ باکس میں فٹ نہیں ہوں گے. تو اصل میں اور کیا جو GetString سکتا ان تمام ہفتے واپس آ جائے؟ جواب پر ہے بورڈ یہاں کہیں. تم، ایم-اے-ایم الٹا سلیش صفر فٹ نہیں کر سکتے تو کیا بجائے احساس بنا سکتا ہے؟ آپ کو ڈال، سپر ہوشیار ہونا تھا تو نام نہاد انجینئرنگ ٹوپی پر، آپ کو کیا واپس آ سکتا ہے؟ کس قسم کی معلومات کی کم از کم رقم ہے اگر آپ اب بھی کریں گے کہ واپس آ سکتا ہے آپ کو یاد میں ایم اے ایم مل ہیں؟ جی ہاں؟ سامعین: ایک. DAVID J. MALAN: ایک. اور کیوں ہے؟ سامعین: یہ بتائیں گے کیونکہ تم کہاں [اشراوی] جانا. DAVID J. MALAN: بالکل. میں صرف ایڈریس کو واپس کرنے جا رہا ہوں میں ہو گیا ہے کہ سٹرنگ کی. اس میں پتہ کیس محل وقوع سے ایک ہے. تو کیا واقعی s-- میں ذخیرہ کیا جا رہا ہے اور ہر سٹرنگ متغیر طرح far-- صرف کیا گیا ہے اس سٹرنگ کا پتہ. دریں اثنا، میں فون تو ایک بار میں GetString لفظی اسی thing-- میں ٹائپ کریں lowercase-- ایم-اے-ایم ایم-اے-ایم اور ایک الٹا سلیش صفر، اور اب شاید اپنے پروگرام کی کچھ وقت کے لئے تو شاید اس چل رہا 10 ہے، اس، اس 12، محل وقوع 11 یہ 13 ہے. کسی دوسرے کا استعمال کرتے ہوئے کمپیوٹر کسی بھی وجہ سے کے لئے میموری. اب میرا دوسرا میں جاتا ہے میرا پروگرام T میں متغیر؟ 10. بالکل. اور اس طرح ہم پر نظر آتے ہیں اس پروگرام کے منبع کوڈ جہاں میں صرف کوشش کر رہا ہوں دو اقدار کا موازنہ کرنے، ہے T کے برابر برابر ہے، کیا ہے واضح انسانی کا جواب؟ 1 10 برابر نہیں کرتا ہے کوئی وجہ. اور اس کے ساتھ ساتھ ایک جھوٹ ہمارے لئے موقع واقعی صرف پہلے، دوبارہ، پر جانے کے لئے اصولوں اور اچھی طرح، کے بارے میں سوچنا، کیا ہڈ کے نیچے جا رہا ہے؟ ہم کے بارے میں بات کر رہے ہیں بٹس اور بائٹس اور میموری، لیکن یہ سمجھنے کے لئے اصل میں مفید ہے آپ GetString کال کیونکہ جب، ہم کے بارے میں سوچنا، اگرچہ یہ ہے ایم اے ایم یا سٹرنگ ماں واپس لوٹنے یا اینڈی یا Zamila یا کی طرح، تکنیکی طور پر یہ صرف واپس لوٹنے ایڈریس میموری کے اس حصہ کے. لیکن یہ ٹھیک ہے. میں کس طرح جانتے ہیں کیونکہ سٹرنگ جہاں ختم ہوتا ہے؟ میں صرف آغاز دیا رہا ہوں تو کیا ہوگا؟ ویسے، الٹا سلیش صفر، ٹھیک ہے؟ بس میں کر سکتے ہیں لکیری وقت میں پرنٹ def کی ایم اے ایم کے ساتھ باہر پرنٹ. اور جیسے ہی میں الٹا سلیش دیکھ کے طور پر میں شروع کر دیا جہاں صفر، میں، پرواہ نہیں میں نے پہلے ہی لپیٹ جانتے جہاں میں ختم کرنے کے لئے کی ضرورت ہے. اور اس طرح آج آغاز کا پرتیک ہے اور مجھے وجہ سے ہم ڈرامائی طور پر ایسا کرنے دو مصیبت کی ایک بہت کے ذریعے چلا گیا یہ یہاں wheels-- تربیت حاصل تو آج تربیت پہیوں شروع دور آتے ہیں اور ہم ظاہر کرنے least-- [تالیاں] اس سفر کے ساتھ ساتھ کے قابل تھا جی ہاں، اس صبح کو ھدف کرنے کے لئے؟ تو now-- ہے، بدل جاتا ہے باہر، سٹرنگ کے طور پر ایسی کوئی بات نہیں. سلک کا کوئی وجود نہیں. یہ ہم نے کیا ہے کہ ایک متبادل ہے CS50 لائبریری کے اندر. اب، ہم بلا شروع کرنے جا رہے ہیں ے اور ٹی نہیں ڈور لیکن چار ستاروں. چار سٹار اور ہم کریں گے طویل عرصے سے پہلے کے علاوہ چڑھاو. لیکن اس کا کہنا ہے کہ، ہم جاری یہاں تک کہ اگر اب کے لئے GetString کے استعمال کر رہے ہیں، تکنیکی طور پر مجھے ایسا کرنا چاہیے چار سٹار اور چار ستارہ کہہ. اور یہ کیا ہے کہ سٹار باہر کر دیتا ہے مطلع کرنے جا رہا ہے کچھ ہے ایک پوائنٹر یا ایک ایڈریس بلایا. اور حقیقت میں، ایک جھلکی کیا آگے جھوٹ سے یہ 20 دوسری کلپ ہے ہماری سٹینفورڈ میں دوست نک Parlante جو، کچھ وقت پہلے، خرچ وقت کی ایک مضحکہ خیز رقم، سب سے بہتر طور میں بتا سکتے ہیں ان باورچی خانہ یا ان کے بیسمیںٹ، claymation کی بنا دنیا کو متعارف کرانے نامی ایک کردار Binky کی جن کے ساتھ ہم اشارہ اگلی بار متعارف کرایا جائے. تو یہاں آنے کے لئے کیا کا ایک جائزہ ہے. [ویڈیو پلے بیک] -Hey، Binky کی. اٹھو. یہ پوائنٹر تفریح ​​کے لئے وقت ہو گیا ہے. -وہ کیا ہے؟ اشارہ کے بارے میں معلومات حاصل کریں؟ اوہ، گوڈی. [END پلے بیک] DAVID J. MALAN: اور اس بات پر، ہم آپ کو بدھ کو دیکھیں گے. بالکل ٹھیک. رقص کون ہے؟ آ جاؤ. رقص کون ہے؟ تم نے مجھے یہ شروع کرنے کے لئے چاہتے ہیں؟ میں یہ شروع کر دیا حاصل کریں گے. Woooo! لارین: سویٹ پسند موسی.