>> [موسیقی بجانے]
DAVID J. MALAN: اس طرح ہے ایک freshman سیمینار آج.
ٹھیک ہے.
باہر تو بہت برسات.
یہ بدھ پر ہو جاتا ہے، لیکن سب سے زیادہ موقع
سوالات کے لئے آج.
تو اصل میں شروع چلو صرف ایک لمحے میں فلم کے ساتھ.
لیکن ہم نے ہمیشہ کے طور پر grandly شروع کر دیں گے.
>> یہ CS50 ہے، اور یہ ہفتہ 4 کا اختتام ہے.
کیا تم نے کبھی دیکھا ہے تو ٹی وی یا ایک فلم جس
کچھ کمپیوٹر ماہرین موجود ہے اور پولیس، یا ایف بی آئی، یا کسی ایجنسی
کچھ پکڑنے کی کوشش کر رہا ہے دشمن، اچھی طرح سے، آپ نے
شاید "، کو بہتر بنانے کے" اظہار سنا جس کہ ٹیکنیشن کسی نہ کسی طرح
جادوئی لامتناہی میں zooms مجرموں کو دیکھنے کے لئے دور
شناخت یا لائسنس پلیٹ نمبر ایک عکس بھی ٹمٹمانا میں
یا کسی کی آنکھ میں چمک.
تو یقینا، کی پر ایک نظر ڈالیں ہالی ووڈ سے چند اس طرح کے مناظر.
[ویڈیو پلے بیک]
ٹھیک، اب آپ کو ایک اچھی طرح سے دیکھ حاصل کرنے کی اجازت.
>> -اسے پکڑو.
واپس چلائیں.
>> -ایک منٹ انتظار.
درست جانا.
>> -آمدید، کہ منجمد.
-مکمل اسکرین یا بڑی اسکرین.
ٹھیک، کہ منجمد.
آپ اس پر اپ کو سخت کرے؟
اس پر میں -Vector واپس وہیل کی طرف سے آدمی.
یہیں اس موقع پر میں زوم.
صحیح سامان -ساتھ، تصویر وسیع اور تیز کیا جا سکتا ہے.
-وہ کیا ہے؟
-یہ ایک اضافہ پروگرام ہے.
کہ کوئی واضح آپ -سکتے؟
-مجھ نہیں پتہ.
اس میں اضافہ کرتے ہیں.
>> -Enhance سیکشن A6.
>> -میں تفصیل بڑھا، and-- میں وہاں ہے
کو بڑھانے کے لئے کافی، میرے سکرین پر اس کی رہائی.
-میں اس کی آنکھوں میں عکاسی بڑھا.
>> -چلو ذریعے اس کو چلانے ہے ویڈیو اضافہ.
-Edgar، آپ اس میں اضافہ کر سکتے ہیں؟
>> -انتطار کرو.
>> اس کی عکاسی پر کام کر رہا -I've.
>> -Someone کی عکاسی.
-Reflection.
آدمی کے چہرے کا عکاس-ہے.
-مندرجہ عکاسی.
عکاس-ہے.
آئینے پر میں زوم.
-آپ کو ایک عکس دیکھ سکتے ہیں.
آپ یہاں سے تصویر کو بڑھانے -سکتے؟
تم یہیں اس میں اضافہ -سکتے؟
تم اس میں اضافہ -سکتے؟
تم اس میں اضافہ کر سکتے ہیں؟
>> ہم اس میں اضافہ -سکتے؟
>> تم اس میں اضافہ -سکتے؟
ایک دوسرے پر ذرا رکو، میں بڑھانے ہوں گے.
دروازے پر میں زوم.
10 -Times.
زوم.
-آگے چلو.
-More.
رکو، کو روکنے کے.
سٹاپ.
یہ -Pause.
ہم 75 ڈگری -Rotate عمودی کے ارد گرد، براہ مہربانی.
سٹاپ.
حصہ پر واپس جائیں پھر دروازے، کے بارے میں.
>> بٹ نقشہ سکتا ہے کہ ایک تصویر enhancer- ملا؟
>> -Hey، شاید ہم پردیپ استعمال کر سکتے ہیں سین طریقہ ونڈوز میں دیکھنے کے لئے.
-یہ سافٹ ویئر آرٹ کی ریاست ہے.
>> -مندرجہ eigenvalue بند ہے.
>> حق -ساتھ الگورتھم کا مجموعہ
>> -انہوں نے کہا کہ کے خاتمے لیا اگلے سطح پر یلگوردمز،
اور میں ان کا استعمال کر سکتے ہیں اس تصویر کو بڑھانے کے.
>> پر تالا اور Z محور کو وسعت.
>> -Enhance.
-Freeze اور بڑھانے.
>> [END پلے بیک]
>> DAVID J. MALAN: ٹھیک ہے، تو ان میں سے سب اصل الفاظ ہیں.
وہ صرف ایک دوسرے کے ساتھ ہوا میں کر رہے ہیں اصل میں سمجھدار نہیں ہے اس طرح.
یہ پسند ہے اور، حقیقت میں، CS50 اور کورسز ٹی وی اور فلموں کی ایک بہت برباد کرنے جاتا
آپ کے لیے.
جب ان کمپیوٹر ماہرین کیونکہ شرائط بند بلاجھجک اور کہہ رہے ہیں
طرح فینسی چیزیں eigenvectors، اور Z محور،
اور دیگر کی کسی بھی تعداد اصل میں زیادہ تکنیکی اصطلاحات،
وہ واقعی صرف تھریڈنگ رہے الفاظ ایک دوسرے کے ساتھ سب بھی اکثر.
ہماری امیدوں میں سے ایک یہ ہے کہ، لینے کورس کی ایک ضمنی اثر کے طور پر
میں اس طرح، زیادہ سے زیادہ لوگوں دنیا اصل میں وزن کرنے کے لئے کے قابل ہو جائے
اور صرف کبھی تو تھوڑا سا اثر انداز معیار اور ان فلموں کی درستگی؟
>> اصل میں، کی حقیقت پر ایک نظر ڈالیں.
تو یہاں کے عملے تصویر ہے مریم، ہماری تعلیم ساتھیوں میں سے ایک.
اور وہ لگتا کچھ کا شبہ.
اور ابھی تک، کی ایک کرن ہے اس کی آنکھوں میں ثبوت کے کچھ ٹکڑے،
یا اس عینک کی عکاسی میں.
ٹھیک ہے، ہم فلموں کے طور پر بالکل وہی کرتے ہیں تو ہم زوم اور "بڑھانے" جس، تجویز،
یہ کس طرح زیادہ سے زیادہ معلومات ہے مریم کے چہرے میں ہے
آپ کو ایک تصویر پر قبضہ جب کہ اصل قرارداد کے ساتھ.
>> اور، اصل میں، آپ کو اس نقطے دیکھ سکتے ہیں.
اور یہ چاروں کیا ہیں کہا جاتا پکسلز، P میں ایکس ای ایل ایس،
جو عام طور پر صرف ایک مربع ہے ایک تصویر ہے کہ composes پر ہے کہ ایک نقطہ ہے.
اور دن میں واپس، اور اصل میں بھی آج کی یلئڈی ٹی وی سے کچھ کے ساتھ آج
یا LCD ٹی وی، آپ کو مل گیا ہے تو اپنے کمرے میں یا گھر میں ایک،
آپ کو اس کی سپر قریب جانا، اور اگر یہ کسی حد تک پرانے ٹی وی ہے خاص طور پر اگر،
شاید آپ بھی ان نقطوں کو دیکھ سکتے ہیں اور یہ کہ ایک تصویر تحریر کیا ہے.
>> اور نہیں ہے اس سے معلومات.
ہم کے معنوں میں، "بڑھانے" کر سکتے ہیں زیادہ اور اس طرح کی چیزیں سموتھنگ
قسم کے، کی طرح کیا تاثر رنگ میریز آنکھ سے اگلے ہونا چاہئے
تاکہ یہ اصل میں تو pixelated ہے نہیں ہے.
لیکن میں میں zooming رہیں گے تو وہاں اس کی آنکھوں میں برا آدمی ہے.
اس طرح ہے معلومات ہم نے ہے.
آپ کی تشکیل نہیں کر سکتے ہیں کچھ نہیں سے باہر معلومات.
صرف ایک محدود نہیں ہے وہاں بٹس کی تعداد.
>> مسئلہ سیٹ 4، جہاں میں تو آپ کو ایک موقع ہے
دنیا کے اس قسم کے ساتھ کھیلنے کے لئے.
مسئلہ سیٹ 4، آپ دریافت کریں گے گرافکس، اور عدالتی کی دنیا،
اور اصل میں کوڈ لکھنے کہ کھو تصاویر ٹھیک.
آپ کوڈ لکھتے ہیں گے کہ موجودہ تصاویر میں manipulates
اور بالآخر کیا ہے سمجھ ہڈ کے نیچے جا رہا.
>> اور، یہ اصل میں ہے، باہر کر دیتا ہے تمام ہے کہ پیچیدہ نہیں.
مثال کے طور پر، اگر ہم کرنا چاہتے تھے ایک جذباتیہ جہاں نمائندگی
یہ سیاہ پکسلز کے ساتھ، یا ان سیاہ نقطے،
اچھی طرح سے، ہم صرف کی نمائندگی کر سکتے ان کے طور پر صحیح معنوں میں ایک بٹ نقشہ.
اور اگر تم نے کبھی سنا تھا کہ اظہار بٹ نقشہ، شاید
اب یہ ایک بنانے کے لئے شروع ہوتا ہے تھوڑا زیادہ احساس آج.
>> ہم نے پہلے ہی تھوڑا سا ہے کیا پتہ.
یہ 0 یا 1 ہے.
اور ایک نقشے صرف کچھ ہے کاغذ کے ایک ٹکڑے کی طرح
کہ آپ ہدایات دیتا ہے اور شاید X- اور Y کے نقاط کی ایک گرڈ.
تو یہاں ایک بٹ نقشہ ہے.
یہ بٹس کی ایک نقشہ ہے جس کے تحت 1 بظاہر ہے
ایک سفید پکسل کی نمائندگی کرنے جا، اور ایک 0 سیاہ پکسل کی نمائندگی کرنے جا رہا ہے.
لیکن ہم یقینی طور پر اس کے ارد گرد پلٹائیں کر سکتے ہیں.
یہ واقعی کوئی فرق ایسا کرتا ہے ہم مسلسل ہیں کے طور پر طویل عرصے سے.
اور یہاں اندر binary-- میں، کہ کس طرح ہے ایک کمپیوٹر کی میموری کی، یا اس سے بھی اندر
آپ کی ہارڈ پر فائل کا drive-- آپ کو محفوظ کر سکتے ہیں
جذباتیہ تصاویر کی آسان.
لیکن ہم کیا ہیں، کورس کے، اس تصویر میں کمی؟
رنگ، ٹھیک ہے؟
یہ ایک واضح اگلے قدم ہے یا اضافہ رنگ کے ساتھ اس کو بہتر بنانے کے.
تو بدقسمتی سے صرف ایک کے ساتھ بٹ، 0 یا 1، ہم رنگ کی نمائندگی کر سکتے.
وہ لال، یا نیلے رنگ ہو، یا کر سکتے ہیں سیاہ، یا سفید، یا سبز، یا گلابی،
یا رنگ کے کسی بھی جوڑے.
لیکن سادگی کی خاطر، ہم کریں گے صرف سیاہ اور سفید فرض.
>> تو منطقی طور پر اگر ہم کی ضرورت ہے جو ہم ایک تصویر میں رنگ کو لاگو کرنا چاہتے ہیں؟
ہمیں کیا کرنا ہے؟
یہاں محدود عنصر تو طرح کہ ایک تھوڑا سا کے ساتھ آپ کو صرف کر سکتے ہیں ہے
دو ریاستوں، 0 یا 1، سفید نمائندگی یا سیاہ، آپ کیا کرنا چاہتے ہیں؟
سامعین: مزید اعداد و شمار.
DAVID J. MALAN: مزید بٹس، جی ہاں زیادہ ڈیٹا، زیادہ بٹس.
اور، یقینا، کہ کس طرح ہے رنگین تصاویر نمائندگی کر رہے ہیں.
ایک تھوڑا سا استعمال کرنے کی بجائے، ایک 0 یا ہر پکسل کے لئے 1، ہر نقطہ،
آپ کو صرف ایک سے زیادہ استعمال کرتے ہیں.
شاید شاید، زیادہ عام طور پر، 8 استعمال مسئلہ سیٹ میں، یقینا 24 استعمال کرتے ہیں اور
4، آپ کو ایک فائل کے ساتھ کھیلے گی عام طور پر 24 بٹس استعمال کرتا ہے کی شکل.
>> لیکن تم میں سے سب سے زیادہ شاید ہیں JPEGs کے ساتھ واقف.
کیا تم نے کبھی لیا ہے تو اپنے فون پر ایک تصویر،
یا اپ لوڈ کردہ یا کچھ دیکھا فیس بک، یا فلکر، کسی بھی تعداد
تصویر کی بنیاد پر ویب سائٹس میں سے، آپ نے شاید اس سے پہلے ایک JPEG تصویر دیکھا.
اور یہ فائل ہے، باہر کر دیتا ہے شکل ہم 4 pset پر میں استعمال کرنے کے لئے جا رہے ہیں
جس کے تحت آپ کے لئے جا رہے ہیں تصاویر کی وصولی کے لئے ہے
میں نے غلطی سے ایک سے خارج کر دیا ہے کہ کیمرے میں خراب میموری کارڈ،
اگر آپ.
>> اور یہ پتہ چلا ہے کہ اگرچہ JPEG خوبصورت sophisticated-- ہے
یہ بہت زیادہ جدید ترین ہے سیاہ اور سفید نقطہ کے مقابلے میں
کیونکہ وہاں ہم نے ایک لمحے پہلے دیکھا اصل میں پسند یلگوردمز کہ
تو، ایک JPEG سکیڑیں کرنے کے لئے استعمال کیا جاتا ہے آپ کو ایک بہت اچھا ہو سکتا ہے کہ،
معیار کی تصویر لیکن استعمال نسبتا چند بٹس.
اور ہم واپس آ جائیں گے طویل عرصے سے پہلے کمپریشن.
یہ سب سے پہلے پتہ چلا ہے کہ ایک JPEG image-- میں تین بائٹس
کوئی بات نہیں آپ کو ایک تصویر لے لیا ہے کیا of-- اقدار 255، 216، 255 ہیں.
>> دوسرے الفاظ میں، اگر آپ صرف بٹس کے اس پیٹرن کو دیکھ،
تین کے طور پر یہاں کی نمائندگی کی بائٹس، یا 24 بٹس، کل
اعلی امکان کے ساتھ آپ اندازہ کر سکتے ہیں کہ آپ کو اس سب سے پہلے تین اسے دیکھ رہے ہیں
ایک JPEG کے بائٹس.
اور یہ کیا جانا جاتا ہے ہے ایک JPEG کے دستخط کے طور پر.
فائل کی شکل کی ایک بہت شروع کرنے کے لئے ہوتے ہیں باہر
0s اور 1s کے بعض نمونوں کے ساتھ، ونڈوز، اور میک OS، اور iOS تو،
اور لوڈ، اتارنا Android جانتے فائل کس قسم کی وہ نام نہاد فائل کے علاوہ میں، ہیں
توسیع فائلوں کی ایک بہت ہے کہ.
آپ. فوٹو ہے تو، ہے کمپیوٹر کے لئے ایک اشارہ.
>> تو اب یہ دیکھو چلو تکنیکی طور پر ایک چھوٹا سا.
ہم دشملو جانتے نظام 9 کے ذریعے 0.
ہم بائنری 0 اور 1 ہے.
اور آپ pset پر واپس لگتا ہے 0، ہم آپ کے ساتھ کشتی تھا
تھوڑا سا، کچھ کے لئے شش اعشاری بلایا،
آپ 16 ہندسے ہے جہاں، بجائے 10 یا اس کے بجائے 2.
اور ان لوگوں کو ہندسوں، کنونشن کی طرف سے، پھر ایک 9 کے ذریعے 0 ہیں
F کیا نمائندگی کرتا ہے جہاں F، کے ذریعے صرف ایک فوری وویک کے طور پر دشملو تعداد،
چیک کریں؟
تو، 15.
اور صرف کی طرف سے، 10 کی نمائندگی کرتا ہے مجھے دیا ہے کہ حکم کی نوعیت.
یہ صرف ایک صوابدیدی کنونشن ہے لیکن یہ بہت معیاری ہے.
>> ہم اس پیٹرن میں نظر آتے ہیں تو تین میں سے دو bytes--
صرف اس کو دیکھنے کے لئے شروع کس طرح کے ساتھ مسلسل طریقے سے
عام طور پر کمپیوٹر کے سائنسدانوں دیکھو اور فائلوں کے بارے میں سوچنا.
آپ یقینی طور پر کے بارے میں سوچ کر سکتے ہیں 0s کے میں فائلوں، اور 1s، اور دشملو،
لیکن حقیقت میں، ہم بائنری استعمال کرتے ہیں یا اس سے زیادہ عام طور پر hexadecimal--
pset پر واپس جائیں 0 سے.
تو مجھے تجویز کرتے ہیں کہ 255، 216، اور 255 0s اور 1s کے صرف ان نمونوں ہیں.
اور تم اس تو چیک کر سکتے ہیں ہفتہ 0 سے ریاضی کرنا چاہتے ہیں.
لیکن، اب کے لئے، صرف فرض کہ یہ واقعی درست ہے.
میں صرف تین اعشاریہ دوبارہ ہے تین بائنری اقدار کے طور پر اعداد و شمار.
اب میں کیا کرنے جا رہا ہوں کچھ سفید جگہ شامل،
صرف پڑھنے کی اہلیت کے سبب سے.
اور نوٹس، میں صرف جا رہا ہوں چیزوں کے علاوہ منتقل کرنے کے لئے.
تو اس سے پہلے، کے بعد، اس سے پہلے کہ، کے بعد.
میں دوسرے دلچسپ کچھ کر رہا ہوں صرف اتنا چیزوں کو باہر پھیلانے کے مقابلے میں
کہ نوٹس آٹھ سے ہر ایک سیٹ بٹس اب چار بٹس کی دو سیٹ ہے.
یہ شش اعشاری کیونکہ مفید ہے خاص طور پر فیشن ہے
کیونکہ ہر شش اعشاری ہندسے 0 کے ذریعے F، یا اس سے زیادہ خاص طور پر 0 کے ذریعے 15،
نمائندگی کیا جا سکتا بالکل چار بٹس کے ساتھ.
دوسرے الفاظ میں، شش اعشاری میں اگر یہ صرف 0000 ہے، 0 نمائندگی کرنا چاہتے ہیں،
چار سے zeros.
اور آپ کو 15 کی نمائندگی کرنا چاہتے ہیں تو، یہ چار بٹس ہے جو، 1111 ہے.
اور آپ کو ریاضی کرتے ہیں تو، اس اکائی کی جگہ ہے،
اس، 16s کی جگہ ہے کہ you-- دینے جا رہا ہے
بلکہ اس جا رہا ہے معذرت to--، بائنری میں،
کہ 15 تمہیں دینے کے لئے جا رہا ہے، ہیں، جگہ، twos جگہ، چوکوں اور آٹھ جگہ.
تو مجھے کہ تجویز کرتے ہیں بائیں پر چار بٹس کی مقرر
ہم F فون کرنے جا رہے ہیں کیا ہے.
یہ سب سے بڑی تعداد ہے کہ آپ چار بٹس کے ساتھ نمائندگی کر سکتے ہیں.
اور ہم نے پہلے شش اعشاری سے جانتے ہیں، F شش اعشاری میں سب سے بڑا ایشو ہے.
ہم وہاں دوسرے F مل گیا ہے دو زیادہ.
اور اب کے لئے، صرف ایمان لے میں نے ریاضی ٹھیک کیا ہے کہ
اور یہ کہ بائیں نصف ان بٹس، 1101 کی،
شش اعشاری میں D کے طور پر ایک ہی بات ہے.
اور دائیں ہاتھ، 1000، صرف 8 ہے.
>> اور آسان ہے کہ ایک کا حق، کو دیکھنے کے لئے؟
8 کی نمائندگی کرتا ہے ٹھیک ہے کہ ایٹ مرحلے جگہ کے نیچے.
تو ہم ایٹ مرحلے کے کالم میں سے ایک ہے اور چوکوں، twos اضافی یا لوگ میں کچھ بھی نہیں.
تو اب زیادہ روایتی، انسانوں کرتے ہیں اس طرح شش اعشاری ہندسے لکھنے کے لئے،
آپ کو صرف، ان کے ساتھ کے squish اور پھر آپ کو 0X ساتھ ان سابقہ.
اس کے علاوہ کوئی مطلب نہیں ہے ایک human-- کے لئے ایک بصری اشارہ
یہاں ایک شش اعشاری قدر کیونکہ آتا یہ دوسری صورت میں واضح نہیں ہو سکتا.
>> جو، بالآخر، کا کہنا ہے کہ zeros اور ہیں کے پیٹرن،
یا شش اعشاری کے پیٹرن ہندسوں مساوانہ تم ہو
کے لئے تلاش شروع کرنے کے لئے جا مسئلہ سیٹ میں 4 this-- ہے
اور مسئلہ سیٹ 4 رپورٹ چلے جائیں گے زیادہ detail-- میں اس کے ذریعے آپ
لیکن جادو کی طرح کے طور پر احساس یہ پہلی نظر میں نظر ہو سکتا ہے
آپ کو یہ ایک بہت دیکھ کر شروع کرنے جا رہے ہیں.
اور حقیقت میں، یہاں تک کہ GDB میں، ٹھیک کرنے والا کھولتا ہم نے پیر کو متعارف کرایا
اور دان pset کے 3، متعارف کرایا جا رہا ہے اکثر آپ کو شش اعشاری اقدار ظاہر کرنے کے لئے
صرف وہ زیادہ ہو جاتے ہیں کیونکہ دشملو یا بائنری کے مقابلے میں روایتی
کمپیوٹر کی دنیا میں.
اب سیاق و سباق میں یہ ڈال دو.
بہت سے آپ کو یہ یاد رکھنا ہو سکتا ہے کے کیا سے آیا ہے جس، یہاں تصویر؟
وسٹا، تو بھی پہلے کے مقابلے میں کہ، ونڈوز XP یہ پہلی کیا.
تو یہ ایک خوبصورت زمین کی تزئین کی.
اور حقیقت میں، آپ کے ارد گرد ڑکیلنا online-- تو میں نے اسے ایک مضمون ہے،
جس کسی کو بہت حیرت انگیز باہر چلے گئے پایا دنیا میں اس جگہ مقرر
اس کا یا اس کیمرے میں خاص طور پر صحیح place--
اور یہ آج like-- لگتا ہے لیکن یہ بالکل اسی ترتیب ہے.
یہ تصویر، اگرچہ، ایک فائل میں ہے شکل کہا جاتا بٹ نقشہ، B-M-P.
اور ہم نے ایک سپر لے جا رہے ہیں اس کا مطلب پر فوری نظر.
>> لیکن بٹ نقشہ کے صرف ایک مختلف طریقہ ہے کی نمائندگی کرنے والے اب بھی تصاویر پکسلز استعمال
0s اور 1s میں، بالآخر.
لیکن فوری نظر میں، یہ ہے ایک سے زیادہ دلچسپ دستخط
فائل کے شروع میں.
یہ صرف تین نہیں ہے بائٹس، بلکہ وہاں ہے
بائٹس کی پیٹرن کی ایک پوری چڑھانے کہ معنی پہلے سے مقرر ہے.
مثال کے طور پر، کہیں ایک بٹ نقشہ تصویر کے پہلے چند بائٹس
کے سائز کی جا رہی ہے تصویر، تصویر کی چوڑائی،
تصویر کی اونچائی، تو مفید میٹا ڈیٹا، اگر آپ.
مفید معلومات کہ فوٹوشاپ یا کسی بھی گرافکس آپ استعمال کر رہے ہیں پروگرام
اصل میں پرواہ سکتا ہے.
>> میں اس پر تو زیادہ مسئلہ 4 سیٹ، لیکن یہ
کا کہنا ہے کہ صرف ہے دن کے آخر میں
آپ استعمال کر رہا ہوں تمام فائل کی شکل years-- مائیکروسافٹ ورڈ فائلوں کے لئے،
نمبر فائلوں، ایکسل فائلوں، فائل کی شکل کی کسی بھی تعداد
کہ کچھ ہو سکتا ہے نام سے جانا جاتا فائل چڑھانے کی کوشش
ہڈ کے نیچے صرف 0s اور 1s ہیں.
اور انسانوں کا فیصلہ کیا ہے کنونشنوں ہیں،
کیا 0s اور 1s کے پیٹرن کی نمائندگی کرتے ہیں ایک لفظ، ایک ایکسل فائل بمقابلہ دائر
دیگر فائل کی شکل کے کسی بھی تعداد کے مقابلے میں.
4 pset پر میں، آپ کو ایک پڑے گا موقع اس کے ساتھ کھیلنے کے لئے.
>> لیکن کیا کرتا ہے یہ ایک struct ہے کا مطلب.
اب یہ اصل میں ایک اچھا segue ہے صرف ایک جوڑے کی ہے جس میں سی،
کی اضافی خصوصیات ہے کہ ہم نے ابھی تک نہیں دیکھا ہے.
یہ ایک خوبصورت چھوٹا سا زبان اور میں سے ایک ہے سی کے بارے میں اچھی خصوصیات ایک struct ہے.
مثال کے طور پر، اگر آپ چلو represent-- کرنا چاہتا تھا
آپ کو ایک متغیر ہے کرنا چاہتا تھا کا کہنا ہے کہ کچھ پروگرام میں ایک طالب علم کی نمائندگی کرتا ہے.
ہو سکتا ہے کہ آپ کو ایک کورس لکھ رہے تھے رجسٹریشن پروگرام، یا بنیادی شاپنگ
آلہ، یا کچھ اس طرح.
سے متعلق اعداد و شمار کے ٹکڑے ٹکڑے کیا ہیں ذہن میں آنے والے ایک طالب علم کرنے کے لئے؟
ایک طالب علم ہے کی طرح اقدار کے ساتھ کی نمائندگی؟
جی ہاں؟
آپ ایک طالب علم کے طور پر ایک نام ہے.
ایک عام طالب علم اور کیا ہے؟
>> سامعین: [اشراوی]
>> DAVID J. MALAN: تو، معذرت.
>> سامعین: عمر.
>> DAVID J. MALAN: ایک سال کی عمر یا سالگرہ مساوانہ، جی ہاں.
اور کیا؟
سامعین: ID نمبر؟
DAVID J. MALAN: تو شاید ایک شناختی نمبر، ایک فون نمبر، شاید ایک چھاترالی، یا گھر،
کالج، یا اس طرح کچھ یا.
اعداد و شمار کے ٹکڑے ٹکڑے کر کے کسی بھی تعداد کہ آپ کو آپ کے رابطے کی فہرست میں ہو سکتا ہے
ایک طالب علم کی وضاحت ہو سکتا ہے ہے.
ہم کوڈ میں، یہ کرنا چاہتا تھا تو، ہم اس کی طرح سادہ کچھ کر سکتا ہے.
ہم ایسا پروگرام ہو سکتا ہے ہے، کا کہنا ہے کہ int اہم (باطل) شامل ہیں.
اور میں نے ایک کی نمائندگی کرنا چاہتے ہیں تو میں مثال کے طور پر، ہو سکتا ہے طالب علم،
اس طالب علم کا نام نامی ایک سٹرنگ، کہ طالب علم کے لئے چھاترالی نامی ایک سٹرنگ،
شاید ایک int ہے کہ طالب علم کے لئے کہا جاتا ID.
اور میں سٹرنگ استعمال کر رہا ہوں کیونکہ میں CS50.h. واپس جاؤ اور ڈال کرنے کی ضرورت ہے
شاید میں stdio.h کی ضرورت کرنے جا رہا ہوں.
تو مجھے اس preemptively ان کرتے ہیں اور میں ہوں اب کے لئے اس student.c فون کرنے جا رہا
اور اس کو بچانے کے.
>> اور اب میں کچھ کر سکتے ہیں ان متغیرات میں سے.
اور ہم صرف لکھنے کے لئے جا رہے ہیں کہ چھدم کوڈ میں ایک تبصرہ کے طور پر،
یہ دلچسپ نہیں ہے کیونکہ اب ہم کیا کرتے ہیں.
ٹھیک ہے، تو یہ ایک پروگرام ہے کہ کسی نہ کسی طرح ایک طالب علم کا ذخیرہ.
مجھے تو ایسا کیا کرنا چاہتے ہیں میں دو طالب علموں کو محفوظ کرنا چاہتے ہیں؟
تو میری پہلی سنتیں جا رہا ہے ایک منٹ رکو، سب ٹھیک ہو جائے کرنے کے لئے،
میں ایک طالب علم ہے تو مجھے کیوں نہیں کرتے صرف سٹرنگ نام 2، سٹرنگ چھاترالی 2 ہے،
INT id2.
اور ہم چلے کیا ہے اس سڑک سے پہلے نیچے
اور لگتا ہے کرنے کے لئے ہمارے حل کیا تھا ایک hackish کاپی پیسٹ کی طرح ہونا
یہاں کام؟
سامعین: ایک صف.
DAVID J. MALAN: جی ہاں، ہم ایک صف کا استعمال کر سکتے.
حق یہ بہت جلد unwieldy ہو جاتا ہے.
آپ منمانے کے حل کرنے کی ہے ان متغیرات میں سے تمام نام شروع.
اور تم، انسانی، رکھنے کے لئے ہے یہ ٹھیک NAME2 مساوی ٹریک
dorm2 ساتھ id2 ساتھ مساوی ہے.
یہ صرف ایک گندگی ہو جاتا ہے.
تو یہ ایک بہت آسان ہے چند ہفتے پہلے سے یاد،
صرف کہا جاتا سٹرنگ نام کرنے کے لئے کرنے کے لئے اور شاید ہم ان میں سے تین دے.
اور شاید ہم سٹرنگ ڈورمیٹری اور ہے
ان میں سے تین، یا ایک مسلسل کے ساتھ، شناخت int اور ان میں سے تین ہے.
لیکن اب بھی یہ محسوس ایک چھوٹا سا میلا، صحیح.
ہم ابھی تک طلباء اور کے بارے میں بات کر رہے ہیں مجھے سچ میں کم سطح پر رہنے ہوں
عملدرآمد کی تفصیلات.
طالب علم کو ایک کا نام اور ایک چھاترالی اور شناخت ہے.
>> کیوں میں صرف ایک متغیر کا اعلان نہیں کر سکتے ہیں طالب علم کو بلایا اور اسے ے کال.
اور میں ایک طالب علم چاہتے ہیں تو، کیوں میں صرف ٹی کہتے ہیں نہیں.
یا میں نے ایک پوری چڑھانے چاہتے ہیں تو طالب علموں کی، کیوں میں صرف نہیں کرتے
میں ایک پوری کلاس کا کہنا ہے کہ طالب علموں کو، اور یہ ان میں سے تین ہے.
دوسرے الفاظ میں، کیوں نہیں آ سکتا نامی اپنے ڈیٹا کی قسم، کے ساتھ
طالب علموں کو، جس کے اندر ہے ایک نام،، ایک شناختی ایک چھاترالی ہے،
دیگر شعبوں کی کسی بھی تعداد ہے.
اور یہ آپ کو باہر کر دیتا ہے بالکل ایسا کر سکتے ہیں.
>> لہذا سی struct کے نامی یہ خصوصیت ہے.
کہ ایک زبان خصوصیت ہے کہ ہمیں بالکل ایسا کرنے کی اجازت دیتا ہے.
میں آگے جانے کے لئے جا رہا ہوں اور structs.h اپ کھولنے
ہم کو دیکھنے کے لئے کہاں جا رہے ہیں ایک طالب علم کی تعریف مندرجہ ذیل.
یہ باہر کر دیتا ہے - اور یہ بھی ہے ایک ID شامل ایک سے زیادہ آسان
ایک لمحے پہلے.
آپ کے ساتھ آنے کے لئے چاہتے ہیں، تو اپنے گھر ڈیٹا کی قسم،
اور int کے علاوہ، اور چار اور ، موجود ہے کہ اور ان تمام دوسرے فلوٹ
آپ لفظی کی طرف سے ایسا کر سکتے ہیں typedef کے struct کی تحریری طور پر،
پھر کچھ گھوبگھرالی منحنی خطوط وحدانی، جس کے اندر آپ
آپ کرنا چاہتے ہیں متغیر فہرست اس نئے اپنی مرضی کے اعداد و شمار کے ساتھ منسلک
ایک کا نام اور ایک چھاترالی طرح ٹائپ کریں، اور پھر گھوبگھرالی منحنی خطوط وحدانی کے بعد
آپ نئے اعداد و شمار کی قسم کے لئے ایک نام دیں.
تو، مثال کے طور پر، طالب علم.
>> اور کیا اب اس کے بارے میں اچھا ہے یہ ہے کہ ہم اسی کوڈ پر نظر ڈالیں تو،
پہلا کنونشن، کے تمام، یہ ڈال کرنے کے لئے ہے
ایک فائل کہا جاتا ہے کچھ ڈاٹ ایچ میں، ہم نہیں ہے جس میں ایک ہیڈر فائل،
بہت زیادہ خود استعمال کرتے ہوئے شروع.
لیکن ہم شروع کرنے کے لئے جا رہے ہیں اب بہت تھوڑا سا استعمال کر رہے ہیں.
اور ہم نے اس کے ساتھ کیا کر سکتے ہیں، بالآخر، کوڈ کا ان چند لائنوں میں
بالکل اس کا اعلان ہے ڈیٹا کی قسم، ایک طالب علم.
اور اب اس کا استعمال کرتے ہیں.
>> اب میں جا رہا ہوں ایک فائل structs1.c بلایا.
اور ایک پر ایک نظر ڈالیں یہاں چند خصوصیات.
تو یہاں سامان ہے زیادہ تر واقف، اور ہم کریں گے
کیا نہیں ہے کے لئے واپس آئے صرف ایک لمحے میں واقف.
کورس کے یہ میرا اپنا بھی شامل ہے کے طور پر اچھی طرح سے جو نیا ہے ہیڈر فائل،،
pset کے 3 جہاں کے علاوہ، یاد، ہم helpers.h ہے.
تو آپ کو # شامل helpers.h یاد کر سکتے ہیں.
>> کیوں اگرچہ میں کی قیمت درج کرنے کا استعمال کرتے ہوئے کر رہا ہوں بجائے angled بریکٹ کے؟
جب میں نے ان کے درمیان کا انتخاب کرتے ہیں؟
تقریبا ہمیشہ مجھے لگتا ہے angled بریکٹ استعمال کرنے کے لئے.
اور پھر، ایک کے تمام اچانک لائن چھ میں ڈبل قیمت درج کرنے کا استعمال کرتے ہوئے کر رہا ہوں.
یہی وجہ ہے کہ ہو سکتا ہے؟
جی ہاں؟
>> سامعین: [اشراوی]
DAVID J. MALAN: یہ، کیا اصل ہے؟
سامعین: یہ آپ کی IDE میں ہے.
DAVID J. MALAN: جی ہاں، کہ میری اصل IDE میں ہے.
اور، کیونکہ IDE پر رہنے نہیں دو کہ صرف میں استعمال کر رہا ہوں کہ ایک آلہ ہے.
یہ اپنے موجودہ میں ڈائریکٹری، خاص طور پر.
تو structs.h اپنے فائل IDE میں نصب نہیں،
آپریٹنگ سسٹم خود میں، بلکہ یہ اپنے موجودہ ڈائریکٹری میں ہے.
تو کنونشن اگر آپ چاہتے ہیں ہے آپ کی اپنی ہیڈر فائل میں شامل کرنے،
آپ کو صرف ڈبل قیمت درج کرنے کا استعمال کرتے ہیں.
>> ہم اس بات کو کہتے ہیں کیا 8 لائن، عام طور پر بول؟
یہ کیا ہے؟
# وضاحت کچھ.
یہ درست، constants کی نمائندگی کرتا ہے؟
آپ کو ایک حاصل کرنے کے لئے چاہتے ہیں، تو آپ کے پروگرام میں قیمت
آپ ایک پوری کا استعمال کرتے ہیں اوقات کے گروپ، یہ ہے
، یہ فیکٹر کنونشن اچھا ہیش کی علامت کے ساتھ، اس کا اعلان
میں، کنونشن کی طرف سے، اس کے بعد، کی وضاحت یہ نہیں ہے اگرچہ word-- بڑے
سختی ضروری ہے، لیکن یہ انسانی کنونشن ہے
constants کی فائدہ اٹھانے کے لئے وہ باہر کود تاکہ
آپ کو خلا visually-- اور اس کے بعد آپ چاہتے ہیں کی قیمت ہونا
کہ مسلسل کے نام کے برابر.
کوئی نیم وقفہ، لیکن صرف آپ وہاں اس طرز پر عمل کریں.
>> تو کیا میں اس اصل کوڈ میں کر رہا ہوں.
تو میں ایک نظر ڈالیں یہاں اہم پروگرام.
لائن 12 میں کیونکہ structs.h شامل ہے،
اب میں جادوئی میرے ضائع کرنے پر ایک نئے اعداد و شمار کی قسم.
میں صرف، INT کرنے کے لئے رسائی حاصل نہیں ہے اور چار، اور فلوٹ، اور سٹرنگ،
اور نیلے رنگ کے اور دوسروں.
میں اب تک رسائی حاصل ہے ایک طالب علم ڈیٹا کی قسم.
لائن 12 میں، میں نے دو امتزاج کر رہا ہوں تو ، ایک اپنی مرضی کے مطابق ڈیٹا کی قسم اور دو ideas--
ایک صف کا استعمال.
اور اس طرح یہ پروگرام تو میں میں واقعی میں حمایت کرنا چاہتے ہیں
تین مختلف طلباء میرے پروگرام میں، میں
مجھے ایک دے متغیر کہتے ہیں بس کر سکتے ہیں جن میں سے ہر نامی طالب علموں،
قسم طلباء، ہے جو اپنی مرضی کے ڈیٹا کی قسم ہے.
اور، خاص طور پر، مجھے دے دو میرے صف میں ان میں سے تین.
>> تو اب ہم اس پروگرام میں کیا کروں؟
یہاں صرف ایک لوپ سب iterating کے لئے ہے کہ ہے کیونکہ، 3 0 سے
طالب علموں کی قدر کیا ہے.
میں نے صرف صارف نے فورا ہی کر رہا ہوں مجھے طالب علم کا نام دینا.
اور پھر لائن 17 میں، ہم ایک زیادہ تر واقف لائن ہے.
ہم نے اپنے پرانے دوست ہے حق پر جو GetString.
نحو اور کیا ٹکڑا ، بظاہر نئی ہے
تم سے پہلے C میں پروگرام کبھی نہیں ہے تو، اور structs کبھی استعمال نہیں کیا ہے؟
جی ہاں؟
>> سامعین: .نام.
DAVID J. MALAN: .نام.
لیکن یہ ایک چھلانگ کے بہت زیادہ نہیں ہے طالب علموں میں بریکٹ کیونکہ
تم نے ویں طالب علم فراہم کرتا ہے.
اور آپ ڈوبکی کرنا چاہتے ہیں تو اس کی ساخت کے اندر،
آپ کو صرف ایک مدت کے استعمال کرتے ہیں اور اندر تو متغیر کے نام،
یا اس کے اندر کی خاصیت آپ تک رسائی حاصل کرنا چاہتے ہیں.
اسی طرح اس کے بعد، میں اس وقت فوری طور پر اگر صارف، مجھے طالب علم کی چھاترالی دے،
آپ اسی طرح اس مواد کو محفوظ کر سکتے ہیں اندر چھاترالی متغیر میں سٹرنگ
کہ طالب علم کی ساخت کا.
>> اور اب چیزیں ایک چھوٹا سا پسند.
اور اس کو دیکھنے کے لئے کی جا رہی ہے شاید ایک بہت میں بہت جلد.
لیکن آپ pset میں اس سے کہیں زیادہ نظر آئے گا 4، تو اب یہ میں صرف نظر چلو.
یہ لائن 23 کے ذریعے پتہ چلا ہے کہ 38، میں شاید کر رہا ہوں کیا سوچتے ہیں؟
میں تبصرے ہٹا دیا آج، لیکن ورژن کے لئے
آن لائن کوڈ کے حوالہ تمام تبصرے ہے.
میں کر رہا کیا جائے لگ رہے ہو؟
>> سامعین: سب کے ساتھ فائل کو محفوظ صارف داخل ہونے کے بارے میں معلومات.
>> DAVID J. MALAN: جی ہاں، بالکل، یہ ایک نیا طریقہ ہے
ہم دو دیکھ رہے ہیں کہ، سی کی ایک اور خصوصیت،
جس نے اپنے فائلوں تشکیل دے سکتے ہیں.
اس طرح اب تک، تقریبا ہر پروگرام لکھا ہے آپ بے وطن ہے.
جیسے ہی یہ چل رہا کیا ہے کے طور پر، یہ بات ہے.
کوئی میموری یا اس کا یاد نہیں ہے.
محفوظ کوئی فائل نہیں ہے.
لیکن آپ کو چاہتے ہیں تو ہے کہ ان پٹ کو بچانے کے
ایک کھیل یا ایک پروگرام کی طرح، ہوا اس طرح، یہ ہم ایسا کر سکتے ہیں باہر کر دیتا ہے.
اور آپ کو اس سے زیادہ نظر آئے گا 4 pset پر میں اور سیکشن میں.
لیکن یہ بنیادی طور پر 23 لائن students.csv ملاقات ایک فائل تخلیق کرتا ہے.
اور تم سے پہلے اس کو دیکھا ہے ہو سکتا ہے.
تم سے پہلے کبھی نہیں کیا ہے یہاں تک کہ اگر کاوچ سرفنگ کے مطالعہ، CSV کی علامت سے علیحدہ متغیر ہے.
یہ ایک بہت ہی غریب آدمی کی طرح ہے ایک ایکسل فائل کے ورژن،
جس میں یہ کھولا جا سکتا ہے کا مطلب ہے کہ ایکسل میں اور ایپل تعداد میں،
اور اس قطار اور کالم ہے.
لیکن یہ ایک ملکیتی نہیں ہے مائیکروسافٹ یا ایپل کی طرح کی شکل.
الگ صرف کوما ہے ہم ایک لمحے میں نظر آئے گا کہ اقدار.
>> اور صرف ایک اندازہ لے.
بہت میں لائن 23، میں آخر، میری دوسری دلیل
اس نئی ملاقات کی تقریب میں F فائل کو کھولنے کے لئے کھلے W ہے.
W کیا مطلع کرنا ہو سکتا ہے؟
جی ہاں؟
>> سامعین: یہ آپ کو فائل میں لکھنے کی اجازت دیتا؟
>> DAVID J. MALAN: یہ اجازت دیتا ہے آپ کی فائل کو لکھنا.
تو مختلف حالتوں میں سے ایک جوڑے کی ہے کہ ہم یہاں میں پلگ کر سکتے ہیں.
لیکن آپ کو صرف پڑھنے کے لئے چاہتے ہیں تو فائل، کہ اس کی طرف دیکھو ہے
اور، میموری میں آپ اس کو پڑھنے صرف اقتباس unquote "R" استعمال کرتے ہیں.
آپ کو لکھنے کے لئے چاہتے ہیں فائل، آپ کو "W" اقتباس unquote استعمال.
بھی شامل ہے اور دوسری چیزوں کے ایک جوڑے
آپ کو موجودہ فائلوں پر نظر ثانی کرنا چاہتے ہیں تو.
اب ہم یہ دیکھ کر رکھنے کے لئے جا رہے ہیں 24 لائن پر بات، اس کے بعد ہم واپس آ جائیں گے.
نل، یہ باہر کر دیتا ہے، ایک خاص قیمت ہے
بعض افعال کی طرف سے واپس کیا جا سکتا ہے کچھ wrong-- چلی گئی ہے تو
فائل موجود نہیں ہے تو، آپ کو میموری سے باہر چلانے کے ہے تو،
دوسرے کی غلطیوں کی یا ایک گروپ.
لیکن اب کے لئے، صرف یہ ہے کہ فرض صرف روایتی غلطی چیکنگ ہے.
یہاں 26 سطر میں، میں iterating رہا ہوں 0 سے تمام اپنے طالب علموں سے زیادہ 3.
اور اس طرح کی قسم ہے ایک نیا تقریب کی، fprintf،
لیکن صرف ایک اندازہ لے.
printf صرف پرنٹ ہے تو ایک فارمیٹ سٹرنگ،
fprintf شاید کیا مطلب ہے؟
سامعین: ایک فائل میں پرنٹ.
DAVID J. MALAN: پرنٹ ایک فائل میں فارمیٹ سٹرنگ.
کہ اضافی کیا ہے F ذریعہ فائل ہے.
اور نئے پہلی دلیل ہونا ضروری ہے آپ کی فائل کی نمائندگی کرتا ہے کہ متغیر.
اس وقت ہم صرف ایک شکل ہے صرف printf طرح سٹرنگ.
اور یہاں تک کہ یہ اگرچہ نحو یہ صرف، نئی ہے
طالب علم کا نام میں پلگ مطلب، طالب علم چھاترالی میں پلگ، اور پھر
fclose سے، فائل کو بند.
اور پھر یہ نئی ہے lastly-- اور ہم اس کے لئے واپس آ جائیں گے
میں آزاد ہوں long-- پہلے وجوہات کی بنا پر طالب علم
کہ اوپر ہوا.
لیکن ہم واپس آ جائیں گے کہ long-- پہلے
اس کی وجہ سے GetString ہے کہ کس طرح کی ہے اصل میں ہڈ کے نیچے کام کر.
>> تو یہاں ایک فوری نظر ڈالیں.
میں اپنے ڈائریکٹری میں LS ٹائپ کریں، مجھے نہیں پتہ ہے کہ محسوس کریں
، students.csv ملاقات ایک فائل ہے صرف وہاں نہیں، موجود نہیں ہے.
اب اس پروگرام مرتب تو، ، structs کے 1 بنا. / structs کے 1،
اور میں آگے بڑھو اور میں ٹائپ کرنے جا رہا ہوں ییل میں برکلے میں رہنے والے Andi کی،.
ہم روب حاصل کرنے جا رہے ہیں جو ان دنوں Thayer میں رہتا ہے.
اور کہاں سے آئے ہیں ہے، مجھے لگتا ہے، ماریا، Mather میں ہے
اگر میں صحیح طریقے سے یاد کیا ہے.
>> تو کچھ بھی نہیں ہونے لگتا ہے.
لیکن اب میں LS ٹائپ کریں، students.csv ہے.
آگے اور کھلے students.csv چلتے ہیں.
یہ ایک بار پھر ایک بہت ہے ہلکا پھلکا فائل کی شکل.
لیکن میں نے صرف ایک کنونشن اپنایا ہے کہ میں نے یہاں دو قطار اور کالم ہے.
سب سے پہلے کالم ہے لوگوں کا پہلا نام.
دوسرے کالم طالب علم کی ہے چھاترالی، یا کالج، یا گھر، یا whatnot.
اور اب میں اس محفوظ کر لیا ہے مستقل طور پر ایک فائل میں.
>> تو یہ سب دلچسپ نہیں ہے.
لیکن یہ صرف ایک قدم رکھ پتھر ہے معلومات برقرار کرنے کے قابل ہونے کی وجہ سے
مستقل طور پر.
تو اب کیا ہم کر سکتے ہیں دیکھتے ہیں ان اور دیگر خصوصیات کے ساتھ کیا.
لیکن سب سے پہلے، کوئی سوال؟
یہ ایک بہت تھا، اور یہ کہ روزہ تھا.
لیکن آپ کو ایک بہت کچھ دیکھیں گے 4 pset پر میں، کے طور پر اچھی طرح سے.
جی ہاں؟
>> سامعین: ایک طریقہ کے لئے ہے اس فائل کے نام کا اضافہ جاری؟
>> DAVID J. MALAN: اچھا سوال ہے.
جاری رکھنے کے لئے ایک طریقہ ہے اس فائل کے نام انہوں نے مزید کہا؟
جی ہاں.
اور، اصل میں، آپ کو ختم تو اپ، فائل دوبارہ کھولنے
آپ اقتباس کا استعمال کریں گے unquote جو "ایک" ملائیں لئے،
جس میں صرف ایک نئی لائن شامل کریں گے، ایک نئی لائن بار بار، بالکل.
اچھا سوال.
دیگر سوال؟
جی ہاں؟
سامعین: آپ بھاگ گیا تو پروگرام دوبارہ اب،
اس کے نام شامل رکھیں گے فائل یا یہ ایک نئی فائل کو کھولنے گے؟
>> DAVID J. MALAN: آہ، اچھا سوال ہے.
تم نے پھر سے صحیح پروگرام بھاگ گیا تو اب، شاید نئے نام میں ٹائپ،
اس فائل میں اضافہ کرے گا یا فائل ادلیکھت؟
مؤخر الذکر، میں ہوں کیونکہ ملائیں موڈ کا استعمال نہیں.
اور میں صرف آنکھ بند کر کے ہوں کیونکہ لکھنے کے لئے فائل کھولنے،
یہ صرف فائل ادلیکھت ہو رہا ہے.
تو میں یقینا شامل کیا جاتا ہے کی ضرورت ہو گی، میں اصل میں ایک طویل مدتی کرنا چاہتے ہیں
ڈیٹا بیس.
>> اب CSV بھی، واضح طور سے، مفید ہے کے لئے آپ کی طرح ہو تو تحریر
اور ہم آخر میں یہ دیکھ لیں گے بعد میں جب سمسٹر میں
ہم دوسرے مقاصد کے لئے استعمال کرتے ہیں CSVs.
آپ لوگوں کے تمام ذخیرہ کرنے کے لئے چاہتے ہیں، تو جو، کچھ ایونٹ کے لئے رجسٹرڈ ہے
یا آپ کے طالب علم کے لئے سائن اپ گروپ، یا اس طرح کچھ،
اس قسم میں ڈیٹا ذخیرہ فارمیٹ کے سپر آسان ہے.
لفظی کیونکہ، میں نے تو یہ فائل ڈاؤن لوڈ کرنے کے لئے تھے.
میں double-- سکتا ہے اور اصل میں اس کی کوشش کریں
میں یہاں پر ایکسل یا نمبر ہے.
>> میں نے دائیں کلک کرنے کے لئے جا رہا ہوں یا میری فائل کنٹرول پر کلک کریں.
افوہ.
دایاں کلک کریں یا اپنے فائل کنٹرول پر کلک کریں.
چلو، اپنے ماؤس تعاون نہیں کر رہا ہے.
میں جا رہا ہوں Download-- تو یہاں تمام فائلوں کو ڈاؤن لوڈ
صرف تو میں نے اس سے ایک پر قبضہ کر سکتے ہیں.
اور یہ کام کرتا ہے تو دیکھتے ہیں students.csv-- پہلی بار
میں چالو ہے.
اب وہ اپنے رابطوں کو دیکھنے کے لئے چاہتے ہیں.
اب، میں رجسٹر کرنے کی ضرورت.
یہ CSVs استعمال کرنے کے لئے کس قدر آسان ہے دیکھ رہے ہو؟
جی ہاں، آج کی تاریخ میں اسے جاری رکھیں.
ٹھیک ہے، اب ہم کلاس کے لئے تیار ہیں.
اوہ، ٹھیک ہے، نیا کیا ہے؟
ٹھیک ہے، قریب.
کہ جادو تھا.
ٹھیک ہے، اب ہم اپ ڈیٹ کرنا پڑے.
اور اب، یہ بھول میں اصل میں کھولا دائر،
لیکن وہاں a-- کیا ہم جا.
ٹھیک ہے، تو اب ہم ایک ایکسل فائل ہے.
آپ کا شکریہ.
>> ٹھیک ہے، میں نے تو کیا آسان حصہ تھا.
یقینا میں پہلے سے نصب کیا جا سکتا ہے ایکسل، یا نمبر، یا جو کچھ بھی پروگرام.
لیکن اس کی وجہ سے، اچھا ہے اب میں جوڑتوڑ کر سکتے ہیں
ایک معیاری شکل میں اعداد و شمار.
>> تو اب چلو تناظر ہم نے چھوڑ دیا جہاں پر سوئچ
شروع کرنے کے لئے تھا جس میں آخری بار، تربیت پہیوں اتارنے کے لئے.
لیکن سب سے پہلے، تم نے نہیں کیا اس سے پہلے دوپہر کے کھانے دیکھیں
پھر آگ میں یہاں کیا ہو رہا ہے اور نیو ہیون میں کیمبرج، ستار میں Ice.
ASAP CS50s ویب سائٹ پر سائن اپ کریں CS50 طالب علموں اور عملے میں شامل ہونے.
>> تو ہم تربیت پہیوں لیا پیر کو بند مندرجہ ذیل کے طور پر
سٹرنگ میں اعلان کیا گیا ہے کچھ وقت کے لئے CS50s لائبریری.
اس کی اجازت دیتا کیونکہ یہ، اچھی بات ہے ہم کے طور پر متغیر کے بارے میں بات کرنے کے لئے
مکمل الفاظ اور جملے اور زیادہ.
لیکن اس کا کوئی وجود نہیں ہے سٹرنگ باہر کر دیتا ہے.
وہ صرف ایک متبادل، یا ایک عرف ہے، ہم کسی چیز کے لئے پیدا کیا ہے کہ
اصل میں تھوڑا سا زیادہ ہے تکنیکی ایک چار * بلایا.
>> اور بے شک، ہم ایک مثال کے دیکھا پیر کو ایک پروگرام کا
کہ ہم توقع کافی کے طور پر برتاؤ نہیں کیا.
اس کا موازنہ کریں 0، فائل تھی.
اور اگر، اس کا موازنہ 0 یاد میں پیر کے پروگرام تو recompile
اور چلانے 0 موازنہ اور میں ماں میں ٹائپ کریں پھر چھوٹے میں چھوٹے، اور ماں.
پروگرام میں اصرار مختلف چیزیں ٹائپ کریں،
یہاں تک کہ ماں، میں اگرچہ چھوٹے، ضعف ایک جیسی ہے.
تو مختصر جواب کیا تھا کمپیوٹر سوچتا کیوں
ان دو ڈور مختلف ہیں؟
جی ہاں؟
>> سامعین: [اشراوی]
DAVID J. MALAN: ٹھیک ہے.
تو، ماں، پہلی بار میں کیا جا رہا ہے، اس میں ٹائپ کریں
میرے کمپیوٹر میں کہیں ذخیرہ میموری لیکن ایک مختلف جگہ میں
دوسری بار کے مقابلے میں ماں میں ٹائپ کریں.
اب یہ یقینی طور پر بہتر کیا جا سکتا ہے.
کمپیوٹر ہوشیار ہو سکتا ہے اور ، ارے، ان دو ڈور احساس
وہ ایک جیسی ہیں.
مجھے redundantly محفوظ نہیں ہیں.
لیکن کمپیوٹر ایسا نہیں کرتے اصلاح آپ ان سے بتائیں کہ جب تک.
تو، ڈیفالٹ کی طرف سے، وہ کر رہے ہیں صرف کو ختم کرنے جا
یاد میں دو مختلف جگہوں پر.
اور اس طرح، جب زیادہ واضح ہونا ہم، دو ڈور مقابلے
پہلے کہا جاتا تھا ے، دوسری بلایا گیا تھا
T، خاص طور پر میں کیا تھا 13 پر موازنہ؟
جی ہاں.
>> سامعین: یہ یاد میں جگہ ہے متغیر کی طرف اشارہ کریں گے کہ.
>> DAVID J. MALAN: بالکل، میں تھا میموری میں جگہ کا موازنہ
وہ لوگ جو متغیر کی طرف اشارہ کیا.
تو خاص طور پر، اگر ماں میں تھا بائٹ نمبر 1، اور 2، اور 3،
اور 4-- کیونکہ الٹا سلیش یاد 0 آخر میں تمام طریقہ ہو کرنے کی ضرورت ہے.
اور ماں، ایم-اے-میٹر کے دیگر مثال، ایڈریس 10، 11، 12، اور 13 میں تھا.
1 موازنہ کر رہا تھا، اس پتے، یاد میں اس مقام،
10 کے خلاف، جس میں واضح طور پر ایک ہی.
1 10 نہیں ہے.
>> تو یہ ہے کہ میں اچھا ہے یہ بہت سیدھا ہے.
لیکن یہ insofar کے مسئلہ ہے ہم ڈور کا آپس میں موازنہ نہیں کر پا رہے.
تو fundamentally-- اور یہ کم سطح پر،
آپ کو لاگو کرنے کے لئے کرنا چاہتا تھا تو پروگرام کا موازنہ کرنے
دو الگ الگ الفاظ کہ صارف، معیار کے لئے میں ٹائپ ہے
انہوں نے کے لئے چار قطار کرتے صرف عام الفاظ میں چار،،
کیا ہم بظاہر ایسا کرنے کے لئے کی ضرورت ہے؟
یہ صرف کرنے کے لئے کافی نہیں ہے ان دونوں کے پتوں پر نظر.
ہم کیا کرنے کی ضرورت ہے؟
جی ہاں؟
>> سامعین: کے ذریعے iterate سٹرنگ [اشراوی].
>> DAVID J. MALAN: جی ہاں، چلو سٹرنگ کے ذریعے iterate.
لوپ، تھوڑی دیر کے لوپ کے لئے ایک کا استعمال کرتے ہیں، یا آپ کے ساتھ سب سے زیادہ آرام دہ اور پرسکون رہے ہیں جو کچھ.
اور ہم کہیں دو ڈور ہے تو یاد میں، ایک کی دیکھو
پہلا کردار، اس کے بعد ایک دوسری ہے کردار، پھر تیسری، اور چوتھی،
اور پانچویں ہم مارا یہاں تک کہ کیا خاص پرہری کی قیمت؟
سامعین: [اشراوی]
DAVID J. MALAN: جی ہاں، الٹا سلیش صفر، تو سٹرنگ میں جس نقطہ پر
ہم یہ بات ہے فیصلہ کر سکتے ہیں.
ہم ہر ایک کردار مماثل ہے؟
اگر نہیں، تو، جھوٹے واپس.
اگر ایسا ہے تو، سچ واپس.
اور تو ہے کہ کیا اس ورژن بالکل وہی جو ہے پروگرام کا موازنہ-1.c کرتا.
یہ کرنے کے لئے ایک جیسی ہے جو ہم نے کہ میں ہے سوائے پیر میں دیکھا
اگرچہ لفظ تار سے چھٹکارا مل گیا کہ کوئی فعال impact-- ہے
میں اب کر رہا ہوں اتارنے ہے کچھ بصری تربیت پہیوں،
لیکن واضح طور پر کہ کو دیکھنے کے لئے ے اور ٹی پتے ہیں.
اور یہ کہ، کیا ستارہ ہے ستارے، کی نمائندگی کرتا ہے
ایک ایڈریس ورنہ جانا جاتا ہے، زیادہ تکنیکی طور پر ایک پوائنٹر کے طور پر.
>> تو میں پر ایس اعلان جب 9 لائن اور چار * کا کہنا ہے کہ،
کہ مجھے ایک تار دے مطلب یہ نہیں ہے.
یہ میرے جس کا ایک متغیر دینے کا مطلب ہے زندگی میں مقصد ایک ایڈریس ذخیرہ کرنے کے لئے ہے.
میں ڈال کرنے کے بارے میں ہوں اس میں ایک تار کا پتہ.
اور بے شک، GetString کے، ہونا واضح، ایک تار واپس نہیں کرتا.
یہ ماں واپس نہیں کرتا الٹا سلیش صفر، SE فی.
خاص طور پر کیا جو GetString ہے اور خاص طور پر واپس؟
سامعین: [اشراوی]
DAVID J. MALAN: ایک ایڈریس، پہلے کردار کا پتہ
کچھ سٹرنگ میں ہو گیا ہے.
اور اس طرح اب ہم دیکھ رہے ہیں پھر ایک مخصوص مطلوبہ الفاظ.
اور، میں نے یہ پہلے کے لئے alluded.
یہ اچھا کنونشن کی جا رہی ہے اب ہم بار بار دیکھیں گے کہ.
میں اس بات کو یقینی بنانے کے لئے کر رہا ہوں. ے، شہوت انگیز null نہیں ہے اور ٹی شہوت انگیز null نہیں ہے.
واقعی میرا کی بنیاد پر کی وجہ سے فوری ذکر پہلے،
GetString کے نہ آنے کی صورت میں مطلب ہو سکتا ہے ایک ایڈریس لیکن ایک بار پھر ہے جو ن انڈر ایل ایل،،
کچھ خاص قیمت؟
>> سامعین: میں خرابی.
>> DAVID J. MALAN: یہ ایک غلطی ہے.
کچھ غلط ہو گیا.
اور عام طور پر کیا خاص طور پر، ہو سکتا ہے
strings-- جس کے ساتھ ہو سکتا ہے advance-- میں نامعلوم لمبائی کے
شاید کمپیوٹر ' میموری سے باہر، شاید
آپ اس طرح ایک میں ٹائپ طویل لفظ یا سزا
یا اس طرح ایک بہت بڑا مضمون چسپاں نہ صرف کافی میموری نہیں ہے.
اور اس طرح GetString کے واپس نہیں آ سکتے پوری بات کا پتہ،
تو یہ صرف کچھ بھی نہیں واپس.
اور یہ ایک غلطی ہے کہ ہوا خصوصی شہوت انگیز null قیمت واپس لوٹنے کی طرف.
یہ تو بات کرنے، صفر ایڈریس ہے.
>> اب یہ باہر کر دیتا ہے سی کے ساتھ آتا ہے کہ تکرار ہے کہ تقریب.
ہم کے ساتھ اس پر عمل درآمد کرنے کی ضرورت نہیں لوپ یا تھوڑی دیر لوپ خود کے لئے ایک.
ہم نے ایک تقریب کا استعمال کر سکتے ہیں، اور succinctly کہا،
جن، comp کے ہلچل، یا سٹرنگ موازنہ زندگی میں مقصد بالکل ایسا کرنے کے لئے ہے.
تم نے اسے دو اشارہ، دو ایڈریس دے، اور یہ ان پتوں پر جائیں گے
اور اس کے بعد کے لئے خط کا آپس میں موازنہ معیار کے لئے خط کے لئے خط،
سچ کیا ہے صرف اس وقت جب کو روکنے؟
intuitively پر معاضہ ہلچل چاہئے ، صرف واضح سب iterating ہونا روکنے؟
اس میں ایک الٹا سلیش 0 مار دیتی ہے تو سٹرنگ، جس نقطہ پر یہ فیصلہ کر سکتے ہیں
سب کچھ، ملاپ ہے یا تضادات پائے جانے وہاں کیا گیا ہے؟
>> اب ہم اس کو چلانے اور اگر ایسا ہے تو، کوشش ہماری چھوٹی سرمایہ کھیل،
تو آپس میں موازنہ-1، ./compare-1 بنانے، اور چھوٹے میں دونوں اوقات ماں ٹائپ.
اب یہ ایک ہی بات ہے.
اور میں اس کے ساتھ اسے دوبارہ کرتے ہیں چھوٹے اور شاید بڑے.
اب یہ واقعی ممتاز اوپری اور چھوٹے کے درمیان.
ایسا نہیں ہے کہ تمام مشکل یا جادو، لیکن اب یہ وضاحت کرتا ہے
کیا ہڈ کے نیچے جا رہا ہے.
>> تو ہم نکال کر سکتے ہیں کیا سبق کی اس طرح سے؟
تو اس پر ایک نظر ڈالیں.
مجھے آگے جانا ہے اور ایک لکھنے کے لئے جا رہا ہوں فوری پروگرام یہاں کاپی 0 بلایا.
اور اب آگے اور اصل میں جانے ، کی کاپی 0 this-- کرتے ہیں
میں یہاں مل گیا ہے پر ایک نظر لے.
میں سب سے پہلے صارف بتا، کچھ کہنا.
پھر میں نے ایک تار حاصل اور میں میں ذخیرہ.
ے برابر تو میں چیک کریں شہوت انگیز null برابر، صرف 1 واپس.
تو یہ صرف معیاری غلطی چیکنگ ہے.
دلچسپ کچھ نہیں ہوا.
اور حقیقت میں، ہم نے غلطی کی چھٹکارا حاصل ہے جانچ پڑتال، اس ہفتے 1 کوڈ کی طرح لگتا ہے
فی الحال.
لیکن میں ایک حاصل کرنے کے لئے شروع کر دیا ہے اس کے بارے میں بہتر تھوڑا.
>> اب لائن 16 میں، ایک ہفتے پہلے، شاید بھی ایک جوڑے کے دنوں میں یا منٹ پہلے،
آپ 16 لائن کا کہنا ہے کہ ہو سکتا ہے ایک متغیر کہا جاتا T پیدا کرنے
اور کاپی اس میں ہے.
اور یہ کہ ایک بالکل ہے مناسب takeaway ہے.
لیکن اب زیادہ عین مطابق ہو.
لائن 16 میں کیا ہو رہا ہے؟
کیا کاپی ہو رہی ہے دائیں سے بائیں کرنے کے لئے؟
جی ہاں؟
سامعین: T ے کی ایک ایڈریس ہو رہی ہے؟
>> DAVID J. MALAN: بالکل، ٹی ے کا پتہ ہو رہی ہے.
میں جانا تو، اب واضح ہونا واپس پہلے مثال کے طور پر
اور مجھے میں ٹائپ ہے چیز کو اپنی طرف متوجہ.
اور میں ٹائپ کیا ہے in-- یہاں کی ہے، اور یہاں
میں کہیں میں ٹائپ ہے ہے میموری، ماں اور اس کے بعد ایک الٹا سلیش
میرے لئے شامل ہے کہ 0.
میں یہاں کیا میں محفوظ،، یاد یہ 1 محل وقوع، 2، 3، 4 ہے
اس ے میں اس وقت کیا ہے.
16 لائن پر تو، مجھے دے کہتے ہیں دوسرے متغیر بلایا ٹی اور دکان
ے کی قیمت میں، کیا یہاں محفوظ ہو جاتا ہے ماں نہیں
بلکہ صرف نمبر 1.
>> ہم اس پروگرام میں آگے نظر آتے ہیں تو اب، کیا ہونے جا رہا ہے؟
تو ہے کہ وہاں محسوس اس تقریب میں آپ کو ہو سکتا ہے
کیسر کے لئے کچھ وقت پہلے اس کا استعمال کیا ہے، یا Vigenere ہے، یا شاید نہیں بالکل.
میں ہوں، میری printf کے ساتھ دعوی کاپی ٹی فائدہ اٹھانے کے لئے جا رہے ہیں.
پہلی سطر 19، فوری وویک میں ، ٹی بھی strlen چیک لمبائی کی جانچ پڑتال.
میں نے نہیں کرنا چاہتے کیونکہ کچھ فائدہ اٹھانے کی کوشش
اگر وہاں کوئی تار نہیں ہے.
صارف صرف درج کریں مارا تو، فائدہ اٹھانے کے لئے کچھ بھی نہیں ہے.
تو میں 21 لائن نہیں کرنا چاہتے ہیں.
تو اوپر 21 سرمایہ ہے جو بظاہر خط،، ٹی میں؟
>> سامعین: M؟
DAVID J. MALAN: ایسا لگتا ہے جیسے یہ کاپی ہے جس میں ایک ہے؟
سامعین: M.
DAVID J. MALAN: اہ، میٹر.
ٹھیک ہے، پہلی M تو، ہوں کہ نوٹس کیونکہ
، toupper کے پر گزر جو آپ اسے کبھی نہیں دیکھا ہے تو یہ ہے
کرنے کے لئے ایک تقریب اس کی ان پٹ کے طور پر فائدہ.
T بریکٹ صفر دینے کا مطلب ہے مجھے ٹی صفر کردار.
اور تو کس طرح یہ کرتا ہے تصویر کو تبدیل، صاف ہو جائے کرنے کے لئے؟
کیا دوبارہ یا تبدیل کرنے کے لئے کی ضرورت ہے ے احترام اور ٹی اور ماں کے ساتھ
الٹا سلیش صفر.
>> سامعین: [اشراوی]
>> DAVID J. MALAN: جی ہاں، تو یہ ایک یہاں صرف
this-- ٹھیک to-- تبدیل حاصل کرنے کی ضرورت سرمایہ میٹر کرنے کے لئے تبدیل کرنے کے لئے کی ضرورت ہے.
لیکن اب، میں بعد میں نظر آتے ہیں پروگرام، میں باہر پرنٹ
میں یہاں صاف طور ے اور ٹی، جو کی واچ ے اور ٹی باہر پرنٹ ہونے جا رہا.
تو کاپی 0، ./copy-0 بنانے.
مجھے آگے بڑھو اور ٹائپ کریں تمام چھوٹے ماں میں.
نوٹس دونوں اصل اور کاپی پونجیکرت گیا ہے.
کیوں؟
ویسے، ے اور ٹی دونوں کی طرف اشارہ کر رہے ہیں، اگر آپ، میموری کا ایک ہی حصہ.
اور واضح طور سے، اس جا رہا ہے واقعی حقیقت uninteresting--
ہم یہاں ایڈریس صفر کا استعمال کرتے ہوئے کر رہے ہیں کہ.
میرا مطلب ہے، میں واقعی میں کوئی پرواہ نہیں ہے جہاں چیزیں یاد میں ہے.
معاف کیجئے گا میں تھوڑا بہت زیادہ صفائی کر رہا ہوں.
لیکن میں واقعی میں کوئی پرواہ نہیں ہے چیزوں کی یاد میں کہاں ہیں.
اور اس طرح، یقینا کیا پروگرامرز کے بارے میں سوچنے کے لئے ہوتے ہیں
آپ کے بارے میں بات کرتے ہیں یہ ہے کہ ایک ایڈریس، یا ایک پوائنٹر،
یہ یاد میں ہے جہاں کسے پرواہ ہے.
یہ ہے تو مجھے کوئی پرواہ نہیں بائٹ ایک یا ایک ارب.
میں صرف یہ ہے کہ پرواہ متغیر ہے مؤثر طریقے سے
میموری کے اس حصہ کی طرف اشارہ.
اور اس طرح، اب، بجائے quibble کی صوابدیدی میموری پتوں کے دوران، چلو
صرف اشارہ اپنی طرف متوجہ کرنے کے لئے شروع تیر کے طور پر اشارہ، کے طور پر.
تو اور T واقعی، کیا ہیں ہے اس پروگرام کے مطابق،
، میں T پیدا کس طرح کی وجہ سے یہ صرف دو علیحدہ متغیر ہے
میموری کا ایک ہی حصہ کی طرف اشارہ.
وہ کہاں ہیں اور ہم پرواہ نہیں کرتے.
تو ہم تجریدی دور کہ تفصیل کر سکتے ہیں.
>> تو کس طرح میں اس کو ٹھیک کرتے ہیں؟
میں کاپی کا ایک ورژن لکھنا چاہتے ہیں تو پروگرام ہے کہ اصل کاپیاں سٹرنگ
اور صرف فائدہ اٹھانا کاپی، صرف intuitively،
کیا گیا ہے ایک ہونا ہماری حل کرنے کے لئے جزو؟
سامعین: [اشراوی]
DAVID J. MALAN: ہم کیا ضرورت ہے؟
سامعین: میموری کا حصہ.
DAVID J. MALAN: ہم نے کی ضرورت میموری کا ایک حصہ، ٹھیک ہے؟
ہم نہیں جانتے کہ کس طرح ضروری، ابھی تک ایسا.
لیکن میں ایسا کرنے کے لئے اس کی ضرورت ہے کہ کم کیس میں اصل ماں
میموری کی اس اضافی حصہ میں ختم ہوتا ہے.
اور پھر میں نے کاپی کو تبدیل جب، میں یہاں یہ کاپی کو تبدیل نہیں کرنا چاہتے.
مجھے اس کی بجائے صرف اس کو تبدیل کرنا چاہتے ہیں کاپی تاکہ اصل میں کوئی تبدیلی نہیں ہے.
>> لہذا، ہم یہ کر سکتا ہے کہ کس طرح دیکھتے ہیں.
میں کاپی 1، پہلے سے ہی ہے جس تبصرہ کے چھین لیا گیا،
لیکن آن لائن سے تبصرہ کیا ہے.
ہم بجائے مندرجہ ذیل یہ کیا لکیریں ایک جیسی ہیں، مجھے ایک تار حاصل
اور اس کا فون.
لیکن اب ہمارے سب سے زیادہ میں سے ایک میں نظر آتے ہیں پیچیدہ لیکن پیچیدگی کے آخری
تھوڑی دیر کے لئے، 16 لائن بالکل اس کرتا ہے.
کے ساتھ آپ آرام تو تصویر ہم صرف drew--
، مجھے یاد کا ایک نیا حصہ دے اس میں ہر چیز کو کاپی،
ہم کوڈ ہے کہ ترجمہ کس طرح دیکھتے ہیں.
>> تو لائن 16، بائیں ہاتھ کی طرف، چار * T یہاں مجھے اس باکس فراہم کرتا ہے.
یہی وجہ ہے کہ یہ سب کرتا ہے.
دائیں ہاتھ کی طرف پر، میٹر کی alloc، یا malloc کے،
سپر فینسی میموری مختص کرنے،، ہے صرف کہہ کا ایک خفیہ طریقہ
مجھے یاد کا ایک حصہ دے.
ہم کس طرح زیادہ سے زیادہ میموری کی ضرورت ہے؟
ویسے، ایک بڑا اظہار کی طرح ہے.
لیکن اسے یہاں کا کہنا ہے دیکھتے ہیں.
تو یہ، کورس کے، دے مجھے ے کی سٹرنگ کی لمبائی.
تو، ماں یہ کیا ہونا چاہئے؟
تو تین، ٹھیک ہے؟ ماں تین حروف ہے.
آپ کا شمار نہیں الٹا سلیش صفر جب آپ
یہ ایک سٹرنگ کی لمبائی کے بارے میں بات اصل میں انسانی دیکھ سکتے خطوط.
تو ماں، تو یہ 3 مجھے دیتا ہے.
لیکن اب میں 1 کا اضافہ کر رہا، ایک منٹ رکو.
کیوں میں نے اصل میں کرنا چاہتے ہیں 4 بائٹس اور نہ صرف 3 مختص؟
جی ہاں؟
>> سامعین: پرہری کی قیمت ہے؟
>> DAVID J. MALAN: بالکل، کہ سینٹینل قدر کے لئے.
الٹا سلیش صفر، میں 4 بائٹس کل کی ضرورت ہے.
تو میں لمبائی کی ضرورت سٹرنگ کے علاوہ 1.
اور پھر صرف اچھے measure-- لئے یہاں تک کہ اس نظام پر اگرچہ،
یہ ہمیشہ میں کہہ رہا ہوں 1-- ہونے جا رہا ہے ایک چار کے سائز کی طرف سے ضرب.
sizeof ہے باہر کر دیتا C میں ایک آپریٹر ہے کہ
صرف آپ کو بتاتا ہے ہے کہ بائٹس کی تعداد
ایک خاص ڈیٹا کی قسم کے لئے ضروری.
یہ arrays کے لئے کام نہیں کرتا، عام طور پر، بعض اوقات تو یہ کرتا ہے.
لیکن عام طور پر صورت میں، کوئی.
کئی ایک بائٹس کے لئے کس طرح لیکن یہ مجھے بتائیں گے باہر کر دیتا ہے جس میں چار ہے، ہمیشہ 1.
تو اس 1 سے ضرب کی طرح ہے.
>> کوڈ کا تو سپر خفیہ لئے تلاش کر رہے لائن.
لیکن یہ کرتا ہے سب دیتا ہے مجھے یاد کا ایک حصہ.
لیکن یہ کاپی کیا جا کرنے کے لئے لگتا ہے کہ میموری میں کچھ؟
ابھی تک نہیں.
اور اس طرح 22 لائن پر میں کیا کرتی ہوں، اور 23، 24، 25، اچھی طرح سے، میں صرف یہ کرتے ہیں.
اور اس طرح کی ہے اب پرانے اسکول کی چیزیں.
اس pset 2، جہاں کی طرح ہے آپ کو صرف چیزوں جا رہے ہیں
کے ارد گرد کی یاد میں، یا بلکہ ڈور میں.
>> تو میں 0 سے iterating رہا ہوں سٹرنگ کی لمبائی.
میں کردار میں ویں کاپی کر رہا ہوں ٹی میں کردار میں ویں میں ایس.
اور میں کیونکہ، پروگرامر، بنا بالکل کے طور پر بہت سے بائٹس مختص کرنا اس بات کا یقین
مجھے اس کی ضرورت کے طور پر، یہ بالکل صحیح ہے ون ٹو ایک رشتہ.
اور میں ماں کو کاپی نئے ایک کے لئے چھوٹے.
اور پھر آخر میں، میں اس لائن کیا.
اور اس طرح اثر صرف ہے یہاں اس ٹی فائدہ اٹھانے کے لئے.
تو ایک بہت جذب، لیکن آپ کو صرف پر غور کریں تو
کیا واقعی چل رہا ہے ہڈ کے نیچے
صرف ان آگے بڑھ رہا ہے تمام ہے کہ، کے ارد گرد بائٹس
اس مسئلہ کو حل کرنے کی ضرورت ہے بس ہمیں میموری کے اس حصہ دینے کے لئے.
اب خطرے میں حد سے زیادہ، مجھے دکھا دو
تقریبا ہے کہ ایک دوسری مثال یہ ایک کے لئے سوائے، جیسی
کوڈ کے مطابق.
تو اس ہیکر کے ورژن ہے اس پروگرام کے، اگر آپ.
لیکن صرف دو کشید یہ کیا ہو رہا ہے میں.
لائن 24 ٹی استعمال کیا جاتا ہے بریکٹ میں بریکٹ میں ہو جاتا ہے.
اب، میں یہ تبدیل کر رہا ہوں بہت زیادہ خفیہ سٹار ٹی
پلس 1 ستارہ ے 1 پلس برابر.
>> تو کیا ہو رہا ہے اور کیوں ہم نے ایک ستارہ کردار ہے؟
ہم سے پہلے ستارہ دیکھا، اور ہے یہ مختلف یہاں استعمال کیا جا رہا ہے.
ہم نے پہلے اب میں دیکھ رہا ہوں، چار * دیکھا آغاز میں سٹار، اور یہ کہ ٹھیک ہے.
یہ ہم باہر کر دیتا ہے کیونکہ قسم کی صرف اندازہ کر سکتے ہیں
لوگ پہلے سے اصولوں پر چل رہا ہے.
تو صرف صاف ہو جائے، ایس کیا ہے؟
گزشتہ ہفتے، یہ ایک تار تھا.
کہ اب کافی نہیں ہے.
خاص طور پر، کی کیا ہے؟
>> سامعین: [اشراوی]
>> DAVID J. MALAN: یہ ایک پوائنٹر ہے.
یہ پتہ ہے پہلا کردار ہم میں ٹائپ.
ٹھیک ہے، ٹی کیا ہے؟
>> سامعین: [اشراوی]
>> DAVID J. MALAN: پہلے بائٹ کا پتہ
ٹی میں، میموری کے اس حصہ reallocated.
تو یہ پتہ چلا ہے کہ جب ہم سٹرنگ تک 0 سے iterate
length-- سب سے پہلے، میں کیونکہ، 0 سے شروع ہوتا ہے
لوپ چیز کے لئے اس پرانے اسکول کی.
تو صرف سادگی کے لئے، چلو کوڈ کی پہلی لائن فرض
واقعی صرف اس، درست ہے.
میں صفر کا اضافہ، صفر ہے تو کچھ کرنے کے لئے شاید
ایک اثر پڑے کرنے کے لئے نہیں جا رہا ہے.
>> تو یہ بات ہے؟
یہ ستارہ ہے کہ باہر کر دیتا ہے اس تناظر میں آپریٹر
dereference ہے ہے صرف ہے جس آپریٹر،
جانا کہہ کا ایک فینسی طریقہ مندرجہ ذیل پتے پر.
تو ے تو سب سے پہلے کا پتہ ہے میموری کے اس حصہ میں کردار،
* ے ذریعہ وہاں جانا.
اور ہم نے تیار کی ہے کیونکہ اس طرح میں تصویر،
آپ کو اپنانے کر سکتے ہیں ذہنی ماڈل مندرجہ ذیل.
اس کی ہے، اور آپ کے *، * ے کہتے ہیں قسم کی ٹیوبیں اور سیڑھی کی طرح،
آپ کو بچپن سے کھیل یاد ہے، کہ تیر کی پیروی اور جانے کی طرح ہے
پتے پر.
>> * T ایک ہی بات ہے.
تو یہاں شروع، اس حصہ میں جانا.
میں صرف اپنی طرف متوجہ نہیں کر سکتے ہیں اس کی سکرین اس طرح.
* T یہاں جانے کے لئے کا مطلب ہے.
اور پھر، لوپ کے لئے صرف ہے ، یہاں اس کردار کو منتقل کہہ
یہاں اس کردار کو منتقل، یہاں اس کردار کو منتقل.
لیکن کس طرح میں اس ہے incrementation کروں؟
میں نے صرف خارج کیا رد کرنے کی ضرورت ہے.
یہ عام طور پر کہا جاتا ہے پوائنٹر ریاضی، جو
پتوں کے ساتھ ریاضی کا مطلب.
>> تو، اس میں لوپ کے لئے، میں، میں incrementing رہو
اور S ایک پتہ ہے اور ٹی ایک ہے ایڈریس، میں صرف 1 انہوں نے مزید کہا رکھنے کے لئے اگر،
کہ صرف آگے بڑھنے رکھنے کا مطلب ہے کہ، اور آگے، اور میموری میں آگے.
یہ آکسفورڈ سٹریٹ کی طرح ہے، کاوچ سرفنگ کے عمارت پر ہے کہ سڑکوں پر.
کاوچ سرفنگ کے عمارتوں 33 آکسفورڈ سٹریٹ پر ہے.
اگر ایسا ہے تو آپ کو 33 کرنے کے لئے تھے آکسفورڈ سٹریٹ کے علاوہ 1،
34 آکسفورڈ کی طرف لاتا ہے سٹریٹ، پھر 35 آکسفورڈ سٹریٹ،
پھر 36 آکسفورڈ سٹریٹ، جو ان عمارتوں اصل میں ہیں - اگر وہ موجود.
اور اس طرح، کہ ہم کر رہے ہیں ہے یہاں پوائنٹر ریاضی کے ساتھ.
>> تو یہ ایک سپر جادو طریقہ ہے خود کا اظہار کرتے.
لیکن ہے کہ تمام ہو رہا ہے ہڈ کے نیچے
صرف ان پتوں پر عمل پیرا ہے، ایک نقشہ مندرجہ ذیل کی طرح، اگر آپ،
یا جیسے تیر مندرجہ ذیل ہم سکرین پر تیار کی ہے.
ٹھیک ہے، ایک بہت ہضم کرنا.
نحو پر کوئی سوال، تصورات، اشارہ، malloc کے، یا جیسے.
جی ہاں، یہاں پہلی.
>> سامعین: تو کہ جہاں ، * T toupper کے * T برابر کا کہنا ہے کہ
فائدہ اٹھانے کے لئے جا رہا ہے تمام حروف یا just--
>> DAVID J. MALAN: آہ، بہت اچھا سوال.
یہاں اس لائن میں، 31، اس سے فائدہ اٹھانے کی جا رہی ہے
پہلا خط یا خط کے تمام.
تو جا کر اس کا جواب دیں واپس پہلی اصولوں پر.
اور یہاں پہلی اصولوں میرا مطلب صرف بنیادی تعریفیں پر جائیں
ملوث ہے کے.
تو toupper کے ایک تقریب ہے کہ ایک چار capitalizes کے.
وہ سب ہے.
* T first-- جانے کا مطلب ہے T میں ایڈریس پر جانے.
تو، تصویر میں، اس حصہ ہے میموری کی ہم malloc کے ساتھ مختص،
اور اس T * یہاں T جانے کا مطلب ہے، ہے.
>> دریں اثنا، آپ گزر رہے ہیں اس قدر، چھوٹے میٹر
toupper کے کرنے کے لئے، آپ کو واپس حاصل کر رہے ہیں دارالحکومت ایم، جہاں آپ نے اسے ڈال رہے ہو؟
تم نے اس ایک ہی جگہ میں ڈال رہے ہیں.
اور اس طرح ان کے اس منطق کی طرف سے بنیادی تعریف یہ صرف ہے
پہلا خط فائدہ تم نے یا ایک ساتھ دہرانا جب تک
لوپ یا تھوڑی دیر کے لوپ کے لئے، یہ نہیں جا رہا ہے آپ یہ پوچھنا سے زیادہ کچھ کرنا.
اچھا سوال.
جی ہاں؟
>> سامعین: آپ کیوں استعمال کیا طریقہ بجائے dereference ہے
صف؟
>> DAVID J. MALAN: آہ، اچھا سوال ہے.
تم کیوں dereference ہے استعمال کریں گے بجائے صف طریقہ کا طریقہ؟
کوئی خاص وجہ، ایماندار ہونا.
اور، اصل میں، اس کے لئے مثال کے طور پر قسم، صحیح،
میں صرف بنانے بحث کر رہا ہوں زیادہ پیچیدہ پروگرام،
زیادہ آنکھوں، زیادہ گلیزنگ ہیں لوگوں باہر کی جانچ پڑتال کر رہے ہیں
اس سپر جادو لگتا ہے کیونکہ یہاں تک کہ یہ ایک ہی بات کر رہی ہے اگرچہ.
اور اس طرح، واضح طور سے، یہ ایک بیکار ضعف پیچیدہ حل
مسئلے کا.
>> یہ اب بھی اچھا ڈیزائن ہے پانچ ڈیزائن کے لئے پانچ میں سے،
یہ بریکٹ میں ہے کہ آیا سنکیتن یا پوائنٹر سنکیتن.
ہم حاصل خاص طور پر جب But-- بعد میں کورس میں 5 pset میں
ہم اس لغت کو لاگو ہے کہ جب میں اوقات کی ایک جوڑے کا ذکر کیا ہے
ہم اصل میں پرواہ کریں گے کم سطح میموری پتوں
ہم واقعی سمجھتے ہیں کہ کیا ہو رہا ہے.
>> لیکن، اب کے لئے، یہ پتہ چلا ہے کہ کوڈ یہاں مربع بریکٹ کی لائن
واقعی کوئی وجود نہیں ہے.
انہوں نے کہا جاتا ہے کیا ہیں syntactic چینی، جس
کہہ کے صرف ایک عجیب ٹھنڈی طریقہ ہے سنکلک مربع بریکٹ ہونا بدلتا
کہ حساب کا اظہار.
تو یہ ایک انسانی کنونشن ہے صرف لکھنے کے لئے کے قابل ہو جائے
یہ بہت صارف دوستانہ بریکٹ.
لیکن کیا سنکلک، بجنا، واقعی کسی بھی وقت کر رہا ہے
آپ کو لائن میں روشنی ڈالی ہے کیا لکھنا 24، ہڈ کے نیچے یہ واقعی ہے
اس میں تبدیل.
یہ ایک انسان کے طور پر صرف زیادہ آننددایک ہے پڑھنے اور لائن 24 کی طرح کوڈ لکھنے کے لئے.
لیکن بالآخر یہ تربیت پہیوں بھی دور آئے
ایک کی اپنی سکون مضبوط ہو جاتا ہے جب.
>> ٹھیک ہے، تو اس یاد سب سے بڑا مسئلہ کی طرح تھا
ہم سے ٹکرا گئے.
اور یہ کہ اس پورے جنم کیا ہے اشارہ کے بارے میں لات گفتگو،
اور پتے، اور کاپی چیزیں.
ہم سے زیادہ فسل گیا کیونکہ یہ تھا یہ پاگل، پاگل مسئلہ، جس کے تحت
میں لارین کے ساتھ logically-- لاگو یہاں ڈیمو اور سنتری کا رس پر
milk-- میں ایک بالکل algorithmically ہے صحیح تقریب
دو متغیر 'گماگمن کے لئے اقدار، لیکن چیز
کوئی مسلسل ہے، یا نہیں میرا کوڈ مستقل، اثر.
>> اور یہی وجہ ہے کہ تھا؟
ایک مختصر میں، یہی وجہ ہے تبدیل کردہ لسٹ کے نفاذ
منطقی طور پر درست، لیکن کوئی اثر پڑتا ہے اس سے گزر رہے ہیں کہ متغیر پر،
اہم کے لئے X اور Y کی طرح؟
مسئلہ کا خلاصہ کیا تھا؟
جی ہاں؟
سامعین: متغیر بنا لیا ہے پاس میں متغیر کی کاپیاں
تقریب کے ذریعے.
>> DAVID J. MALAN: بالکل، جب آپ کے پاس ایک تقریب میں متغیر، یا دلائل
ایک تقریب میں، وہ کر رہے ہیں کاپی، کی طرف سے منظور کیا جس میں
آپ کو دیکھ کر ایک جیسی حاصل کرنے کا مطلب X اور Y دونوں کے لئے بٹس کی طرز،
A اور B یہاں بلایا.
اور تم کچھ بھی کر سکتے ہیں تم نے ان نقول کے ساتھ چاہتے ہیں،
لیکن وہ کوئی ضرورت کے لئے جا رہے ہیں کالنگ تقریب پر اثر.
اور، اصل میں، ہم اس مبذول کرائی سکرین، یاد تصویر
آخری بار، جس کے تحت اگر آپ واقعی ہے کے بارے میں سوچنا
اگر hood-- نیچے جا رہا یہ آپ کے کمپیوٹر کی میموری ہے
اور یہاں نیچے کا حصہ ہے میموری، اہم کے لئے استعمال کیا جا رہا
اس کا حصہ ہے میموری، سویپ کے لئے استعمال کیا جا رہا
اور یہاں تک کہ اگر اہم ہے دو متغیر، X اور Y،
تبدیل کردہ لسٹ جیسی لئے تلاش کر رہے ہو سکتا ہے 1 اور 2 ہیں جن میں سے دونوں کی اقدار،،
لیکن وہ مکمل طور پر ہیں میموری کے مختلف حصوں.
>> تو ہم اس کے لئے ایک حل کی ضرورت ہے.
اور واضح طور سے، اب یہ ہے کہ ہم اس لگ رہے ہو گے صحیح، اس مسئلے کا ایک حل ہے.
اب ہم صلاحیت کی وجہ سے ہیں، تو پتوں کی راہ کی طرف سے چیزوں جوڑتوڑ
اور، کی طرح ٹیوبیں اور سیڑھی سٹائل، یہ تیر کی پیروی
اور ہم چاہتے ہیں کہیں بھی جانے یاد میں، ہم نہیں کر سکتے ہیں
کی طرف سے اس مسئلہ کو حل اہم سے گزر کا تبادلہ کرنے کے
نہیں اقدار ہم چاہتے ہیں تبدیل کردہ لسٹ، لیکن صرف intuitively
کیا ہم اس کی بجائے تبادلہ کرنے کے لئے منتقل کر سکتے ہیں؟
>> [آوازیں interposing کی]
>> DAVID J. MALAN: کیوں ہم صرف نہیں یہ درست، پتوں کو منتقل؟
ہم کیوں تبدیل کردہ لسٹ ایک نہیں دیتے ھجانے کا نقشہ، اگر آپ،
اس کے لئے اس کی طرف جاتا ہے اصل اقدار X اور Y.
چلو تبدیل کردہ لسٹ، اصل میں تبدیل ان کی اصل بٹس، بجائے
صرف بٹس کی کاپیاں گزر.
اور اس طرح، حقیقت میں، کہ کیا ہے جا حل ہو.
اس ورژن میں یہاں ہے واضح طور پر برے اور ناقص.
اور اب، پہلی نظر میں، یہ صرف لگتا ہے کی طرح ہم تصادفی ستاروں کا ایک گروپ شامل
اور ہماری انگلیوں سے تجاوز کر اسے مرتب کرے گا.
لیکن، اب یہ مرتب کریں گے.
>> لیکن ان باتوں کا مطلب کیا دیکھتے ہیں.
اور، بدقسمتی سے، مصنفین سی ایک علامت منتخب کیا جا سکتا
یہ ایک چھوٹا سا بنانے کے لئے واضح، لیکن اسٹار آپریٹر
میں مختلف معنی ہے دو مختلف سیاق و سباق.
اور ہم نے دونوں کو دیکھا ہے، لیکن تمیز دو.
>> ، سب سے اوپر وہاں تو میں نے ایک اور B تبدیل کر دیا گیا ہے جب
برا میں int کی ہونے کی وجہ سے ورژن ستاروں، A اور B int کی،
پہلے، integers کے تھے.
اب میں ایک اور ب کیا ہیں اچھا، سبز ورژن؟
وہ پتے ہیں.
کیا، کے پتے صاف ہو جائے کرنے کے لئے؟
integers کے پتے.
ہوں کہ حقیقت یہ ہے کہ INT سٹار ذرائع کہہ
اس کا پتہ ہے ایک عددی، خاص طور پر.
>> تو اب کوڈ کی لائنیں میں محسوس، کچھ بھی تبدیل کر دیا گیا.
Tmp کی وجہ سے، ایک ہی رہتا ہے یہ صرف عارضی عددی ہے،
وہاں کوئی میموری جادو.
لیکن اب ایک اسٹار کی ضرورت ہے.
اور، اصل میں، ہر A اور B کے دوسرے ذکر،
تمام ہے کہ محسوس کریں سبز سرخ سے تبدیل
میں prefixing کی رہا ہے ستاروں کے ساتھ ان متغیرات.
میں نے ایک اور بی کاپی کرنے کے لئے نہیں کرنا چاہتے کیونکہ.
کیونکہ میں نے صرف ایک اور بی اور سویپ کاپی کریں تو A اور B، میں واقعی میں کیا گماگمن رہا ہوں؟
بس پتے، میں تبادلہ کرنا چاہتے ہیں کیا ان پتوں میں ہے.
میں وہاں جانا چاہتا ہوں.
اور اس طرح سٹار آپریٹر میری تقریب کے اندر،
نہیں پیرامیٹر کی فہرست کے اندر، آپ کو ان پتوں پر جانے کا مطلب
اور اصل میں ان اقدار کو تبدیل.
>> تو کیا تصویر کرتا ہے اب بجائے کی طرح نظر آتے.
ویسے، اس کی بجائے اگر میں گزر رہا ہوں ایک کے لئے میں اور 1 اور ب 2--
میں اصل میں شامل کرنے کی ضرورت یہاں ایک دوسرے تعریف.
تو اس حصہ لگتا ہے کہ میموری کی جگہ 10 میں ہے.
>> یہ مقام 11 پر ہے، لیکن اس ایک آسان بنانے کے تھوڑا سا ہے،
اب X کے پاس دو اختیارات میں گزر کرنا ہے اور Y یا میں ان کے پتوں کے پاس ہیں؟
میں ان کے پتوں پاس کرجاتے ہیں تو اس طرح، میں نے صرف
اب لاگو کرنے کے لئے کی ضرورت ہے سبز کوڈ مطابق تبدیل کردہ لسٹ
کہ اس کو دیکھتا ہے تو ایک اور جب یہ B، یہ صرف ایک اور ب کاپی نہیں دیکھتا
دودھ اور سنتری کا رس منتقل.
دودھ اور سنتری کا رس استعارہ اب، نیچے ٹوٹ جاتا ہے
کیونکہ وہ لوگ کپ مائع اور نہ نقشے کی.
ہم بجائے جانے کی ضرورت ہے 10 اور ہم سے نمٹنے کے لئے
11 سے نمٹنے کے لئے جانے کی ضرورت ہے، اور پھر اس گماگمن منطق انجام.
>> تو منطق، ایک ہی ہے لیکن ہم ایک تھوڑا سا مختلف طریقہ کی ضرورت ہے
کے ان متغیرات تک رسائی حاصل.
اور آخر میں، کیا پروگرام یہ ہے کی طرح نظر آنا ہے.
swap.c میں لفظی کاپی اور سبز ورژن چسپاں.
لیکن مجھے ایک تبدیلی کرنے کے لئے کی ضرورت ہے.
یہ صرف سویپ تبدیل کرنے کے لئے کافی نہیں ہے.
کیا کوڈ کی دوسری لائن میں کپڑے تبدیل کرنے کی ضرورت ہے؟
جی ہاں؟
>> سامعین: اس کے دلائل کہاں لے جاتا ہے.
>> DAVID J. MALAN: کہاں اس دلیل لیتا ہے.
تو اگر میں اہم تک سکرال تو میں صرف X اور Y کے پاس نہیں کر سکتے،
اور، میں نے گزشتہ وعدہ نئے نحو کا ٹکڑا آج.
میں نہیں X میں منتقل کرنے کی ضرورت ہے اور Y لیکن X اور Y کا پتہ.
اور یہ، علامت باہر کر دیتا ہے C کے مصنفین کا انتخاب کیا ہے
آپ یہاں ایک ایمپرسینڈ استعمال کرتے ہیں تو نہیں، ہے bitwise ایمپرسینڈ کے ساتھ الجھن میں پڑ جائے،
آپ کو ایک ایمپرسینڈ استعمال کرتے ہیں تو یہاں اور یہاں ایک ایمپرسینڈ،
یہ آپ کے لئے باہر کے اعدادوشمار ایکس کا پتہ کیا ہے،
شاید یہ 10 ہے، کیا ہے Y کا پتہ، شاید یہ ہے
11، اور اس کی بجائے میں ان سے گزر جاتا ہے.
>> تو ایک بہت ایک ہی بار میں سب کو جذب کرنے کے لئے.
لیکن میں فوری طور پر اب دیکھنے دو اپنے باقی چار منٹ
جہاں چیزیں ٹیڑھا جا سکتے ہیں.
اور ایک ایک طرف، اصل کے طور پر میں نے اس تصویر لے لیا،
TF ایک یا دو سال پہلے اس تصویر لے لیا.
تو اس کی پیٹھ کونے ہے ایلیٹ ڈائننگ ہال کی.
نوٹیفائر شاید سب سے مشکل ہیں ہم CS50 میں احاطہ اس موضوع.
آپ کی طرح فکر تو شاید یہ ہے کی طرح ڈھال کے ہے
ہاکی چھڑی سے زیادہ اس طرح، احساس
ہم اس قسم کی ایک چوٹی میں قریب آ رہے ہیں تصوراتی پیچیدگی کے لحاظ.
>> اور میں اس کو لانے تصویر، میں قسم کھاتی ہوں کیونکہ
موسم خزاں 1996 میں خدا کے لئے، جب میں نے میری تعلیم ساتھی کے ساتھ CS50،
نشاط مہتا، وہ مجھے اندر بیٹھ دوپہر کے کھانے کے دوران ایلیٹ ڈی ہال کے کونے،
یا رات کے کھانے، یا کچھ کرنے کی کوشش کرنا مجھے اشارہ سمجھنے میں مدد کرنے.
میں ہفتے کے بعد تھا جہاں یہ ہے یہ لیکچر جب میں متعارف کروائی گئی
میں آخر میں اشارہ سمجھا.
اور میں نے اس پر امید ہوں کہ دور جلد از جلد آپ کے لئے پر کلک کریں گے.
لیکن بالکل درمیان اس احساس زیادہ جدید ترین موضوعات
ہم میں دیکھا ہے.
لیکن یہ سب سے زیادہ طاقتور کے درمیان ہے.
تم نے اسے حاصل ہے جب، یہ واقعی تمام ہے صرف آخر میں ایک ساتھ آنے والے.
تو باقی نہیں ہے یقین دہانی کرائی آج میں سنک کرنے کے لئے کی ضرورت ہے.
>> تو یہاں آخری پروگرام ہے ہم پر نظر کرنے جا رہے ہیں.
اور ہم نے ایک کے ساتھ ختم کرنے جا رہے ہیں claymation کی فوری تین منٹ
ہمارے دوست، نک Parlante کی طرف سے بنایا.
یہاں ایک پروگرام دو پر، ہے لکیریں ایک متغیر X اور Y کا اعلان.
جن میں سے دونوں پتے ہیں integers کے، AKA اشارہ.
اس کے بعد ہم کافی مختص میموری ایک int ذخیرہ کرنے کے لئے
اور پتہ ذخیرہ X میں ہے کہ میموری کی.
لہذا، یہ بھی آسان ہے پہلے مثال کے طور پر کے مقابلے میں.
، مجھے یاد کے چار بائٹس دے کہ ایک int کے سائز ہے،
اور ایکس میں اس پتے ڈال.
یہ لائن یہاں کا مطلب ہے X میں پتے پر جائیں
اور معنی ڈال زندگی، وہاں تعداد 42.
لیکن اس لائن مجھے پریشانی لاحق ہورہی.
Y Y میں ایڈریس پر جانے کا مطلب ستارہ، اور وہاں اشوب تعداد 13 ڈال.
کیوں اس نقطہ پر، یہ خطرناک ہے story-- میں ہی سہی تیزی سے بتایا
ہمارے زوال پذیر منٹ میں یہاں کیوں یہ برا ہے
مجھے کہنے کے لئے، Y میں ایڈریس پر جانا؟
>> سامعین: آپ کی ضرورت نہیں [اشراوی].
DAVID J. MALAN: میں نہیں ہے Y میں کچھ ڈال.
تو Y کی قدر کیا ہے، کہانی میں اس وقت؟
ہم نے کوئی اندازہ نہیں ہے.
یہ کچھ ردی کی ٹوکری کی قیمت ہے اور نہ کرو معلوم ہے.
ہم اس نوٹ پر ختم کر سکتے ہیں.
>> [ویڈیو پلے بیک]
>> -Hey، Binky کی، جاگ.
یہ پوائنٹر تفریح ​​کے لئے وقت ہو گیا ہے.
>> -وہ کیا ہے؟
اشارہ کے بارے میں معلومات حاصل کریں؟
اوہ، گوڈی.
>> ٹھیک، شروع کرنے کے لئے، میں نے اچھا ہے ایک جوڑے اشارہ کی ضرورت کے لئے جا رہے ہیں.
>> -ٹھیک ہے.
اس کوڈ دو اشارہ مختص جس کی طرف اشارہ کر سکتے ہیں integers کے.
>> ٹھیک، اچھی طرح سے میں دیکھیں دو اشارہ، لیکن وہ
کچھ کی طرف اشارہ کرنا نہیں لگتے.
>> -یہ ٹھیک ہے.
ابتدائی طور پر اشارہ کچھ کی طرف اشارہ نہیں.
وہ کی طرف اشارہ چیزیں ہیں pointees ملاقات کی اور انہیں قائم
ایک علیحدہ قدم ہے.
>> صحیح، درست، اوہ.
مجھے پتہ تھا.
pointees الگ ہیں.
تو کس طرح آپ کو ایک pointee مختص کرتے ہیں؟
>> ٹھیک، اچھی طرح سے اس کوڈ مختص ایک نئے عددی pointee،
اور اس حصے کا تعین کرتا ہے ایکس اس کی طرف اشارہ کرنے.
>> -Hey، کہ بہتر لگ رہا ہے.
تو یہ کچھ کرتے ہیں.
>> ٹھیک، میں کروں گا پوائنٹر X dereference ہے اس pointee میں نمبر 42 ذخیرہ.
یہ چال کے لئے، میں نے کی ضرورت ہو گی میری محولہ لقب ضبطی کے جادو کی چھڑی.
>> محولہ لقب ضبطی کے جادو کی چھڑی -آپ؟
اہ، کہ، یہ بہت اچھا ہے.
>> -یہ کوڈ کی طرح لگتا ہے.
میں صرف تعداد مقرر کریں گے and--
>> [POP صوتی]
>> -Hey، یہ جاتا ہے وہاں دیکھو.
تو، X پر ایک dereference کر مندرجہ ذیل تیر اس pointee تک رسائی حاصل کرنے.
اس صورت میں، وہاں 42 ذخیرہ کرنے کے لئے.
ارے، نمبر ذخیرہ کرنے کے لئے اس کا استعمال کرنے کی کوشش دیگر پوائنٹر کے ذریعے 13، Y.
>> -ٹھیک ہے.
میں صرف Y کے لئے یہاں جائیں گے، اور ان کی تعداد 13 سیٹ اٹھو.
اور اس کے بعد چھڑی لے محولہ لقب ضبطی اور just--
>> [buzzer کے آواز]
>> اوہ، ارے یہ کام نہیں کیا.
، Binky آن اہ، مجھے نہیں پتہ، کا کہنا ہے کہ محولہ لقب ضبطی لگتا
ترتیب کیونکہ Y، ایک اچھا خیال ہے pointee ایک علیحدہ قدم ہے.
اور میں ہم نے کبھی یہ کیا نہیں لگتا.
>> -Hmm، اچھی بات.
>> ہاں، ہم پوائنٹر، Y مختص، لیکن ہم ایک pointee کی طرف اشارہ کرنے کے لئے مقرر نہیں.
>> -Hmm، بہت اچھا مشاہدہ.
-Hey، تم وہاں پر Binky اچھے لگ رہے ہو.
آپ تاکہ اسے ٹھیک کر سکتے Y پوائنٹس ایکس طور پر ایک ہی pointee کرنے.
>> ضرور، میں نے اپنے جادو کی چھڑی کا استعمال کرتے ہیں پوائنٹر تفویض کی.
>> ایک ہونے جا رہا ہے کہ -is مسئلہ، پہلے کی طرح؟
>> -کوئی، اس pointees چھو نہیں ہے.
یہ صرف ایک پوائنٹر تبدیل اسی thing-- کی طرف اشارہ کرنے
>> [پوپ آؤٹ صوتی]
دوسرے --as.
>> اوہ، میں دیکھ رہا ہوں.
ایکس کے طور پر ایک ہی جگہ پر اب Y پوائنٹس.
تو، اب Y طے ہو گئی ہے، انتظار.
یہ ایک pointee ہے.
تو آپ کی چھڑی کوشش کر سکتے ہیں 13 سے زائد دوبارہ بھیجنے کی محولہ لقب ضبطی.
>> اوہ، ٹھیک ہے، یہاں ہے.
>> -Hey، اس کی طرف دیکھو.
اب Y پر کام محولہ لقب ضبطی.
اور اشارہ اشتراک کر رہے ہیں کیونکہ ایک pointee کہ، وہ دونوں 13 دیکھیں.
>> ہاں، اشتراک، اہ، جو کچھ بھی.
تو، اب ہم مقامات پر سوئچ کرنے کے لئے جا رہے ہیں؟
>> اوہ، ہم وقت سے باہر ہو نظر.
>> -But--
>> تین پوائنٹر قوانین یاد بس.
نمبر 1، بنیادی ڈھانچے آپ کو ایک پوائنٹر ہے،
اور یہ ایک pointee سے زیادہ بتاتے ہیں.
لیکن پوائنٹر اور pointee الگ الگ ہیں.
اور عام غلطی ایک پوائنٹر قائم کرنے کے لئے ہے
لیکن یہ ایک pointee دے بھولنے کی.
>> نمبر 2، پوائنٹر محولہ لقب ضبطی پوائنٹر سے شروع ہوتی ہے
اور اس سے زیادہ اس تیر مندرجہ ذیل اس pointee تک رسائی حاصل کرنے.
ہم سب جانتے ہیں کے طور پر، یہ صرف وہاں تو کام کرتا ہے قسم کے واپس ہو جاتا ہے جس میں ایک pointee ہے،
نمبر 1 پر راج کرنا.
>> نمبر 3، پوائنٹر تفویض ایک پوائنٹر لیتا
اور کی طرف اشارہ کرنے کے لئے اسے تبدیل ایک پوائنٹر کے طور پر ایک ہی pointee.
تفویض کے بعد تو، دو اشارہ
اسی pointee کی طرف اشارہ کریں گے، کبھی کبھی اس اشتراک کہا جاتا ہے.
اور یہ کہ واقعی، اس کے لئے نہیں ہے ہے.
الوداع اب.
>> [END پلے بیک]
>> DAVID J. MALAN: کہ CS50 کے لئے ہے.
پروفیسر نک Parlante کا شکریہ.
ہم اگلے ہفتے آپ کو نظر آئے گا.
>> [الیکٹرانک موسیقی بجانے]