[موسیقی بجانے] DAVID J MALAN: ٹھیک ہے، CS50 واپس کا خیر مقدم. اس ہفتے دو کے آغاز ہے. ہمارے میں سے ایک کی طرف سے ایک لفظ کیمپس دوستوں - اگر آپ دلچسپی رکھتے ہیں تو، ہو سکتا ہے، یا تو اب یا کسی مستقبل کی مدت میں بھی، ایک بار سے زیادہ آرام دہ اور پرسکون، درس و تدریس مڈل اسکول کے طالب علموں کو ایک چھوٹی سی کمپیوٹر سائنس کے بارے میں کچھ، اس یو آر ایل پر سر کرتے ہیں. انہوں نے اس وقت کی خاص طور پر ضرورت ہے اساتذہ، آپ کے پاس خاص طور پر اگر کمپیوٹر سائنس کے لئے کچھ کی نمائش تھی. تو یہ آخری بار یاد ہے، ہم نے متعارف کرایا چند اعداد و شمار اقسام کی سی، اور اگر آپ کو حاصل کرنے کے لئے شروع کر دیا ہے ہو سکتا ہے آپ کی ان کے ساتھ ابھی تک گندے ہاتھوں مسئلہ میں ایک مجموعہ. اور ہم نے ایک چار تھا. تو کسی حد تک تکنیکی لحاظ سے، کیا آج آپ کو یہ پتہ ہے کے طور پر ایک چار ہے؟ تو یہ ایک کردار ہے، لیکن چلو اب زیادہ عین مطابق ہو. ہم کردار سے کیا مطلب ہے چار یا انفرادی؟ ایک غیر عددی کردار - اتنا ضروری نہیں. یہ بھی، کہ تعداد باہر کر دیتا ہے اوقاف اور حروف ہیں اس ڈیٹا کے ساتھ نمائندگی کی ایک چار طور پر جانا جاتا ٹائپ کریں. تو یہ ضروری حروف تہجی کے اعتبار نہیں ہے. جی ہاں؟ تو یہ ایک ASCII کردار ہے. آپ جب ہفتے صفر پر واپس لگتا ہے کہ اگر ایسا ہے تو ہم رضاکاروں کی ہماری بائٹ تھا آئے اور یا تو ان کے ہاتھ کو پکڑ یا نہیں تمام، وہ بٹس کی نمائندگی کی. لیکن مجموعی طور پر آٹھ کے ایک گروپ کے طور پر، وہ ایک بائٹ کی نمائندگی کی. اور ہم ASCII کے تصور متعارف کرایا اس لیکچر میں، جس میں صرف ایک تعداد اور حروف کے درمیان نقشہ سازی. اور ASCII استعمال کرتا ہے، کے طور پر ان لوگوں کو انسان تقاضا، آٹھ بٹس ایک کردار کی نمائندگی کرنے کے لئے. تو اس کے مطابق، اگر آٹھ بٹیں کر سکتے ہیں ہر دو اقدار میں سے ایک پر لے - صفر یا ایک - دو امکانات تھے کہ اس کا مطلب اس شخص کے لئے - صفر یا ایک - اس کے لئے اس شخص، دو لوگوں کے لئے دو شخص، اس کے لئے دو. تو دو مرتبہ کی کل دو بار دو بار دو بار دو - کل میں اتنی دو آٹھویں. لہذا حروف کی کل تعداد ہے ممکن 256 آپ کر سکتے ہیں کہ آٹھ بٹس کے ساتھ کی نمائندگی کرتے ہیں. اب، تم میں سے ان لوگوں کو ایشیائی بولنے والے زبانوں زیادہ ہے پتہ ہے کہ ہو سکتا ہے بس کے مقابلے میں دنیا میں حروف کے طور پر اور بی ایس اور کاوچ سرفنگ اور DS. اور یقینا، ASCII کے لئے کافی نہیں ہے دنیا کی زبانوں میں سے ایک بہت کچھ. کہ کسی اور وقت پر لیکن زیادہ. ابھی کے لئے، سی اگر تم چاہتے ہو پتہ ہے کہ ایک خط، کا ایک ٹکڑا کی نمائندگی کرنے کے اوقاف، یا صرف کچھ کردار فطرت میں، ہم نے ایک چار کا استعمال کریں. اور یہ ایک بائٹ یا آٹھ بٹس ہے. کس طرح ایک INT کے بارے میں؟ ویسے، ایک INT ایک عدد صحیح ہے. کتنے بٹس، آپ کو یاد ہو، عام طور پر ایک عدد صحیح تھا؟ کسی کو یاد؟ تو یہ عام طور پر 32 ہے. یہ دراصل کمپیوٹر پر انحصار کرتا ہے آپ استعمال کر رہے ہیں ہے. لیکن آلے میں، اور کی ایک بہت میں کمپیوٹر، اس کے 32 بٹیں یا چار ہے بائٹس - آٹھ مرتبہ چار. اور ints صرف محفوظ کرنے کے لئے استعمال کیا جاتا ہے یا تو منفی نمبر،، مثبت، یا صفر. اور تم 32 بٹیں اور آپ کو مل گیا ہے صرف اس صورت میں مثبت تعداد کے بارے میں دیکھ بھال کر سکتے ہیں کسی ballpark کتنے ممکن ایک کمپیوٹر سے نمائندگی کر سکتے ہیں integers اپ پر صفر؟ تو یہ، 32 کرنے کے لئے دو ہو جائے گا جو اندازا چار ارب روپے ہے. دونوں میں سے یہ اختیارات ہونے جا رہے ہیں تو کمپیوٹر سائنس میں بار بار چلنے والی موضوعات. ہم دیکھیں گے کے طور پر، وہ بہت آسان ہو یہ نہیں کافی ہے یہاں تک کہ اگر کے ساتھ کام کرنے کسی کے سر میں ریاضی کرنا آسان ہے. تو ہم اندازا چار ارب کہونگا. اب، ایک طویل طویل - آپ اندازہ کی طرح کر سکتے ہیں. یہ ایک INT سے زیادہ طویل ہے. کتنے بٹس؟ 64 بٹیں یا آٹھ بائٹس تو. یہ صرف آپ کو بھی نمائندگی کر سکتے ہیں کا مطلب ہے کہ بڑی تعداد، بڑا مثبت یا بڑا منفی نمبروں. اور کس طرح کے بارے میں تیرنے لگتے ہیں؟ یہ ایک چل نقاط ہے 32 بٹیں کی قدر. یہ کچھ، صرف ایک حقیقی نمبر ہے ایک دشملو نقطہ کے ساتھ. لیکن آپ اس کے بجائے زیادہ جگہوں کی ضرورت ہے تو دشملو نقطہ کے بعد یا آپ کرنا چاہتے ہیں کچھ کے ساتھ ایک بڑی تعداد کی نمائندگی کرتے ہیں اس کے بعد حصہ، آپ کو ایک استعمال کر سکتے ہیں ڈبل، جس میں 64 بٹس ہے. لیکن ایک دلچسپ ہے یہاں takeaway. ints 32 بٹس اور کی طرف سے محدود ہیں تو اگر بھی طویل عرصے سے چاہتا ہے 64 کی طرف سے محدود ہیں بٹس، اس طرح کا سوال جنم لیتا ہے، کیا آپ اصل میں شمار کرنے کے لئے چاہتے ہیں تو ایک INT کے لئے 4 ارب سے زیادہ؟ ٹھیک ہے، آپ کو صرف ایک طویل لمبے وقت تک استعمال کرتے ہیں. لیکن آپ کو زیادہ شمار کرنے کے لئے کیا چاہتے ہیں تو 64th کرنے کے لئے دو کے مقابلے میں، دے یا لے؟ اب، یہ ایک بڑی تعداد ہے. لیکن آخر میں، آپ اصل میں شاید ، اقدار اس قسم کی پرواہ آپ کو ایک ڈیٹا بیس کا استعمال کرتے ہوئے کر رہے ہیں خاص طور پر اگر اور بہت سے اور بہت سے جمع کرنے شروع اور اعداد و شمار کے بہت سے اور منفرد بتائے اس اعداد و شمار میں سے ہر ایک ٹکڑا پر تعداد. کی تو ہم قسم کی ایک مسئلہ ہے. اور اسی طرح، چل نقاط کے ساتھ اقدار - floats یا ڈبلز - آپ کو صرف ایک محدود تعداد میں مل گیا ہے تو بٹس، کتنے کل تعداد آپ کر سکتے تھے ممکنہ طور پر کی نمائندگی کرتے ہیں؟ جب آپ اچھا، یہ کم واضح ہے ایک اعشاریہ شامل ہیں. لیکن یہ ضرور تبدوست ہے. آپ بٹس کی ایک محدود تعداد میں، ہے تو انسانوں کی ایک محدود تعداد میں، ایک تبدوست روشنی بلب کی تعداد، یقینا آپ کر سکتے ہیں صرف ایک محدود تعداد کی نمائندگی کرتے ہیں نقطہ اقدار تیر. لیکن کتنے حقیقی اعداد ان کی دنیا میں ہو؟ ایک لامتناہی ہے. تاکہ ایک مسئلہ کی طرح ہے کیونکہ ہم ایک لامتناہی رقم کی ضرورت نہیں ہے میموری یا ہمارے کمپیوٹرز کے اندر رام. تو کچھ مشکل چیزوں کو ہو سکتا ہے. تو آگے بڑھو اور کوشش کرنے دو یہاں اس کا اظہار کرنے کا. مجھ سے آگے بڑھو اور gedit کھول دیں. میں آگے بڑھو اور ایک فائل کو بچانے کے لئے جا رہا ہوں "floats0.c" صرف ہونے کے لئے کہا جاتا ہے یہ ہے کہ ایک مثال کے ساتھ مطابقت اگر آپ چاہیں تو آن لائن دستیاب،. اور میں آگے جانے والے اور رہا ہوں مندرجہ ذیل کے طور پر اس کی وضاحت - میں INT، آگے بڑھو اور کہنے جا رہا ہوں مرکزی صفر، ہم اکثر کرتے ہیں کے طور پر. اور پھر اس پروگرام میں، میں جا رہا ہوں اپنے آپ کو ایک فلوٹ کا اعلان، ایک 32 بٹ تو متغیر منمانے، F ملاقات کی. اور پھر میں اس میں ذخیرہ کرنے کے لئے جا رہا ہوں میں، ایک دسواں حصہ، تو 0.1 نہیں جانتے. تو میں نے اظہار کرنے جا رہا ہوں کہ ایک کے طور پر 10 سے تقسیم، جس میں بالکل ہے سی میں جائز اور پھر دوسری لائن پر، میں صرف اس قدر باہر پرنٹ کرنے کے لئے چاہتے ہیں. تو ہم استعمال کر سکتے ہیں کہ یاد printf واقف. ہم ایک INT کے لئے میں٪ کا استعمال نہیں کرنا چاہتا. ہم نے ایک فلوٹ کے لئے٪ چ استعمال کرنا چاہتے ہیں. اور پھر میں، الٹا سلیش N کرنے کے لئے جا رہا ہوں بند اقتباس، کوما، F، نیم وقفہ. تو یہاں میری پروگرام ہے. ایک مسئلے سے پہلے سے ہی نہیں ہے. ہے اس پر کلک کیا جن کے لئے کسی پہلے سے ہی کم از کم کی طرف اشارہ کرنا چاہتے ہیں ایک مسئلے میں نے بنایا ہے؟ جی ہاں؟ جی ہاں. میں میں "# شامل ہیں" بھول گیا میں نے کرنے کی کوشش کریں تو جس کے سب سے اوپر، وہ علامات اس کے مرتب ہونے جا رہا ہے کہ سنکلک، مجھ پر چللانا جا رہا ہے جانچ علامت یا کہہ اورکیا اس کی کچھ. یہ کچھ نہیں سمجھتی printf پسند کرتے ہیں. تو میں نے # شامل "کرنے کے لئے جا رہا ہوں "فائل کو محفوظ کریں. اور اب یہ بہتر حالت میں ہے. لیکن میں نے بھی کی طرف اشارہ کرنے جا رہا ہوں باہر ایک نیا تفصیل آج. جگہ کی وضاحت کرنے کے علاوہ ٪ F٪ میں٪ s ہے جیسے ہولڈرز، آپ کر سکتے ہیں کبھی کبھی رویے پر اثر انداز کہ پلیس ہولڈر کی. مثال کے طور پر، ایک تیر کی صورت میں نقطہ قیمت، میں صرف کرنا چاہتے ہیں تو کے بعد ایک دشملو جگہ ظاہر کرنے کے لئے مدت، میں واقعی میں 0.1f کر سکتے ہیں. تو دوسرے الفاظ میں، میں F الگ اور صرف 0.1 فیصد کے ساتھ سائن ان کریں، printf بتا، آپ کو ایک پوری ہو سکتا ہے دشملو کے بعد نمبروں کی جتھا میرے لئے اشارہ. لیکن میں صرف ان میں سے ایک کو دیکھنے کے لئے چاہتے ہیں. تو اب میں آگے بڑھو اور بچانے کے لئے جا رہا ہوں اس پروگرام، میری ٹرمینل میں جانا ونڈو، اور میں آگے جانے کے لئے جا رہا ہوں اور قسم درج کریں، فلوٹ 0 بناتے ہیں. میں سمجھتا ہوں کہ کسی حد تک خفیہ لائن دیکھتے ہیں کہ ہم کے طور پر زیادہ احساس بنانے کے لئے شروع ہو جائے گا اس ہفتے کے اور اگلے اس کے علاوہ چڑھانا. اب میں آگے بڑھو کرنے جا رہا ہوں اور فلوٹ صفر چلائیں. اور، لات. تو ایک اور مسئلے سے ہے یہاں کسی وجہ سے. میں نے اس سے ایک دسواں حصہ یقین ہے، یا 10 سے تقسیم ایک، 0.0 نہیں ہے. شاید میں صرف نہیں دیکھ رہا ہوں کافی ہندسے میں. تو کیوں میں نے دو .2 دو دیکھنے کے لئے نہ کہنا اعشاری مقامات کی بجائے صرف ایک. مجھے میرے ٹرمنل ونڈو پر واپس جانے دو یہاں اور کئی بار اپ مارا میری تاریخ کے دیکھتے ہیں. دوبارہ صفر تیرنے لگتے بنا کرو، اور اس کے بعد پھر. اور اب درج کریں. اور اب میں یہ غلط ہے یقین ہے. اور میں نے تین اور چار کر سکتے ہیں، اور میں ہوں شاید zeros دیکھ کر رکھنے کے لئے جا. تو بگ کہاں ہے؟ 10 سے تقسیم ایک 0.1 ہونا چاہئے. کسی نے کیا میں ایک کوشش لے جانا چاہتا ہوں بنیادی مسئلہ ہے؟ جی ہاں؟ وہ دونوں integers ہیں. تو کیا ہوا؟ تو ہے کہ 10 سے تقسیم ایک، کے ساتھ میں نے ریاضی میں کیا کرتے ہیں. اور میں 0.1 ملتا ہے. جی ہاں. اور اس طرح یہ واقعی ہے کہ مسئلہ ہے. اگر آپ ایک کمپیوٹر میں ایک عددی لے جب اور آپ کو ایک اور عددی کی طرف سے تقسیم ڈیفالٹ کی طرف سے کمپیوٹر پر چل رہا ہے آپ کو ایک عدد صحیح چاہتے ہیں فرض. اگرچہ مسئلہ ہے، کورس کے، ہے 0.1 ایک عدد صحیح نہیں ہے. یہ ایک حقیقی عدد ہے. اور کمپیوٹر کی طرف سے تو کیا کرتا ہے پہلے سے طے شدہ یہ صرف دور ڈالی ہے دشملو نقطہ کے بعد سب کچھ. یہ SE فی نیچے گول یا اپ نہیں ہے. یہ صرف سب کچھ دور پھینک دے دشملو نقطہ کے بعد. اور اب سمجھ میں آتا ہے کہ. اب ہم واضح طور پر ہو کیونکہ صفر کے ساتھ چھوڑ دیا. لیکن ایک منٹ رکو. میں ایک INT صفر نہیں دیکھ رہا ہوں. میں واقعی میں 0.00 دیکھ رہا ہوں. تو میں کس طرح اب اس مصالحت کرتے ہیں؟ 10 سے تقسیم ایک صفر ہے، لیکن میں ہوں تو 0.00 کو دیکھ کر، یہ کہاں ہو رہی ہے ایک حقیقی تعداد میں واپس تبدیل کر دیا؟ جی ہاں. بالکل ٹھیک. تو یہاں لائن پانچ، جب میں نے اصل میں 0.1، پھر جو یہ ہے کہ ذخیرہ کے اندر ایک فلوٹ کے، صفر مقطوعہ، اس پر موثر انداز میں برابر ہے ایک INT کے طور پر نہیں بلکہ محفوظ، بے شک، ایک فلوٹ کے طور پر. اس کے علاوہ، اس وقت میں کرنے کے لئے printf استعمال کر رہا ہوں واضح طور پر دو سے یہ تعداد پرنٹ اعشاری مقامات اگرچہ وہاں اصل میں کوئی بھی نہیں ہو سکتا ہے. بیکار کی تو اس طرح، ہے نا؟ ظاہر ہے آپ کو، ریاضی نہیں کر سکتے ہیں کم از کم اس کی سطح پر ایک کمپیوٹر میں صحت سے متعلق،. لیکن یقینا ایک حل ہے. ہم شاید کر سکتے سادہ ترین حل کیا ہے صرف intuitively یہاں بھی ایسا اس حل؟ جی ہاں؟ میں integers کو بند کر دیں - جی ہاں. میں نے کیا ہے بالکل یقین نہیں ہے یہاں تک کہ اگر اگر واقعی میں، یہاں کیا ہو رہا یہ بنیادی طور پر ان دونوں کے ساتھ کیا کرنا ہے ints کیا جا رہا ہے، ٹھیک ہے، میں کیوں نہیں کرتے 10.0 یہ بنا کہ بنا 1.0، فائل resave. میرے پاس واپس نیچے چلتے ہیں نیچے اور recompile. اب مجھے rerun ہیں. اور وہاں - اب، میں اپنے ایک دسواں حصہ مل گیا ہے 0.10 کے طور پر کی نمائندگی کی. ٹھیک ہے. تو اتنا برا نہیں ہے. اور مجھے ایک اور راستہ کی طرف اشارہ کرتے ہیں ہم اس کو حل کر سکتے تھے. مجھے اصل وقت میں واپس رول کرتے ہیں ہم ایک کے طور پر اس کی تھی جب دسویں ایک لمحے پہلے. اور میرے آگے بڑھو اور اس فائل کو resave دو صرف ایک مختلف فائل کے نام کے طور پر ایک چھوٹی سی چوکی ہے. تو اس ورژن سے ایک تھا. اور اب مجھ سے آگے جانے اور ایک اور ورژن ہے. ہم اس ورژن میں فون کروں گا دو صفر سے حساب سے ترتیب. اور میں نے اس کی بجائے ایسا کرنے جا رہا ہوں اس کے - اگر آپ کو پتہ ہے کیا؟ ڈاٹ صفر کو شامل کرنے سے اس معاملے میں کام کرتا ہے. لیکن ایک ایک متغیر تھے لگتا ہے. والے 10 ایک متغیر تھے. دوسرے الفاظ میں، میں نہیں کر سکا ہے کہ لگتا ہے آخر میں صرف سخت کوڈ .0 یہ ریاضی اظہار کی. اچھا، مجھے اصل میں کچھ کر سکتے ہیں قوسین میں ڈال ملاقات کی. میں نے ایک فلوٹ کہ عددی 10 ڈال سکتا اور میں نے ایک عدد صحیح ہے کہ ایک ڈال سکتا تیرنے لگتے ہیں، اسی طرح. اس کے بعد کیا ہونے جا رہا ہے کہ ریاضی مؤثر طریقے سے 10.0 سے تقسیم 1.0 ہے، جاتا ہے جس کا نتیجہ پہلے کی طرح چ میں. میں اس کے طور پر floats بنانے recompile اگر ایسا ہے تو 2، اور اب 2 floats، میں ایک ہی ملے ، اسی طرح کا جواب. تو یہ، ایک منصفانہ contrived مثال ہے اس مسئلہ کو حل کرنے کے لئے معدنیات سے متعلق متعارف کرانے کی طرف سے. لیکن عام طور پر، معدنیات سے متعلق ہونے جا رہا ہے خاص طور پر کے لئے ایک طاقتور چیز، مسئلہ جب ایک ہفتے کا وقت میں دو سیٹ تم سے ایک اعداد و شمار کی قسم تبدیل کرنے کے لئے چاہتے ہیں ایک اور اس دن کے آخر میں اسی طرح میں نمائندگی کر رہے ہیں. دن، ہر ایک کے آخر میں ہم ابھی تک کے بارے میں بات کی ہے بات ہے ہڈ کے نیچے صرف ints. یا اس سے بھی کم سطح کے لئے ہے تو آپ، وہ صرف نمبرز ہیں ہڈ کے نیچے. یہاں تک کہ حروف، پھر، یاد ہفتے صفر سے، نمبرز ہیں ہڈ کے نیچے. کہنا ہے، ہم دونوں کے درمیان تبدیل کر سکتے ہیں نمبروں کی مختلف اقسام اگر وہ صرف بٹس ہیں. ہم کی تعداد کے درمیان تبدیل کر سکتے ہیں اور حروف وہ ہیں تو بٹس، اور اس کے برعکس. اور اس طرح میں ڈال ایک طریقہ کار ہے پروگرامنگ میں زبردستی آپ کی اجازت دیتا ہے ایک اعداد و شمار کی قسم کو تبدیل. بدقسمتی سے، یہ نہیں ہے کے طور پر میں پسند کیا ہے ہو سکتا ہے کے طور پر براہ راست. میں floats میں واپس جا رہا ہوں 1، جس میں آسان، زیادہ تھی کے ساتھ براہ راست ایک .0 سے ہر ایک پر ہے. اور صرف ایک فوری رفریشر کے طور پر، مجھ سے آگے بڑھو اور recompile دو اس، floats 2 بنانے کے - افسوس ہے، یہ floats 1 بنانا ہے. اور اب کی floats 1 چلاتے ہیں. اور نیچے میں، محسوس میں یقینا 0.1 حاصل ہے. لہذا مسئلہ حل. لیکن ابھی نہیں. اب میں تھوڑا شوقین حاصل کرنے کے لئے جا رہا ہوں اور میں اپنے میں واپس جا رہا ہوں printf بیان اور ارے، تمہیں معلوم ہے؟ میں سمجھتا ہوں کہ اس کی تصدیق کرنا چاہتے ہیں ایک دسواں حصہ واقعی ہے. اور میں یہ دیکھنا چاہتے ہیں کرنے کے لئے جا رہا ہوں پر،، پانچ اعشاری مقامات کا کہنا ہے کہ. یہ ایک مسئلہ نہیں ہے. میں ایک پانچ سے دو میں تبدیلی میں بنانے کے ساتھ recompile. میں اس کے طور پر 1 floats rerun. بہت اچھی لگ رہی. میرا وویک چیک وہاں ختم ہو، لیکن ہو سکتا ہے میں تھوڑا زیادہ بہادر ہو رہی ہے. میں 0.10 پر 0.5 تبدیل کرنے کے لئے جا رہا ہوں. میں نے کے بعد 10 ہندسوں دیکھنا چاہتے ہیں دشملو جگہ. اور میں آگے بڑھو اور recompile کرنے جا رہا ہوں یہ اور rerun 1 floats. افسوس کی قسم میں اس کا تجربہ کیا ہے میری ریاضی کی بات نہیں ہے کیونکہ مزید اب درست، ایسا لگتا ہے. لیکن ہو سکتا ہے، ایک منٹ رکو کہ صرف ایک عارضی ہے. شاید کمپیوٹر کام کر رہا ہے تھوڑا سا عجیب. مجھ سے آگے بڑھو اور 20 دشملو پوائنٹس کرتے ہیں اور میں جانتا ہوں کہ اپنے آپ کو یقین دہانی ریاضی کس طرح. مجھے پروگرام کو کس طرح جانتے ہیں. floats 1، recompile بنائیں، اور یہ لات ہے. واقعی ہے، واقعی ہو رہی ہے اب تک نشان سے. تو کیا یہاں چل رہا ہے؟ Intuitively، ہمارے مفروضات کی بنیاد پر اعداد و شمار اقسام کے سائز کے بارے میں اس سے قبل، یہاں کیا ہو رہا ہونا ضروری ہے ہڈ کے نیچے؟ جی ہاں؟ بالکل ٹھیک. اگر آپ کو یہ زیادہ صحت سے متعلق چاہتے ہیں، اور اگر کہ صحت سے متعلق کی ایک بہت کی ایک heck ہے - اعشاریہ کے بعد 20 نمبرز. آپ ممکنہ طور پر ایک کی نمائندگی نہیں کر سکتے ہیں اگر آپ کے پاس ہے جب تک کہ صوابدیدی تعداد بٹس کے صوابدیدی تعداد. لیکن ہم ایسا نہیں کرتے. ایک فلوٹ کے لئے، ہم صرف 32 بٹیں ہے. 32 بٹیں صرف ایک میں permuted کیا جا سکتا ہے اگر ایسا ہے تو طریقہ - صرف ہمارے جیسے انسانوں پر، اسٹیج ہاتھ اوپر یا نیچے - کی ایک محدود تعداد میں طریقوں، ایک تبدوست تعداد صرف وہاں ہے حقیقی اعداد کے آپ کی نمائندگی کر سکتے ہیں ان بٹس کے ساتھ. اور اس طرح کمپیوٹر کے آخر میں کرنے کی ضرورت جا رہا ہے کونوں کاٹنے شروع. کمپیوٹر ان کی تفصیلات چھپا سکتے ہیں وقت کا ایک تھوڑا سا کے لئے ہم سے. لیکن ہم نمبروں پر poking شروع تو اور دور اور دور کو دیکھ پوری تعداد میں نمبرز پشت بندی، پھر ہم یہ دیکھتے ہیں کہ شروع اصل میں approximating ایک دسواں حصہ کا خیال. اور اس طرح یہ باہر کر دیتا ہے، بدقسمتی سے، وہاں ہے اعداد کی ایک لامتناہی تعداد ہم ایک میں واضح طور پر نمائندگی نہیں کر سکتے ہیں کم از کم ایک تبدوست کے ساتھ کمپیوٹر، بٹس کی تعداد، ایک تبدوست رام کی رقم. اب بدقسمتی سے، اس میں کبھی کبھی حقیقی دنیا کے نتائج ہے. لوگوں کو کافی اس کی تعریف نہیں کرتے ہیں تو حقیقت یہ ہے کہ حاصل کی جاچکی کے لئے یا قسم کے لے ان کے کمپیوٹر کو صرف کریں گے کہ کیا وہ کرتے ہیں اور نہ کرنے کے لئے یہ بتا ان بنیادی سمجھ نمائندگی کی تفصیلات - واضح طور سے، کچھ زبانوں میں ہیں جو، سی کے برعکس، صارف سے مخفی - کچھ بری چیزیں ہو سکتا ہے. اور میں ہم کیا چاہتے ہیں کیا سوچا ایک قدم واپس لے رہا ہے. اور یہ ایک کے بارے میں ہے آٹھ منٹ کی ویڈیو. یہ چند سال پہلے نشر کیا، اور یہ دیتا ہے جا سکتے ہیں اصل میں کیا میں بصیرت غلط آپ کو ان زیر کی تعریف کرتے ہیں جب بہت تمام بھی میں تفصیلات کی قسم حقیقی دنیا. روشنی ہم کر سکتے تھے تو دھیما چند منٹ کے لئے. اسپیکر 1: اب ہم انجینئرنگ پر واپس جدید Marvels پر آفات. کمپیوٹر - ہم سب کو قبول کرنے آیا ہوں اکثر مایوس کن مسائل ان کے ساتھ کہ جانا. کیڑے، وائرس، اور سافٹ ویئر glitches ادائیگی کے لئے چھوٹے کی قیمتوں میں ہیں سہولت. لیکن ہائی ٹیک اور ہائی سپیڈ میں فوجی اور خلائی پروگرام ایپلی کیشنز، سب سے چھوٹی مسئلہ تباہی میں magnified جا سکتا ہے. 4 جون، 1996 کو سائنسدانوں کے لئے تیار ایک بغیر پائلٹ Ariane 5 راکٹ کا آغاز. یہ سائنسی مصنوعی سیارہ لے جا رہا تھا بالکل واضح طور پر کس طرح قائم کرنے کے لئے ڈیزائن کیا زمین کے مقناطیسی میدان انٹرایکٹ شمسی ہواؤں کے ساتھ. راکٹ یورپی کے لئے تعمیر کیا گیا تھا خلائی ایجنسی اور اس کی طرف سے بند کر اٹھایا ساحل پر کی سہولت فرانسیسی گیانا کے. جیک GANSSLE: 37 سیکنڈ سے کم میں پرواز، انہوں نے سب سے پہلے دیکھا کچھ گڑبڑ جا رہا تھا. nozzles میں swiveling کیا گیا ایک طرح سے وہ واقعی نہیں کرنی چاہئے. پرواز میں 40 سیکنڈ کے ارد گرد، واضح طور پر گاڑی کے مصیبت میں تھا. انہوں نے کب اور ہے کہ ایک اسے تباہ کرنے کا فیصلہ. کے ساتھ رینج سیفٹی آفیسر، زبردست ہمت،، بٹن دبایا اس سے پہلے راکٹ کو اڑا دیا عوام کے تحفظ کے لیے ایک خطرہ بن جاتے ہیں. اسپیکر 1: یہ پہلی سفر تھی Ariane 5، اور اس کی تباہی کے کیونکہ سرایت ایک دوش کی جگہ لے لی راکٹ کی سافٹ ویئر میں. جیک GANSSLE: Ariane پر مسئلہ ایک بڑی تعداد وہاں تھا کہ مطلوبہ 64 بٹس کا اظہار کرنا. اور وہ تبدیل کرنے کے لئے کرنا چاہتا تھا ایک 16 بٹ نمبر پر. ان کی تعداد کبھی نہیں تھا کہ فرض کیا گیا ، بہت بڑا ہونے جا رہا ہے کہ کے سب سے زیادہ 64 بٹ میں ان ہندسے تعداد zeros تھے. وہ غلط تھے. اسپیکر 1: ایک سافٹ ویئر کی ناکامی قسم کے قبول کرنے کے لئے پروگرام کسی دوسرے کی طرف سے پیدا کی تعداد تھی ناکامی کی جڑ. سافٹ ویئر ڈیویلپمنٹ کی ایک بہت ہی بن گیا تھا نئی ٹیکنالوجی کا مہنگا حصہ ہے. Ariane 4 راکٹ بہت تھے سافٹ ویئر کی کامیاب، اتنا یہ بھی تھا کے لئے پیدا Ariane 5 میں استعمال کیا. فلپ COYLE: بنیادی مسئلہ تھا Ariane 5، تیز تھا کہ تیز تیز. اور سافٹ ویئر نہیں تھا اس کے لئے حساب. اسپیکر 1: راکٹ کی تباہی ، ایک بہت بڑی مالی تباہی تھی ایک منٹ کے سافٹ ویئر کی خرابی کی وجہ سے تمام. لیکن یہ پہلی بار ڈیٹا نہیں تھا تبادلوں مسائل جدید دوچار تھا راکٹ ٹیکنالوجی. جیک GANSSLE: 1991 میں آغاز کے ساتھ پہلی خلیجی جنگ، پیٹریاٹ کے میزائل اسی طرح کی ایک قسم کا تجربہ ایک بڑی تعداد کے تبادلے کے مسئلے کا. نتیجے کے طور پر، 28 امریکی فوجی تھے ہلاک اور تقریبا 100 زخمی جب چاہیے تھا جس پیٹریاٹ، آنے والے Scuds کے خلاف کی حفاظت کے لئے، ایک میزائل کو برطرف کرنے میں ناکام رہے. اسپیکر 1: عراق کویت پر حملہ کیا اور جب امریکہ میں صحرا طوفان کا آغاز ابتدائی 1991، پیٹریاٹ میزائل بیٹریاں سعودی عرب کی حفاظت کے لئے تعینات کیا گیا تھا عراقی Scud سے اور اسرائیل میزائل حملوں. پیٹریاٹ ایک امریکی درمیانے رینج ہے کی طرف سے تیار کی سطح سے فضا نظام ریتیان کمپنی. THEODORE POSTOL: پیٹریاٹ کا سائز انٹرسیپٹر خود تقریبا ہے 20 فٹ لمبا. اور اس کے بارے میں 2000 پونڈ کا وزن. اور اس کے بارے میں کی ایک warhead کی ​​جاتی ہیں - میں اس کے تقریبا 150 پاؤنڈ ہے. اور warhead خود ہے ہے جس میں اعلی دھماکہ خیز مواد اس کے ارد گرد ٹکڑے. warhead کے سانچے ڈیزائن کیا گیا ہے buckshot کی طرح کام کرنے کی. اسپیکر: 1 میزائل چار کئے جاتے ہیں کنٹینر فی اور نقل و حمل کر رہے ہیں ایک نیم ٹریلر کی طرف سے. فلپ COYLE: پیٹریاٹ اینٹی میزائل نظام میں واپس چلی جائے اب کم از کم 20 سال. یہ اصل میں کے طور پر ڈیزائن کیا گیا تھا کرنے کے لئے ایک ایئر ڈیفنس میزائل دشمن کے ہوائی جہاز کو نیچے گولی مار. پہلی خلیجی جنگ میں، جب کہ جنگ ساتھ آیا تھا، آرمی اسے استعمال کرنا چاہتا تھا Scuds، نہیں ہوائی جہاز سے نیچے گولی مار کرنے کے لئے. عراقی ایئر فورس نہیں تھی ایک مسئلہ کی اتنی زیادہ. لیکن فوج کے Scuds فکر ہو رہی تھی. اور تاکہ وہ اپ گریڈ کرنے کی کوشش کی پیٹریاٹ. اسپیکر 1: دشمن میزائل Intercepting مچ پانچ میں سفر کر رہا تھا کافی چیلنج کیا جا رہا. لیکن پیٹریاٹ میں لے جایا گیا جب خدمت، فوج کے ایک کے بارے میں معلوم نہیں تھا ان بنا دیا ہے کہ عراقی ترمیم مارا تقریبا ناممکن Scuds. THEODORE POSTOL: کیا ہوا تھے Scuds ہے میں آنے والے عدم استحکام کا شکار تھے. وہ wobbling کیا گیا. اس کی وجہ میں عراقیوں تھا ایک سے 600 کلومیٹر باہر حاصل کرنے کے لئے 300 کلومیٹر رینج میزائل، لیا سامنے warhead سے باہر وزن. وہ warhead ہلکا کر دیا. تو اب پیٹریاٹ کوشش کر رہا ہے Scud میں آنے کے لئے. اور زیادہ تر وقت، بھاری اکثریت وقت کی اکثریت، یہ صرف کرے گا Scud کی طرف سے پرواز. اسپیکر 1: ایک بار پیٹریاٹ نظام آپریٹرز پیٹریاٹ یاد احساس ہوا اس ہدف، وہ محب وطن دھماکہ ممکن سے بچنے کے لئے warhead یہ اجازت دی گئی تھی تو جانی نقصان زمین پر گر. THEODORE POSTOL: یہ کیا سب سے زیادہ تھا لوگ آسمان میں بڑی fireballs کے طور پر دیکھا اور پکڑے طور پر غلط فہمی Scud ہتھیاروں کی. اسپیکر 1: رات آسمان میں اگرچہ محب وطن ہونے کا کامیابی کے ساتھ شائع وہاں Dhahran میں Scuds تباہ اس کے بارے میں کوئی غلطی نہیں ہو سکتی کارکردگی. ، پیٹریاٹ کی رڈار نظام آمدید کھو ایک آنے والے Scud کے ٹریک اور کبھی نہیں ایک سافٹ ویئر دوش کی وجہ سے شروع کی. یہ سب سے پہلے دریافت کیا جو اسرائیلیوں تھا اس نظام اب ، زیادہ سے زیادہ وقت کے تضادات پائے جانے پر تھا ایک گھڑی کی وجہ سے بن گیا نظام کے کمپیوٹر میں سرایت. جیک GANSSLE: کے بارے میں دو ہفتوں سے پہلے Dhahran، اسرائیلیوں میں المیہ محکمہ دفاع کی رپورٹ نظام وقت کھو گیا تھا. چلانے کے بارے میں آٹھ گھنٹے کے بعد، وہ نظام ہے کہ کافی کم درست ہوتا جا رہا. محکمہ دفاع کی طرف سے جواب پیٹریاٹ بیٹری کے تمام کہہ نظام نہیں چھوڑ کرنے کے لئے ایک طویل وقت کے لئے پر. انہوں نے ایک طویل وقت کیا تھا کبھی نہیں کہا. آٹھ گھنٹے؟ 10 گھنٹے؟ 1،000 گھنٹے؟ کوئی نہیں جانتا تھا. اسپیکر: 1 پیٹریاٹ بیٹری تعینات Dhahran میں بیرکوں میں اور اس کے ناقص اندرونی گھڑی گئی تھی کی رات 100 سے زائد گھنٹے پر فروری 25th. جیک GANSSLE: یہ ایک کے لئے وقت ٹریک ایک سیکنڈ کا ایک دسویں کے بارے میں کی درستگی. اب، ایک سیکنڈ کے دسویں ایک ہے یہ نہیں ہو سکتا کیونکہ دلچسپ تعداد بالکل بائنری میں کا اظہار کیا، جس کا مطلب ہے کہ یہ بالکل میں ظاہر نہیں کیا جا سکتا کسی بھی جدید ڈیجیٹل کمپیوٹر. یہ یقین کرنا مشکل ہے، لیکن ایک مثال کے طور پر اس کا استعمال کریں. کی تعداد میں ایک تہائی لے چلتے ہیں. ایک تہائی کا اظہار نہیں کیا جا سکتا بالکل دشملو میں. ایک تہائی 0،333 جا رہا ہے انفینٹی کے لئے پر. کے ساتھ ایسا کرنے کا کوئی طریقہ نہیں ہے دشملو میں مطلق درستگی. یہی تو مسئلہ کی ایک ہی قسم ہے کہ پیٹریاٹ میں ہوا. اب نظام، بھاگ گیا بدترین وقت غلطی بن گیا. اسپیکر 1: آپریشن کے 100 گھنٹے کے بعد، وقت میں غلطی صرف تھا ایک دوسرے میں سے ایک کے بارے میں تیسری. لیکن کی شرائط میں ایک میزائل کی ھدف بندی مچ پانچ میں سفر، اس کے نتیجے میں سے زیادہ 600 میٹر کی سے باخبر رہنے کے کی خامی. اس کے لئے ایک مہلک غلطی ہو گی Dhahran میں فوجیوں. THEODORE POSTOL: کیا ہوا ہے Scud لانچ کے اوائل کی طرف سے پتہ چلا تھا انتباہ مصنوعی سیارہ. اور وہ Scud آ رہا تھا کہ جانتے تھے ان کے جنرل سمت میں. یہ آ رہا تھا جہاں وہ نہیں جانتا تھا. اسپیکر 1: یہ ریڈار اب تھی پیٹریاٹ نظام کا جزو تلاش اور رکھنے کے لئے Dhahran کا دفاع آنے والے دشمن میزائل کا ٹریک. جیک GANSSLE: ریڈار بہت ہوشیار تھا. یہ اصل کی پوزیشن کو ٹریک کرے گا پھر Scud اور پیشن گوئی یہ کہاں شاید اگلی بار ہو گی ریڈار ایک پلس باہر بھیج دیا. کہ رینج دروازے بلایا گیا تھا. THEODORE POSTOL: پھر پیٹریاٹ میں ایک بار کافی وقت گزر گیا ہے جانے کے لئے کرنے کا فیصلہ پیچھے اگلا، دوسرا کے لئے محل وقوع کی جانچ پڑتال اس کا پتہ چلا اعتراض، اسے واپس جاتا ہے. یہ غلط کرنے کے لئے واپس چلے گئے تو جب جگہ، یہ تو کوئی اعتراض دیکھتا ہے. اور یہ، کوئی اعتراض نہیں تھا کہ اس کا فیصلہ یہ ایک جھوٹ کا پتہ لگانے تھا، اور ٹریک گراتا ہے. اسپیکر: 1 آنے والے Scud غائب ریڈار اسکرین سے، اور پر بعد میں تنقید بیرکوں میں. Scud 28 افراد جاں بحق اور گزشتہ ایک تھا خلیج کی پہلی جنگ کے دوران نوکری سے نکال دیا. بدقسمتی سے، اپ ڈیٹ کر سافٹ ویئر پہنچے Dhahran میں مندرجہ ذیل دن. سافٹ ویئر کی دوش مقرر کیا گیا تھا، شورش زدہ میں ایک باب بند پیٹریاٹ میزائل کی تاریخ. پیٹریاٹ دراصل مخفف ہے مرحلہ وار لڑی سے باخبر رہنے کے کے لئے ہدف کی ٹوہ لگانا. DAVID J MALAN: ٹھیک ہے، تو ایک اس بات کا یقین کرنے کے لئے، مثال کے طور پر sobering. اور خوش قسمتی سے، ان نچلے درجے کے کیڑے ہم کروں گا کہ کچھ نہیں ہیں عام طور پر یقینی طور پر، کی تعریف کرنے کی ضرورت نہیں ہمارے سے کچھ کے ساتھ پروگراموں کے قدیم ترین. بلکہ کیڑے کی سب سے زیادہ تمہیں تصادم، فطرت میں منطقی ہو جائے گا فطرت میں syntactic جس کے تحت کوڈ کو صرف صحیح کام نہیں کرتا. اور تم یہ بہت تیزی سے جانتے ہیں. لیکن خاص طور پر ہم جب سمسٹر کے آخر، یہ جا رہا ہے کرنے کے لئے ایک امکان کی زیادہ سے زیادہ ہو جاتے ہیں واقعی میں ڈیزائن کے بارے میں مشکل لگتا ہے اپنے پروگراموں اور بنیادی کی نمائندگی وہاں بھی اعداد و شمار کی. مثال کے طور پر، ہم، ایس کیو ایل کا تعارف کرواتی ہوں جس میں ایک مقبول ڈیٹا بیس کے انجن ہے آپ کے لئے ویب سائٹس کے ساتھ استعمال کر سکتے ہیں واپس آخر پر ڈیٹا سٹور. اور تم میں فیصلہ کرنے کے لئے شروع کرنے کے لئے پڑے گا سمسٹر کے آخر کیا نہ صرف استعمال کرنے کے لئے ان خطوط پر قسم کے اعداد و شمار لیکن بالکل کتنی بٹس استعمال کرنے کے لئے، آپ تاریخوں ذخیرہ کرنے کے لئے چاہتے ہیں یا نہیں تاریخوں اور اوقات کے طور پر اوقات، اور یہ بھی کے طور پر آپ کتنا بڑا کرنا چاہتے ہیں کی طرح چیزوں کو ، کے لئے کہنا منفرد شناخت، صارفین آپ کے ڈیٹا بیس میں. اصل میں، تم میں سے کچھ ہیں تو تھا فیس بک، کچھ عرصے کے لئے اکاؤنٹس اور آپ تک رسائی حاصل کرنے کے لئے کس طرح - آپ کے صارف کی شناخت کرنے کے لئے جو کبھی کبھی آپ میں سے ظاہر ہوتا ہے آپ کو ایک منتخب کیا ہے جب تک پروفائل کی یو آر ایل یو آر ایل کے لئے عرفیت، یا آپ کو ہے تو استعمال کیا فیس بک کی گراف API، عوامی طور پر دستیاب API کے جس کے ذریعے تم خام اعداد و شمار کے لئے فیس بک پوچھ سکتے ہیں - آپ اپنے عددی ID کیا ہے دیکھ سکتے ہیں. اور کچھ سال پہلے، فیس بک بنیادی طور پر کا استعمال کرتے ہوئے کی طرف سے تبدیل کرنا پڑا طویل استعمال کرتے ہوئے ints کے برابر طویل وقت گزرنے کے صارفین کے طور پر آنے کی وجہ سے اور جاؤ اور اکاؤنٹس کے بہت سے تشکیل دیتے ہیں اور جعلی اکاؤنٹس، یہاں تک کہ وہ بہت آسانی سے ایک 4 کی طرح کچھ ختم کرنے کے قابل تھے ایک INT طرح ارب ممکن قیمت. مسائل کی ان اقسام پر تو زیادہ سڑک کے نیچے، کے طور پر بھی. ٹھیک ہے، ڈال دیا گیا تھا تاکہ. کہ imprecision تھا. فوری اعلانات کے ایک جوڑے. تو حصوں رسمی طور پر اس آنے والے کا آغاز اتوار، پیر، منگل. آپ بعد میں اس ہفتے کے ای میل کے ذریعے سن گے اپنے حصے کی تفویض کے لیے. اور تم بھی یہاں اس نقطہ پر کروں گا کہ کس طرح اپنے حصے کو تبدیل کرنے کی اگر آپ کا شیڈول اب تبدیل کر دیا گیا یا ہے آپ کی اطمینان کا درجہ اب بدل گیا ہے. ایک ہیں دریں اثناء P-سیٹ اور ایک ہیکر کرنے کا اختیار کے ساتھ اس کی وجہ سے جمعرات کے روز فی وہ ڈیڈ لائن میں توسیع جمعہ وضاحتیں ایک عام انداز میں. مسئلہ کے ساتھ شامل احساس ہے کہ سیٹ وضاحتیں پر دی گئی ہدایات ہیں CS50 آلات استعمال کرنے کے لئے کس طرح، بنا، اس کے ساتھ ساتھ کچھ CS50 مخصوص آلات آپ کو فراہم کر سکتے ہیں جس طرز 50، طرح پر متحرک طور پر رائے کے ساتھ اپنے کوڈ طرز کے معیار اور بھی آپ کے ساتھ فراہم کر سکتے ہیں، جو 50 کی جانچ پڑتال آپ کے طور پر متحرک رائے کوڈ کی درست. ہم اب بھی استری رہے ہیں معاف کر دو چیک 50 کے ساتھ چند kinks باہر. شروع کیا جو اپنے ہم جماعتوں کے چند چار کے ارد گرد جمعے کی رات جب AM گئے رپورٹ کو اس وقت سے محسوس کیا ہے ہم کام کر رہے ہیں کہ چند کیڑے کسی کے لئے کے ذریعے، اور مستثنی تقاضہ کرنے والے اسمیک مایوسی کا سامنا کرنا پڑا ہے. غلطی میری ہے. لیکن ہم CS50 پر اپ کی پیروی کریں گے حل کیا جاتا ہے کہ جب بات چیت. سکور خود پر ایک لفظ تو. تو یہ تم سے پہلے ایک ہفتے یا دو گے مسئلہ سیٹ پر آراء بھی حاصل کرنا شروع کر دیں آپ نے ابھی تک نہیں ہے کی وجہ سے ایک تعلیم ساتھی. اور پھر بھی، ہم اندازہ کرنے کے لئے شروع ہو جائے گا سی مسئلہ ہے کہ ہم سے پہلے کا تعین کرتا ہے واپس جاؤ اور سکریچ تاکہ اندازہ آپ کو زیادہ متعلقہ ملے زیادہ تیزی سے رائے. لیکن نصاب کے مطابق عام طور پر، CS50 مسئلہ سیٹ کے ساتھ ساتھ اندازہ کر رہے ہیں چار محور کے بعد - گنجائش، درست، ڈیزائن، اور سٹائل. دائرہ کار عام طور پر ایک بڑی تعداد ہونے جا رہا ہے کہ صفر کے درمیان اور پانچ قبضہ کس طرح زیادہ سے زیادہ آپ کو کاٹا ٹکڑا ہے. عام طور پر، آپ کو اس پانچ بننا چاہتا ہوں. کم سے کم تم سب کچھ کرنے کی کوشش کی. اور یہ ایک multiplicative عنصر کے نوٹس تاکہ میں سے صرف حصہ کر مسئلہ سیٹ سب سے بہتر حکمت عملی نہیں ہے. دریں اثنا، زیادہ واضح ہے درست کی اہمیت - صرف آپ کے پروگرام کے ساتھ صحیح ہے تفصیلات کے لئے احترام کے؟ یہ جان بوجھ کر زیادہ وزن ہے بھاری ایک کی طرف سے دوسرے دو محور سے زیادہ تین کے عنصر کی شناخت کی وجہ سے ہم عام طور پر آپ کو ایک خرچ کرنے کے لئے جا رہے ہیں کہ بہت زیادہ وقت کچھ کیڑے نیچے کا پیچھا، اگر آپ اپنے کوڈ کو کام کرنے کے لئے ہو رہی ہے اس کے حاشیہ ڈال اور کو منتخب کر رہے ہیں مناسب متغیر کے نام اور پسند ہے، جس کے دوسرے سرے پر ہے سٹائل کے سپیکٹرم کے. یہ طرز نہیں ہے کہنے کے لئے نہیں ہے اہم، اور ہم اس کے بارے میں تبلیغ کریں گے لیکچر میں اور حصوں میں دونوں وقت. ہالی ووڈ جمالیات سے مراد آپ کے کوڈ کا. آپ کو اچھی طرح کا نام متغیر منتخب کیا ہے مختصر لیکن کسی حد تک ہے کہ وضاحتی؟ آپ میں دیکھا ہے کے طور پر آپ کوڈ پوٹ دار ہے لیکچر اور متوازن انداز میں سٹائل کے 50 کے ساتھ؟ آخر میں ڈیزائن حق ہے وہاں وسط میں. ڈیزائن ایک ڈال کرنے کے لئے مشکل سے ایک ہے یہ بہت زیادہ ہے کیونکہ پر انگلی ساپیکش. لیکن یہ شاید سب سے اہم ہے تعلیمی کے لحاظ سے تین محور وقت کے ساتھ ساتھ اور یہ کہ اس کی قیمت ہو گی درس و تدریس کے ساتھی کی موقع پر آپ گتاتمک رائے کے ساتھ فراہم کرتے ہیں. بے شک، CS50 میں ہم ہیں اگرچہ آخر میں ان فارمولوں اور سکور، دن کے ان بہت جان بوجھ ہیں بہت چھوٹے بالٹیاں - نقطہ اقدار صفر اور تین کے درمیان اور صفر اور پانچ. ہم بہت موٹے لائنز اپنی طرف متوجہ کرنے کی کوشش نہ کرو مسئلہ سیٹ کے درمیان یا درمیان طالب علموں کی بجائے زیادہ سے زیادہ کے طور پر توجہ مرکوز ہے لیکن ہم معیار پر، longhand کر سکتے ہیں کی طرف سے آراء، یا تو ٹائپ شدہ یا زبانی آپ کی خاص طور پر درس و تدریس کے ساتھی، آپ کو اچھی طرح جاننے کے لئے مل جائے گا. لیکن عام طور پر، ان لوگوں کو وزن ہیں مختلف محور ہوگا. اسی اثناء میں، بھی، اس میں رکھنے کے قابل ہے آپ فرض نہیں کرنا چاہیے کہ کوئی اعتراض کہ پانچ سے باہر تین ایک 60 فیصد ہے اور اس وجہ سے تقریبا ناکام. تین جان بوجھ بننے کے لئے کیا مراد ہے اچھا راستے کے درمیان کی طرح. آپ کو threes ہو رہی ہے تو سمسٹر کے آغاز ہے یقینا ایک اچھا ہونا شروع کرنے کی جگہ. آپ twos، میلے ہو رہے ہیں، تو وہاں ہے ایک چھوٹی سی ادا کرنے کے لئے یقینی طور پر کچھ کام زیادہ توجہ، فائدہ اٹھانے کے لئے حصوں اور دفتری اوقات کی. آپ چوکوں کی مدد کر رہے ہیں تو اور fives، عظیم. لیکن واقعی، ہم trajectories کو دیکھنے کے لئے امید ہے کہ طالب علموں کے درمیان - بہت طالب علم کے مطابق انفرادی، لیکن شروع کی طرح میں یہاں سمسٹر تین رینج دو لیکن ختم ہونے والے یہاں چار سے پانچ رینج میں. کہ ہم واقعی کے لئے تلاش کر رہے ہیں کیا ہے. اور ہم ذہن میں ڈیلٹا کہ رکھتے ہو آپ ہفتے صفر اور ہفتے کے درمیان نمائش 12 میں گریڈ کر رہا ہوں جب. یہ بالکل کس طرح ہمارے لئے کوئی فرق نہیں پڑتا اگر آپ کو شروع میں منصفانہ اگر آپ کا پرکشیپوکر بے شک ہے اضافہ اور مضبوط. تعلیمی ایمانداری - تو مجھے میرے پر ڈال دو صرف ایک لمحے کے لئے زیادہ سنگین آواز. تو اس کورس کا اعزاز حاصل ہے کسی بھی دوسرے سے زیادہ طالب علموں کو بھیجنے کے اشتھار بورڈ کی تاریخ میں، میں یقین رکھتے ہیں. ہم اس میں کھو شمار کی طرح ہے ایسا ہوتا ہے اکثر کس طرح کے نقطہ. اور اس میں سے 50 کی وجہ سے طالب علموں کو نہیں ہے کوئی بھی ان کے مقابلے میں زیادہ بے ایمان ہیں دوسری جگہوں پر ہم جماعت. لیکن ہم بہت اچھے ہیں کہ، بھی، احساس بات یہ ہے کہ اس طرح کا پتہ لگانے میں. اور اس میں فائدہ یہ ہے کہ کمپیوٹر سائنس کی کلاس ہے کہ میں ہم اور ہم تمام طلبہ آپس میں موازنہ کر سکتے ہیں مسئلہ ہر جوڑی کے خلاف وار کا تعین کرتا ہے دوسرے، اس سال نہ صرف لیکن سب سے پہلے سال. ہم میں طالب علموں کی طرح، کی صلاحیت ہے گوگل اور کوڈ حاصل کرنے کے لئے کلاس، github طرح کی سائٹس اور پر فورم. CS50 کی بالکل حل ہیں وہاں کے ارد گرد تیرتا P-تعین کرتا ہے. لیکن تم نے انہیں تلاش کر سکتے ہیں، ہم انہیں تلاش کرسکتے ہیں. اور یہ سب کے سب بہت زیادہ خود کار طریقے سے ہے اور آسان اور دکھ کی بات ہے ہمارے لئے تلاش کرنے کے لئے. لیکن میں بھی بات پر زور دینا چاہتا ہوں کہ کورس کی تعلیمی ایمانداری پالیسی ہے بہت بہت بہت بہت ہونا کہ روح کے برعکس. بے شک، اس سال ہم چیزوں rephrased ہے یہ ہونا نصاب میں، ڈوٹ مزید تفصیل کے ساتھ ڈاٹ ڈاٹ، نصاب میں. لیکن کورس میں overarching مرکزی خیال، موضوع واقعی مناسب ہونا ہے. ہم ایک اہم ہے کہ وہاں کی شناخت تعلیمی کی رقم کچھ حد تک تعاون میں قدر،، ہم جماعتوں کے ساتھ، جس کے تحت آپ کو دو یا دو سے آپ کو تین یا اس سے آپ کو زیادہ ہیں ایک سفید بورڈ پر کھڑے تاکہ whiteboarding، ، اپنے خیالات سے بات - تصاویر میں pseudocode باہر لکھنے، ماریو تو کیا ہونا چاہئے diagramming تم نے اسے سب سے پہلے لکھنے کے لئے تھے pseudocode میں. کیا لالچی الگورتھم چاہئے - یہ کس طرح فی برتاؤ کرنا چاہئے مسئلہ ایک متعین کرتا ہے؟ اور اس طرح اس رویے کا احساس ہم حوصلہ افزائی کرتے ہیں کہ بہت ہے ان خطوط پر بہت کچھ. اور نصاب میں، آپ کو نظر آئے گا ایک کے تحت گولیوں کے پورے گچرچھی مناسب قسم کے اور ایک مناسب نہیں ہماری مدد میں مدد ملتی ہے کہ اس قسم کے آپ کہاں کے ارد گرد آپ کے دماغ میں لپیٹ ہم اس کی لکیر کھینچنا ہے. انگوٹھے کی اور عام طور پر، ایک مہذب حکمرانی یہ ہے کہ آپ کو حل کرنے کے لئے جدوجہد کر رہے ہیں تو کچھ مسئلے سے اور آپ کے دوست یا ہم جماعت یہ آپ کے لئے اگلے ہے بیٹھی ہے کیا تم نے اسے ظاہر کرنے کے لئے مناسب یا اس کے آپ کے کوڈ اور ارے، میں آپ کی مدد کر سکتے ہیں، کا کہنا ہے کہ مجھے یہاں غلط کیا ہو رہا ہے پتہ؟ ہم عام طور پر گلے نہیں کرتے مخالف طرف. یہ آپ کے لئے ایک درست جواب نہیں ہے دوست یا کا کہنا ہے کہ کرنے کے لئے یہاں سہپاٹھی، اوہ، صرف میرا اور اعداد و شمار پر نظر ڈالیں اس سے اسے باہر. اس طرح کی غلط ہے. لیکن کسی اور نے ایک اور دماغ، ہونے آنکھوں کی ایک جوڑی کی طرف دیکھو اپنے کوڈ میں آپ کی سکرین یا دیکھو اور کہتے ہیں، اگر آپ چاہتے ہیں یہاں ایک لوپ ہے؟ یا آپ چاہتے ہیں یہاں اس نیم وقفہ؟ یا اوہ، یہ خرابی کا پیغام اس کا مطلب ہے. وہ لوگ بہت ہی معقول اور ہیں طرز عمل کی حوصلہ افزائی کی. میں alluding کیا گیا تھا جس سے مقدمات طالب علموں کو جب پہلے نیچے ابلنا دیر رات کو غریب بنانے کے فیصلے فیصلوں اور ان کی کوڈ ای میل کوئی اور یا صرف کسی کو، کہہ یہاں، یہ ڈراپ باکس میں ہے یا رات کو دیر سے Googling. اور اس لئے میں، کی حوصلہ افزائی اور آپ سے بھیک مانگتی ہوں گے آپ ان ناگزیر ہے تو کشیدگی کے لمحات، آپ کو bumping رہے ہیں ڈیڈ لائن کے خلاف، آپ کو کوئی دیر ہے یہ میں نے پہلے ہی جمعہ کے دن کے بعد سے نقطہ، کورس کی سروں کو ای میل یا براہ راست خود. سنتے ہیں، کا کہنا ہے کہ، میں نے اپنے میں ہوں یہاں نقطہ توڑ. چلو ایک بات چیت کر اور یہ پتہ لگا. ویب کا سہارا یا کسی دوسرے نہیں مناسب رویے کبھی نہیں ہے آپ کے حل، اور بہت زیادہ ہم جماعتوں اب کوئی یہاں پر ہیں کیونکہ اس غریب فیصلے کے کیمپس. لیکن یہ اس لائن سکرٹ کرنے کے لئے بہت آسان ہے. اور یہاں خوش کرنے کے لئے ایک چھوٹی سی تصویر ہے آپ کو اٹ سے تو اب سب کچھ ٹھیک ہو جائے گا. ایک فوری recap تو، پھر، ہم نے چھوڑا جہاں. تو پچھلے ہفتے، ہم کو متعارف کرانے ہے کہ یاد حالات، نہیں سکریچ میں لیکن سی اس وقت. اور کچھ نئے نحو لیکن وہاں تھا SE فی واقعی کوئی نئے خیالات. ہم بولین اظہار کی طلب تھا ہم سکتا ہے یا ایک دوسرے کے ساتھ کے ساتھ عمودی دو سلاخوں کے یا اور مل کر دونوں کے ساتھ ampersands، کہہ بائیں دونوں کہ اور حق سچ ہونا ضروری ہے اس پر عمل کرنے کے لئے. اس کے بعد ہم نے دیکھا، جو سوئچ تھا مختصر طور پر، لیکن میں تجویز واقعی ہیں حاصل کرنے کے لئے صرف مختلف نحو آپ کا مقصد اسی قسم میں علم ہو تو کیا آپ کو آگے بڑھانے کے مقدمات بننے کے لئے جا رہے ہیں. ہم loops کی طرف دیکھا. لوپ کے لئے ایک ہے، شاید سب سے زیادہ عام ہے یا کم از کم ایک کہ لوگ instinctively کے لئے عام طور پر تک پہنچتے ہیں. یہ ایک چھوٹا سا خفیہ لگتا ہے، اگرچہ اگر آپ اس کے بہت سے، بہت سے مثال کے طور پر دیکھیں گے آپ کے طور پر طویل عرصے سے اس سے پہلے کہ پہلے ہی دیر گزشتہ ہفتے. loops اسی طرح سکتے ہیں ایک ہی چیز کو حاصل کرنے کے. لیکن آپ کو کسی بھی incrementation کرنا چاہتے ہیں تو یا اپ ڈیٹ متغیر کی اقدار، آپ کو کرنا پڑے دستی طور پر زیادہ سے زیادہ یہ کرنا لوپ سے پہلے اجازت دیتا ہے کے لئے. اور پھر تم-جبکہ لوپ، ہے جو ہم پر کچھ کرنے کے لئے کی اجازت دیتا ہے کم از کم ایک بار جبکہ کچھ ورنہ سچ ہے. اور اس کے لئے خاص طور پر اچھا ہے آپ چاہتے ہیں جہاں پروگراموں یا کھیل کے لئے کچھ صارف کے اشارہ کرنے کے کم از کم ایک بار. اور پھر وہ یا وہ، تعاون نہیں کرتا تو تم نے اسے کیا کرنا چاہتے ہو سکتا ہے بار بار. متغیر کے ساتھ، اسی اثناء میں، ہم لائنوں تھا اس طرح کے کوڈ کا، جو کر سکتے تھے دو لائنیں ہو. آپ نامی ایک INT کا اعلان کر سکتے ہیں کاؤنٹر، نیم وقفہ. یا تم صرف کا اعلان کر سکتے ہیں تو بات کرنے، اس کی وضاحت. یہ ایک ہی وقت میں ایک کی قیمت دیں. اور پھر آخر میں، ہم نے بات کی تھی کام کرتا ہے کے بارے میں. اور یہ ایک اچھی مثال کے طور پر میں تھا یہ وضاحت کرتا ہے کہ احساس کے افعال میں سے دو اقسام. ایک GetString () ہے، ایک بار پھر، جو، صارف کی طرف سے ایک تار ہو جاتا ہے. لیکن GetString ()، دلچسپ کی قسم ہے اب تک ہم نے اس کا استعمال کیا ہے کے طور پر، ہم ہمیشہ اس کے ساتھ استعمال کیا ہے کیونکہ ایک کے بائیں ہاتھ کی طرف پر کچھ برابر سائن ان کریں. کہ GetString () کا کہنا ہے کہ کرنے کے لئے ہے ایک قدر واپس کرتا ہے. یہ ظاہر ہے، ایک تار واپس. اور پھر بائیں ہاتھ کی طرف پر، ہم ہیں صرف ایک کے اندر اس سٹرنگ کو بچانے کے متغیرہ کا نام کہا جاتا ہے. اس کی طرف سے، ایک طرح سے، مختلف ہے printf printf، کم سے کم ہمارے میں کیونکہ یہاں استعمال، کچھ بھی واپس نہیں کرتا. ایک ایک طرف کے طور پر، اس کی واپسی میں کچھ کرتا ہے. ہم صرف یہ کیا ہے پرواہ نہیں ہے. لیکن یہ کیا ہے ایک طرف اثر قرار دیا. اور ہر میں اس طرف کا اثر کیا ہے کیس ہم نے ابھی تک دیکھا ہے؟ printf کیا کرتا ہے؟ یہ سکرین پر کچھ پرنٹس دکھاتا ہے متن یا تعداد یا کچھ اور سکرین پر. اور یہ کہ صرف ایک طرف اثر سمجھا جاتا ہے یہ واقعی حوالے نہیں ہے کیونکہ اسے میرے پاس واپس. اس کے اندر ایک جواب نہیں ہے ایک سیاہ فام کے خانے میں اس وقت کر سکتے ہیں میں تک پہنچنے اور قبضہ. یہ صرف اس کی اپنی، بہت پر کر رہی ہے کولٹن کی طرح اس میں پلگ کر دیا گیا بلیک باکس گزشتہ ہفتے، اور وہ کسی نہ کسی طرح جادوئی بورڈ پر ڈرائنگ کی گئی تھی میرے بغیر اصل میں ملوث ہے. یہ ایک طرف اثر ہو گا. لیکن میں واقعی میں واپس پہنچنا تھا تو یہاں اور کا کہنا ہے کہ، اوہ، یہاں سٹرنگ ہے صارف کی طرف سے، جو کہ کی واپسی قیمت ہو. اور اس طرح اب تک ہم صرف کام کرتا ہے کا استعمال کیا ہے دوسرے لوگوں کو لکھا ہے کہ. لیکن ہم اصل میں یہ کر سکتا ہوں خود کو ان چیزوں کی قسم. تو میں میں کرنے جا رہا ہوں CS50 آلات دوبارہ. آپ کے وزٹرز کا ٹیب بند کرتے ہیں کہ ہم ایک لمحے پہلے کھول دیا تھا. اور میرے آگے بڑھو اور دو ایک نئی فائل بنائیں. اور میں آگے جانے والے اور رہا ہوں یہ ایک positive.c کہتے ہیں. تو میں نے کے ساتھ کچھ کرنا چاہتا ہوں یہاں مثبت تعداد. تو میں نے آگے بڑھو اور INT کرنے کے لئے جا رہا ہوں - افسوس - # شامل ہیں. کی اسی نہیں بنا دو پہلے کی طرح غلطی. INT اہم (صفر)، کھلی گھوبگھرالی منحنی خطوط وحدانی، گھوبگھرالی منحنی خطوط وحدانی بند کر دیا. اور اب میں مندرجہ ذیل کام کرنا چاہتے ہیں. میں نے ایک پروگرام لکھنے کے لئے چاہتے ہیں صارف فراہم کرتا ہے کا اصرار ہے کہ مجھے ایک مثبت عدد صحیح. تو کوئی GetPositiveInt تقریب نہیں ہے CS50 لائبریری میں. صرف GetInt () ہے. میں کیونکہ لیکن یہ ٹھیک ہے میں ایک مجبور کر سکتا ہے جس کے ساتھ تشکیل اس قدر پر تھوڑا زیادہ رکاوٹ. میں ایسا کچھ کر سکتا ہے. تو INT N - تم ساتھ ٹائپ کر رہے ہیں اور اگر صرف احساس میں واپس جا رہا ہوں اور ایک لمحے میں کچھ چیزیں تبدیل - تو INT ن GetInt () برابر ہے. اور یہ کہ ڈال دیا جا رہا ہے (ن) کے ایک INT اندر. اور مجھے ایک سے زیادہ وضاحتی رہنے دو میں نے اس مطالبہ کی طرح مجھ سے کچھ کہنے دو تم نے مجھے ایک مثبت عدد صحیح دے. ٹھیک ہے. تو ہدایات کا صرف تھوڑا سا. اور اب میں کیا کر سکتا ہوں؟ ٹھیک ہے، میں نے پہلے ہی اپنے سادہ سے جانتے ہیں بس میں جیسے حالات یا شاخوں، اسکریچ میں تھا، کیا میں کچھ کہہ سکتا (ن) سے کم یا اس کے برابر ہے تو اچھا لگتا ہے صفر، تو میں کچھ کرنا چاہتا ہوں پسند ہے، جو مثبت نہیں ہے. اور اس وقت میں کر سکتے ہیں - ٹھیک ہے، لیکن مجھے واقعی میں اس INT حاصل کرنے کے لئے چاہتے ہیں. تو میں یہاں تک جا سکتا ہوں اور میں قسم سکتا کاپی کے اس اور اس کے حاشیہ. اور پھر، ٹھیک ہے. (ن) سے بھی کم ہے یا ہے تو اگر صفر کے برابر یہ کرتے ہیں. اب، کیا ہوا اگر صارف تعاون نہیں کرتا ہے؟ ٹھیک ہے، تو میں جا رہا ہوں یہاں یہ قرضے لے. اور پھر میں یہاں جانا اور یہاں اور یہاں. تو یہ واضح طور پر نہیں ہے حل، ہے نا؟ نظر میں کوئی آخر نہیں ہے کیونکہ. میں صارف کو دیتا ہے کا مطالبہ کرنا چاہتے ہیں تو مجھے ایک مثبت عدد صحیح، میں کر سکتا ہوں اصل میں INT ملتا ہے. میں نے پھر اس INT کے لئے چیک کر سکتے ہیں. لیکن پھر میں نے اسے دوبارہ دیکھنے کے لیے چاہتے ہیں اور اسے دوبارہ چیک کریں اور اسے دوبارہ چیک کریں. تو ظاہر ہے، بہتر کیا ہے یہاں کا استعمال کرتے ہوئے تعمیر کیا جائے گا؟ ٹھیک ہے، لوپ کی تاکہ کسی قسم کا. تو میں نے چھٹکارا حاصل کرنے جا رہا ہوں تقریبا تمام اس کے. اور میں یہ حاصل کرنا چاہتے ہیں کم از کم ایک بار INT. تو میں نے ایسا کہنے جا رہا ہوں - اور میں واپس آ جائیں گے صرف ایک لمحے میں کرتے ہوئے - اب کیا کرنا ہے؟ میں INT (ن) ہو جاتا ہے GetInt () کرنے کے لئے جا رہا ہوں. ٹھیک ہے. تو یہ بہت اچھا ہے. اور اب کتنی کثرت سے کرتے ہیں مجھے یہ کرنا چاہتے ہیں؟ مجھے لوپ کے printf کے اندر ڈال دو اس لئے میں نے بار بار مطالبہ کر سکتے ہیں ضرورت ہو تو. اور میں یہ کیا چاہتے ہیں شرط کرنا جبکہ؟ میں نے یہ کر رکھنا چاہتے ہیں جبکہ کیس کیا ہے؟ جی ہاں. (ن) سے کم یا صفر کے برابر ہے. تو پہلے سے ہی، ہم نے نمایاں طور پر ہے اس کوڈ کو صاف کیا. ہم ایک بہت سادہ کی تعمیر ادھار لی ہے - مارو-جبکہ لوپ. میں صرف اہم لائنز چرا لیا ہے میں کاپی کرنا شروع کر دیا اور اس کے کوڈ کے چسپاں، جو عقل مند نہیں تھا. اور اس طرح اب میں اصل میں پیسٹ کرنے جا رہا ہوں یہاں اور صرف میں ایک بار کرتے ہیں. اور اب میں میں کیا کرنا چاہتے ہیں اس پروگرام کے بہت آخر؟ میں صرف کچھ آسان کہیں گے ، پسند کرنے کا شکریہ - اور میں INT کے لئے میں٪ کروں گا - الٹا سلیش N، کوما، اور پھر (ن)، نیم وقفہ میں پلگ. ٹھیک ہے. تو اب کیا ہوتا ہے دیکھتے ہیں میں نے اس پروگرام کو چلانے کے جب. میں آگے جانے والے اور رہا ہوں مثبت بنانے کے لئے کرتے ہیں. لات. چند غلطیاں. تو مجھے سب سے پہلے واپس سکرال ہیں. پیچھے کی طرف ان کے ذریعے کام نہیں کرتے. نیچے اوپر سے ان کے ذریعے کام ایسا نہ ہو کہ وہ جھرن اور صرف ایک بات غلط ہو. کے ضمنی اعلان تقریب GetInt (). جی ہاں. تو یہ کافی نہیں تھا. میں قسم کی ایک ہی غلطی کی ہے لیکن تھوڑا مختلف ہے اس وقت. میں صرف stdio.h شامل نہیں کرنے کی ضرورت ہے لیکن جس میں بھی cs50.h، نام نہاد ڈیکلیریشنز جس INT، حاصل آلات سکھانا، یا سکھاتا سی کیا GetInt () ہے. تو مجھے resave ہیں. میں دوسرے کی غلطیوں کو نظر انداز کرنے جا رہا ہوں مجھے وہ لوگ امید ہے کہ جا رہا ہوں کیونکہ کسی نہ کسی طرح کی خرابی سے متعلق میں نے پہلے ہی طے کی. تو مجھے آگے بڑھو اور recompile دو مثبت بنانے کے ساتھ درج کریں. لات. تین غلطیاں، ابھی تک. مجھے پہلے تک سکرال ہیں. غیر استعمال شدہ متغیر ن. ہم نے اس سے پہلے نہیں دیکھا. اور یہ بھی ایک چھوٹا سا خفیہ ہے. یہ سنکلک کی پیداوار ہے. اور کیا اس پر روشنی ڈالی لائن وہاں - positive.c :9:13 - کہہ رہی ہے، اس کی لائن نو پر کہہ رہا ہے positive.c، 13th کردار میں، 13th کالم، آپ کو اس غلطی کی. اور خاص طور پر میں یہ کہہ رہا ہے آپ کے وزٹرز کا غیر استعمال شدہ متغیر ن. تو دیکھتے ہیں - لائن نو. میں معنوں میں استعمال کر رہا ہوں کہ (ن) میں یہ ایک قیمت دے رہا ہوں. لیکن کس سنکلک پسند نہیں کرتا ہے میں بظاہر اس کا استعمال نہیں کر رہا ہے. لیکن میں یہ استعمال کر رہا ہوں، ایک منٹ رکو. لائن 11 میں، میں نے اسے یہاں استعمال کر رہا ہوں. لیکن میں مزید نیچے سکرال اگر positive.c :11 میں - تاکہ لائن 11، کردار 12، میں سنکلک، کے استعمال کے مجھ سے کہہ رہا ہے اگھوشیت شناخت کنندہ (ن). میں نے تو اگھوشیت ذرائع یہ ایک کے طور پر کی وضاحت نہیں کی ایک ڈیٹا کی قسم کے ساتھ تغیر پذیر. لیکن ایک منٹ رکو. میں نے بالکل ویسا ہی کیا لائن نو میں. تو کسی نے سچ میں یہاں الجھن میں ہے. یا تو یہ میرے یا کیونکہ سنکلک ہے لائن نو میں، ایک بار پھر، میں نے ایک اعلان رہا ہوں INT (ن)، اور میں نے اسے بتائے رہا ہوں GetInt () کی قدر کو واپس. پھر میں نے قطار میں ہے کہ متغیر (ن) استعمال کر رہا ہوں 11 اور اس کی قدر کم ہے تو جانچ پڑتال سے زیادہ یا صفر کے برابر. لیکن یہ بظاہر ہے برا اور کیوں ٹوٹا؟ پھر سے کہو؟ آہ، میں نے پہلے (ن) کا اعلان ہے لوپ میں داخل ہونے. لیکن کیوں؟ میرا مطلب ہے، ہم صرف تھوڑا سا ہے کہ پہلے کی تجویز یہ متغیر کا اعلان ٹھیک ہے ایک ہی لائن پر اور پھر ان کی کچھ قدر تفویض. ایک عالمی متغیر - چلو واپس آ صرف ایک لمحے میں اس پر. تم نے مجھے کیوں ڈال کرنا چاہتے ہیں یہ لوپ سے باہر؟ یہ ہے. بالکل ٹھیک. تو، کسی حد تک counterintuitive، تاہم، آپ کے وزٹرز کا مختصر ہیں. تمہارے اندر (ن) کا اعلان کرتے ہیں تو وہاں کیا بلاک کی - خاص طور پر اندر کے ان گھوبگھرالی منحنی خطوط وحدانی - کہ متغیر ن کیا ہے ایک دائرہ کار کہا جاتا ہے - میں اپنے گول نظام اسنبندت کورس - لیکن ہے کہ گنجائش ہے ان گھوبگھرالی منحنی خطوط وحدانی تک محدود. دوسرے الفاظ میں، عام طور پر آپ کا اعلان تو کا ایک سیٹ کے اندر ایک متغیر گھوبگھرالی منحنی خطوط وحدانی، کہ متغیر صرف موجود ہے ان گھوبگھرالی منحنی خطوط وحدانی کے اندر. تو صرف اس منطق کی طرف سے، اگرچہ میں لائن میں نو (ن) کا اعلان کر دیا ہے، یہ بنیادی طور پر، گنجائش سے غائب ،، تو بات کرنے میموری سے غائب وقت کی طرف سے لائن میں 11 مارا. لائن 11، بدقسمتی سے، کیونکہ ان گھوبگھرالی منحنی خطوط وحدانی کے باہر. تو میں نے بدقسمتی کی طرف سے اس کو ٹھیک نہیں کر سکتے ہیں میں نے پہلے اس نے کیا کیا واپس جانے. آپ سب سے پہلے میں یہ کر سکتا ہے. لیکن اب تم کیا نہیں ہیں cyclically کر رہے ہو؟ آپ کو واضح طور پر نہیں مل رہے ہیں cyclically INT. تو ہم GetInt () چھوڑ دیں، اور ہم کر سکتے ہیں اندر GetInt () چھوڑ دینا چاہئے کہ ہم چاہتے کیا ہے لوپ کیونکہ بار بار کے لئے صارف کو پریشان. لیکن اس کے جانے کے لئے کافی ہے اپ لائن،، چھ کا کہنا ہے کہ. INT (ن)، نیم وقفہ. ابھی تک یہ ایک قیمت نہیں دیتے کیونکہ آپ نے ابھی ابھی کی ضرورت نہیں ہے. لیکن اب یہاں نیچے، نوٹس - اس ایک بہت ہی آسان غلطی ہوگی. میں نے اپنے گزشتہ شیڈو نہیں کرنا چاہتا (ن) کا اعلان. میں (ن) استعمال کرنا چاہتے ہیں اصل میں موجود ہے. اور اس طرح اب لائن 10 میں، میں ایک قدر (ن) تفویض. لیکن لائن چھ میں، میں (ن) کا اعلان. اور اس طرح میں کر سکتا ہوں یا میں نہیں کر سکتا اب لائن 12 میں اس کا استعمال؟ میں کر سکتا ہوں کیونکہ جس کے درمیان گھوبگھرالی منحنی خطوط وحدانی اب اعلان ن ہے؟ یہاں پانچ لائن پر ایک. یہاں لائن 14 ایک. اب میں باہر زوم اگر ایسا ہے تو، جاؤ، اس فائل کو بچانے کے میں واپس اور، مثبت بنانے کے لئے اسے چلاتے ہیں اس وقت مرتب کیا. تو یہ پہلے سے ہی پیش رفت کی ہے. سلیش. . / مثبت، درج کریں. میں نے تم مجھے دے کہ مطالبہ ایک مثبت عدد صحیح. 1 منفی. 2 منفی. 3 منفی. زیرو. ایک. اور ایک کے لئے شکریہ ہے اب چھپی ہے. مجھے، کچھ اور کوشش کرنے دو تجسس سے باہر. میں ان پٹ ایک عدد صحیح کرنے کے لئے کہا جا رہا ہے. لیکن میں نے اس کی بجائے بھیڑ میں کس قسم کی تو کیا ہوگا؟ تو اب تم ایک مختلف فوری طور پر دیکھ - دوبارہ کوشش کریں. لیکن کہیں اپنے کوڈ میں میں دوبارہ کوشش لکھنا تھا. تو، جہاں، شاید، اس دوبارہ کوشش ہے سے آنے والے فوری طور پر، آپ کو کہیں گے؟ جی ہاں، GetInt () سے ہی. تو CS50 کے عملے کرتا ہے چیزوں میں سے ایک آپ کے لئے، کم از کم ان میں سے پہلے چند میں ہفتوں، ہم کچھ رقم لکھا ہے ہے یقینی بنانے کے لئے جانچ پڑتال کی خرابی کے کہ اگر آپ GetInt () کہتے ہیں، آپ کو کم سے کم کرے گا صارف کی جانب سے ایک INT واپس جاؤ. آپ کو ایک سٹرنگ نہیں ملے گا. آپ کو ایک چار نہیں ملے گا. آپ کو کچھ نہیں ملے گا اس کے علاوہ مکمل طور پر. آپ کو ایک INT مل جائے گا. اب، یہ مثبت نہیں ہو سکتا ہے. یہ منفی نہیں ہو سکتا ہے. ہم نے اس کے ارد گرد کی کوئی ضمانت دیتا ہے بنا. لیکن ہم، صارف دوبارہ کوشش کرنے کے لئے پریشان کرے گا ، دوبارہ کوشش کریں کہ وہ جب تک دوبارہ کوشش کریں یا پھر وہ اصل میں تعاون. اسی طرح، میں 1.23 کرتے ہیں تو، کہ ایک INT نہیں ہے. لیکن میں 50، کا کہنا ہے کہ، میں ٹائپ کرتے ہیں تو، کہ مجھے چاہتا تھا کہ ایک کی قیمت فراہم کرتا ہے. ٹھیک ہے. اتنا برا بھی نہیں. ہم صرف نے کیا کیا ہے پر کوئی سوال؟ اہم takeaway، واضح ہو، نہیں کیا جا رہا ہے ہم نے دیکھا جو اتنا لوپ، اس سے پہلے کہ ہم واقعی نہیں ہے اگرچہ اس کا استعمال کیا، لیکن گنجائش کا مسئلہ، جہاں متغیر صرف کیا جا سکتا ہے کیا جا سکتا ہے کچھ مخصوص دائرہ کار کے اندر اندر. ٹھیک ہے، مجھے تجویز سے خطاب کرتے ہیں آپ کو ایک کی ہے کہ، پہلے بنایا عالمی متغیر. ایک ایک طرف کے طور پر، یہ ہے کہ ایک اور باہر کر دیتا ہے اس مسئلہ کا حل، لیکن عام طور پر ایک غلط حل یا ایک غیر تسلی بخش ڈیزائن کیا حل ہے کیا ہے کے طور پر آپ متغیر کا اعلان ایک عالمی متغیر ملاقات کی. اب میں اپنی تعریف کی خلاف ورزی کر رہا ہوں گنجائش کے ہیں کیونکہ بہت سے اوپر دیئے گئے کوئی گھوبگھرالی منحنی خطوط وحدانی اور ایک فائل میں سے بہت نیچے. لیکن اس کا مطلب کہ، اب لائن چار میں ہے (ن) کے ایک عالمی متغیر ہے. نام کا مطلب کے طور پر اور یہ ہے ہر جگہ صرف قابل رسائی. اسکریچ اصل میں یہ ہے. آپ کو ایک متغیر کا استعمال کیا ہے، تو آپ یاد کر سکتے ہیں تم اس کے لئے ہے تو منتخب کرنے کے لئے تھا اس پریت یا تمام sprites کے لئے. ٹھیک ہے، تمام sprites صرف واضح ہے عالمی کہہ کے راستے. جی ہاں؟ آہ، سچ میں بہت اچھا سوال ہے. تو بہت پہلے ورژن میں ہے کہ یاد میرا کوڈ کے، جب میں نے غلط طریقے سے لائن نو میں اعلان کیا اور وضاحت N - میں ایک متغیر کے طور پر اس کا اعلان کر دیا اور میں اس کے ساتھ ایک قیمت دی تفویض آپریٹر - یہ مجھے دو غلطیاں دی. ایک، (ن) کا استعمال نہیں کیا گیا تھا حقیقت یہ ہے کہ، اور دو، کہ میں لائن 11 یہ صرف کا اعلان نہیں کیا گیا تھا. میں نے نہیں کیا تو سب سے پہلے وقت کا پتہ. یہ سختی سے اعلان کرنے میں ایک غلطی نہیں ہے ایک متغیر اسے استعمال نہیں لیکن. ہم میں کیا ہے چیزوں کی لیکن ایک جان بوجھ کر CS50 آلات،، pedagogically، ہم cranked کر دیا ہے سنکلک کی توقعات بنانے کے لئے اس بات کا یقین آپ کو باتیں کر رہے ہیں کہ نہ صرف صحیح طریقے سے لیکن واقعی درست طریقے سے. کیونکہ آپ کو ایک متغیر کا اعلان کر رہے ہیں تو (ن) اور اس کا استعمال کرتے ہوئے، یا اس کا استعمال کرتے ہوئے کبھی نہیں کی طرح صحیح طریقے سے، پھر کیا وہاں کر رہی ہے؟ یہ واقعی کوئی مقصد کام کرتا ہے. اور اگر یہ وقت کے ساتھ بہت آسان ہے اگر آپ میں اپنے کمپیوٹر کی ترتیب نہیں ہے اس طرح، صرف ہے کہ کوڈ ہے یہاں چھوٹی سی باقیات، وہاں باقیات. اور پھر ماہ بعد آپ کو واپس دیکھو اور آپ کی طرح ہو، کیوں کی اس لائن ہے وہاں کوڈ؟ اور کوئی اچھی وجہ موجود ہے، تو یہ آپ یا آپ کے ساتھیوں کو فائدہ نہیں ہوتا راستے پر ہے پھر اس پر ٹھوکر. ایک طرف، جہاں ہے اس سے آ رہے ہو؟ ٹھیک ہے، یاد ہے کہ ہم مرتب ہر بار پروگرام، یہ سب کے سب ہے پرنٹ کیا جا رہا ہے. تو ہم نے اس کے پاس واپس آ جائیں گے. لیکن پھر، بنائیں کہ ایک افادیت ہے کی طرف سے تالیف کے عمل automates اصل سنکلک چل رہا ہے بجنا ملاقات کی. یہ چیز ہے، ہم آخر میں نظر آئے گا، ہے ایک خصوصی کے ساتھ بگ کے ساتھ کیا کرنا پروگرام debugger ملاقات کی. اس کی اصلاح کے ساتھ کیا کرنا ہے کوڈ - مزید مستقبل میں اس پر. ایسٹیڈی = c99 - یہ صرف 1999 ورژن استعمال کا مطلب ہے کہ سی سی سے بھی زیادہ وقت کے ارد گرد رہا ہے لیکن وہ کچھ اچھا بنا دیا ہے کہ، تبدیلیوں کے سال پہلے 10 پلس. اور یہاں متعلقہ والے ہے. ہم نے کچھ بنانے کے لئے کہہ رہے ہیں کہ پہلے ایک انتباہ ہوتا طالب علم کی روک تھام میں ایک خامی تالیف سے. اور دیوار کا مطلب ہے ایک کے لئے ایسا چیزوں کے پورے گچرچھی، نہیں صرف متغیر سے متعلق. اور پھر مجھ سے سکرال دو اس لائن کے آخر میں. اور یہ، بھی، ہم آخر میں کروں گا کرنے کے لئے واپس آئے. یہ واضح طور پر کا نام ہے میں نے تالیف رہا ہوں فائل. اس فائل کے نام سے یاد کرتے ہیں میں نام کے طور پر لکھنا رہا ہوں میری runnable پروگرام کے. یہ lcs50 صرف CS50 کا استعمال کرتے ہیں اس کا مطلب لائبریری، اور کسی بھی zeros اور لوگ ہیں کہ عملے نے لکھا اور اسے قبل مرتب کی اس سال، ضم میرے پروگرام میں ان. اور کسی کو بھی، ایل ایم کیا ہے؟ یہ ہے جو ریاضی لائبریری، ہے تم بس وہاں بھی اگر کسی بھی ریاضی نہیں کر رہے. یہ صرف خود کار طریقے سے فراہم کی ہے ہمیں بنانے کی طرف سے. ٹھیک ہے، مجھے ایک دوسری مثال کے طور پر کرتے ہیں یہاں ایک نئی فائل کھولنے کی طرف سے. اور مجھ string.c کے طور پر یہ ایک محفوظ کرنے دیں. یہ باہر کر دیتا ہے کہ اگر ہم اعداد و شمار کے بارے میں بات کے طور پر اقسام کی آج اس سے بھی زیادہ ہے ہڈ کے نیچے چل رہی ہم نے ابھی تک دیکھا ہے کے مقابلے میں. تو مجھے فوری طور پر ایک فوری پروگرام کرتے ہیں. stdio.h شامل کریں. اور میں اس کو بچانے گے. اور تمہیں پتہ ہے، مجھے نہ دو وہی غلطی بار بار. cs50.h. شامل کریں اور اب مجھے آگے جانے دو اور INT اہم (صفر) ہے. اور اب میں صرف ایک پروگرام کرنا چاہتا ہوں یہ کرتا ہے - ایک تار کا اعلان ے بلایا اور ایک تار ملے صارف سے. اور مجھے تھوڑا سا کرتے ہیں یہاں دی گئی ہدایات - تو - مجھے ایک سٹرنگ دے براہ مہربانی صارف کیا کرنا جانتا ہے. اور پھر یہاں نیچے یہ ذیل میں، میں مندرجہ ذیل کرنا چاہتے ہیں - INT کے لئے میں صفر ہو جاتا ہے. ایک بار پھر، کمپیوٹر سائنسدانوں عام طور پر صفر پر گنتی شروع، لیکن ہم کر سکتے تھے ہم واقعی چاہتے تھے کہ اگر ایک بناتے ہیں. اب میں کیا کرنے جا رہا ہوں میں کم ہے ے کے سٹرنگ لمبائی سے. تو strlen - S-T-R-L-E-N - یہ آسان ہے کیونکہ پھر، یہ جامع ہے یہ ہے، اگرچہ ٹائپ کرنے کے لئے ایک تھوڑا سا خفیہ. اسی وجہ سے ہم استعمال نہیں ہے ایک تقریب ہے لیکن اس سے پہلے کہ لفظی کرتا ہے - مجھے کی نمائندگی کرتا ہے کہ ایک بڑی تعداد واپس سٹرنگ کی لمبائی صارف ٹائپ ہے. وہ خوش میں ٹائپ، تو اسے واپس کردے گا، پانچ پانچ ہے کیونکہ ہیلو کے حروف. اس کے بعد، میں سے ہر ایک iteration پر اس لوپ، میں پلس پلس. تو ایک بار پھر، ایک معیاری یہاں تک کہ اگر تعمیر تم بالکل بھی آرام دہ اور پرسکون نہیں ہو یا ابھی اس سے واقف. لیکن اب اس کے لوپ میں سے ہر ایک iteration پر، میں کرنے والا ہوں کیا محسوس. میں آگے بڑھو اور پرنٹ کرنے کے لئے چاہتے ہیں ایک ہی کردار سے باہر - ایک نئی لائن پر تو٪ ج الٹا سلیش ن. اور پھر، تم میں کرنا چاہتا ہوں پتہ ہے کیا؟ لفظ ہے جو کچھ بھی اس صارف کی اقسام میں، ہیلو طرح، میں پرنٹ کرنے کے لئے چاہتے ہیں ایچ ای ایل ایل اے، فی سطر ایک کردار. دوسرے الفاظ میں، میں میں حاصل کرنا چاہتے ہیں ایک تار میں انفرادی حروف، اب تک صرف ایک تار ہے جس کے تحت اپ حروف کی ایک ہی تسلسل رہا. میں S، بریکٹ کر سکتے ہیں باہر اور یہ دیتا ہے میں نے بند بریکٹ، بند قوسین، نیم وقفہ. اور میں ایک بات اور کیا کرنا ہے. یہ string.h نامی ایک فائل میں ہے کہ strlen کا اعلان کر دیا ہے. میں نے اس تقریب میں استعمال کرنا چاہتے ہیں تو اگر میں، سنکلک بتانے کی ضرورت اسے استعمال کرنے کی توقع ہے. اب مجھے آگے بڑھو اور بنا دو پروگرام سٹرنگ سے ملاقات کی. ڈاٹ، سلیش، سٹرنگ. مجھے ایک تار دے دو. میں آگے بڑھیں اور اسے ٹائپ کریں گے. خوش آمدید، تمام بڑے حروف میں درج کریں. اور اب میں اس کی طباعت کی ہے توجہ ایک کردار دوسرے کے بعد. تو یہاں نئے تفصیل یہ ہے کہ ایک تار، دن کے آخر میں، ہو سکتا ہے اس فرد کی راہ کی طرف سے حاصل کیا مربع متعارف کرانے کی طرف سے حروف بریکٹ سنکیتن. اور اس ایک تار کے نیچے کی وجہ سے ہڈ یقینا کی ایک ہی تسلسل ہے حروف. لیکن کیا ان کے بارے میں صاف ہے آپ کے کمپیوٹر کی RAM میں - یہ ہے جو کچھ بھی میک، پی سی، - وہ ہیں لفظی واپس کرنے کے لئے واپس کرنے کے لئے - ایچ ای ایل ایل اے - انفرادی، ملحقہ میں یاد میں بائٹس. آپ آٹھویں ایسے میں حاصل کرنا چاہتے ہیں تو اگر بائٹ، جو اس لوپ میں ہو گا بریکٹ صفر، بریکٹ ایک بریکٹ دو، بریکٹ، تین تین، چار بریکٹ - کہ صفر پانچ تک حساب سے ترتیب ہے - کہ ایچ ای ایل ایل اے سے باہر پرنٹ گا اپنی ہی سطر میں. اب، ایک جھلکی کے طور پر، کیا آپ مجھے دکھا دو چیزوں کی قسم آپ کو آخر میں ہوں گے کم از کم، سمجھنے کے قابل کچھ قریبی دیکھ کے ساتھ. ایک کے لئے، ہم آج کی میں کیا شامل مثال کے طور پر، آپ چاہتے ہیں، تو اصل میں ہے بہت پہلے jailbreaks میں سے ایک آئی فون کے لئے. Jailbreaking فون کریکنگ کا مطلب لہذا آپ کو اصل میں ایک پر استعمال کر سکتے ہیں مختلف کیریئر یا انسٹال آپ کے اپنے سافٹ ویئر ہے. اور تم اس کے مکمل طور پر لگتا ہے محسوس کریں گے خفیہ، سب سے زیادہ امکان. لیکن یہ دیکھو. بظاہر آئی فون کے ساتھ ٹوٹ گیا تھا لوپ کے لئے ایک، ایک تو حالت، ایک باقی شرط کے افعال میں سے ایک گروپ ہم نے دیکھا نہیں ہے. اور پھر، آپ کو نہیں شاید پہلی نظر یہ کام کر رہا ہے کہ کس طرح سمجھتے ہیں. لیکن ہم اس قسم کی لے کہ سب کچھ ہماری جدید زندگی میں حاصل کی جاچکی کے لئے اصل میں کچھ لوگوں کے لئے بھی کم کرنے کے لئے کرتا ہے ان بنیادی اصولوں سے ہم رہا ہوں دیکھ. مجھ سے آگے بڑھو اور ایک کھول دیں دوسرے پروگرام، holloway.c. ایسا بھی کچھ ہے آپ سچ میں پتہ نہیں کرنا چاہئے. یہاں تک کہ عملے میں سے کوئی بھی یا میں کر سکتا ہوں شاید دیکھ کر یہ پتہ یہ کسی کی کوڈ یہ تھا کیونکہ وہ کیا کرنے کے لئے پیش کیا گیا تھا تاریخی اعتبار سے ایک obfuscated سی کے طور پر جانا آپ کو ایک پروگرام لکھنے جہاں مقابلہ، compiles اور چلاتی ہے لیکن لات ہے خفیہ انسانی کوئی سمجھ سکتا جب تک ایسا کرنے جا رہا ہے وہ اصل میں یہ چلائیں. اگر آپ اس پر نظر ڈالیں تو بے شک، اگر کوڈ کو، میں نے ایک سوئچ دیکھتے ہیں. میں اہم دیکھتے ہیں. میں ان مربع بریکٹ اشارہ دیکھنا ایک سرنی کسی قسم کا. کسی کو لگتا ہے کرنا چاہتے ہیں کیا کرتا ہے اصل میں اس پروگرام میں Holloway چلاتے ہیں تو کرتا ہے؟ جی ہاں. ٹھیک ہے. اچھا کیا. تو صرف عملے اور میں سمجھ نہیں سکتا ان چیزوں کو کرتے ہیں کیا. اور اب آخر میں، مجھ سے آگے جانے اور ایک دوسرے پروگرام کو کھولنے. یہ ایک - ایک بار پھر، ہم منبع کوڈ بنا دیں گے آن لائن دستیاب - یہ صرف ایک ہے کی طرح خوبصورت کو دیکھنے کے لئے. انہوں نے تمام مارا ہے خلائی بار بہت تھوڑا سا. لیکن یہ اصلی کوڈ ہے. تم خوبصورت، اگر ہے لگتا ہے کہ اگر ایسا ہے تو ہم اصل میں، فوری طور پر اس کو چلانے کے آخر میں آپ کو ہم کس طرح نظر آئے گا اس طرح کی باتیں کرتے ہیں ہو سکتا ہے. تو ہم نے اس بات پر تمہیں چھوڑ دونگا اور بدھ کے روز آپ کو دیکھ کر. [موسیقی بجانے] اسپیکر 2: اگلے CS50 میں TFs ایک بغاوت مرحلہ. اسپیکر 3: وہ وہاں ہے. اسے پکڑو! [موسیقی بجانے]