JASON HIRSCHHORN: خوش آمدید A5 کرنے کے لئے، سب. ہم، ہم سے آگے ایک دلچسپ ہفتے ہے بہت سے نئے ہیں زیادہ تر کی وجہ سے اس کمرے میں کا سامنا ہے. یہ بہت اچھا ہے. آپ کی ایک بہت حادثے کی طرف سے یہاں ہیں، جس میں بھی بہتر ہے. تو امید ہے کہ آپ ہمارے ساتھ رہیں گے. اس ہفتے ہم نے خرچ کرنے کے لئے جا رہے ہیں سیکشن کے بلک کوئز کے لئے تیاری. ہمارے ایجنڈے کے مطابق تو، ہم بات کرنے جا رہے ہیں کلاس کے لئے وسائل کے بارے میں تھوڑا سا، لیکن یہ بھی کوئز کے لئے، اور پھر، دوبارہ، کلاس سے بات چیت کا بڑا حصہ خرچ سوالات کے بارے میں. ہم جواب دینے کے کیا کر رہے ہیں ایک بار جب آپ سوالات، یا اگر آپ کے سوالات قدرتی طور پر میں کچھ کوڈنگ ہمیں قیادت midterms سے نمونے مسائل ہیں، ہم سیکشن میں لائیو کوڈ گے کہ ماضی ایک دوسرے کے ساتھ بھی کچھ دیگر لانے کہ احاطہ کرنے کے لئے اچھی موضوعات. تو سب سے پہلے، ہم نے کے لئے کے ذریعے چلا گیا ہے کے طور پر آپ کو یاد دلانے کے لئے ہفتے کے گزشتہ دو لوگ، وسائل کی ایک ٹن کے ہیں اس کورس کے لئے دستیاب. ان میں سے کئی ناقابل یقین حد تک مددگار ثابت ہو گا آپ کو آپ جاری رکھیں ، کوئز 0 کے لئے مطالعہ کی وجہ سے یہ منگل کی دوپہر ہے. تو آپ سب کیا گیا ہے تھوڑا سا کے لئے تعلیم حاصل. لیکچر نوٹوں اور ذریعہ ہیں کوڈ ہے کہ آپ کو کرنا چاہئے یقینی طور پر چیک کرنے کے لیے. شارٹس دیکھو. study.cs50.net چیک کریں. اور پھر، ایک بڑی تعداد، ذیل میں درج دیگر وسائل کی. ایک بار پھر، کوئز 0 کل ہے 1 بجے. آپ نے پہلے ہی ایسا نہیں ہے تو، چیک پر کے بارے میں کوئز 0 دستاویز باہر اعداد و شمار کورس ہوم پیج آپ کوئز لے جا رہے ہیں جہاں. کوئز 1:10 پر شروع ہوتا ہے اور 70 منٹ کے بعد ختم ہو جاتی ہے. آپ کو 1:10 کے بعد ظاہر تو، تم ہو کہ بہت سے کم منٹ حاصل کرنے کے لئے جا 70 کوئز کے مقابلے میں. تو اگر آپ وقت پر وہاں ہو اس بات کا یقین. آپ کو ایک توسیع کے طالب علم ہیں یا ہے تو کسی دوسرے کی جانچ کے تحفظات، اس 1 بجے کل میں نہیں ہو سکتا. لیکن پھر، کے بارے میں کوئز 0 چیک یقین ہے کہ آپ جب جانتے ہیں بنانے کے لئے کی تشہیر آپ کوئز لے جا رہے ہیں. میں یہاں 75 منٹ لکھا. مجھے لگتا ہے کہ 70، صحیح نہیں ہے. یہ ایک ہفتے 0 سے تمام مواد کا احاطہ کرتا ہے بدھ کو گزشتہ ہفتے کی تقریر. اور پھر، اس کوئز کے لئے، کہ فی دستاویز، آپ کو ایک دو رخا ہو جاؤ اور 8 آپ کو ملتا ہے کہ کاغذ کے 11 شیٹ کی طرف سے 1/2 کوئز کے دوران نوٹ کے طور پر استعمال کرنے کے لئے. بہت سے لوگ، سب سے زیادہ لوگوں، ہو تو نہیں پتہ چلا ہے کہ سب سے مفید طریقہ کوئز کے لئے مطالعہ کرنے کے لئے ہے ایک مطالعہ شیٹ، ایک بنانے کے ان کے اپنے میں سے ایک sider،. گزشتہ والوں میں نظر آتے ہیں آپ ماضی والوں کو دیکھا ہے. دیکھنے کے دوست تک پہنچنے کیا وہ ان پر ڈال رہے ہیں. لیکن ہاتھ کے نیچے، آپ کر سکتے ہیں سب سے بہتر طریقہ مطالعہ کے سب کچھ کے ذریعے جانا ہے اور کیا یا چاہئے whittle اسے نیچے کے اس شیٹ پر تعلق نہیں کاغذ، کہ صرف ایک بہت ہے کیونکہ آپ کو یقین بنانے کے لئے مفید طریقہ آپ کو سب کچھ کے ذریعے جا رہے ہیں اور کر رہے ہیں اس کے ساتھ کچھ واقف ہے. زیادہ تر لوگوں کو، ہم، تلاش، اگرچہ وہ کاغذ کا شیٹ حق بیٹھے ہیں گئے تمام سوالات پر ان کے لئے اگلا، تبدیل نہیں کرتے اس کے لئے، ایک بار پھر، کہ بہت، کیونکہ کے بارے میں معلومات کے ذریعے جا کے عمل انہیں یہ جاننے میں مدد ملی ہے. کسی کو کوئی سوال ہے کوئز 0 کے بارے میں؟ سب ہے - میں نے ہاتھ کے ایک شو کرنے کے لئے نہیں جا رہا ہوں. کوئی بات نہیں. جنہوں نے مجھے کہنے کے لئے جا رہا تھا مطالعہ شروع کر دیا. لیکن میں آپ کو بنانے کے لئے نہیں کرنا چاہتا سب آپ کے ہاتھوں میں اضافہ نہیں. میں نے کہا اتنی پسند - جی ہاں، AVI، آگے بڑھو. AVI: کیا ایک مفید بات ہو گی ایک پیجر پر ڈال کرنے کے لئے؟ طالب علم: یہ آپ پر منحصر ہے. JASON HIRSCHHORN: آپ حاصل اپنے فیصلے کا استعمال کرنے کی. ایک پیجر پر ڈال مفید چیزیں، تم بڑے اے کے بارے میں الجھن رہے ہیں تلاش کی مختلف اقسام کی رن ٹائم اور قسم، ایک میں ہے کہ ڈال ہاتھ بانکا چارٹ. اس طرح، تم پر کہا کہ رہے ہیں کوئز، آپ کوشش کریں اور اعداد و شمار کی ضرورت نہیں ہے اسے باہر یا رن ٹائم کے ذریعے کی وجہ سے. تم صرف اس کو کاپی کر سکتے ہیں. آپ quizzes کی ماضی کی ایک بہت پر نظر ڈالیں تو بار، وقت سوال چل رہا ہے. تو یہ ایک اچھی کی ایک مثال ہو گی آپ ایک پیجر پر ڈال بات. تم ہو، پہننے کے لئے دوسرے اچھی چیزیں اعلان کے لئے کس طرح کے بارے میں الجھن میں تقریب یا کیا مختلف حصوں کی تقریب اعلان لکھنا، ہیں کہ وہاں پر، ایک عام ورژن اور پھر ہو سکتا ہے کہ ایک مثال. آپ کو اشارہ کے بارے میں الجھن میں ہیں، اشارہ کام ہے کہ کس طرح ایک تصویر شاید واقعی مددگار. آپ تکرار، ایک کے بارے میں الجھن ہو وہاں پر پنراورتی تقریب کے نمونے بھی واقعی مددگار ثابت ہو سکتا ہے. کہ آپ کو کچھ خیالات دے ہے؟ AVI: آپ کو سمجھنے کی ضرورت کی طرح پورے مرتب عمل، کس طرح کام کرتا ہے؟ JASON HIRSCHHORN: سب کچھ کہ احاطہ کیا گیا ہے کر سکتے ہیں کوئز پر نظر. سوالات - لیکن پھر، کچھ چیزیں ہو جائے گا دوسروں کے مقابلے میں بھاری بارت. کچھ چیزیں پھر آئے ہیں اور پھر کلاس میں، میں لیکچر، اور سیکشن. دیگر چیزیں نہیں ہیں کہ اکثر آئے. ہم # شامل ہیں اور کے بارے میں بہت بات کی ہے -L کچھ اور کیا ان لوگوں میں مطلب تالیف کے عمل. ہم، چپٹنا، GDB کے بارے میں بہت بات کی ہے ہم استعمال کرتے ہیں کہ ان لوگوں کو مختلف جھنڈوں جب ہم کچھ مرتب، اور کیا make15، مثال کے طور پر، واقعی کا مطلب ہے اور واقعی کرتا ہے. ہم کے بارے میں زیادہ بات نہیں کی ہے میں ہر ایک قدم تالیف کے عمل. ہم اب بھی اس کے بارے میں بات کی ہے. تو یہ اب بھی ہے کہ آپ کو کچھ ہے سے واقف ہونا چاہئے. لیکن پھر، ہم نہیں کر رہے ہیں - کلاس میں زیادہ کثرت سے آئے کہ چیزوں مزید آنے کے امکانات زیادہ ہوتے ہیں اکثر اور زیادہ بھاری ہونا گئے تمام سوالات پر بارت. ڈاؤن لوڈ، اتارنا. کوئز 0 کے بارے میں کوئی سوال؟ ٹھیک ہے، تو میں نے کی فہرست میں ڈال دیا بورڈ پر موضوعات. میں نصاب کے ذریعے چلا گیا. میں سے جائزہ لینے کے سیکشن کے ذریعے چلا گیا آنے کے لئے گزشتہ رات اور ان سلائیڈوں موضوعات کی ایک غیر جامع فہرست کے ساتھ ہم CS50 میں اب تک کا احاطہ کرتا ہے کہ اور چیزوں کو کہ شاید کوئز پر نظر آتے ہیں. تو میں ذریعے جانے کے لئے نہیں جا رہا ہوں ان میں سے ہر ایک. کہ بہت زیادہ لے جائے گا اب ہم سے وقت. لیکن مجھے امید ہے کہ سیر کرنے کے لئے یہاں اس کو ڈال دیا چیزوں کے طور پر آپ کی میموری کہ مئی یا آپ کے ساتھ کے طور پر واقف نہیں ہو سکتا. اور میں نے بلک کے خرچ کرنے کے لئے پسند کروں گا کے بارے میں اپنے سوالات کے جواب دینے کے حصے ان موضوعات کے، موضوعات کہ یہاں شامل نہیں ہیں. ہم چھدم کوڈ لکھ سکتے ہیں. ہم اصلی کوڈ لکھ سکتے ہیں اس بات کا یقین کرنے کے لئے آپ ہے - میں نے آپ کے سوال کا جواب دینے اور مدد کر سکتے ہیں سب بنیادی طور پر سمجھنے کی ایک ان موضوعات کے بہت سے آپ کو محسوس ہو گا تو جا میں تیار اور آرام دہ اور پرسکون کوئز کل. تو ختم فہرست پڑھ. تم امید کے حصے میں آئے ہیں کچھ سوالات کے ساتھ کے طور پر اچھی طرح سے. جب آپ تیار ہو، اپنے ہاتھ اٹھانے اور ہم نے شروع کر دیا جائے گا. ذہن میں رکھیں، سوالات آپ کے پاس، کوئی بیوکوف سوالات ہیں. ہم نے بہت سنا ہے کہ. اور آپ کے پاس سوالات، میں چاہتا ہوں ، بہت سے دوسرے لوگوں دونوں شرط لگا سکتا ہوں یہاں بیٹھ کر دیکھ آن لائن کے ساتھ ساتھ ہے. تو آپ کو صرف لوگوں کی مدد کر سکتے ہیں سوالات پوچھ کر. مارکس. مارکس: اسٹیک کے درمیان ڈھیر، پہلے سے مختص نہیں ہے کے طور پر بیان ہے کہ میموری کی شرح اس اسٹیک کے لئے یا ڈھیر کے لئے ہے؟ یا کس طرح وہ کام، کرتا ہے؟ JASON HIRSCHHORN: بڑا سوال. میں نے تھوڑا سا ٹریس واپس جا رہا ہوں. سب ہے - یہاں براہ مہربانی ایماندار. میں بلند کرنے کے لئے تم سے پوچھ رہا ہوں آپ اپنے ساتھیوں کے سامنے ہاتھ. لیکن محسوس کرتے ہیں وہ لوگ ہیں جو اسٹیک اور ڈھیر کے ساتھ بے چینی اور اس پر جانے کے لئے چاہتے ہیں اور ان کا کیا مطلب؟ آپ کے ہاتھ تو بلند - ٹھیک ہے. آپ کا شکریہ. تو ہم نے اسٹیک پر جانے کے لئے جا رہے ہیں اور کر رہے ہیں ڈھیر واقعی بہت تیزی سے اور پھر آپ کے سوال کا جواب دینے میں منتقل. ہم کی نمائندگی کے لئے ایک باکس باہر اپنی طرف متوجہ تو اگر آپ کے کمپیوٹر پر میموری، کچھ کیا ہیں اس خانے میں جانا ہے؟ مین. ایک اہم تقریب. جہاں اہم ہے؟ طالب علم: [اشراوی]. JASON HIRSCHHORN: تو ہم کریں گے یہاں اہم ڈال دیا. اور کیا اس باکس میں جاتا ہے؟ طالب علم: آپ کو فون ہے کہ کام کرتا ہے. JASON HIRSCHHORN: افعال ہم کہتے ہیں کہ. اور جہاں وہ جانا ہے؟ طالب علم: اسٹیک میں. JASON HIRSCHHORN: وہ اسٹیک میں جانا. تو ہم اس کو فون کرنے جا رہے ہیں یہاں بات اسٹیک. اور سب سے اوپر، ہم ڈھیر ہے. تو میموری صرف اس طرح ایک باکس نہیں ہے. لیکن یہ اصل میں بہت اسی طرح ہے. اس پر خانوں کی ایک بہت ہو رہا ہے اور اس سے زیادہ، پر منحصر ہے کتنا بڑا آپ کمپیوٹر ہے یا آپ کے میموری کس طرح بڑی ہے. اقتباس-unquote جو "نیچے" میں اسٹیک ہے. اور ایک سے زیادہ چیزیں ہیں کہ اسٹیک پر جانے. اور ان افعال پر منحصر آپ اپنے کوڈ میں ہے. آپ ہمیشہ میں ایک تقریب ہے آپ کوڈ اہم کہا جاتا ہے، تو ایک ہمیشہ وہاں ہے یہاں میں سیکشن اہم کے لئے وقف کتابیں رکھی. اسٹیک میں ان قسموں اسٹیک فریم کہا جاتا ہے. آپ کو ایک تقریب کہتے ہیں، اہم کا کہنا ہے کہ ایک بائنری تلاش تقریب بلاتا ہے، ہم نے اسٹیک پر ایک فریم ڈال دیا. مزید خاص طور پر، ہم جا رہے ہیں پر میموری کا ایک حصہ عطیہ ہماری بائنری تلاش کے مقامی سٹور کرنے کے لئے کمپیوٹر متغیر اور بائنری چلانے کے لئے تلاش کے کوڈ کے. تو ہم بائنری تلاش کو کال. میموری کے اس حصہ میں، ہم جا رہے ہیں اپنے مقامی متغیرات سٹور کرنے کے لئے. ہم اس پر printf کالز سٹور کرنے کے لئے جا رہے ہیں. جو بھی ہوتا ہے، اس تقریب ہے وہیں ذخیرہ کیا جا رہا. بائنری تلاش کو پھانسی کی جا رہی ہے. یہ پھانسی مکمل کرنے کے لئے کی جا رہی ہے. C میں لفظ کیا ہے کہ اجاگر ایک تقریب ہونا چاہئے کہ اس پر عملدرآمد کو مکمل؟ طالب علم: پر واپس جائیں. JASON HIRSCHHORN: واپس. تو آپ کی واپسی کا بیان جب بھی، تقریب ختم ہو جاتا ہے یہ ہے کہ مار دیتی ہے جب. تو بائنری تلاش اس کی واپسی مارا جائے گا. میموری کا یہ حصہ بنیادی طور پر جائے گا آزاد ہو. اور اہم واپس عملدرآمد کرنے کے لئے جائیں گے. ، کال جہاں بھی تھا تو اہم کو روکنے گا بائنری تلاش، کچھ واپس قیمت حاصل، اور ان پر عملدرآمد جاری ہے. یہ اسٹیک فریم چلا جائے گا. ہم ایک پنراورتی تقریب، کہتے ہیں جس میں خود پر بلاتا ہے ایک تقریب ہے اور اس سے زیادہ، ہم حاصل کر سکتے ہیں - ہم کا کہنا ہے کہ تکراری طور بائنری تلاش کیا. ہم، بائنری تلاش ایک ورژن ہو سکتا ہے بائنری تلاش دو، بائنری تلاش تین، بائنری تلاش چار، بائنری تلاش پانچ. اور پھر یہ آخری بائنری تلاش پانچ بنیاد کیس، اور اسٹیک مارا جائے گا فریم واپس جانے اور بند رکھیں گے ہم نے اہم واپس حاصل کرنے کے لئے جب تک. ہم تھوڑا سا میں تکرار پر جا سکتے ہیں. تم لیکن اگر یہ سب، کا کہنا ہے کہ ، ایک وقت میں ایک سے زیادہ کام بلا ایک سے زیادہ اسٹیک ہو جائے گا اسٹیک پر فریم. ڈھیر، دوسری طرف، اپ یہاں، کے افعال کے لئے نہیں ہے، مقامی متغیر کے لئے. یہ متحرک طور پر مختص کے لئے ہے متغیر. تو یہ ہو سکتا ہے کہ متغیر ہیں بنیادی یا یا تو initialized ہے کہ اہم کالز کام. کہیں بھی آپ کے کوڈ میں، وہ initialized ہے کیا جا سکتا ہے. اور ایک متحرک ابتدا مختص متغیر. ہم C میں کیا تقریب کا استعمال کرتے ہیں؟ طالب علم: MALLOC. JASON HIRSCHHORN: MALLOC. آپ malloc کال. آپ کو میموری کی جگہ حاصل. اور میموری کے اس کی جگہ ڈھیر پر ہے. اور میموری کے اس کی جگہ رہتا ہے آپ مفت وہاں فون تک. تو متحرک مختص متغیر میں ڈھیر آپ کے طور پر جب تک کے لئے موجود ہو جائے گا ان کے وجود کے لئے چاہتے ہیں، اور وہ نہیں کریں گے واضح طور پر آپ کو جب تک چلے جاؤ دور جانے کے لئے ان سے کہو. آپ کو ایک تقریب میں ان تشکیل دے سکتے ہیں. کہ تقریب کا اسٹیک فریم چلا جائے گا. لیکن اس کے متغیر اب بھی موجود ہو جائے گا ڈھیر میں اسے آزاد کر دیا ہے جب تک، ممکنہ طور پر کہا جاتا ہے کہ تقریب کی طرف سے بائنری تلاش یا جو کچھ بھی. لہذا ان ڈھیر متغیر وہاں رہنا جب تک کے طور پر آپ چاہتے ہیں کے لئے ان کے وہاں رہنے کے لئے. اور وہ یہاں ڈال دیا ہو. اور پھر اگلے ایک وہاں ڈال دیا جاتا ہے. وہ میں بھرا ہو رہی رکھنے کے، اور وہ آپ کو مفت فون تک وہاں رہنے کے. اور بنیادی طور پر، ڈھیر اور اسٹیک، ، مارکس کے سوال پر ہو رہی ہے ایک دوسرے کی طرف بڑھنے. وہ ایک دوسرے میں چلاتے ہیں اور اگر آپ نے میں تمام میموری کو استعمال کیا آپ کمپیوٹر، اور آپ کے پروگرام چھوڑ جائے گا آپ کو کسی بھی زیادہ میموری نہیں ہے کیونکہ استعمال کرنے کے لئے چھوڑ دیا. ان کے درمیان میں ہیں، ممکنہ طور پر دوسری چیزوں کے. لیکن اس کورس کے دائرہ کار، آپ کے لئے اس کے بارے میں فکر کرنے کی ضرورت نہیں ہے. تو اس کا جواب تھا آپ کے سوال. اس کے بارے میں فکر مت کرو. لیکن اس طویل جواب تھا. آپ کو جاننے کی ضرورت ہے ڈھیر اور اسٹیک کرے گا - ایک نیچے سے شروع ہوتی ہے. اسٹیک کرتا ہے. ڈھیر کو ہے. وہ ایک دوسرے کے قریب ہو جائے گا. وہ چھو تو، یہ ایک مسئلہ ہے. آپ کو میموری سے باہر بھاگ گیا. بلکہ، جاننے کے علاوہ جہاں وہ، کیا دونوں میں محفوظ کیا جاتا ہے کر رہے ہیں اسٹیک، اور ڈھیر. کرٹس. کرٹس: وہ ٹکرانے جب، کہ ایک اسٹیک اتپرواہ ہے؟ JASON HIRSCHHORN: وہ ٹکرانے جب، کہ ایک اسٹیک اتپرواہ نہیں ہے. اسٹیک اتپرواہ ایک مختلف علاقے میں ہے آپ کرنا چاہتے ہیں تو ہم پر جا سکتے ہیں. ٹھیک ہے، ہم تھوڑا سا میں واپس آ جائیں گے. طالب علم: کہا جاتا ہے لفظ کیا ہے وہ ایک دوسرے کو مارا جب، اسٹیک، اور ڈھیر؟ JASON HIRSCHHORN: اب، فکر نہ کرو. بس جانتے ہیں - میں اس سوال کا جواب دے گا کلاس کے بعد. وہ ایک دوسرے میں چلاتے ہیں، آپ باہر بھاگ گیا نہیں ہے میموری کی، کیونکہ وہاں کی جگہ. طالب علم: معذرت، میں ایک SEG غلطی کیا ہے؟ JASON HIRSCHHORN: ایک طبقہ غلطی کے لئے کہا جا سکتا ہے - SEG غلطی ہے کہا جاتا ہے کیوں یہ انحصار کرتا ہے. کبھی کبھی، آپ اسٹیک اتپرواہ، یہ کریں گے SEG غلطی کے طور پر غلطی کا کہنا ہے کہ. طالب علم: کیا محولہ لقب ضبطی کے بارے میں شہوت انگیز null متغیر؟ کہ ایک SEG غلطی ہے؟ JASON HIRSCHHORN: محولہ لقب ضبطی شہوت انگیز null پوائنٹر - ٹھیک ہے، تو آپ کو ہے کہ آپ کو ایک پوائنٹر ہے تو شہوت انگیز null برابر مقرر، اشارہ، یاد، سٹور میموری پتوں ان کی اقدار کے طور پر. اور شہوت انگیز null پوائنٹر بنیادی طور پر ہے 0 ذخیرہ کرنے، 0 ویں جو کہ متغیر میں حل. تو 0X، 0، 0، 0، 0، وغیرہ. نہیں ہے کہ یاد میں اس 0 ویں ایڈریس ہماری تصویر میں، کہ ہے کہیں، کہ محفوظ ہے کمپیوٹر کے لئے. ہم اسے چھو کرنے کی اجازت نہیں کر رہے ہیں. تو آپ کے پروگرام پر عمل ہے جب، اگر کچھ یاد کرنے کے لئے جانے کے لئے کوشش کر رہی ہے 0 ایڈریس، یہ جانتا ہے کہ کہ ایک خالی قدر ہے. یہ کچھ بھی نہیں ہونا چاہئے جانتا ہے. تو تم وہاں کچھ کرنے کی کوشش اور استعمال کرتے ہیں تو اور اس طرح وہاں کچھ علاج یا اس مقام پر جانے کی کوشش کر رہے، تم ہو ایک SEG غلطی یا ایک غلطی حاصل کرنے کے لئے جا رہا. کہ آپ کے سوال کا جواب ہے؟ اور اب ہم واپس چلے جائیں گے اتپرواہ کتابیں رکھی. تم لوگوں کو ہے کے طور پر اسٹیک میں چیزوں کو، سے پہلے دیکھا، میں - ایک قریب اپنی طرف متوجہ ایک اسٹیک فریم کی. سب دیکھتے ہیں کہ سکتے ہیں؟ تو ہم اپنے اسٹیک فریم ہے. ہم نے ایک مقامی طور پر میں ایک صف بچت کر رہے ہیں اس تقریب میں متغیر. تو ہمارے صف پانچ مقامات کا کہنا ہے کہ. ان کے تمام پانچ ذخیرہ کیا جائے گا کہ اسٹیک فریم میں. ہم اس سے آگے لکھنا شروع تو اس صف کی حد - تو ہم میں لکھنا شروع تو، کی ہے کہ 0 کا کہنا ہے کہ. پانچ اشاریہ جات ہیں ہمارے صف کے. ہم انڈیکس 5، میں لکھنا شروع جو اگر ہم ایک دیا جب ہم نے کی ضرورت نہیں ہے 5 سائز کے صف، ہم میں لکھنا شروع انڈیکس 6، 7، 8، 9، ہم ایک اسٹیک حاصل کر سکتے ہیں اتپرواہ غلطی. عام طور پر یہ نہیں ہے - آپ شاید مصیبت میں مل جائے گا آپ کو ایک کی طرف سے اگر. لیکن عام طور پر، آپ میں مل جائے گا آپ کو ایک بہت کی طرف سے تو سب سے زیادہ مصیبت اور آپ اب تک پر آپ لکھتے ہیں کہ جاؤ اس کی واپسی ایڈریس پر میں واقع ہے جس کی تقریب، اسٹیک فریم کے نیچے. حق، کیونکہ؟ - تم میں - معذرت. نہیں "صحیح ہے." اسٹیک فریم میں، آپ کے پاس آپ مقامی متغیر. اسٹیک کے بہت نیچے دیے گئے فریم واپسی ایڈریس ہے. اس تقریب کہاں ہے جب یہ ختم ہو جاتا ہے. اور تم اس کی واپسی ادلیکھت تو پتہ، تو یہ اسٹیک فریم جب، آپ اسٹیک کے ذریعے جا رہے ہیں جب فریم اور ہر سطر پر عمل، تم ہو اپنے نئے ایڈریس کو واپس کرنے کے لئے جانے کے لئے جا کہ بجائے اس کے کہ وہاں لکھا ہے اصل ایک. اور یہ کہ ہم نے دیکھا کہ کس طرح کچھ سیکورٹی کی خلاف ورزیوں کمپیوٹر کے ساتھ ہو سکتا ہے. تو جب اسٹیک اتپرواہ، مختصر میں، ہے آپ اسٹیک میں حصہ ادلیکھت آپ، مقامی استعمال کرنے کی توقع کر رہے ہیں متغیر آپ استعمال کرنا چاہیے، اور کر رہے ہیں خاص طور پر اگر آپ کے اوپر شروع جیسے اہم چیزیں ایڈریس واپس. آپ کو کوئی غلطی مل جائے گا اور یہ ہے جہاں. یا شاید بھی آپ کو شروع کر سکتے ہیں یہاں تک کہ میں لکھنے - بائنری تلاش تھی حق اہم اوپر. آپ، ایک بہت overwrote تو اہم میں لکھ سکتے تھے. لیکن عام طور پر، آپ سے پہلے ایک غلطی ملتی کمپیوٹر جانتا ہے تو، کیونکہ آپ کچھ کر رہے ہیں نہیں کرنا چاہئے. جی ہاں. طالب علم: کیا فرق ہے اسٹیک اتپرواہ کے درمیان اور ایک بفر اتپرواہ؟ JASON HIRSCHHORN: بفر اتپرواہ ایک سے زیادہ عام قسم کی ہے میں صرف بیان کیا ہے. طالب علم: تو ایک اسٹیک اتپرواہ ایک ہے ایک بفر اتپرواہ کی مثال. JASON HIRSCHHORN: بالکل. یہ ہم نے ایک کے طور پر سوچ سکتے ہیں ایک صف ہے بفر، اندر جانے کی چیزوں کے لئے ایک جگہ یہ ایک اسٹیک بفر اتپرواہ ہے. ہم ایک ڈھیر بفر اتپرواہ کر سکتے ہیں. جس میں وہاں اکثر ایک بفر، وہاں تھا تو ایک صف ڈھیر ہے، اور ہم ان حد overwrote، تو ہم کریں گے ایک ڈھیر بفر اتپرواہ ہے. اور اس کورس کے دائرہ کار سے باہر، وہ تھوڑا سا مختلف پتہ چلا رہے ہیں. سنکلک خصوصی ہے ہر ایک کا پتہ لگانے کے طریقوں. لیکن ایک بفر اتپرواہ ایک سے زیادہ عام ہے میں بیان کیا کی قسم، جس میں ایک اسٹیک بفر اتپرواہ تھا. کہ آپ کے سوال کا جواب ہے؟ میٹھی. کسی بھی دیگر سوالات متعلقہ تھے اسٹیک یا ڈھیر کرنے کے لئے؟ جی ہاں. طالب علم: میں نے آپ کو مفت ڈور ہے کہ وہ ڈھیر میں ہیں کیونکہ اور آپ میموری لیک نہیں کرنا چاہتا. لیکن آپ کو عالمی متغیر کو آزاد کرنے کی ضرورت ہے اور اس طرح کی چیزیں؟ یا وہ خود بخود آزاد کر رہے ہیں؟ JASON HIRSCHHORN: اچھا سوال ہے. تو cs50.h میں، ہم اس بات کی تخلیق کے لئے آپ کو ایک تار بلایا. ایک سٹرنگ واقعی کیا ہے؟ طالب علم: چار سٹار. JASON HIRSCHHORN: ایک چار ستارہ، ایک پوائنٹر ایک کردار کے لئے، ایک پوائنٹر حروف کی ایک سرنی. اس سٹرنگ ہے کیا ہے. تو ہم اس کو آزاد کرنے کی ضرورت ہے GetString کے، جو ہم ایک بہت استعمال کیا - سٹرنگ نام GetString برابر - وہ ہمارے لئے کچھ میموری mallocs ڈھیر اور اس کے بعد کے لئے ایک پوائنٹر واپس اس کے پہلے کردار سٹرنگ، ایک چار ستارہ. تو ظاہر طور پر، آپ کو نہیں ہے تو آپ ڈور میں سے کسی پر مفت تحریری تم اتنی دور کہا جاتا ہے، آپ کے پاس کچھ میموری لیک کیا گیا. یقینا ہم کے بارے میں بات نہیں کی ہے یہ تو کوئی نہیں میں ہو گیا ہے یہ کرنے کے لئے مصیبت. لیکن ہاں، آگے بڑھنے. آپ GetString کال کرتے ہیں، تم ہو ڈھیر پر کسی جگہ mallocing. اور تم اس پر بعد میں مفت کال نہیں ہے تو سٹرنگ، آپ کو ایک میموری لیک ہے. یہ آپ کے سوال کا جواب؟ جی ہاں طالب علم: تو ایسا کرنے کے لئے، ہم استعمال کرتے ہیں واپسی سے پہلے ڈاؤن لوڈ، اتارنا ہے نا؟ کی طرح، کے دائرہ کار کے اندر اندر، مجھے لگتا ہے کہ اگر ہم کے اندر اندر، int اہم، طرح، کا کہنا ہے کہ ان کے اندر ہے کہ کوڈ کے دائرہ کار گھوبگھرالی منحنی خطوط وحدانی، صحیح سے پہلے - آپ کو پتہ ہے جہاں آپ کو چاہوں عام طور پر واپس ڈال دیا. آپ اس سے پہلے ڈاؤن لوڈ، اتارنا ڈال دیا ہے؟ JASON HIRSCHHORN: تو آپ مفت کے ڈال کر سکتے ہیں آپ مفت کے ڈال کرنا چاہتے ہیں جہاں کہیں بھی. ان کو متحرک طور پر مختص کر رہے ہیں کیونکہ متغیر، وہ کر سکتے ہیں کیونکہ ایک خاص کے دائرہ کار سے باہر رہتے ہیں تقریب، آپ کو ایک میں malloc کہتے ہیں علیحدہ تقریب، مثال کے طور پر، GetString کے، آپ کو مرکزی میں مفت کال کر سکتے ہیں. تم نے اسے فون کرنے کی ضرورت نہیں ہے مخصوص تقریب میں malloc کا کہا جاتا ہے، جہاں. لیکن اگر آپ کو فون کرنے کی ضرورت ہے اہم واپسی سے پہلے. اور یہ واقعی انحصار کرتا ہے. یہ آپ کو اس malloced کیوں پر منحصر ہے پہلی جگہ میں جگہ. کچھ لوگوں کو فون کروں گا بہت تیزی سے آزاد. کچھ لوگوں تک مفت فون نہیں کرے گا ان کے پروگرام کے اختتام. اور وہ کے ذریعے جائیں گے اور مفت میں سب کچھ. یہ آپ malloc کہا جاتا ہے کیوں پر منحصر ہے. طالب علم: اور آپ کیا کہیں گے آپ استعمال GetString کا کہا جاتا ہے تو کیا ہوگا؟ تم کیا مفت کہونگا؟ JASON HIRSCHHORN: تو کے لئے نحو مفت بس ڈاؤن لوڈ، اتارنا، کھلی قوس، قریب ہے قوس، اور پوائنٹر نام. تو آپ سٹرنگ نام برابر لکھنا تو GetString کے، آپ یہاں میں نام ڈال دیا. اس پوائنٹر کا نام ہے. اور یہ کہ میموری آزاد کرنا جانتا ہے. طالب علم: یہ کہ میموری آزاد ہے، تو جب پوائنٹر اب بھی اس جگہ کی طرف اشارہ یاد میں؟ یا بھی خالی کر دیا پوائنٹر ہے یہ اشارہ ہے کہ ایڈریس. JASON HIRSCHHORN: ہم اس کی کوشش کرنی چاہئے. ہم اس کوڈ چاہئے. ہم جب واپس آئے ہیں کوڈنگ، اور کوڈ ہے کہ دو. اور آپ کو جواب معلوم کرنا چاہتے ہیں تو کہ، آپ کر سکتے ہیں بھی کوڈ ہے اس دوران میں. لیکن یہ ایک بڑا سوال ہے. طالب علم: یہ ممکن ہے بہت جلد ہی مفت ہے؟ تو آپ کو اب بھی آپ کے پروگرام کے لئے اس کی ضرورت ہے، اور آپ اس میموری کی جگہ کو آزاد کرا لیا؟ JASON HIRSCHHORN: جی ہاں. یہ ممکن ہے، تو آپ مفت میں کچھ اور اس کے بعد آپ اسے دوبارہ استعمال کرتے ہیں، آپ ایک غلطی میں چلانے کے. آپ کو آزاد کرا لیا لیکن کیونکہ کہ، تم پر ہے پھر کچھ اور بعد میں یہ کہا جاتا ہے. تو یہ ایک پروگرامر کی غلطی تھی. لیکن ہاں. آپ اس لکھ سکتے تھے. پر کوئی سوالات ہیں - جی ہاں. طالب علم: تو آپ کے لئے توقع کی جاتی ہے، تو صرف اس سے پہلے عام طور پر اسے آزاد پروگرام تو اس کا مطلب یہ ہے، ختم ہو جاتی ہے پروگرام ختم ہوتا ہے اور آپ کو یہ مفت نہیں ہے، کہ میموری اب بھی مختص ہے؟ JASON HIRSCHHORN: آپ کا پروگرام ختم ہوتا ہے تو اور آپ کو تو، کچھ آزاد کرنے کی بھول کہ میموری میں مختص کیا گیا تھا آپ کے پروگرام کی زندگی. آپ کے پروگرام، مکمل طور پر بند کر دیتا ہے جب کہ میموری نہیں جا رہا ہے وہاں ہمیشہ کے لئے رہنے کے لئے. کمپیوٹر جاننا کافی ہوشیار ہے اس پروگرام کو بند کر دیتا ہے، تو یہ میموری کا سب سے چھٹکارا حاصل کرنا چاہئے اس پروگرام کے ساتھ منسلک کیا گیا تھا. تاہم، آپ کو چلانے کے کر سکتے ہیں، اوزار ہیں پتہ لگانے کے لئے ایک پروگرام پر، تو جب پروگرام آپ کو بھول گیا، ختم کچھ میموری آزاد کرنے کے لئے. اور آپ کے اگلے مسئلہ کے لئے جہاں قائم آپ malloc استعمال کرتے ہوئے اور استعمال کریں گے اشارہ، آپ کو یہ چلانے کی جائے گی تو دیکھنے کے لئے آپ کے پروگرام کے پروگرام، جب اہم واپسی، آپ کو کچھ تھا unfreed رہ گئے تھے وہ چیزیں. تو وہ malloced رہنے کے لئے نہیں جا رہے ہیں ہمیشہ کے لیے آپ کے کمپیوٹر میں. یہ، بیکار ہو جائے گا کیونکہ بہت جلد، کمپیوٹر میموری سے باہر رہے گی. لیکن وہ آپ کے آخر تک چلاتے ہیں پروگرام اور وہ آزاد اور نہیں کر رہے ہیں آپ پروگرام اب بھی ایک مسئلہ ہے، راستے اس آلے کی مدد کرے گا کہ آپ کو ایڈریس. طالب علم: Valgrind ہے؟ JASON HIRSCHHORN: یہ ہے نامی Valgrind. اور تم ہو جائے گا - طالب علم: لیکن ہم جانتے ہیں کی ضرورت نہیں ہے کہ کوئز کے لئے، لیکن؟ میرا مطلب ہے، اس کے بارے میں بات کر رہا تھا لیکچر میں تھوڑا سا. JASON HIRSCHHORN: تو Valgrind اس ٹول کا نام ہے. یہ کیا کرتا ہے سب کچھ جاننے والا ہے کوئز کے لئے کافی. لیکن آپ پر ابھی تک یہ استعمال نہیں کیا ہے آپ ہم نے نہیں کیا ہے کیونکہ مسئلہ مقرر واضح طور پر نمٹا گیا ہے کہ مسئلہ سیٹ malloc کے ساتھ یا آپ malloc کا استعمال کرتے ہوئے. تو ابھی تک آپ Valgrind استعمال نہیں کیا ہے. لیکن اگر آپ کو جلد از جلد اسے استعمال کریں گے بجائے بعد. طالب علم: آپ کو دوبارہ کر سکتے ہیں کیا Valgrind ہے؟ JASON HIRSCHHORN: معاف کیجئے گا؟ طالب علم: آپ کو کیا دوبارہ کر سکتے ہیں Valgring کا مقصد ہے؟ JASON HIRSCHHORN: Valgrind نام ہے - GDB، آپ کو اپنے پروگرام ڈیبگ میں مدد ملتی ہے کی طرح Valgrind آپ اعداد و شمار کی مدد کرتا ہے اگر چیزوں کو آزاد نہیں کیا گیا ہے آپ کے پروگرام بند کر دیتا ہے جب. تو آپ کو آپ کے پروگرام پر چلانے گا. اور آپ کے پروگرام راستے، اور یہ کہیں گے آپ کے پروگرام malloc کے اس کے بہت سے ملاقات کی یہ بہت سے شراکت کے لئے وقت، اور آپ صرف یہ کئی بار ڈاؤن لوڈ، اتارنا ملاقات کی. اور اس طرح آپ ان بہت سے بائٹس چھوڑ دیا آزاد کیا جا رہا ہے کے بغیر. یا پھر یہ آپ کو سب کچھ آزاد ہے کہیں گے. اچھا کام. طالب علم: ٹھیک ہے. اور یہ Valgring کہا جاتا ہے؟ JASON HIRSCHHORN: V-A-L-G-R-میں ن D-. طالب علم: اشارہ کے بارے میں ایک سوال. تو آپ (ن) ستارہ کا کہنا ہے کہ ایکس کچھ برابر. یہ ہے کہ آپ میں ڈال رہے ہیں جو کچھ بھی، برابر وہاں، کیا اندر ڈال جا رہا ہے کیا ایکس اشارہ کر رہا ہے، یا ایکس کا پوائنٹر؟ JASON HIRSCHHORN: آپ کر سکتے ہیں سوال دوبارہ؟ آپ کو اس کا کہنا ہے کہ ہم اس کو اپنی طرف متوجہ کر سکتے ہیں؟ طالب علم: کوئز میں، اصل میں، آپ نے ہمیں بھیجا ایک، اس، چار کی طرح تھا سٹار حقیقت، CS50 پتھر کے برابر ہے؟ تو اس کا مطلب ہے کہ CS50 پتھر حقیقت کی طرف اشارہ ہے؟ JASON HIRSCHHORN: تو آپ بات کر رہے ہیں ایک تار میں ایک چار ستارہ کے بارے میں، کس طرح کہ کام کرتا ہے؟ جی ہاں. ٹھیک ہے. یہاں یہ اپنی طرف متوجہ. [ضمنی گفتگو] JASON HIRSCHHORN: تو اس متغیر پروپوزل کی گذارش چار اسٹار کی جا رہی ہے. ایک متغیر کتنا بڑا ہے پروپوزل کی گذارش چار اسٹار کی؟ کتنے بائٹس؟ طالب علموں: چار. JASON HIRSCHHORN: یہ چار بائٹس ہے. ایک متغیر کتنے حقوق ہے قسم int ستارہ کی؟ طالب علموں: چار. JASON HIRSCHHORN: چار بائٹس. یہ ایک پوائنٹر ہے، تو یہ ہمیشہ سے ہے چار بائٹس، کیونکہ اشارہ، ان کے قیمت ایک میموری ایڈریس ہے. اور CS50 پر میموری پتوں آلات چار بائٹس طویل ہیں. تو ہم GetString، یا جب ہم کہتے ہیں جب کا کہنا ہے کہ، stringname میں اس وقت کے برابر، اور ڈبل قیمت درج کرنے ایک تار ڈال دیا، ہم ڈال رہے ہیں - ٹھیک ہے، یہ تھوڑا مختلف ہے. ہم مثال کے طور پر GetString کے کروں گا. یا چار ستارہ کچھ تار کے برابر ہے. معذرت، مجھے مثال دے کہ آپ پڑھیں؟ طالب علم: چار سٹار سچ برابر ڈبل قیمت درج کرنے میں "CS50 پتھر". JASON HIRSCHHORN: تو یہ ستارہ، اس ہم نے کے لئے اس متغیر X فون کروں گا ہماری عام مقاصد. ہم X نامی ایک متغیر تشکیل دے دیا ہے. اس قسم چار ستارہ ہے. یہ ایک سیریز کے لئے ایک پوائنٹر ہے حروف کی. تو یہاں نیچے - تو یہ کس طرح گے یاد میں کام کرتے ہیں. یہ ایک میموری ایڈریس محفوظ کریں گے. یہ میموری ایڈریس کی دکان گا صف میں پہلی کردار. اور پھر جب آپ بعد پوائنٹر، تم کروگے پہلے کردار کو حاصل. اور آپ کی طرح اس بات کو پڑھ رہے ہو ایک سٹرنگ، آپ کے کمپیوٹر ہوشیار ہے معلوم کرنے کے لئے کافی ہے، اس پوری چیز پڑھیں یہ ایک ردعمل 0 ہو جاتا ہے جب تک. لیکن آپ میں یہ ایک کردار پڑھ رہے ہو ایک وقت، تو آپ کے ذریعے iterating کر رہے اس جملے، اس کے بعد آپ کو صرف ایک پڑھے گا ایک وقت میں کردار آپ کو ملتا ہے جب تک الٹا سلیش 0. اس کا جواب نہیں کر سکتے ہیں آپ سوال، اگرچہ. طالب علم: جی ہاں، لیکن آپ کو نہیں ہے malloced اس جگہ ابھی تک اس پوائنٹر کے لئے. JASON HIRSCHHORN: تو مجھے یقین نہیں ہوں بالکل وہی جو آپ دیکھ رہے ہیں، میں نے اس کوئز نہیں کیا کیونکہ. یہ ایک مدد گار ہونا چاہیے تھا دوسرے TF سے وسائل. آپ پر ایک تار پیدا کر رہے ہیں، تو اسٹیک یا ایک مقامی متغیر کے طور پر، یہ کریں گے صرف الزامات کی صف بجائے ہو طرف اشارہ کرتے ہوئے عام طور پر ایک چار ستارہ ایک اور سٹرنگ. لیکن مجھے پتہ نہیں ہے. کہ ایک پوائنٹر ہو سکتا ہے اسٹیک پر تار کے طور پر اچھی طرح سے. جی ہاں. طالب علم: میں آپ کی ضرورت ہے معلوم ہے کہ پوائنٹر ہے تو میموری مختص اندر کا اعلان کر رہی ہے ایک اور تقریب کی. آپ کو یہ ہے تو ایک ہی بات کرنے کی ضرورت ہے اہم اندر کا اعلان کیا جا رہا ہے، آپ کو مرکزی کے اندر استعمال کر رہے ہیں؟ JASON HIRSCHHORN: تو جی ہاں. آپ کسی بھی ایک پوائنٹر اعلان کر سکتے ہیں یاد میں میموری ایڈریس. یہ ایک مقامی کی یاد کا پتہ ہو سکتا ہے متغیر، اکثر، اگرچہ، لوگوں کے میموری پتوں کا اعلان نہیں کرتے وہ کیونکہ مقامی متغیر کہ تقریب کی واپسی دور میں ایک بار، جس میں ہم عام طور پر چیزوں MALLOC کیوں ہے. لیکن ہاں، اگر آپ کو ایک پوائنٹر اعلان کر سکتا ہے ایک اور مقامی متغیر. یہ صرف عام طور پر نہیں کیا ہے. لیکن میں نے اس پر ایک نظر لے جا سکتے ہیں کلاس کے بعد خاص بات. جی ہاں. طالب علم: میں اس طرح ہے کہا جا رہا ہے کے. یہ ابتدا کی جائے عجیب لگتا ہے ایک کے طور پر ایک پوائنٹر پتہ، لیکن کے طور پر کیا ایک کی قیمت کی طرح لگتا ہے. CS50 اندر کیا ہے ایسا لگتا ہے بات کی طرف اشارہ کیا اور کیا جا رہا ہے نہیں اصل ایڈریس، ٹھیک ہے؟ JASON HIRSCHHORN: تو ہے معاملہ نہیں، اگرچہ. یہ کیا ہو رہا ہے نہیں ہے. آپ کو ایک چار ستارہ کا اعلان کرتے ہیں، یہ ایک میموری ایڈریس ہے. نوٹیفائر تمام میموری پتوں ہیں کچھ اور طرف اشارہ کرتے ہوئے. اور ہے کہ کچھ پر ہو سکتا ہے اسٹیک، لیکن تقریبا ہمیشہ ہے ہم اس کا استعمال نظر آئے گا راہ میں ڈھیر. لیکن stringname ڈبل اقتباس کے برابر ہے "، GetString کے" ہم دیکھ سکتے ہیں کہ اور ہم اس کے ذریعے دیکھو اور کوڈ ہے کہ کر سکتے ہیں. GetString کے تار میں محفوظ نہیں کیا جا رہا ہے کہ متغیر، یا جو کچھ بھی تار نام ہے کہ میں محفوظ نہیں کیا جا رہا ہے متغیر، کہ ہے کیونکہ نہیں کس طرح اشارہ کام. احساس ہے کہ ہے؟ طالب علم: جی ہاں. JASON HIRSCHHORN: ٹھیک ہے. امید ہے کہ، نہیں تھا کہ کسی کو بھی الجھا. یہ تھا لیکن اگر ہم اسے دوبارہ میں دیکھ سکتے ہیں تھوڑا سا میں، ہم اصل میں جا رہے ہیں کہ امید ہے کہ گے کچھ کوڈ ڈور کے ساتھ کام کرتے ہیں اور آپ کو لگتا ہے میں مدد ان کے ساتھ زیادہ آرام دہ اور پرسکون. ان سے متعلق کسی بھی دیگر سوالات موضوعات یا دیگر موضوعات کہ میں واپس ڈال دیں گے؟ اور - ابھی. جی ہاں، Alden. ALDEN: تو یہ مکمل طور پر غیر متعلقہ ہے، لیکن ہم صرف جا سکتے ہیں واقعی بہت تیزی سے ہم جانتے ہیں کرنے کی ضرورت ہے 32 اور اس کے درمیان فرق کے بارے میں 64 بٹ مشین؟ JASON HIRSCHHORN: جی ہاں. تو 32 بٹس کتنے بائٹس ہے؟ ALDEN: یہ چار بائٹس ہے. JASON HIRSCHHORN: یہ چار بائٹس ہے. اور 64 بٹس کتنے بائٹس ہے؟ طالب علم: آٹھ. JASON HIRSCHHORN: آٹھ بائٹس. تو پھر، آٹھ بٹس ایک بائٹ ہے. آپ CS50 آلات ہے ایک 32 بٹ مشین. تو میموری پتوں ہیں طویل چار بائٹس. 32 2 ہیں میموری پتوں. 0 32 مائنس 1 2. اور میں مثبت نہیں ہوں، لیکن یہ ہے آپ کی ضرورت ہے شاید گنجائش ، ایک 32 بٹ مشین کے لئے پتہ ہے کہ میموری پتے،، ایک بار پھر، چار بائٹس طویل ہیں اور اس کے زیادہ سے زیادہ رقم ہے میموری پتوں کی. اس کے علاوہ، اعداد و شمار اقسام - اس کے طور پر کچھ ہو سکتا ہے اچھی طرح سے کہ نوٹنگ کے قابل ہے. ایک ڈیٹا کی قسم کے سائز پر منحصر آپ کے ساتھ کام کر رہے ہیں مشین. تو ایک چار، ایک ایک کردار، کس طرح ہے ہماری CS50 آلات پر بہت سے بائٹس؟ ایک بائٹ. اور یہ اصل میں ایک بائٹ کے طور پر ساتھ ساتھ ایک 64 بٹ مشین پر. اور سب سے زیادہ اعداد و شمار اقسام ایک ہی تعداد میں ہیں دونوں مشینوں پر بائٹس. لیکن کچھ اعداد و شمار اقسام مختلف ہو جائے گا دونوں مشینوں پر. تو وہ ممکنہ طور پر ہو جائے گا آپ کو جاننے کی ضرورت ہے صرف ایک چیز. لیکن پھر بھی ہے، مجھے لگتا ہے، حد سے باہر ہے - آپ کو واپس دیکھو تو میں، تقریبا مثبت ہوں پرانے quizzes ہے، یہ کہنا ہے کہ، کے لئے فرض آپ استعمال کر رہے ہیں مسائل کوڈنگ ایک 32 بٹ مشین. لیکن میں اس کے ساتھ ساتھ جانے کے لئے، ہیں آپ دلچسپی رکھتے ہیں کیس، ہیں ایک ہی ہیں کہ اعداد و شمار اقسام تمام مشینوں پر سائز. آپ کی طرح کچھ دیکھا ہے تو uint32_t، تم کر سکتے ہو یا نے دیکھا ہے کہ نہیں. یہ ایک ڈیٹا کی قسم ہے. جو 32 بٹیں کوئی بات ہو، کہہ رہا ہے یہ کیا مشین پر ہے. تو لوگوں پورٹیبل لکھ رہے ہیں جب کوڈ، وہ شاید ints کے استعمال نہیں کرے گا. انہوں نے بجائے ان دوسرے اعداد و شمار استعمال کریں گے وہ جانتے ہیں کہ اقسام ہی ہو جائے گا ہر ایک مشین پر سائز. مادھو. بو: میں نے کے بارے میں ایک سوال تھا تالیف کے عمل. تو آپ کا استعمال کرتا ہے ایک پروگرام لکھ رہے ہیں CS50 یا کچھ اور طرح ایک لائبریری اس طرح، میں جانتا ہوں کہ اس لائبریری ، کچھ مواقع پر، ہونا ضروری ہے مرتب کی اور اندر سے منسلک لیکن کتنی اس کے دوران ہوتا ہے آپ کے پروگرام کی تالیف؟ اس لائبریری کے عمل کا حصہ تم وقت ہوتی ہے جب آپ کے اپنے پروگرام مرتب؟ JASON HIRSCHHORN: تو اوپر چلتے ہیں اس عمل کی عام طور پر اقدامات. آپ اپنے سی فائل لکھنے. آپ. C فائل میں، آپ کو # شامل آپ ہیڈر لائبریریاں، مثال کے طور پر، cs50.h. تیزی سے شامل ہیں اس کا کیا کرتا ہے لائن آپ کے پروگرام کے لئے ہے؟ Akchar. AKCHAR: یہ prototypes کی اضافہ کر دیتی ہے ہیڈر کی طرف سے کام کرتا ہے لائبریریاں میں فائلوں. JASON HIRSCHHORN: بالکل. یہ ان تقریب prototypes اضافہ کر دیتی ہے آپ کے کوڈ کے لئے. آپ کے کوڈ میں مرتب کیا جا رہا ہے تو جب ابتدائی مراحل، سنکلک جانتا ہے ان کے افعال میں واقعی موجود ہے، اور اس کہ کہیں وہ بیان کیا گیا ہے. H فائلوں کو شامل نہیں کرتے ان کے افعال کے لئے تعریف یا کس طرح وہ اصل میں کام کرتے ہیں. cs50.h، میں صرف کا کہنا ہے کہ کچھ میں شامل ہیں GetString کے ایک حقیقی بات یہ ہے کہ ہو سکتا ہے. اور standardio.h printf کا کہنا ہے کہ ہو سکتا ہے کہ ایک حقیقی چیز. تو اس کے ساتھ آپ C زبان. ہیڈر فائل کچھ میں تبدیل کر دیا جاتا ہے مشینی پڑھنے کے قابل کوڈ، جس کے آخر میں بائنری میں تبدیل کر دیا جاتا ہے کوڈ، 0 اور 1. اور اس کوڈ ہے کہ بالآخر قتل ہو جاتا ہے. -L CS50 لائن - مثال کے طور پر، آپ بجنا لکھ رہے ہیں جب - اور پھر آپ بھی شامل ہیں-L CS50، تم اندر اس قسم اور آپ دیکھتے ہیں کہ. آپ کو لکھنے کے لئے، تو آپ کریں گے یہاں اس لائن کو دیکھ. اور ہم ایک دوسرے میں دیکھیں گے کہ جب ہم کوڈ یا اس کے بعد جب ہم نے کوڈ. لیکن یہ-L CS50 لائن کچھ کرتا ہے سے تھوڑا سا مختلف # cs50.h. میں شامل ہیں کہ-L CS50 لائن کیا کرتا ہے؟ AVI؟ AVI: میں نے اس کے لنکس کہنا چاہتا ہوں کہ تقریب لائبریری اے فائلوں کی طرح، کال. JASON HIRSCHHORN: تو بہت بند، جگہ پر نہیں تو. -L CS50 بائنری فائل لیتا ہے اور آپ بائنری فائل کے ساتھ ضم کرتا ہے. تو cs50.h، رخ میں کوئی فائدہ نہیں ہے ہر بائنری سی زبان سے cs50.h، میں اس کا استعمال کیا جا رہا ہے ایک وقت. یہی وجہ ہے کہ، پاگل ہو جائے گا کیونکہ اس وقت کی ایک بہت برباد کرے گا. تو یہ پہلے سے ہی مرتب کیا گیا ہے اور ایک executable میں تبدیل کر دیا. اور اب یہ ملا دیا جا رہا ہے آخر میں آپ کی فائل کے ساتھ. لہذا ان 1 اور 0 کی جا رہے ہیں آپ لوگوں کے ساتھ ضم کرنے کے لئے اور آخر میں 0 ہے. تو اب آپ اصل میں اصل پڑے گا 1 اور 0 کی کس طرح GetString کے کی وضاحت، مثال کے طور پر،، کام کرتا ہے، یا کس طرح printf کے مثال کے طور پر، کام کرتا ہے. اور مزید معلومات کے لئے، ہے ایک نیٹ ہے کہ دیتا ہے کہ مختصر compilers کے آپ کو جاتا ہے کہ باہر کی جانچ پڑتال کرنا چاہئے ان اقدامات کے ذریعے. لیکن - جی ہاں. طالب علم: وہ میں ہمیشہ اے فائلوں. وہ لائبریری کی شکل میں ہیں جب، کی طرح - منسلک، ضم کرنے کے لئے تیار وہ بائنری کوڈ میں ہو؟ JASON HIRSCHHORN: ٹھیک ہے. کیا - طالب علم: ہے کہ ہمیشہ کے لئے کیس لائبریریاں آپ کو ان سے منسلک ہے؟ JASON HIRSCHHORN: جی ہاں. تو. کا ہو جائے گا جس کی فائلوں کو، ہے یہ بھی ہو جائے گا جس مشین کوڈ، آپ کے لئے خفیہ. تم ان کے بارے میں فکر کرنے کی ضرورت نہیں. لیکن عام طور پر، جی ہاں، وہ کریں گے اے جانے کے لئے تیار فائلوں میں. ہو. طالب علم: تو اگر تم پر جہاز جب ایک لائبریری، آپ کو صرف جہاز ہے . H اور. O؟ آپ. C یا. کے جہاز نہیں ہے. JASON HIRSCHHORN: SO - اور اس پر اگر، کے ساتھ ساتھ اس مختصر میں ہے یہ معلومات آنے لگتا ہے تھوڑا جلدی سے. لیکن compilers کے پر مختصر اس کے بارے میں بات چیت کے ساتھ ساتھ. آپ کو ایک لائبریری جہاز تو، اگر آپ کو جہاز . ایچ، ہیڈر فائل، ان تقریب prototypes، اور 1 اور 0، کہ آپ کو دینے کے لئے کی ضرورت ہے. آپ کو دے کی ضرورت نہیں ہے کس طرح تقریب. سی فائل، کام کرتا ہے. کیونکہ تجرید کے نقطہ، یا APIs کا اشارہ، اس SPL میں نقطہ، سٹینفورڈ پورٹیبل لائبریری، یہ ہے آپ کے بارے میں فکر نہ کرنے کے لئے کس طرح نئے GRect، کام کرتا ہے، یا کس طرح کام کرتا ہے میں منتقل یا کس طرح کام کرتا ہے شامل. آپ کو جاننے کی ضرورت ہے کہ شامل ہے آپ کر سکتے ہیں کہ ایک تقریب ہے استعمال کرتے ہیں، اور یہ کرتا ہے. تو کیا تم سچ میں پتہ کرنے کی ضرورت نہیں کس طرح یہ سی تم میں لکھا ہے صرف کرنے کی ضرورت ہے جانتے ہیں، یہاں افعال ہیں، کیا وہ کرتے، اور یہاں 1 اور 0 کی ہیں اگر آپ واقعی ان کا استعمال کرنا چاہتے ہیں جب. ڈاؤن لوڈ، اتارنا. compilers کے پر کوئی سوالات یا بورڈ پر دیگر موضوعات؟ طالب علم: میں ایک سوال ہے پنراورتی کام کرتا ہے کو لاگو. تکرار کے بارے میں ایک سوال کے جواب میں. میں آ جائے گا کہ ایک احساس تھا. تو فوری طور پر کے ذریعے جانے دو ایک مخصوص کے ساتھ تکرار مثال کے طور پر، ایک جز ضربیہ تقریب. یہ ایک مثال ہے کہ اکثر آتا ہے یا استعمال کیا جاتا ہے تکرار وضاحت کرنے کے لئے. تو "4" 4 جز ضربیہ کے طور پر پڑھا جاتا ہے. اور 4 جز ضربیہ کیا مطلب ہے؟ یہ کیا کرتا ہے؟ کس طرح آپ 4 جز ضربیہ حساب ہیں؟ 4 اوقات 3 بار 2 بار 1. 4 جز ضربیہ لکھنے کے لئے تو ایک اور طریقہ اس کو لکھنے کے لئے ہے. 4 بار 3 جز ضربیہ. 3 جز ضربیہ ہے 3 بار 2 بار 1. تو 4 بار 3 جز ضربیہ 4 اوقات 3 بار 2 بار 1. جز ضربیہ ایک بہت اچھا ہے یہی وجہ ہے کہ تکرار کے امیدوار، یہ ہے کہ وہاں کچھ ہے واضح ہے کہ ایک پر اور اس سے زیادہ اور اس سے زیادہ ہوتا ہے چیزوں کی چھوٹی تعداد تک آپ کو اختتام تک پہنچنے کے. آپ 1 تک پہنچ جاتے ہیں، 1 جز ضربیہ 1 ہے. آپ زیادہ مزید نہیں جا سکتے. 0 جز ضربیہ بھی 1 کے طور پر بیان کیا جاتا ہے. آپ 1 یا 0 حاصل کرنے کے لئے تو، تم ہو آخر میں، اور آپ کر سکتے ہیں واپس اوپر جا رہا شروع. ہم ایک پنراورتی لکھنا چاہتا تھا تو اگر ایک جز ضربیہ حساب کرنے کے لئے تقریب، ہم نے کچھ لکھنے کے لئے جا رہے ہیں کہ اب کے لئے pseudocode. ہم اس pseudocode لکھنے سے پہلے - میں تم لوگوں منٹ کے ایک جوڑے کو دے دونگا چھدم کوڈ لکھنے یا صرف سوچنے کے لئے اس کے بارے میں - ہر دو چیزیں ہیں پنراورتی تقریب کی ضرورت ہے. ان دو چیزیں ہیں؟ جیک: یہ خود فون کرنے کی ہے. JASON HIRSCHHORN: نوح؟ اوہ، جیک. آگے بڑھو. جیک: یہ خود فون کرنے کی ہے. JASON HIRSCHHORN: تو ایک پنراورتی تقریب، ایک پنراورتی کال کی ضرورت ہے خود کو کال کریں. یہ ایک ہے. اور دوسری بات کیا ہے؟ جیک: ایک بنیاد کیس. JASON HIRSCHHORN: ایک بنیاد کیس. ایک بنیاد کیس ہم کو روکنے کے جب یہاں ہے، ہے. تو آپ کی تقریب میں بلایا جاتا ہے. بنیاد کیس پہلے آتا ہے. آپ آخر میں ہیں تو میں جاننا چاہتا ہوں. اور تم، آخر میں آپ کو نہیں ہو تو آپ پنراورتی کال. اور تم، پھر اس تقریب کے ذریعے جانا پھر آپ کی بنیاد پر کیس کی جانچ پڑتال. آپ کو آخر نہیں ہیں تو، آپ کو دوسرے پنراورتی کال، وغیرہ، وغیرہ. یہی وجہ ہے کہ پنراورتی افعال ہمیشہ ان بیس مقدمات اور ان کی ضرورت ہے پنراورتی کالوں. آپ کو ایک پنراورتی کال کی ضرورت نہیں ہے، یہ ایک پنراورتی تقریب نہیں ہو گی. آپ کو ایک بنیاد کیس نہیں تھا تو، تم ہمیشہ کے لئے جانا ہے اور کرے گا کوئی آخر نہیں ہو گی. اور بنیاد کیس ہمیشہ سب سے پہلے آتا ہے، آپ ہمیشہ کی جانچ کرنا چاہتے گا کیونکہ آپ سب سے پہلے آخر میں ہیں. ہم کچھ pseudocode کرتے ہیں تو اس سے پہلے، کیوں آپ کے بارے میں سوچنے کے لئے ایک منٹ لے نہیں ہے کس طرح ایک پنراورتی جز ضربیہ تقریب لکھا جائے گا؟ کے علاوہ، آپ کیا کر رہے ہیں کے طور پر کئی کے طور پر، تحریری طور پر کاغذ کی ایک شیٹ پر باہر ہے آپ کے لئے جا رہے ہیں کیا کل کوئز پر کیا. بنانے کے لئے تو شاید اچھی پریکٹس یقین ہے کہ آپ لکھ رہے ہیں کوڈ کاغذ کی شیٹ پر نیچے - یا آپ یہ کر سکتے ہیں. وقف ناقص ہیں جہاں تم جانتے ہو. آپ نحو یاد. آپ کے پاس کرنے کے قابل نہیں رہے ہیں کیونکہ ایک سنکلک آپ کو ایک غلطی کی بتانا. اس کے علاوہ، ان لائنوں، کل، کے ساتھ ساتھ جب آپ تو آپ، مسائل کوڈنگ ہے وقت کے لئے پہنچ گئے، یا کر رہے ہیں آپ کو بہت ہو آپ کے لئے توقع کر رہے ہیں کہ کس طرح کے طور پر الجھن میں C میں خاص بات یہ ہے کہ لکھنے، یہ چھدم کوڈ لکھنے کے لئے آپ کو ہونا گے یا کے طور پر اچھی طرح سے میں تبصرے لکھنے. کے لئے جزوی طور پر کریڈٹ نہیں ہے کیونکہ گئے تمام سوالات پر سوالات کے بہت. تو تم پہنچ گئے، یا ہو سکتا ہے صرف الجھن میں ہو سکتا ہے. تبصرے یا چھدم کوڈ میں لکھنا اکثر طریقے ہیں کہ آپ جزوی کریڈٹ حاصل کر سکتے ہیں. تو کچھ نہیں چھوڑتے کوئز پر خالی. کے لئے کوئی جرمانہ نہیں ہے اندر چیزیں ڈال اصل میں، چھدم کوڈ میں ڈال یا تبصرے جماعت کے طالب علم کی مدد کی جا رہی ہے آپ اصل میں معلوم ہے کہ اگر اعداد و شمار کیا آپ ہو سکتا ہے کہ ایوارڈ کے بارے میں بات، اور کر رہے ہیں آپ اس کے لئے کچھ جزوی کریڈٹ. اس کے علاوہ ان خطوط، واضح طور پر لکھتے ہیں. ہم واقعی آپ لکھ رہے ہیں نہیں کر سکتے ہیں کیا ہے تو، ہم آپ کو فون کرنے کے لئے نہیں جا رہے ہیں اعداد و شمار کے آدھی رات کو کل آپ نے لکھا کیا. ہم صرف پوائنٹس دور لے جا رہے ہیں. تو ہم بجائے سن، یا کر سکتے ہیں، واضح طور پر لکھیں، ہم آپ کو لکھا کیا پڑھ سکتے ہیں. اور یہ دو جملوں کا کہنا ہے کہ اگر، ایک پیراگراف لکھ نہیں. ہدایات پر عمل کریں. واضح طور پر لکھیں. اور ان کے تبصرے میں لکھنے یا سوالات کے لئے pseudocode ہے کہ کر سکتے ہیں ایوارڈ جزوی کریڈٹ. ٹھیک ہے، کی جز ضربیہ جانے. تو ہم نے ایک تقریب جز ضربیہ ہے. میں اصل میں C میں یہ لکھنے کے لئے تھے، تو کیا میں نے نام سے پہلے ڈال کرنے کی ضرورت تقریب کی؟ واپسی کی قسم، اس میں جس، کیس، ہم اس INT دے دونگا. اور پھر گھوبگھرالی منحنی خطوط وحدانی کے اندر ہے، کیا کے لئے گھوبگھرالی منحنی خطوط وحدانی کے اندر جاتا ہے ایک تقریب؟ طالب علموں: ترک قسم. JASON HIRSCHHORN: اس کے دلائل. تو جز ضربیہ شاید ایک دلیل لے. شاید یہ صرف ایک دلیل لے لیں گے. اور ہم اسے لے جائیں گے کہیں گے ایک عددی X کہا جاتا ہے. اور پھر، پروٹوٹائپ کی تحریر جب ایک تقریب یا تقریب لکھنے ، آپ کو اس کی وضاحت کرنے سے پہلے آپ کے کوڈ میں کے اعداد و شمار کی قسم اور نام لکھنا صرف یہ کہ تقریب کے لئے کہ متغیر. تو آپ کو اس میں کچھ تعداد منتقل کر سکتی ہیں تقریب، یہ ایکس کے طور پر کہا جائے گا اندرونی. ہم اپنے جز ضربیہ تقریب ہے. ہم دو چیزیں، ایک بنیاد کے کیس کی ضرورت اور ایک پنراورتی کال. جز ضربیہ کے لئے بنیاد کا معاملہ کیا ہے؟ اس کے باہر لکھا ہے اور کون نہیں ہے جو کسی ابھی تک بات کی، کی بنیاد کیا ہے جز ضربیہ کے لئے کیس؟ طالب علم: N کم ہے تو 2 سے، واپس 1. JASON HIRSCHHORN: N ہے تو 2 سے کم، 1 واپس. مجھے پسند ہے کہ، اس وجہ سے 0 اور 1 کا خیال رکھتا ہے. تو ہم، X <2 کر 1 واپس آ جائیں گے. ہم تو ہم، 0 منظور ہو تو 1 منظور، یہ کام کرے گا فوری طور پر واپس 1. ہم کچھ تعداد زیادہ سے زیادہ منظور ہو تو سے یا 2 کے برابر، ہم جا رہے ہیں ہمارے پنراورتی کال ہے. اور تو کس طرح کام کرنے کے لئے جا رہی ہے؟ کر سکتے ہیں اس پر کام کیا ہے جو کسی اور جو ابھی تک بات نہیں ہے مجھے دے دو اس تقریب کے لئے پنراورتی کال pseudocode میں؟ ہم ایک بڑی تعداد ایکس میں منظور ہو تو اور یہ 2 سے بڑا ہے، کیا ہم کرنا چاہتے ہیں؟ ہم نے بھی ایک مثال کے طور پر لکھا ہے آپ کو ایک اشارہ دے سکتا ہے اس طرف. طالب علم: X بار کال ایکس مائنس 1 جز ضربیہ؟ JASON HIRSCHHORN: بالکل صحیح. ہم X اوقات واپس جا رہے ہیں ایکس مائنس 1 جز ضربیہ. اور، میں نے لکھا ہے، اگرچہ، کہ بنیادی طور پر، کیا آپ انگریزی میں کہا، اس جز ضربیہ تقریب پھر کہا جاتا ہے ہو جائے گا. یہ ایکس مائنس 1 پر عمل کریں گے. یہ کچھ عددی کے ساتھ واپس آ، گے پھر اس کے بعد ان دونوں سے ضرب کریں گے ایک دوسرے کے ساتھ، اور اس کی قیمت ہو جائے گا یہ کہا جاتا ہے، جو کچھ بھی کرنے کے لئے واپس جز ضربیہ تقریب، جس میں طاقت ایک اور مثال کے طور پر کی جائے اس جز ضربیہ تقریب. تو یہ ایک پنراورتی کی ایک مثال ہے تقریب، ایک بہت ہی سادہ پنراورتی تقریب. لیکن ان میں سے زیادہ تر اس طرح ہو جائے گا. آپ کو ایک اچھا پنراورتی چاہتے ہیں تو کوئز کے لئے چیلنج، کوڈنگ کی کوشش بائنری تلاش تکراری. کیونکہ آپ کے لئے بائنری تلاش کیا تو مسئلہ تین مقرر کیا، تو شاید آپ نے یہ کیا iteratively تھوڑی دیر لوپ میں. لیکن یہ بھی لکھا جا سکتا ہے تکراری. آپ اپنی ہی لکھنے کی ضرورت کرنے جا رہے ہیں کچھ لیتا ہے کہ علیحدہ تقریب مختلف کمانڈ لائن کے دلائل - یا نہیں کمانڈ لائن کے دلائل، کچھ مختلف صرف باقاعدہ دلائل. لیکن آپ کو بائنری تلاش لکھ سکتے تھے تکراری طور پر ساتھ ساتھ. طالب علم: تو تم نے بھی لکھا ہے کر سکتے ہیں، اس کی بجائے ایکس مائنس 1، آپ بھی ایکس مائنس لکھا ہے کر سکتے ہیں مائنس، یا آپ کر سکتے ہیں لکھا مائنس مائنس ایکس. آپ کو صرف واقعی جلدی کیوں کی وضاحت کر سکتا ان مختلف چیزیں ہو جائے گا، فرق کے درمیان ہے کس طرح ایکس مائنس مائنس اور مائنس مائنس X؟ JASON HIRSCHHORN: نہیں، میں نہیں ہوں اس میں جانے کے لئے جا. لیکن میں نے اس کے بعد اس کے بارے میں آپ سے بات کرے گا کلاس. ایکس مائنس مائنس، مائنس مائنس ایکس 1 کی طرف سے ایکس تدریج کریں. لیکن وہ تھوڑا سا مختلف طریقے سے کرتے ہیں. لیکن میں نے اس میں جانے کے لئے نہیں کرنا چاہتا. تکرار کے بارے میں دیگر سوالات یا اس تقریب؟ یہ واقعی بھی pseudocode نہیں ہے. یہ بنیادی طور پر میں کوڈ ہے تم اس کے لئے لکھنے گی C. ٹھیک ہے، کسی بھی دیگر سوالات یہاں موضوعات کے بارے میں؟ جی ہاں. طالب علم: میں نے ایک فوری ناگفتہ بہ ہے فلوٹنگ پوائنٹ اور صحت سے متعلق. JASON HIRSCHHORN: فلوٹنگ نقطہ اور صحت سے متعلق. کر سکتے ہیں کسی کو واقعی بہت تیزی سے میرے ایک پسماندہ دے فلوٹنگ پوائنٹ اور صحت سے متعلق؟ آپ نے اپنے تمام کے لئے ایسا کرنے کے لئے تھا مسئلہ سیٹ، تو آپ سب ہیں اس سے واقف. یا شاید نہیں سب آپ کے. کوئی ہے؟ مجھے ایک شروع جگہ دے دو. فلوٹنگ پوائنٹ اور صحت سے متعلق. مسئلہ کیا ہے؟ جی ہاں. وکٹوریہ؟ وینیسا: وینیسا. JASON HIRSCHHORN: وینیسا. معذرت. وینیسا: صرف ایک محدود تعداد نہیں ہے کی نمائندگی کی جا سکتا ہے کی تعداد کے آپ کو ایک، میں ہیں کیونکہ ہمارے کیس، ایک 32 بٹ نظام. تو آپ کی قسم کے لئے ہے کچھ تعداد قضاء. JASON HIRSCHHORN: تو ہے بالکل صحیح. صرف ایک مخصوص رقم کی ہیں کی نمائندگی کی جا سکتا ہے کی تعداد. آپ کو دو بہت بڑی تعداد سے ضرب ہے تو، یہ رقم اتپرواہ کر سکتے ہیں خالی جگہوں کے آپ کی نمائندگی کرنے کے لئے ہے ایک عددی. کبھی کبھی ہم استعمال کرتے ہیں یہی وجہ ہے کہ ایک اس کی بجائے ایک int کے طویل طویل. کہ خالی جگہ ہے. یہ ایک بڑی تعداد پکڑ کر سکتے ہیں. فلوٹنگ پوائنٹ صحت سے متعلق کے ساتھ کیا ہے ہے، بلکہ ساتھ کیا کرنا ہے دشملو تعداد حقیقت یہ ہے کہ ہمیشہ نمائندگی نہیں. معذرت. مجھے یہ واپس ڈال دو. دشملو تعداد 1.0 ہمیشہ نہیں ہے آپ کی طرح کی نمائندگی کی توقع کریں گے، 1،000000000. یہ کبھی کبھی کے طور پر ظاہر کیا جاتا ہے 1،000000001 یا 0،999999999. یہ بھی 89 پھینک دیا جا سکتا ہے وہاں کہیں میں. لہذا ان دشملو تعداد نہیں ہیں بالکل آپ جیسے نمائندگی ان کی نمائندگی کی توقع ہے. تو مسئلہ میں قائم - یہ دو تھا - مسئلہ ہم کے ساتھ نمٹا ہے جہاں دو، قائم ہم چاہتے تھے جب چل نقاط کی تعداد، ان کے ہم چاہتے تھے بالکل وہی جو کی نمائندگی کرنے کے ان کی نمائندگی کرنے کے لئے، کی تعداد پیسے کے، یا سینٹ کی تعداد، ہم نے 100 کی طرف سے ان ضرب. ہم نے ان کو حراست میں. اور پھر ہم سب کچھ کاٹ اشارہ کے پیچھے. اس بات کا یقین تھا کہ وہ کرے گا ہم چاہتے تھے بالکل وہی جو اصل کے برابر ان کے برابر کرنے کے لئے. تم سے کچھ لے جب کہ ہے کیونکہ ایک فلوٹ اور آپ، ایک int میں تبدیل سب کچھ درست کرنے کاٹ اعشاریہ کی. کچھ تیرتے بات ہے کیونکہ گئی imprecision، 100.000 ہو سکتا ہے 99،999999999 کے طور پر کی نمائندگی کی. اور تم سب کچھ کرنے کے لئے کاٹ اگر فورا حق، آپ جا رہے ہیں غلط نمبر حاصل. جی ہاں. طالب علم: میں نے ایک سوال کے بارے میں ڈال. کیا ترتیب میں ہوتی ہے؟ آپ کو فلوٹ کرتے ہیں چاہتے ہیں، بریکٹ، 1 تقسیم 10 کی طرف سے، 1، 10 کی طرف سے تقسیم کرتا ہے اس کے بعد 0.1 حاصل، پھر باری ایک فلوٹ میں؟ JASON HIRSCHHORN: اگر آپ ایسا کرتے 10 سے 1 تقسیم فلوٹ - طالب علم: جی ہاں، اور اس کے بعد برابر - ٹھیک ہے، یہ عام طور پر کریں گے میں اس کے برابر ہے - جی ہاں. تم نے اسے ایک فلوٹ بنانا چاہتے ہیں، ٹھیک ہے؟ JASON HIRSCHHORN: ٹھیک ہے، تو ہم جا رہے ہیں باہر figuring میں segue کرنے کے لئے اس کا استعمال ان سوالات کے جوابات کوڈنگ کے ذریعے. شاید آپ کی ایک بہت پڑے گا ان منٹ میں سوالات، اور ایک اچھا طریقہ ان کو حل کرنے کی کوڈنگ کے ذریعے ہے. تو ہم نے، اب یہ درست کوڈ جا رہے ہیں اور پھر ہم واپس جانے کے لئے جا رہے ہیں اور کر رہے ہیں تم نے سوال کوڈ تو سب سے پہلے لائن - میں یہ لکھا ہے نہیں ہونا چاہئے - کیا ہے ہم کرنا چاہتے ہیں پہلی بات جب ہم نے gedit میں ایک نئی فائل کو کھولنے؟ طالب علم: شامل کریں. JASON HIRSCHHORN: کیا شامل کریں؟ طالب علم: CS50 لائبریری. JASON HIRSCHHORN: ٹھیک ہے. ہم اور کیا شامل کرنا چاہئے؟ ہم صرف کیا ہوتا ہے چیک کرنے کے لیے جا رہے ہیں اگر آپ کو فلوٹ کے لئے کچھ ڈال جب. لیکن کیا ہم ہیں شامل کرنے کے لئے کی ضرورت ہے سی کے ایک پروگرام لکھنے کے لئے جا رہے ہیں؟ طالب علم: سٹینڈرڈ I / O. JASON HIRSCHHORN: stdio.h کی. ہم اصل میں اس کے لئے، کی ضرورت نہیں ہے پروگرام، cs50.h، میں، یہ ہے کہ اگرچہ یہ شامل کرنے کے لئے ہمیشہ مددگار. لیکن ہم نے ہمیشہ stdio.h کی ضرورت ہے. طالب علم: C میں کوڈنگ ہے؟ JASON HIRSCHHORN: سی میں کوڈنگ جب تو میں نے اس. سی فائل کے طور پر اس کو بچانے. میں نے کچھ اچھا نحو کو اجاگر کرنے حاصل. میں اہم اندر باطل لکھا. باطل کیا مطلب ہے؟ طالب علم: کوئی لے نہیں ہے کمانڈ لائن کے دلائل. JASON HIRSCHHORN: اس میں باطل کا مطلب ہے، کیس، مرکزی کسی بھی لے نہیں ہے کمانڈ لائن کے دلائل. دیگر معاملات میں، اس تقریب کا مطلب کمانڈ لائن کے دلائل نہیں لے کرتا ہے. یا تقریب، میں تھے تو صفر لکھنا اہم (باطل)، یہ اہم کہیں گے کچھ بھی نہیں آرہے. تو باطل صرف کوئی مطلب نہیں ہے. میں تھے تو مجھے کیا لکھنا کمانڈ لائن کے دلائل لے؟ طالب علم: INT آرک C تار آرک وی JASON HIRSCHHORN: INT جہاں argc سٹرنگ argv. یہ ٹھیک ہے؟ طالب علم: یہ چار ستارہ ہے argv بریکٹ ہے. JASON HIRSCHHORN: تو آپ لکھ سکتے تھے سٹرنگ argv بریکٹ یا چار ستارہ ہے argv بریکٹ، لیکن آپ بریکٹ کی ضرورت ہے. ہے argv ایک صف ہے ڈور، یاد. یہ صرف ایک تار نہیں ہے. تو سٹرنگ argv یہاں ہے، ہے ایک سٹرنگ argv کہا جاتا ہے. سٹرنگ argv بریکٹ، یہاں ہے ڈور کی ایک صف. تو int جہاں argc سٹرنگ argv بریکٹ کچھ ہو جائے گا کہ میں شاید لکھنے گی. تو آپ کو ایک عدد صحیح میں کو بچانے کے لئے چاہتا تھا؟ طالب علم: جی ہاں، عددی. یا فلوٹ میں. JASON HIRSCHHORN: ایک فلوٹ میں؟ کی طرح، فلوٹ ایکس 10 سے تقسیم 1 برابر. JASON HIRSCHHORN: ٹھیک ہے. کس طرح میں printf میں ایک فلوٹ کو پرنٹ کر سکتا ہوں؟ کیا ہے؟ طالب علم:٪ F. JASON HIRSCHHORN:٪ F. ایک عدد صحیح کیا ہے؟ D یا میں. ایک تار کیا ہے؟ طالب علم: S. JASON HIRSCHHORN: S. میں کس طرح ایک نئی سطر میں حاصل کرتے ہیں؟ طالب علم: الٹا سلیش ن. JASON HIRSCHHORN: میں کیا واپس کرتے ہیں اہم رنز صحیح طریقے سے تو؟ طالب علم: 0. میں اگرچہ، اس لائن کو لکھنے کے لئے کی ضرورت ہے؟ طالب علم: نہیں. ٹھیک ہے، تو ہم، اسے لکھ نہیں کرے گا. سب پڑھا ہے کہ کر سکتے ہیں؟ یہ تھوڑا سا چھوٹا سا لگ رہا ہے. سب دیکھتے ہیں، یا چاہئے کر سکتے ہیں میں نے اسے بڑا بنا؟ میں نے کیمرے کے لئے، ہم بنا دیں گے لگتا ہے اگرچہ، یہ تھوڑا سا بڑا. JASON HIRSCHHORN: میں اس تبدیل کرنے کے لئے چاہتے ہیں تو . ایک executable میں فائل C، کیا میں لکھ سکتا ہوں؟ طالب علم: ٹیسٹ بنائیں. JASON HIRSCHHORN: معاف کیجئے گا؟ طالب علم: ٹیسٹ بنائیں. JASON HIRSCHHORN ٹیسٹ بنائیں. ہم کے بارے میں بات کر رہے تھے پہلے اس لائن. بجنا. بجنا کیا ہے؟ سنکلک کے نام پر. اس لائن کیا ہے؟ طالب علم: GDB کے استعمال کے لئے اس کا تعین کرتا ہے. JASON HIRSCHHORN: سیٹ یہ GDB کے استعمال کے لئے. یہ لائن، وہ کیا ہے؟ طالب علم: ماخذ کوڈ. JASON HIRSCHHORN: ہے سورس فائل، سی فائل. یہ دو لائنوں میں کیا کروں؟ یا ان دو نہیں کی لائنز. طالب علم: یہ کے نام اس کی جانچ. JASON HIRSCHHORN: تو ڈیش اے کا کہنا ہے کہ، مختلف کچھ نام. اور یہاں آپ کو اس کی جانچ بلا رہے ہیں. میں اس میں نہیں تھا تو، یہ کیا یہ نام کرے گا؟ طالب علم: میں a.out. JASON HIRSCHHORN: a.out کا. یہ کیا کرتا ہے؟ طالب علم: ریاضی کی لائبریری کا. JASON HIRSCHHORN: یہ لنکس ریاضی کی لائبریری میں. ہم ریاضی کی لائبریری میں شامل ہیں، لیکن نہیں کیا تاکہ عام ہے، وہ ہے لکھا بنانے ہمیشہ شامل کرنے کے لئے ریاضی لائبریری. اور اسی طرح، اس میں شامل ہیں CS50 لائبریری. ہم نے فہرست تو ٹھیک ہے، تو، اب ہم ٹیسٹ کہا جاتا ہے ایک executable. اسے پھانسی، میں نے امتحان. میں اپنے سچل نقطہ دیکھتے ہیں کہ توقع کے مطابق، 0 کے برابر ہے. کہ کرتا ہے - تو - طالب علم: کے بعد آپ کو ڈال دیا، تو اب فلوٹ کی طرح، آپ کو فلوٹ کے طور پر اس ڈالا - JASON HIRSCHHORN: کاسٹ ایک فلوٹ 1؟ طالب علم: نہیں، مکمل بات ڈالا - جی ہاں. آپ کو صرف کیا تو، گے کہ یہ 0.1 ہے؟ JASON HIRSCHHORN: ٹھیک ہے، تو واقعی بہت تیزی سے، 1 10 سے تقسیم، ہیں integers کے تقسیم کیا جا رہا ہے. آپ integers تقسیم تو، وہ کر رہے ہیں 0، اور آپ کی بچت کر رہے ہیں 0 میں سلیش ہے کیونکہ، تیرنے لگتے ہیں صرف عددی ڈویژن. تو اب ہم کچھ تبدیل کر رہے ہیں ایک فلوٹ میں. کیا ہوتا ہے دیکھتے ہیں. ہم ٹیسٹ کر دونگا. تو اب ہم اس سلیش نہیں تھا کہ دیکھتے ہیں عددی ڈویژن، یہ تیرتا کیا گیا نقطہ ڈویژن. کیونکہ اس کے دلائل میں سے ایک ایک فلوٹ پر ڈالا گیا تھا. تو اب یہ اس کے علاج کے، کہہ رہا تھا ڈویژن ہم سے نمٹنے کر رہے ہیں سچل پوائنٹس، نہیں integers کے ساتھ. اور اس طرح ہم توقع جواب حاصل. کیا ہوتا ہے دیکھتے ہیں - افوہ. میں زیادہ دشملو پرنٹ کرنے کے لئے چاہتے تھے سپاٹ، مجھے لگتا ہے کہ کس طرح کر سکتے ہیں؟ طالب علم: پوائنٹ ڈاٹ F، یا کے طور پر کئی آپ چاہتے ہیں کے طور پر اعشاری مقامات. JASON HIRSCHHORN: تو میں پرنٹ 10 دشملو کے مقامات. اور ہم اب ہم ہو رہے ہیں کو دیکھنے کے کچھ عجیب چیزیں. اور یہ کہ واپس آپ کے سوال پر جاتا ہے کے بارے میں بات گئی imprecision تیرتا. یہاں میں محفوظ عجیب چیزیں ہے. ٹھیک ہے، کہ آپ کے سوال کا جواب ہے؟ تمہیں اور کیا چاہیے تھا فوری طور پر کوڈ کے لئے؟ طالب علم: میں یا دیکھنا چاہتے تھے نہیں، آپ کو کچھ پوائنٹر آزاد ہیں، اس پوائنٹر اب بھی میں محفوظ تھا چاہے یہ کیا گیا تھا کا پتہ پہلے کی طرف اشارہ. JASON HIRSCHHORN: ٹھیک ہے، تو ایسا کرتے ہیں. چار سٹار PTR، یہ ایک متغیر کی تخلیق پروپوزل کی گذارش چار اسٹار کے PTR کہا جاتا ہے. کس طرح میں malloc لکھ سکتا ہوں؟ Alden؟ ALDEN: بس malloc کی. لیکن اس وقت اس کے سائز کا ہونا ضروری ہے، اور اس صورت میں، میں آپ کو چاہوں لگتا ہے چار کی طرف اشارہ کیا جائے. تو یہ چار ہو جائے گا. JASON HIRSCHHORN: ٹھیک ہے، تو زیادہ generically، اندر - کی ترمیم کرنے دے. malloc کے اندر، آپ کا نمبر چاہتے ہیں کے ڈھیر پر بائٹس. عام طور پر، کیا ہم ہیں کہ دیکھا ہے کر ہم malloc پر جا رہے ہیں مثال کے طور پر ڈور،، یا integers کے arrays کے. تو ہم 10 integers کے، یا 10 چاہتے ہیں تو حروف، 10 ہم 10 دے گا. اور پھر حروف کے سائز دے گی ہم کہ حروف کے سائز کی، جس میں اس معاملے 1 بائٹ ہے. ہم 10 بائٹس حاصل. ہم int کے سائز کے لکھنے کے لئے تھے، تو کہ ہمیں 40 بائٹس دے گی. تو زیادہ generically، malloc کے اندر آپ چاہتے ہیں بائٹس کی تعداد ہے. اس صورت میں، ہم 1 بائٹ ہو رہے ہیں. ایک عجیب کے استعمال کی طرح لگتا ہے malloc کی کی، لیکن اس کے لئے ہمارے مقاصد سمجھ میں آتا ہے. تو یہ ہے. ہم مفت کے فون کرنے جا رہے. ہم اس سے چھٹکارا حاصل کریں اور ہم ایک بار پھر PTR استعمال. اور آپ کو چیک کرنے کے لئے کیا چاہتے تھے؟ طالب علم: میں صرف چیک کریں کہ کیا کرنا چاہتا تھا یا کچھ بھی نہیں تھا اس کے اندر. JASON HIRSCHHORN: چاہے تو یہ کچھ کی طرف اشارہ کیا؟ طالب علم: جی ہاں، بالکل، چاہے یہ اب بھی ایک میموری ایڈریس تھا. JASON HIRSCHHORN: تو آپ چاہتے ہیں PTR کی قیمت چیک کرنے کے لیے؟ طالب علم: جی ہاں، بالکل. JASON HIRSCHHORN: میں یہاں کیا لکھ سکتا ہوں میں کی قدر کی جانچ پڑتال کرنا چاہتے ہیں تو نقطہ - کیا ہے، اردن قیمت، ہے؟ یا کیا PTR کے اندر محفوظ کیا جاتا ہے؟ طالب علم: ایک میموری ایڈریس. JASON HIRSCHHORN: ایک میموری ایڈریس. میں صرف یہ لکھنا تو، یہ کریں گے مجھے PTR کی قیمت دے. اور میں کس طرح پرنٹ کرو ایک میموری ایڈریس؟ شکل سٹرنگ کیا ہے ایک میموری ایڈریس کے لئے؟ طالب علم: P. JASON HIRSCHHORN: P. ٪ s کو ایک تار ہے. پوائنٹر کے لئے٪ P. یہ ٹھیک ہے؟ یہ درست ہے. تو PTR برابر - یہ اب بھی اس میں کچھ ہے. شاید یہ ایک سے زیادہ ہے دلچسپ سوال. اس لائن کو کیا کرتا ہے؟ طالب علم: SEG گناہ. JASON HIRSCHHORN: کیا؟ طالب علم: میں نے اس کے گناہ SEG لگتا ہے. JASON HIRSCHHORN: HM؟ طالب علم: میں نے یہ seg غلطی گے. JASON HIRSCHHORN: تو اس لائن کوڈ، سٹار PTR کی، کیا سٹار مطلب ہے؟ طالب علم: کے مواد. JASON HIRSCHHORN: جی ہاں. کے مواد حاصل کرنے کے لئے جاؤ. تو یہ یاد کرنے کے لئے جا رہا ہے وہاں حل کرنے اور وہ مجھے دو. میں یہاں٪ C استعمال کیا جاتا ہے کیونکہ وہاں حروف جمع کیے جاتے ہیں. تو ہم اس کا پتہ ہم پر جانے کے لئے جا رہے ہیں ابھی دیکھا - یا شاید یہ ایک ہو جائے گا تھوڑا سا مختلف اس ہم پروگرام کو چلانے کے وقت. لیکن ہم اس پتے پر جائیں گے ہم اب بھی موجود ہے جانتے ہیں اور وہاں کیا ہے دیکھنے. تو یہ seg غلطی نہیں کی تھی. یہ صرف ہمیں کچھ نہیں دیا. یہ اصل میں ہمیں دیا ہے ہو سکتا ہے کچھ، ہم صرف اسے دیکھ نہیں سکتے. اور یہ کہ اس خیال کو جاتا ہے - اور ہم میں بہت زیادہ حاصل کرنے کے لئے نہیں جا رہے ہیں یہ، اس کے بعد ہے کیونکہ اس کورس کے دائرہ کار. ہم لیکن اگر ہم، یہاں کے بارے میں بات کی طرف سے صف کی حد سے باہر چلا گیا 1، ہم مصیبت میں حاصل نہیں کر سکتے. کبھی کبھی، آپ کو صرف 1 کی طرف سے جب، آپ کچھ غلط کر رہے ہیں، اور مصیبت میں حاصل کر سکتے ہیں. لیکن تم نے ہمیشہ مصیبت میں حاصل نہیں ہے. یہ انحصار کرتا ہے کتنی بری بات کی آپ ، اگر آپ کو مصیبت میں حاصل کرنے کے لئے جا رہے ہیں. میلا ہو، کا کہنا ہے کہ نہیں ہے آپ کوڈ کے ساتھ. لیکن یہ پروگرام نہیں کریں گے، کہنا ہے آپ کو کہیں جانا یہاں تک کہ اگر ہمیشہ، چھوڑ آپ کو جانا نہیں کر رہے ہیں. اس کی ایک اچھی مثال، کی ایک بہت ہے ان کا مسئلہ میں لوگوں کے، 3 سیٹ جس 15، کی جانچ پڑتال نہیں کیا گیا تھا بورڈ کی حد. تو آپ کو دیکھا، بائیں دیکھا حق، دیکھا، اوپر دیکھا سب سے نیچے دیئے. لیکن آپ کو دیکھنے کے لئے چیک کرنے کے لیے نہیں کیا تو سب سے اوپر اصل میں بورڈ پر جا رہا تھا. اور یہ کہ کیا ان لوگوں کے جو ایک بہت ہے اور کہ میں تبدیل کر دیا، ان کے پروگرام کام بالکل، کہ جہاں بورڈ تھا کیونکہ آپ کو ایک چلا گیا، تو میموری میں محفوظ اس کے اوپر یا جانچ پڑتال کہ میموری پتہ، کچھ بھی نہیں تھا اس کے بارے میں خاص طور پر خوفناک، تو آپ کے پروگرام نہیں تھا آپ کو چللاو جا. لیکن ہم اب بھی پوائنٹس سے دور لے جائے گا اگر آپ چیک کریں کہ نہیں تھا آپ کی وجہ سے تم نہیں تھے کچھ کر رہے تھے کرنا، اور آپ کر سکتے ہیں مصیبت میں ہو. مشکلات تو شاید آپ نے نہیں کیا، اگرچہ، ہیں. تو یہ، جی ہاں، یہ دکھانے کے لئے ہے ہم اب بھی اس کے لئے جا سکتے ہیں. اور ہم میں حاصل نہیں کر رہے ہیں اس معاملے میں مصیبت. ہم پڑھتے ہیں کرنے کی کوشش کی تو اگلا 100 سے کم حروف، کہ ہم شاید مصیبت میں ملتا ہے. اور آپ کو اگلے 100 پڑھنے کوڈ کر سکتے ہیں حروف آپ کو کچھ کرنے کی طرف سے کرنا چاہتے ہیں تو قسم کے لوپ کے لئے. جی ہاں. طالب علم: ہم تفویض کئے گئے تھے کے بعد کہ خلائی ایک حقیقی قیمت، ہم نہیں کریں گے اصل میں کچھ بھی دیکھنے کے لئے کے قابل ہو جائے. ہم ترتیب کے ساتھ اس کی کوشش کرنی چاہئے C یا کچھ اور طرح کے برابر ہے؟ JASON HIRSCHHORN: بڑا سوال. میں کس طرح ہے کہ قیمت مقرر کرتے ہیں - جو کوڈ کے مطابق میں لائن پر لکھ سکتا ہوں سات تم نے کہا کیا ہے؟ طالب علم: سٹار PTR ایک کے برابر ہے اقتباس ایک اقتباس ختم ج. JASON HIRSCHHORN: تو یہ ڈال ہے ایک کردار، C، اس مقام پر، کیونکہ ایک بار پھر، کہ ستارہ وہاں جانے کا مطلب ہے. اور بائیں ہاتھ کی طرف سے استعمال کیا جاتا ہے جب ایک تفویض آپریٹر، کہ برابر سائن ان کریں، ہم حاصل کرنے کے لئے نہیں کر رہے ہیں کہ قدر ہے کہ قیمت مقرر کے طور پر اتنا. اب دیکھتے ہیں کیا ہوتا. ہم وہاں کچھ ڈال اور یہ وہاں تھا. ہم ڈاؤن لوڈ، اتارنا ملاقات کی. کچھ چیزیں شاید ہوا ڈھیر پر. تو یہ وہاں نہیں ہے. لیکن پھر، ہم نہیں مل رہے ہیں وہاں جا کے لئے مصیبت میں. میں وضاحت کرنے کے لئے کوڈ میں یہ کر رہا ہوں کہ ان کی ایک بہت ہے کہ آپ کے سوالات، وہ کر رہے ہیں واقعی دلچسپ وقت کی ایک بہت کا جواب ہے. اور وہ واقعی اچھے سوالات ہیں. اور تم پر ان کے اعداد و شمار کر سکتے ہیں آپ کے مالک ہیں، مثال کے طور پر، ہم کے حصے میں نہیں ہیں. جی ہاں. طالب علم: اگر آپ کو نہیں بھیج رہے ہیں کہیں بھی اشارہ ہے، آپ کو کرنے کی ضرورت ہے malloc کا استعمال کرتے ہیں؟ JASON HIRSCHHORN: تو یہ واپس چلا جاتا ہے آپ کے ابتدائی سوال. [؟ ؟] یہ صرف ایک مقامی متغیر ہے؟ یہاں MALLOC مجبور نہیں ہے. یہاں malloc کے کا استعمال نہیں ہے یہ ہے اس کی وجہ سے مجبور صرف ایک مقامی متغیر. طالب علم: تو تم چار کر سکتے ہیں سٹار PTR خوش برابر ہے؟ JASON HIRSCHHORN: اوہ. تو اب ہم واپس حاصل کرنے کے لئے جا رہے ہیں آپ کے ابتدائی سوال. میں نے تم سے مطمئن نہیں تھے میرے جواب کے ساتھ. ٹھیک ہے؟ کی طرح؟ طالب علم: جی ہاں. انتظار کریں. JASON HIRSCHHORN: اور جہاں آپ کو پرنٹ کرنے کے لئے چاہتے ہیں؟ تو ہم اس طرح ایک سٹرنگ پرنٹ گا؟ طالب علم: دلچسپ. JASON HIRSCHHORN: تو اس کا کہنا ہے کہ دلیل ایک کردار کی قسم ہے. تو یہ ایک کردار ہونا چاہئے. طالب علم: بس سب سے پہلے لیتا ہے. JASON HIRSCHHORN: تو یہ میں نے پہلے کہا ہے. جیسا کہ میں ذخیرہ کرنے نہیں ہے، انہوں نے کہا کہ متغیر پوائنٹر کے اندر سٹرنگ. ذخیرہ کرنے ہے - طالب علم: پہلی قیمت تار کی. JASON HIRSCHHORN: ایڈریس کی تار کی پہلی قیمت. ہم اس کو پرنٹ کرنے کے لئے تھے، ہم پوائنٹر کے اندر قیمت حاصل. اور ہم، یہ واقعی، ہے نظر آئے گا ایک میموری ایڈریس. احساس ہے کہ ہے؟ معذرت. کہ آپ کا جواب ہے، انتظار کریں سوال، اگرچہ؟ طالب علم: جی ہاں. JASON HIRSCHHORN: کوڈ کے اس لائن ہے ایک تار اور پھر دوسرے پیدا کی طرف اشارہ ہے کہ متغیر پوائنٹر کہ سٹرنگ کرنے کے لئے، اس صف. جی ہاں. ہم ایک میموری گیا تو اگر: طالب علم مزید پتہ، ہم ایچ ملے گا؟ یہ ایک تار کے طور پر محفوظ کیا گیا ہے؟ JASON HIRSCHHORN: کی طرح، ہم نے کیا - تو ایسا قابل قدر ہے. یہ نقطہ ریاضی، جس میں تم لوگوں کو ہے اس سے پہلے دیکھا ہے اور ہونا چاہئے کے ساتھ نسبتا آرام دہ اور پرسکون. اس تحریر سے ماخوذ ہے - ہم نے کوڈ کی اس لائن لکھنے کے لئے تھے، تو ہم نے پہلے سرنی سنکیتن دیکھا ہے. اس سے ہمیں دوسری دینا چاہئے اس صف، ایچ میں قیمت. ہم نے یہ کیا ہے، تو یہ بھی دینا چاہئے ہم اس صف میں دوسری قیمت. یہ یاد کرنے کے لئے نہیں جا رہا ہے کیونکہ پہلی بات کا پتہ، لیکن ایک سے زیادہ بات کی یاد ایڈریس. اور پھر سٹار آپریٹر dereferences کی اس پوائنٹر. اور پھر، چلو دیکھتے ہیں. ہم پھر H حاصل. طالب علم: کیا بالکل کرتا ہے مطلب dereference؟ JASON HIRSCHHORN: Dereference پر جانے کے لئے ایک پسند ہیں لفظ ہے. کہ جاؤ اور وہاں کیا حاصل ایک پوائنٹر dereference ہے. یہ اس کے لئے صرف ایک پسند ہیں لفظ ہے. ہم پرنٹ کرنا چاہتا تھا تو: طالب علم پورے سٹرنگ، کر سکتے تھے ہم ایمپرسینڈ پوائنٹر کرتے ہیں؟ JASON HIRSCHHORN: ٹھیک ہے، ہم ہیں یہاں کو روکنے کے لئے جا رہا. ہم یہاں ختم کرنے کے لئے جا رہے ہیں. ایمپرسینڈ آپ کو ایک کا پتہ دیتا ہے مقام، تو جب تم میں سے ایمپرسینڈ کرنا ایک متغیر، یہ آپ کا پتہ دیتا ہے کہ متغیر محفوظ کیا جاتا ہے، جہاں. ایمپرسینڈ پوائنٹر آپ کو دے گا PTR یاد میں ہے جہاں PTR کا پتہ. ہم پر جانے کے لئے نہیں جا رہے ہیں اس مثال کے ساتھ. آپ کو ان اعداد و شمار کر سکتے ہیں اپنے اپنے طور پر چیزیں. لیکن پھر یہ بھی ایک verging ہو سکتا ہے آپ کے لئے جاننے کی ضرورت ہے سے باہر تھوڑا سا یہ وسط مدتی کی گنجائش - یا اس کوئز، بلکہ. معذرت. میں کروں گا کیونکہ ہم، پر منتقل کرنے کے لئے جا رہے ہیں ایک کوڈنگ مسئلہ کرنا پسند وقت ہے اس سے پہلے. اور ہم میں کیا سوچتے کوڈ جا رہے ہیں ان میں سے سب سے زیادہ مجبور ہے مثالیں، atoi. تو اس پر ایک سوال یہ تھا دو سال پہلے کوئز. اور میں یہاں بورڈ پر ہے. لوگ گئے تمام سوالات پر کہا گیا تھا - وہ میں تھوڑا زیادہ tesxt دیا گیا سوال، لیکن میں ختم کہ یہ ضروری تھا کیونکہ متن اب ہمارے مقاصد کے لئے. یہ صرف کچھ پس منظر تھا کیا کیا atoi پر. لیکن آپ سب جانتے ہیں اور بہت atoi سے واقف. میں آپ کو یہ کوڈ کا مشورہ کاغذ کی ایک شیٹ پر. میں بھی آپ کو حکمت عملی کا استعمال کا مشورہ دیتے ہیں ہم ختم ہو گیا ہے کہ ہمارے حصے میں ایک بہت. سب سے پہلے، یقینی بنائیں کہ آپ کو سمجھانے کیا atoi کی کر. ایک تصویر اپنی طرف متوجہ یا کچھ کے ساتھ آئے آپ کے سر میں اس کے ذہنی تصویر. اگلا، اس کے لئے pseudocode لکھنے. گئے تمام سوالات پر، آپ کو ملتا ہے تو pseudocode، کم از کم آپ کچھ نیچے رکھ. اور پھر پر کہ pseudocode نقشہ سی آپ میں ایک چیک ہے تو آپ pseudocode، طرح چیک کریں، تو کچھ 1، کہ ایک تو پر نقشے ہے وغیرہ حالت اور. اور آخر میں، سی میں پروگرام کے کوڈ تو واپس atoi کے پاس جاؤ اور پانچ منٹ لے کی ایک شیٹ پر اس کوڈ کو کے لئے کے بارے میں شاید ہے جو کاغذ، اگر آپ کو ایک پر لے جائے گا وقت کی رقم کوڈ atoi کے لئے کوئز. پانچ سے 15 منٹ، پانچ پانچ، 12 10 منٹ، رقم کے بارے میں ہے آپ کو اس پر خرچ کروں گا وقت کوئز میں سوال. تو، اب پانچ منٹ براہ مہربانی لے. اور آپ کسی بھی سوال ہے تو، میں اضافہ آپ کے ہاتھ اور میں کے ارد گرد آئے گا. [ضمنی CONVERSATIONS] JASON HIRSCHHORN: ٹھیک ہے، تو کہ پانچ منٹ تھا. اس رقم کے بارے میں شاید تھا وقت آپ کو، ایک گئے تمام سوالات پر اس پر خرچ کروں گا اس وقت شاید کم اختتام. ہم تھوڑا سا میں recap گے. ہمیں اس کوڈنگ شروع. اور ہم سب کے راستے کے ذریعے حاصل نہیں کرتے ہیں تو، اس کے جواب اور اس کوئز سوال ایک بار پھر، دستیاب ہیں، موسم خزاں 2011 اس سوال کا ہے جب کوئز پر شائع. اور یہ آٹھ پوائنٹس کے قابل تھا کوئز پھر. آٹھ پوائنٹس کے اعلی کے آخر پر ہے پوائنٹس کچھ کی رقم کے قابل ہے. سب سے زیادہ سوالات رینج میں ہیں ایک سے چھ پوائنٹس کی. تو یہ ایک زیادہ مشکل ہے اس بات کا یقین کے لئے سوال،. مجھے کسی کو شروع کرنے کے لئے کر سکتے ہیں؟ عام طور پر، کیا ہم جا رہے ہیں اس کے ساتھ کیا کرنا چاہتے ہیں کے لئے منطقی طور پر، atoi تقریب؟ ہم کیا کرنا چاہتے ہیں؟ تو ہم نے لکھنے کے لئے جا رہے ہیں کچھ pseudocode. طالب علم: حروف میں تبدیل integers کے میں. JASON HIRSCHHORN: حروف میں تبدیل integers کے میں. ٹھیک ہے. تو کس طرح بہت سے حروف ہم ہیں کے ذریعے جانا کرنے کی ضرورت ہے کرنے کے لئے جا رہے ہیں؟ طالب علم: ان میں سے سب. طالب علم: تمام حروف تار میں. JASON HIRSCHHORN: تمام سٹرنگ میں حروف. ہم ہر کے ذریعے جانے کے لئے کرنا چاہتا تھا اگر ایسا ہے تو ایک تار میں کردار، ایک بات کیا ہے C میں ہم اجازت دی ہے دیکھا ہے ہمیں ہر ذریعے جانے کے لئے ایک تار میں کردار؟ طالب علموں: لوپ کے لئے ایک. JASON HIRSCHHORN: لوپ کے لئے ایک. تو ہم کے ذریعے لوپ کرنے جا رہے ہیں ے میں ہر کردار. پھر کیا ہم کرنا چاہتے ہیں جا رہے ہیں ہم ایک مخصوص کردار حاصل ہے؟ ہم نے ایک 90 منظور ہو رہی کر رہے ہیں. ہم 9 حاصل. یہ ایک کردار ہے. کیا ہم کے ساتھ کیا کرنا چاہتے ہیں اس کردار 9؟ طالب علم: کردار 0 سے تفریق؟ طالب علم: 0 شامل؟ JASON HIRSCHHORN: تفریق کردار 0 سے؟ طالب علم: جی ہاں. JASON HIRSCHHORN: کیوں اگر آپ ایسا کرنا چاہتے ہیں؟ طالب علم: [اشراوی] قیمت. اس INT قیمت. JASON HIRSCHHORN: ٹھیک ہے، تو ہم لے کردار 9، سے منہا کردار 0 ایک حاصل کرنے کے لئے اصل عددی 9. میٹھی. اور تم کس طرح کہ کردار جانتے ہیں 9 0 منفی کردار 9 ہے؟ آپ کو کیا چارٹ دیکھا؟ طالب علم: نو منطقی ہیں 9 اور 0 کے درمیان مقامات. یا آپ ASCII میز پر دیکھ سکتا ہے. JASON HIRSCHHORN: ASCII ٹیبل. لیکن ہاں، آپ کے ساتھ ساتھ درست ہے. تو ہم 0 منہا. تو اب ہم عددی 9 ہے. اور کیا ہم اس کے ساتھ کیا کرنا چاہتے ہیں؟ ہم 90 ہے، تو یہ سب سے پہلے عددی ہے ہم کیا کرنا چاہتے ہے؟ طالب علم: میں نے ایک عارضی عددی میں ڈال دیا تھا صف، پھر اس کے لئے ریاضی کرتے بعد میں ایک کے آخر میں بنانے کے لئے. JASON HIRSCHHORN: ٹھیک ہے. طالب علم: آپ کے آخر میں شروع کر سکتے ہیں پھر صف اور تو آگے بڑھنے کہ آپ کو آگے بڑھنے کے لئے ہر وقت، آپ کو 10 سے گنا. JASON HIRSCHHORN: ٹھیک ہے. یہ ایک بہت کی طرح لگتا ہے مجبور خیال. ہم ہمارے صف کے آخر میں شروع کر سکتے ہیں، اور ہم strleng استعمال کر سکتے ہیں. ہم یہاں strleng استعمال کر سکتے ہیں. ہم اپنے سٹرنگ کی لمبائی کو حاصل کریں گے. ہم آخر میں شروع. اور + سب سے پہلے، ہم صرف لے کہ عددی، اور شاید ہم ایک طرح کی تخلیق نئے عددی متغیر اوپر جہاں ہم سب کچھ ذخیرہ کرنے کر رہے. سے ے میں ہر چار کے ذریعے تو ہم لوپ واپس سامنے، ہم 0 منہا، اور تو پھر ہم اسے لے لو، اور پر منحصر ہے وہ کہاں ہے، ہم اسے ضرب 10 کے ایک طاقت کی طرف سے. کیونکہ سب سے پہلے، کیا ہم کرتے ہیں rightmost کردار کی طرف سے ضرب؟ طالب علم: 0 10. JASON HIRSCHHORN: 0 10. ہم دوسرے کیا ضرب کرتے ہیں rightmost کردار کی طرف سے؟ طالب علم: [اشراوی]. JASON HIRSCHHORN: کیا؟ طالب علم: 1 10. JASON HIRSCHHORN: 1 10. تیسری rightmost کردار؟ طالب علم: 2 10. JASON HIRSCHHORN: 2 10. طالب علم: معذرت، میں نہیں سمجھتا ہم یہاں کیا کر رہے ہیں. JASON HIRSCHHORN: ٹھیک ہے، پھر، واپس جانے. تو ہم نے حاصل کرنے کے لئے جا رہے ہیں ایک سٹرنگ میں منظور. ہم atoi لکھ رہے ہیں کیونکہ. تو ہم نے ایک سٹرنگ میں منظور ہو. ہم منظور ہو رہی کر رہے ہیں سٹرنگ 90 میں. ہم کیا کرنے جا رہے ہیں سب سے پہلی چیز مقرر کیا گیا ہے ہم ہیں کہ ایک نئے عددی متغیر صرف پیدا کرنے والا ہمارے نئے عددی طور پر. کہ ہم جا رہے ہیں آخر میں واپس کرنے کے لئے. ہم میں ہر کردار کے ذریعے جانا کرنے کی ضرورت ہے سٹرنگ ہم نے مقرر کیا ہے کیونکہ ہم میں سے ہر ایک چھو کرنے کی ضرورت ہے اور یہ کہ تو ہمارے نئے عددی میں شامل کریں. لیکن ہم صرف ایک نمبر کے طور پر شامل نہیں کر سکتے. ہم صرف 9 لے اور نہیں کر سکتے ہیں ہماری عددی 9 شامل کریں. یہ کیا جگہ پر منحصر ہے اس تار میں ہے. ہم ضرب کرنے کی ضرورت ہے کرنے کے لئے جا رہے ہیں یہ 10 کی طاقت کی طرف سے. کہ ہے کیونکہ کس طرح بیس 10 کام. تو ہم اصل حاصل کرنے کے لئے جا رہے ہیں کردار، یا اصل عددی تعداد، کردار 0 subtracting کی طرف سے کردار 9 ہم کے ساتھ کیا تھا کی طرح سے کی طرف سے کردار دارالحکومت تفریق ہم میں سے ایک میں تھا جو کچھ بھی کردار ان مسائل. تو ہم اصل میں 0 سے ایک بڑی تعداد مل جائے گا 9 ایک حقیقی تعداد کے طور پر محفوظ، اور ہم کریں گے کے لحاظ سے 10 کی طاقت کی طرف سے ضرب ہم سٹرنگ میں ہیں جہاں پر. اور پھر ہم اسے واپس شامل کرنے کے لئے جا رہے ہیں ہمارے نئے عددی متغیر میں. تو کیا اس طرح ہی نظر آئے گا ہم یہاں پر اپنی طرف متوجہ کریں گے - کیا جائے. ہم سٹرنگ 90 میں منظور ملتا ہے - طالب علم: [اشراوی]. JASON HIRSCHHORN: لیکن atoi ایک تار لیتا ہے. تو ہم کے ذریعے جانے کے لئے جا رہے ہیں انعقاد. ہم 90 میں منظور ہو جائے گی. ہم سامنے سے واپس جانا. ہم 0 لے. طالب علم: میں معافی چاہتا ہوں. شاید یہ پاگل ہے. ہم ایک تار میں منظور ہو رہی ہے، ہم کیوں ہو کیا بات ہے 90 ہے میں منظور ہو رہی ہے؟ 90 ایک عدد صحیح ہے. JASON HIRSCHHORN: atoi ایک لیتا ہے کیونکہ سٹرنگ اور عددی میں بدل جاتا ہے کہ سٹرنگ کی نمائندگی. لیکن سٹرنگ 90 عدد صحیح نہیں ہے 90 یا نمبر 90. سٹرنگ 90 ایک دو کی صف، یا تین حروف، بلکہ، 9 کردار، 0 کے کردار، اور الٹا سلیش 0 کردار. اور ہم نے اس وجہ سے، کے لئے atoi لکھ رہے ہیں مثال کے طور پر، آپ کو کمانڈ لے جب لائن کی دلیل ہے، اور اس میں محفوظ ہے ہے argv، یہ ایک تار کے طور پر محفوظ ہے. لیکن اگر آپ ایک بڑی تعداد کے طور پر اس کا علاج کرنا چاہتے ہیں تو، آپ کو ایک اسے تبدیل کرنے کی ضرورت ہے اصل عددی. جو ہم ہمارا مسئلہ سیٹ میں سے ایک تھا. ہم ایک بڑی تعداد میں نے کون سا ہمارا مسئلہ سیٹ کی. ایک عددی لیا کہ سب ایک کمانڈ لائن کی دلیل کے طور پر. تو یہ کیوں ہے ہمارے atoi تقریب ایک تار لیتا ہے. تو پھر، یہاں ہماری مثال میں، ہم گزشتہ ایک لے جا رہا. ہم کردار منہا کرنے جا رہے ہیں اس سے 0، کیونکہ حروف 0 کردار 0 چکاہے آپ کو دیتا ہے کے مطابق اصل تعداد 0، کہ ہم ایسا کرتے ASCII ریاضی. حروف کے طور پر نمائندگی کر رہے ہیں کیونکہ ان کی اصل سے مختلف - کردار ایک، مثال کے طور پر، چھوٹے ایک 97 ہے. یہ نہیں ہے - افوہ! یہ آپ توقع کریں گے، جو کچھ بھی نہیں ہے یہ مثال کے طور پر،، 0 ہو. تو آپ کو منہا کرنے کے لئے ہے کردار ایک 0 حاصل کرنے کے لئے. تو ہم یہاں ایسا کرنے کے لئے جا رہے ہیں اصل تعداد حاصل کرنے کے لئے. اور پھر ہم سے گنا کرنے کے لئے جا رہے ہیں 10 کی طاقت، جہاں اس پر منحصر ہے تار میں ہے، اور پھر اس لے اور ہماری جگہ ہولڈر میں شامل کریں متغیر تو ہم ساتھ آ سکتا ہے ہماری آخری نئے عددی. کہ سب سمجھ میں آتا ہے ہے؟ تو ہم اس کوڈ کو نہیں کر رہے ہیں اب، کیونکہ ہم ہیں وقت پر مختصر حاصل کرنے کے. میں نے اس کے وقت کے لئے معذرت خواہ ہیں. لیکن یہ کیا، امید ہے کہ، آپ گے میں - کوئز پر کرنے کے لئے کے قابل ہو جائے بہت کم از کم، اس pseudocode حاصل لکھا. اور پھر، ہم اگر لکھنا pseudocode، اصل میں، ہم یہ کر سکتے ہیں بہت تیزی سے. ہم نے لکھا ہے تبصرے کی ہر سطر یہاں کے بارے ترجمہ C کوڈ کی ایک لائن. نیا متغیر، تحریری طور پر اعلان ایک لوپ، کچھ باقی نکالنا، کچھ ضرب، اور کچھ تفویض. ہم شاید یہ بھی چاہتے ہیں ایک واپسی لائن لکھنے. ہم نے بھی ڈال کرنا چاہتے ہیں کر سکتے ہیں یہاں میں کچھ چیک. جی ہاں. طالب علم: تو ہم علاج کر سکتے ہیں اصل تار کے طور پر کے؟ کیونکہ مجھے پتہ ہے یہ صرف ایک پتہ ہے. کی طرح، آپ کو کس طرح کی لمبائی کی ملے گا تار کے ذریعے منظور کیا جا رہا ہے؟ JASON HIRSCHHORN: تو کس طرح کیا ایک تار کی لمبائی؟ strlen کی. طالب علم: strlen کی، جی ہاں. لیکن آپ کے کی ڈال کر سکتے ہیں اس کے لئے دلیل ہے؟ JASON HIRSCHHORN: تو strlen ایک چار ستارہ لیتا ہے. اور یہ کہ چار سٹار مندرجہ ذیل، اور یہ یہ ایک ہو جاتا ہے جب تک گنتی رکھتا ہے الٹا سلیش 0. strlen کی اصل میں تھا دیگر پروگراموں میں سے ایک ہم کوڈ جا رہے تھے. اس کوڈ کرنے کے لئے ایک اچھا میں سے ایک ہے. یہ ایک، تھوڑا سا آسان ہے کیونکہ اگر آپ اس کے بارے میں سوچنے کے لئے جا رہے ہیں تصوراتی - میں نے صرف اسے با آواز بلند کہا کہ - strlen کی مندرجہ ذیل ایک پوائنٹر اور رکھتا جا رہا ہے اور گنتی اور جب تک ٹریک رکھنے آپ کو ایک الٹا سلیش 0 تک پہنچنے کے. طالب علم: ٹھیک ہے، یہ مل گیا. JASON HIRSCHHORN: تو بہترین کوئز 0 کل پر قسمت. اگر آپ کو کوئی سوالات ہیں، تو، میں گے اس کے بعد باہر ہو جائے. مجھے ای میل کرنے کے لئے آزاد محسوس کرتے ہیں. اگر آپ کو آپ کے اپنے TF تک پہنچنے میرے حصے میں، یا حاصل نہیں میری آپ یہ چاہتے ہیں تو ای میل کے. آپ کو پاگل کرنا چاہتے ہیں اور صرف بھیجتے ہیں تو مجھے ایک ای میل، ایک freakout ای میل، میں گے ، جذباتیہ، کی طرح، آپ کو واپس بھیجنے کے یا، کی طرح، ایک مذاق یا کچھ اور. تو اس کے ساتھ ساتھ ایسا کرنے کے لئے آزاد محسوس کرتے ہیں. گڈ لک ایک بار پھر، اور میں کروں گا تمام اگلے ہفتے ملتے ہیں.