[موسیقی بجانے] DAVID J. MALAN: ٹھیک ہے. یہ CS50 ہے اور یہ ہے ہفتہ 2 کا آغاز ہے. اور تم اس سے زیادہ یاد کریں گے گزشتہ چند ہفتوں کے، ہم کمپیوٹر متعارف کروا دیا گیا ہے سائنس اور، کے نتیجے میں، پروگراموں. اور ہم نے کی راہ کی طرف سے کہانی شروع کر دیا سکریچ، جو کہ گرافیکل زبان ایم ائی ٹی کی میڈیا لیب سے. اور پھر سب سے حال ہی میں، گزشتہ ہفتے، ہم نے کیا ایک higher-- ایک متعارف کرانے نچلے درجے زبان پر جانا C، خالصتا ٹیکسٹ کا ہے کہ کچھ کے طور پر. اور، یقینا، پچھلی بار ہم نے کہ تناظر میں جائزہ لیا تصورات کی ایک بڑی تعداد. یہ، یاد، بہت تھا پہلا پروگرام ہم پر نظر ڈالی. اور اس پروگرام، بہت صرف، پرنٹ، "ہیلو، دنیا." لیکن اتنا زیادہ نہیں ہے بظاہر ماجک پر جا رہا. اس # شامل نہیں ہے ان زاویہ بریکٹ کے ساتھ. INT ہے. (باطل) ہے. قوسین، گھوبگھرالی منحنی خطوط وحدانی ہے، سیمی کولون، اور اتنا زیادہ. اور اگر ایسا ہے، یاد ہے کہ ہم نے شروع سے متعارف کرایا تاکہ ہم، مثالی طور پر، ماضی دیکھ سکتے تھے کہ نحوی، واقعی نہیں ہے کہ چیزیں تمام ہے کہ ذہنی دلچسپ لیکن ابتدائی تاریخ ، بالکل، تھوڑا سا مشکل ہے آپ کے دماغ کے ارد گرد لپیٹ. اور، یقینا، سب سے زیادہ عام میں سے ایک ایک پروگرامنگ کی کلاس میں جلد چیزیں، خاص طور پر ان کم کے لئے آرام دہ اور پرسکون، کی طرف سے مایوس کرنے کے لئے ہے اور بعض نحوی طرف فسل گیا غلطیاں، منطقی غلطیوں کا ذکر کرنا نہیں. اور ہمارے مقاصد کے درمیان اتنی آج، اصل میں، گے کچھ کے ساتھ آپ کو لیس کرنے کی ہو کس طرح کے لئے مسائل کو حل کرنے کی تکنیک بہتر مسائل خود حل کرنے کے ٹھیک کرنا کی شکل میں. اور تم بھی، یاد کریں گے، کہ ماحول ہم متعارف کرایا آخری بار CS50 IDE بلایا گیا تھا. یہ ویب کی بنیاد پر سافٹ ویئر ہے کہ آپ کلاؤڈ میں پروگرام کی اجازت دیتا، کے تمام رکھتے ہوئے، تو بات کرنے کے لئے اپنے ، ایک دوسرے کے ساتھ فائلوں کے طور پر ہم آج پھر کرے گا. اور یہ کہ ہم کو یاد یہاں ان موضوعات پر نظرثانی، ان کے درمیان کام کرتا ہے، اور loops، اور متغیر، اور بولین اظہار، اور شرائط. اور اصل میں ایک سے زیادہ چند کہ ہم سکریچ کی دنیا سے ترجمہ C. کی دنیا لیکن بنیادی عمارت بلاکس، تو بات کرنے واقعی اب بھی وہی گزشتہ ہفتے تھے. ایک سچ تو یہ ہے، ہم واقعی صرف پڑا مختلف پہیلی ٹکڑا، اگر آپ. کہ جامنی رنگ کے بجائے بلاک کے بچانے کے، ہم اس کی بجائے ہے جو printf کا تھا، C میں اس تقریب ہے کہ تم سے کچھ پرنٹ کرنے کے لئے کی اجازت دیتا ہے اور سکرین پر اس کی شکل. CS50 ہم متعارف کرایا لائبریری، جہاں آپ آپ کو ضائع کرنے get_char میں اب ہے، اور get_int، اور get_string، اور کے طور پر چند دیگر افعال ٹھیک ہے، جس کے ذریعے آپ کو ان پٹ حاصل کر سکتے ہیں صارف کے اپنے کی بورڈ سے. اور ہم بھی چیزوں پر ایک نظر لیا these- bool کے، اور چار کی طرح، اور ڈبل، فلوٹ، INT، long_long سٹرنگ. اور سی میں بھی دیگر ڈیٹا کی اقسام وہاں ہے دوسرے لفظوں، آپ کا اعلان کرتے وقت میں ایک متغیر کچھ قدر ذخیرہ کرنے کے لئے، یا آپ کو ایک تقریب کو لاگو کرتے وقت کہ کچھ قدر واپس، تم کیا وضاحت کر سکتے ہیں قیمت ہے کہ جس قسم. ایک کی طرح، یہ ایک تار ہے حروف کی ترتیب کے؟ ایک عددی طرح، یہ ایک نمبر ہے؟ یہ ایک چل نقاط ہے قدر، یا جیسے؟ لہذا سی میں، سکریچ برعکس، ہم اصل اعداد و شمار کو کس قسم کی وضاحت کرنے کے لئے شروع کر دیا واپس لوٹنے یا استعمال کر رہے تھے. لیکن، کورس کے، ہم بھی اس سے ٹکرا گئے کمپیوٹنگ کے کچھ بنیادی حدود. اور خاص طور پر، اس زبان C، یادآوری ہم پر ایک نظر لیا ہے کہ عددی اتپرواہ، حقیقت آپ کو صرف ایک ہے کہ اگر میموری کی محدود رقم یا، خاص طور پر، ایک محدود تعداد بٹس کی، آپ کو صرف اتنا زیادہ اعتماد کر سکتے ہیں. اور اس طرح ہم یہاں اس مثال میں دیکھا جس کے تحت ایک ہوائی جہاز میں ایک کاؤنٹر،، اصل میں، کافی وقت تک چل رہا ہے تو کرے اتپرواہ اور ایک سافٹ ویئر کے نتیجے ایک حقیقی جسمانی ممکنہ خرابی. ہم نے بھی سچل کی طرف دیکھا نقطہ گئی imprecision، حقیقت کہ صرف ایک محدود تعداد کے ساتھ بٹس کی، جو 32 یا 64 ہے یا نہیں، آپ صرف اتنے سارے نمبرز وضاحت کر سکتے ہیں ایک اعشاریہ کے بعد جس کے بعد آپ imprecise حاصل کرنے کے لئے شروع. تو مثال کے طور، میں ایک تہائی یہاں دنیا، ہماری انسانی دنیا میں، جانتے ہیں کہ ہم صرف ایک لامحدود تعداد ہے دشملو نقطہ کے بعد 3S کی. لیکن ایک کمپیوٹر ضروری نہیں کر سکتے ہیں اعداد کی ایک لامحدود تعداد کی نمائندگی کرتے ہیں آپ کو صرف اجازت دیتے ہیں تو اس میں کچھ معلومات کی محدود رقم. تو نہ صرف ہم نے تم کو لیس کیا شرائط میں زیادہ سے زیادہ طاقت کے ساتھ آپ کو اپنے آپ کا اظہار ہو سکتا ہے کہ کس طرح پروگرامنگ کے لحاظ سے ایک کی بورڈ، ہم بھی محدود کیا آپ اصل میں کیا کر سکتے ہیں. اور بے شک، کیڑے اور غلطیوں سکتے مسائل کے ان قسم سے پیدا ہو. اور یقینا، موضوعات میں آج ٹھیک کرنا جیسے موضوعات جا رہے ہیں اور اصل میں ہڈ کے نیچے دیکھ چیزیں متعارف کرایا گیا ہے کہ کس طرح گزشتہ ہفتے اوپر اصل میں لاگو کیا جاتا ہے آپ بہتر ہے تاکہ سمجھنے دونوں کی صلاحیتوں اور C. طرح ایک زبان کی حدود اور حقیقت میں، ہم واپس چھیل لیں گے تہوں آنکڑا ڈھانچہ کی آسان کی، ایک صف کہا جاتا ہے کچھ، جس سکریچ ایک فون کرنے کے لئے ہوتا ہے "فہرست". یہ تھوڑا سا ہے اس تناظر میں مختلف. اور پھر ہم بھی میں سے ایک ملواتا ہوں ہمارے ڈومین کے مخصوص مسائل کے پہلے CS50 میں، کی دنیا خفیہ نگاری، دوڑ دھوپ کا فن یا اس معلومات کے ciphering میں آپ کو خفیہ پیغامات بھیج سکتے ہیں اور خفیہ پیغامات کو وضاحت دو افراد، اور بی کے درمیان تو ہم نے اس سے پہلے منتقلی کہ نئی دنیا میں، چلو کچھ کے ساتھ آپ کو لیس کرنے کی کوشش کرتے ہیں جس کے ساتھ تکنیک آپ کو ختم کر سکتے یا کم از کم کچھ کو کم محرومیوں کا آپ کو شاید سامنا ہوا ہے کہ صرف گزشتہ ہفتے کے دوران. سچ تو یہ ہے، آپ کے آگے کے کچھ such-- رہے ہیں C. اور مشکلات میں آپ کی پہلی مسائل، ہیں آپ میری طرح ہیں تو سب سے پہلے وقت آپ کو ایک پروگرام سے ٹائپ کرنے کی کوشش کریں، آپ کو منطقی سوچ بھی اگر پروگرام، بہت آسان ہے آپ کو بہت اچھی طرح سے ایک دیوار مارا، اور ہو سکتا ہے سنکلک تعاون کرنے نہیں جا رہا ہے. بنائیں یا بجنا نہیں جا رہا ہے اصل میں آپ کی بولی کے عمل کرنے کے لئے. اور یہی وجہ ہے کہ ہو سکتا ہے؟ ویسے،، کے طور پر ایک نظر ڈالیں ہیں شاید، ایک سادہ پروگرام ہے. میں آگے بڑھو اور میں اس کو بچانے کے لئے جا رہا ہوں ایک فائل کو جان بوجھ کر buggy0.c بلایا، کیونکہ میں نے یہ جانتے ایڈوانس میں ناقص ہونے کے. لیکن میں یہ ہے کہ اگر اس کا احساس نہیں ہو سکتا پہلی یا دوسری یا تیسری پروگرام ہے کہ میں واقعی اپنے آپ کو بنا رہا ہوں. تو میں نے آگے جانے کے لئے جا رہا ہوں اور ٹائپ، int اہم (باطل). اور پھر میری گھوبگھرالی منحنی خطوط وحدانی کے اندر، ایک بہت واقف ( "ہیلو، world-- الٹا سلیش، N ") - اور ایک نیم بڑی آنت. میں نے فائل محفوظ کر لیا ہے. اب میں نیچے جانے کے لئے جا رہا ہوں میرے ٹرمنل ونڈو پر اور قسم کا میک buggy0، کیونکہ، ایک بار پھر، آج کی فائل کے نام buggy0.c ہے. تو میں نے، buggy0 دکھانے درج ٹائپ. اور، اوہ، ارے، پچھلی بار سے یاد کوئی خرابی کے پیغامات کہ ایک اچھی بات ہے. لہذا کوئی پیداوار ایک اچھی بات ہے. لیکن یہاں میں واضح طور پر ہے غلطیوں کی کچھ تعداد. پیداوار کی پہلی لائن تو buggy0 دکھانے ٹائپ کرنے کے بعد، یاد، بجنا کی منصفانہ شبدبہل پیداوار ہے. ہڈ کے نیچے، CS50 IDE ترتیب دیا گیا ہے کی ایک پوری چڑھانے استعمال کرنے کے لئے اس سنکلک ساتھ اختیارات تاکہ آپ کی ضرورت نہیں ہے ان کے بارے میں سوچنے کے لئے. اور یہ کہ تمام ہے کہ پہلی سطر ہے اسباب بجنا کے ساتھ شروع ہوتا ہے کہ. لیکن اس کے بعد، مسائل ان کے ظہور بنانے کے لئے شروع. لائن 3، کردار پر Buggy0.c 5، ایک بڑا، سرخ خامی ہے. وہ کیا ہے؟ لپیٹ لائبریری تقریب اعلان ساتھ قسم int (CONST چار * printf کے، ...) [کے Werror]. میں نے بہت جلد اس کا مطلب، بہت جادو ہو جاتا ہے. اور بیشک، میں سب سے پہلے نظر، ہم نہیں کریں گے آپ کو سمجھنے کی امید رکھتے ہیں اس پیغام کے مکمل. اور اس لئے سبق میں سے ایک آج ہو رہا ہے کے لئے محسوس کرنے کی کوشش کرنے کے لئے ہو پیٹرن، یا اسی طرح کی چیزیں، غلطیوں کی آپ کو ہو سکتا ماضی میں سامنا. تو چلو صرف علاوہ چڑھاو دو ان الفاظ واقف ہیں کہ دیکھو. بڑی، سرخ غلطی کو واضح طور پر ہے کسی چیز کا علامتی غلط ہونے. لپیٹ اعلان لائبریری تقریب printf کے. تو میں نے کافی سمجھ نہ بھی ہو تو کیا لپیٹ لائبریری تقریب اعلان اسباب، یقینا مسئلہ کسی نہ کسی طرح printf کے سے متعلق ہے. اور اس مسئلے کا ذریعہ یہ اعلان کے ساتھ کیا ہے. اعلان ایک تقریب ہے پہلی مرتبہ یہ ذکر. اور ہم اصطلاحات گزشتہ ہفتے کا استعمال کیا ایک تقریب کے پروٹوٹائپ اعلان کی، یا تو کے سب سے اوپر ایک لائن کے ساتھ آپ کے اپنی فائل یا ایک نام نہاد ہیڈر فائل میں. اور کیا میں فائل ہم کہتے ہیں کیا گزشتہ ہفتے printf کا اقتباس ہے کہ، unquote جو، کا اعلان کر دیا؟ کیا فائل میں اس کے پروٹوٹائپ ہے؟ اگر تو آپ کو سب سے پہلی بات مجھے یاد، ٹائپ، تقریبا ہر پروگرام آخری بار اور اتفاقی طور پر ایک لمحے قبل شروع کیا myself-- ٹائپنگ اس میں سے ایک یہاں تھا hash-- # شامل