DAVID J. MALAN: ٹھیک ہے. پہلی تو خوش آمدید ایک کوئز کے لئے CS50 پوسٹ مارٹم. ہم افتتاح سوچا اس روایت کو اس سال کے. اور اس کا موقع ہو جائے گا کے ذریعے چلنا کوئز حل. اور ہم کو تیز یا کی بنیاد پر سست گے یہاں ان کے مفاد پر. آپ ہیں کیونکہ تو آپ شاید یہاں ہیں آپ کر سکتے ہیں کس طرح میں دلچسپی یا کچھ جواب دیا جانا چاہئے ان مسائل میں سے. تو کیوں نہ ہم ایک نظر لے نہیں ہے سب سے پہلے اس سیکشن میں؟ تو ڈور ہو رہی ہے. یہ آپ کو تین مختلف ورژن دی تھا کہ ایک پروگرام کی، آخر میں، ایک صارف کی طرف سے ایک تار حاصل کرنے کے لئے کا مطلب ہے. تھا یہ ہے کہ کیا چاہے یا نہیں اس بات کا تعین کرنے کے لئے آپ کے لئے چھوڑ دیا. اور ہم، سوال 0 پوچھا 1 ورژن ہے کہ لگتا ہے مرتب کی اور پھانسی. کیوں پروگرام پر segfault سکتا ہے؟ پہلی نظر میں، کسی بھی تجاویز کیوں ہے؟ جی ہاں. سامعین: تو میں اس کو دیکھ کر یاد طرف دیکھنے کا ایک سابقہ ​​مثال چار * S اور S کے اسکین دیکھ کر اور یہ ایک پوائنٹر، کس طرح ہے کیونکہ دیکھ کر آپ میں سکین کیا یہ متاثر کیا ہے؟ یہ S یا ے کی پتہ ہے؟ DAVID J. MALAN: ٹھیک ہے. اچھا. تو آخر میں، کسی بھی مسئلہ کا ذریعہ شاید کم کرنے کے لئے کی جا رہی ہے کہ متغیر ایس کرنے کے لئے. اور یہ واقعی ایک متغیر ہے. اس متغیر کے اعداد و شمار کی قسم ہے چار *، جس سے یہ جا رہا ہے کا مطلب ایک کردار کا پتہ مشتمل. اور اس کی بصیرت ہے. یہ پتہ موجود جا رہا ہے عام طور پر ایک کردار یا،، میں سب سے پہلے کردار کا پتہ حروف کی ایک پوری بلاک. لیکن پکڑنے ہے کہ اسکین کے، مقصد میں زندگی، ایک ایڈریس دیا ہے اور دی گئی ہے ایک شکل کوڈ،٪ s کو کی طرح، پڑھ کا حصہ میں ایک تار اس پتے پر میموری. لیکن کوئی برابر علامت سے پہلے کیونکہ وہاں سب سے پہلے اس نیم وقفہ کوڈ کے مطابق، ہم اصل میں نہیں ہے کے ساتھ کسی بھی میموری مختص malloc کی، یہ نہیں تھا اصل میں کچھ کے سائز کی ایک صف، تمام مختص آپ کیا کر رہے ہیں صارف کی پڑھ رہا ہے کچھ مکمل میں بورڈ ان پٹ ردی کی ٹوکری کی قیمت، جس ڈیفالٹ کی طرف سے کے میں ہے. تو مشکلات آپ segfault جا رہے ہیں رہے ہیں اس ایڈریس صرف اتنا نہیں ہوتا آپ کر سکتے ہیں ایک قیمت ہو، اصل میں، لکھیں. مختص نہیں تو برا وہاں آپ کی میموری. تو سوال یہ 1 میں، ہم سے پوچھا، 2 ورژن ہے کہ لگتا ہے مرتب کی اور پھانسی. کیوں اس پروگرام پر segfault سکتا ہے؟ تو یہ ایک کم چھوٹی گاڑی ہے. اور صرف ایک سچ ہے واضح طریقہ ہے جہاں آپ کر سکتے ہیں یہاں segfault ایک ٹرگر. اور یہ موضوع ہے. ہم یاد میں سی استعمال کر رہے ہیں کسی بھی وقت، کیا آپ segfault ایک دلانا کر سکتے ہیں 2 ورژن کے ساتھ؟ سامعین: آپ میں اس ان پٹ کا استعمال کرتے ہیں 49 سے زیادہ ہے کہ ایک تار حروف. DAVID J. MALAN: بالکل. آپ کو کچھ مقررہ لمبائی دیکھنے کے کسی بھی وقت یہ ایک صف کے لئے آتا ہے، آپ ریڈار یہ ہو سکتا ہے کہ دور جانا چاہئے مشکلات آپ کی جانچ پڑتال نہیں کر رہے ہیں ایک صف کی حدود. اور یہ کہ یہاں مسئلہ ہے. ہم اب بھی scanf استعمال کر رہے ہیں. ہم اب بھی کوشش کریں جس کا مطلب ہے،٪ s کو استعمال کر رہے ہیں صارف سے ایک تار کو پڑھنے کے لئے. یہی وجہ ہے کہ، جس، S میں پڑھا جا رہا ہے اس وقت، مؤثر طریقے سے ہے میموری کا ایک حصہ کا پتہ یا اس کے برابر ہے. یہ ایک صف کا نام ہے میموری کے حروف کی. لیکن بالکل، کہ آپ کو ایک تار پڑھا ہے کہ 49 حروف، 49 سے زیادہ ہے اگر آپ الٹا سلیش کے لئے کمرے کی ضرورت ہے 0، آپ اتپرواہ کرنے کے لئے جا رہے ہیں کہ بفر. اور تم خوش ہو جاؤ اور کرنے کے قابل ہو سکتا ہے ایک 51st کردار، 52nd، 53rd لکھنا. لیکن کچھ نقطہ پر، OS کہنا جا رہا ہے، کوئی. یہ یقینی طور پر یاد نہیں ہے تمہیں چھو کرنے کی اجازت دی کر رہے ہیں. اور پروگرام segfault جا رہا ہے. تو وہاں، heuristics کسی بھی ہونا چاہئے آپ مقررہ لمبائی ہے وقت، آپ کے پاس یقین ہے کہ آپ لمبائی کی جانچ پڑتال کر رہے ہیں بنانے کے لئے یہ آپ کو کوشش کر رہے ہیں جو کچھ بھی ہے کے اس میں پڑھنے کے لئے. سامعین: تو یہ ہے کہ، اگر آپ کر سکتے ہیں کو حل کرنے کے اصل میں جانچ پڑتال کے ایک بیان تھا لمبائی زیادہ ہے زیادہ یا سے بھی کم؟ DAVID J. MALAN: بالکل. آپ کو صرف ایک شرط ہے کا کہنا ہے کہ، کہ اگر - یا بلکہ آپ کو ضروری نہیں جانتے پیشگی کتنے حروف صارف، ٹائپ کرنے کے لئے جا رہا ہے آپ چکن اور انڈے ہے. آپ کو scanf کے ساتھ اس میں پڑھا ہے نہیں ہے جب تک آپ کو اس کی ہے کتنی دیر تک کے اعداد و شمار کر سکتے ہیں. لیکن اس وقت، یہ، بہت دیر ہو چکی ہے آپ نے پہلے ہی اس میں پڑھا ہے کیونکہ میموری کے کچھ بلاک. ایک طرف، CS50 لائبریری سے اجتناب کیا جائے تو اس مسئلے کو مکمل طور پر، یاد fgetc کا استعمال کرتے ہوئے کی طرف سے. اور یہ، ایک وقت میں ایک کردار پڑھتا ہے ٹپ toeing جاننے کے، آپ کے ساتھ ہے ایک کردار اگر اتپرواہ نہیں کر سکتے ہیں آپ ایک وقت میں ایک کو پڑھنے کے. پکڑو GetString کے یاد ساتھ ہے ہم مسلسل دوبارہ سائز ہے میموری کے اس حصہ، جس صرف ایک درد ہے. اس کی لائنوں کی ایک بہت ہے ایسا کرنے کے لئے کوڈ. تو ایک اور نقطہ نظر کے لئے ہو گا اصل میں ایک کزن کا استعمال کرتے ہیں، تو scanf کا، بات کرنے کے لئے. ان میں سے ایک بہت کچھ کے متغیرات ہیں اصل میں چیک کرنے کے لیے کام کرتا ہے کہ کی لمبائی کتنے حروف آپ زیادہ سے زیادہ پڑھ سکتا ہے. اور آپ کو نہیں پڑھا ہے، کی وضاحت کر سکتے ہیں 50 سے زیادہ حروف. تو یہ ایک اور نقطہ نظر ہو سکتا ہے لیکن کرے گا بڑے آدانوں کی کم جگہ دینا. تو اس ورژن لگتا ہے، پوچھتا ہے 2 سوال 3 مرتب کی اور پھانسی دے دی ہے. کیوں کہ اس پروگرام پر segfault سکتا ہے؟ تو یہ اصل میں ایک ہی ہے ، جواب، اگرچہ یہ ایک چھوٹا سا اچھے لگ رہا ہے. ہم طرح محسوس ہوتا ہے، جس malloc کے، کا استعمال کرتے ہوئے کر رہے ہیں ہم نے خود کو زیادہ اختیارات دے رہے ہیں. اور پھر ہم اس کو آزاد کر رہے ہیں آخر میں میموری. یہ اب بھی میموری کے صرف 50 بائٹس ہے. تو ہم اب بھی پڑھنے کے لئے کوشش کر سکتے ہیں 51، 52، 1،000 بائٹس میں. اس کے لئے segfault جا رہا ہے بالکل اسی وجہ سے. لیکن ایک اور وجہ بھی ہے. اس کے علاوہ واپسی malloc سکتا ہے اور کیا میموری کا ایک حصہ کا پتہ؟ یہ نل واپس کر سکتے ہیں. اور ہم نے کے لئے جانچ پڑتال نہیں کر رہے ہیں کیونکہ کہ، ہم کچھ کر کیا جا سکتا ہے یہ ہے کہ جس کی ایک اور وجہ، کے لئے پاگل ہم scanf کہہ رہا ہو سکتا ہے، پڑھ کی بورڈ سے صارف کی ان پٹ 0 مقام میں، ارف، شہوت انگیز null. اور یہ کہ، بھی، ضرور کروں گا segfault ایک ٹرگر. تو کوئز ہے اس مقصد کے لئے، ہم کریں گے ایک کے طور پر ان میں سے کسی کو قبول کر لیا عذر. ایک جیسی ہے. ایک تھوڑا زیادہ nuanced ہے. آخر میں، پروگرام کے لئے احترام کے ساتھ میموری کے استعمال کی، کس طرح 2 ورژن کرتے ہیں اور ورژن 3 مختلف؟ تو اس کے قابل ہے، اس کے لئے، ہم نے دیکھا ایک ممکن کے بظاہر لامتناہی کی فراہمی اس کے جوابات. اور لوگوں کے جوابات کے علاوہ، ہم کیا تھے کے لئے امید، لیکن ہم دیگر قبول چیزوں، سے کچھ کا ذکر تھا 2 ورژن استعمال کر رہا ہے یہ حقیقت ہے کہ نام نہاد اسٹیک. ورژن 3 کے ڈھیر کا استعمال کرتے ہوئے کیا جاتا ہے. اور فعل، یہ واقعی نہیں ہے ایک فرق کے تمام اتنا بنانے کے. دن کے آخر میں، ہم اب بھی کر رہے ہیں صرف میموری کے 50 بائٹس ہو رہی ہے. لیکن یہ ممکن جوابات میں سے ایک تھا ہم دیکھ رہے تھے کہ. آپ کو آپ کے سوال جواب کے طور پر لیکن آپ، دیکھیں گے واپس کی TFs سے، ہم نے کیا ہے دوسری بات چیت قبول ان مختلف میموری کا استعمال کرتا ہے کے ساتھ ساتھ. لیکن اسٹیک، اور ڈھیر ہوتا ہے ساتھ جانے کے لئے ایک آسان جواب. کوئی سوال؟ میں تم سے روب دے. روب Bowden: تو مسئلہ 4. اس سے آپ کو بھرنے کے لئے تھا جہاں سے ایک ہے سب سے باہر بائٹس کی تعداد میں استعمال کیا جاتا ہے ان کی مختلف اقسام. ہم دیکھتے ہیں تو سب سے پہلی چیز. ایک 32 بٹ کے فن تعمیر کے فرض، اس CS50 آلات کی طرح. کے بارے میں بنیادی چیزوں میں سے ایک تو 32 بٹ architectures کے، ہمیں بتاتا ہے کہ بالکل کتنا بڑا ایک پوائنٹر جا رہا ہے فن تعمیر میں ہو. تو فوری طور پر، ہم جانتے ہیں کہ کسی بھی پوائنٹر قسم 32 بٹیں یا 4 بائٹس ہے. تو اس میز پر دیکھ، ایک نوڈ * ایک پوائنٹر قسم ہے. 4 بائٹس ہو رہا ہے. struct نوڈ *، یہ لفظی ہے نوڈ سٹار جیسی. اور تو ہے کہ 4 بائٹس ہو رہا ہے. سلک، تو یہ ایک جیسی نظر نہیں آتی ابھی پوائنٹر، لیکن typedef، ایک سٹرنگ صرف ایک چار *، ہے جو ایک پوائنٹر قسم ہے. تو اس 4 بائٹس ہو رہا ہے. تو ان تین تمام 4 بائٹس ہیں. اب، نوڈ اور طالب علم ہیں تھوڑا سا زیادہ پیچیدہ. تو نوڈ اور طالب علم کو دیکھ کر، ہم دیکھتے ہیں ایک عددی اور ایک پوائنٹر کے طور پر نوڈ. اور طالب علم کو دو اشارہ ہے اس کے اندر. تو کم از کم ہمارے یہاں کے کیس کے لئے، راستہ ہم کے سائز کے حساب ختم ہے اس struct سب کچھ شامل ہے کہ struct کے اندر ہے. تو نوڈ کے لئے، ہم ایک عددی ہے، جس میں 4 بائٹس ہے. ہم 4 بائٹس ہے جس میں ایک پوائنٹر، ہے. اور اس طرح ایک نوڈ کی جا رہی ہے 8 بائٹس لے. اور اسی طرح طالب علم کے لئے، ہم ایک ہیں 4 بائٹس اور ایک اور ہے کہ پوائنٹر 4 بائٹس ہے کہ پوائنٹر. تو اس کو ختم کرنے جا رہا ہے 8 بائٹس ہے. تو نوڈ اور طالب علم 8 بائٹس ہیں. اور ان تینوں تمام 4 بائٹس ہیں. اس پر سوال؟ جی ہاں. سامعین: یہ ایک 64 بٹ گیا ہے فن تعمیر، کہ ان میں سے سب کو دوگنا؟ روب Bowden: یہ نہیں کریں گے ان میں سے سب کو دوگنا. تو 64 بٹ کے فن تعمیر، یہ، پھر، تبدیلیاں جو کہ بنیادی بات یہ ہے کہ ایک پوائنٹر اب 64 بٹس ہے. جی ہاں. تو پوائنٹر 8 بائٹس ہے. تو ان 4 بائٹس تھے 8 بائٹس جا رہے ہیں. دو اشارہ تھا جس میں ایک طالب علم،، ٹھیک ہے، اب یہ جا رہا ہے 8 بائٹس، 8 بائٹس ہو. یہ 16 بائٹس بنانے کے لئے جا رہا ہے. لیکن ایک نوڈ اب بھی 4 بائٹس ہے. تو اس پوائنٹر جا رہا ہے 8 بائٹس ہو. یہ 4 بائٹس ہے. تو ایک نوڈ صرف کی جا رہی ہے 12 بائٹس ہو. اس پر کوئی سوال؟ تو اگلے ایک، یہ ہیں HTTP حیثیت کوڈ. اور آپ کے حالات کی وضاحت کرنے کے لئے تھا جس کے تحت ان کی طاقت آپ کو واپس کیا جائے. میں کچھ طالب علموں نے سنا ہے کہ ایک مسئلہ ہے وہ بنانے کی کوشش کی ہے غلطیوں کلائنٹ کے اختتام پر ہو. ہم درخواست کرنے کی کوشش کریں تو جب سرور، کچھ جاتا ہے اپنے اختتام پر غلط. لیکن عام طور پر، ان کے کوڈ ہیں سرور کی طرف سے واپس کیا جا رہا ہے. تو ہم کیا ہو رہا ہے پتہ کرنے کے لئے چاہتے ہیں، غلط یا صحیح سرور پر ان چیزوں کو واپس کرنے کا سبب بنتا ہے. تو کیوں ایک سرور کی واپسی ہو سکتا ہے حیثیت کوڈ 200؟ کوئی خیال؟ جی ہاں. تو کچھ کے بارے میں کامیابی کے ساتھ پروپوزل کی گذارش ذریعے چلا گیا. اور وہ واپس کرنے کے قابل ہو آپ کے لئے کہا جو کچھ بھی. تو سب کچھ ٹھیک تھا. 302 کے بارے میں کیا پایا؟ جی ہاں. سامعین: سرور دیکھ رہا تھا آپ کی درخواست کی ہے کے لئے. لیکن یہ نہیں مل سکا. تو میں ایک خامی ہے. روب Bowden: تو سرور تھا تم چاہتے تھے کیا کے لئے تلاش. تو صرف یہاں تلاش، 302 نہیں ملا، اسے تلاش کرنے کے قابل تھا. سامعین: میں معافی چاہتا ہوں. ملا وہ اسے تلاش کیا مطلب ہے کہ. معذرت. روب Bowden: تو 302 نہیں ملا. سرور کو تلاش کرنے کے قابل ہے تم چاہتے کیا. سامعین: لیکن یہ اس کی نمائش نہیں ہے؟ روب Bowden: کے درمیان فرق یہ 302 اور 200 ہے کہ اس جو آپ چاہتے ہیں کو جانتا ہے. لیکن یہ کہاں نہیں ہے تم سے پوچھنا چاہتا تھا. تو 302 ایک عام لوٹایا ہے. تو آپ کو ایک صفحہ کی درخواست کی. یہ اوہ، میں چاہتا ہوں، جانتا ہے آپ اس واپس کرنے کے لئے. لیکن یہ ایک مختلف یو آر ایل پر ہے. تو ہے، آپ اصل میں یہ چاہتے ہیں. DAVID J. MALAN: اس نے کہا ہے کہ ایک ٹکڑا ہے ہم تم لوگوں کو لوٹایا دیا ہیڈر تقریب کا استعمال کیا اس تقریب اس کے نتیجے میں،، مقام طباعت بڑی آنت، اور اس کے بعد یو آر ایل جس سے آپ صارف کو مسترد کرنا چاہتے ہیں. آپ 302 کو نہیں دیکھا تھا اگرچہ واضح طور پر وہاں، کیا پی ایچ پی کی ہے جادوئی ہیڈر کے طور پر داخل کریں گے روب نے کہا کہ بالکل کیا کہہ - پایا. لیکن اس کے بجائے یہاں جانا. روب Bowden: ٹھیک ہے. تو 403 کے بارے میں کیا حرام؟ سامعین: میں یہ لگتا ہے کہ سرور بنیادی طور پر کہہ رہا ہے کہ کلائنٹ ہوم پیج تک رسائی حاصل نہیں کر سکتے. روب Bowden: تو جی ہاں. ٹھیک ہے، عام جواب ہم تھے توقع کچھ کی طرح، فائلوں ہے مناسب chmodded نہیں کر رہے ہیں. یہ شاید کے تحت کیا حالات آپ ان کو دیکھا. لیکن ایک وجہ ہے کہ کلائنٹ یہاں غلطی پر ہو سکتا ہے. ایک اور حیثیت کوڈ اصل ہے - 401. تو یہ بہت ملتے جلتے ہیں. 401 غیر مجاز ہے. اور 403 حرام ہے. اور اس طرح غیر مجاز آپ خصوصی طور پر اپ لاگ ان نہیں کر رہے ہیں کو حاصل لیکن میں لاگ ان مطلب ہو سکتا ہے آپ کو اختیار کر رہے ہیں. لیکن آپ نے پہلے ہی میں ریکارڈ اور آپ کر رہے ہیں اب بھی اس کے بعد، کی اجازت نہیں ہے آپ کو بھی حرام ہے حاصل کر سکتے ہیں. تو اگر آپ لاگ ان کر رہے ہیں اور نہیں ہے تو اجازت، حرام بھی ہے آپ حاصل کر سکتے ہیں کچھ. DAVID J. MALAN: اور طریقہ کار کی طرف سے ان کے مسائل عام طور پر ہیں جو سرور پر ہے حل کیا کمانڈ کے ذریعے؟ CHMOD، یہ ہے، بے شک، ایک اجازت فائل یا ڈائریکٹری پر مسئلہ. روب Bowden: پھر 404 نہیں ملا. جی ہاں. تو 302 کے برعکس جہاں یہ بالکل نہیں تھا تم سے پوچھ رہے ہیں جہاں یہ جانتا ہے آپ چاہتے ہیں، یہ، یہ صرف ہے آپ کیا چاہتے ہیں کوئی اندازہ نہیں ہے. اور آپ کی درخواست نہیں کر رہے ہیں درست کچھ. 418 میں تو ایک teapot کے ہوں اور 500 اندرونی سرور کی. تو آپ کیوں کہ ہو سکتا ہے؟ تو پر segfault - میں اصل میں گریڈنگ نہیں جانتے اس کے لئے معیاری. لیکن آپ کی پی ایچ پی کوڈ کچھ تھا اس میں غلط، اصول میں، یہ کر سکتا تھا اصل میں، پر segfault جس صورت میں، اس 500 اندرونی سرور کی خرابی، کچھ آپ کے سرور کے ساتھ غلط ہے ترتیب. یا ایک نحوی خامی ہے آپ پی ایچ پی کوڈ میں. یا برا کچھ ہو رہا ہے. DAVID J. MALAN: ہم segfault ایک دیکھا چند لوگوں کے جوابات میں. اور تکنیکی، یہ ہو سکتا ہے. لیکن یہ ایک پی ایچ پی، پروگرام ہو گا اصل میں، دوسرے لوگوں کی طرف سے لکھا segfaulted، جس میں صرف اس صورت میں ان لوگوں کو مصیبت میں چھوٹی گاڑی کے کوڈ میں لکھا ان کے ترجمان گے پی ایچ پی کی خود پر segfault. 500 segfault ایک طرح ہے تو اگرچہ روح میں، یہ تقریبا ہمیشہ ایک کنفیگریشن فائل مسئلہ کا نتیجہ اپنے ویب سرور کے ساتھ یا، روب نے کہا کہ، آپ کی طرح ایک نحوی خامی، ایک اقتباس بند نہیں کیا. یا آپ کہیں ایک نیم وقفہ کھو. سامعین: تو شٹل pset کے لئے، میں میں نے یہ کیا جب میں کلک ایک بار لگتا ہے براؤزر، لیکن کچھ بھی نہیں، آیا وہ وائٹ پیج نامی کیا. لیکن اس کی وجہ کوڈ کی تھی. مجھے لگتا ہے کہ جاوا اسکرپٹ تھا، ٹھیک ہے؟ روب Bowden: جی ہاں. سامعین: کہ غلطی اب بھی آئے ہو؟ روب Bowden: تو تم ہو نہیں ہوتا اس خرابی کی وجہ سے سب کچھ ویب سرور کے نقطہ نظر سے مکمل طور پر ٹھیک تھا. لیکن آپ index.html کی درخواست کی. آپ shuttle.js درخواست اور service.js. اور یہ کامیابی کے ساتھ واپس کرنے کے قابل تھا آپ ان چیزوں میں سے سب کے لئے - 200. ٹھیک ہے. یہ آپ کے براؤزر کی کوشش کی صرف اس وقت جب ہے جاوا سکرپٹ کے کوڈ کی تشریح ہے اس طرح، انتظار کر رہا ہے، یہ نہیں ہے درست جاوا اسکرپٹ کی خرابی. کوئی سوال؟ ٹھیک ہے. DAVID J. MALAN: تو اگلے اپ کی تعداد 11 تھی. اور 11 scariest تھا لوگوں کی ایک بہت کے لئے. تو سب سے اہم بات یہاں یہ بات نوٹ کرنا اس، بے شک، کے بارے میں تھا دوگنا منسلک فہرست. لیکن یہ گزشتہ سال کے طور پر ایک ہی نہیں تھا دوگنا منسلک فہرست کا مسئلہ، جس سے آپ کو انتباہ نہیں دیا کہ فہرست، حقیقت میں، ناچھانٹا ہوا ہو سکتا ہے. فہرست ناچھانٹا ہوا تھا تاکہ حقیقت اور یہ کہ لفظ تھا حقیقت یہ ہے کہ تبلیغ کے لئے وہاں گیا تھا پر زور دیا یہ اصل میں ایک آسان بنانے ہے کہ دوسری صورت میں ہوتا ہے کیا ایک سے زیادہ چیلنج مسئلہ اور ایک ایک طویل. تو یہاں ایک عام غلطی ڈال دیا تھا آپ ایک پر گزشتہ سال کے حل پیجر اور پھر صرف آنکھ بند کر کہ کاپی حق ہے جس کا جواب، کے طور پر نیچے ایک مختلف سوال جواب روح میں اسی طرح کے. لیکن یہاں subtleties میں مندرجہ ذیل تھے. ایک تو ہم ایک نوڈ کا اعلان کر دیا ہے اور یہاں معمول کے راستے میں وضاحت کی گئی. پھر ہم نے کی فہرست میں ایک عالمی ہو کی وضاحت پوائنٹر نل initialized ہے. اس کے بعد ظاہر ہے، دو افعال ہے ہم یہاں کے لئے prototypes ہے، ڈالیں اور دور. اور پھر ہم یہاں کچھ نمونے کے کوڈ ہیں کے اضافے کے ایک گروپ کر رہا. اور پھر ہم مکمل کرنے کے لئے تم سے پوچھنا اس طرح میں نیچے داخل کے عمل اس فہرست میں ن اضافہ ایک طریقہ ہے کہ مسلسل وقت میں، بھی زور دیا، یہاں تک کہ پہلے سے ہی موجود ہو. تو داخل کرنے کے قابل ہونے کی خوبصورتی مسلسل وقت میں اس کا مطلب یہ ہے کہ آپ کو شامل کرنے کے لئے ہے کہ نیا نوڈ کہاں ہے؟ سامنے میں. تو یہ، شکر ہے، ختم کم از کم کی ضرورت ہوتی ہے کے لئے استعمال کیا ہے کہ مقدمات میں سے ایک اس طرح کے کوڈ کا اس سے بھی زیادہ کی لائنز، کیا گزشتہ سال اور اس سے بھی کلاس میں جب ہم اس طرح کی بات کے ذریعے بات کی تھی انسانوں کے ساتھ اور کچھ کے ساتھ زبانی چھدم کوڈ. تو یہاں کے حل میں، کی پر چھوڑ دو کہ صرف ایک بصری پر ہے سکرین. ہم مندرجہ ذیل کر کر رہے ہیں. اور بھی دوسرے آسان بنانے نوٹس تھا یہ بات ہے یہاں تک کہ اگر پہلے سے موجود، تو اس کا مطلب ہے یہاں تک کہ اگر تعداد آپ کر سکتے ہیں، وہاں پہلے سے ہی ہے صرف آنکھ بند کر کے ایک اور داخل اس کی کاپی. اور یہ کہ، بھی، ایک ہونا تھا آسان بنانے، آپ کر سکتے ہیں تا کہ ، اس سے زیادہ کی واقعی، کچھ پر توجہ مرکوز ذہنی دلچسپ حصہ ہے اور جانچ پڑتال کے کچھ اضافی غلطی نہ صرف محدود وقت دیا. تو اس نمونے کے حل میں، ہم مختص بائیں ہاتھ پر ایک پوائنٹر ایک نوڈ کرنے کے لئے یہاں طرف. اب، کے طور پر، اس پوائنٹر احساس روب نے کہا، صرف 32 بٹس ہے. اور یہ اصل پر مشتمل نہیں ہے آپ کو جب تک ایک ایڈریس اس ایڈریس تفویض. اور ہم نے دائیں ہاتھ پر ایسا malloc کے ذریعے طرف. ایک اچھے شہری کی طرح، ہم نے اس کی جانچ پڑتال malloc کا نہیں ہے، اصل میں، شہوت انگیز null، تاکہ ہم اتفاقی طور پر پیدا نہیں کرتے یہاں segfault ایک. اور کسی بھی وقت آپ کی زندگی میں آپ malloc استعمال ایسا نہ ہو کہ، شہوت انگیز null کے لئے جانچ پڑتال کی جانی چاہئے آپ ایک ٹھیک ٹھیک بگ ہے. پھر ہم نے کی طرف سے اس شہوت انگیز null ابتدا (ن) اور پچھلے اور اگلے بتائے. اور یہاں اس معاملے میں، میں سے initialized اس کی وجہ یہ نئے، شہوت انگیز null گزشتہ نوڈ نئے جا رہا ہے میری فہرست کے آغاز. تو ہو جا رہا ہے اس سے پہلے کچھ بھی نہیں. اور میں بنیادی طور پر شامل کرنے کے لئے چاہتے ہیں، کی طرف سے نئے نوڈ کی موجودہ فہرست خود کی فہرست اگلا برابر مقرر. لیکن میں نے ابھی تک نہیں کیا کر رہا ہوں. فہرست خود کو پہلے سے ہی موجود ہے، اگر ایسا ہے تو اور کم از کم ایک نوڈ تھا پہلے ہی جگہ میں، اس فہرست میں ہے یہاں اور میں نے یہاں ایک نیا نوڈ داخل اس بات کو یقینی بنانے کی ضرورت ہے اپنے سابق نوڈ میرا نیا نوڈ پیچھے کی طرف اشارہ ہے، یہ، پھر، ہے کیونکہ دوگنا منسلک فہرست. تو ہم نے ایک وویک چیک کرتے. پہلے سے ہی موجود ہے تو فہرست، شہوت انگیز null نہیں ہے، تو پھر وہاں ایک یا ایک سے زیادہ نوڈس، تو بات کرنے کے حوالہ ہے کہ واپس شامل. اور پھر ہمیں ضرورت ہے بہت آخری چیز ایسا کرنے کے لئے اصل میں عالمی اپ ڈیٹ ہے اشارہ کرنے کے لئے متغیر فہرست خود کہ نئے نوڈ. جی ہاں. سامعین: پوائنٹر تیر میں [اشراوی] کرتا ہے، شہوت انگیز null برابر ہے فہرست کے ساتھ نمٹنے کے لئے کی وجہ سے فہرست خالی ہے؟ DAVID J. MALAN: نہیں. یہ مسلسل ہونے کے صرف مجھ سے ہے یہ میری ہے تو کہ میں، ہوشیار شاید کچھ زیادہ نوڈس کے ساتھ اصل فہرست یہاں اور میں داخل کر رہا ہوں میرے یہاں نئے نوڈ، وہاں جا رہا ہے یہاں پر کچھ بھی نہیں. اور میں خیال ہے کہ قبضہ کرنا چاہتے ہیں گزشتہ ترتیب کی طرف سے نیا نوڈ پر نل. اور شاید، میرا کوڈ صحیح ہے اور شامل کرنے کے لئے کوئی راستہ نہیں ہے اس تقریب سے دیگر مراکز، شاید، یہاں تک کہ اگر فہرست پہلے ہی ہے اس میں ایک یا ایک سے زیادہ نوڈس، شاید فہرست، پہلے نوڈ، ہوگا ایک شہوت انگیز null خود کے پچھلے پوائنٹر. سامعین: اور صرف ایک تخورتی. آپ کو اگلے برابر پوائنٹر ڈال وجہ فہرست آپ پوائنٹر کر رہے ہیں ہے اس کی طرف اشارہ ہے اس فہرست میں پہلے اگلے پر، مجھے لگتا ہے - میں مت پہنچاو - صرف فہرست؟ DAVID J. MALAN: بالکل. اور تو اصل میں دو مقدمات پر غور یہاں واقعی، اگرچہ ہم ان کے بارے میں غور کریں گے کے لئے نہیں ہے کوڈ کے طور پر بہت ہی. لیکن ایک اعلی سطح پر، تو اس کی نمائندگی کرتا ہے فہرست اور یہ ایک 32 بٹ ہے پوائنٹر، سادہ منظر نامے ہے اس ڈیفالٹ کی طرف سے، شہوت انگیز null ہے. اور میں داخل کرنا چاہتے ہیں لگتا ہے 50 نمبر سب سے پہلے نمبر تھا. تو میں نے آگے جانا ہے اور مختص کرنے جا رہا ہوں پر مشتمل ہے کے لئے جا رہا ہے جس میں ایک نوڈ، تین شعبوں - (ن)، گزشتہ، اور اگلے. میں 50 نمبر ڈال کرنے جا رہا ہوں یہاں، اس ن ہو جائے گا کیونکہ. یہ اگلے ہو جائے گا. اور یہ گزشتہ ہو جائے گا. اور اس میں اس صورت میں کیا کروں؟ ٹھیک ہے، میں یہاں صرف لائن 1 کیا ہے. اشارہ ن ن ہو جاتا ہے. میں تو پچھلے، کہہ رہا ہوں شہوت انگیز null ہو جانا چاہئے. تو اس شہوت انگیز null ہونے جا رہا ہے. پھر میں نے اگلے کہنے جا رہا ہوں فہرست حاصل کرنے کے لئے کی جا رہی ہے. اور یہ صرف اچھی طرح سے کام کرتا ہے. یہ خالی ہے. اور اس میں نئے نوڈ کے اگلے، کہہ رہا ہوں میدان ہے جو کچھ بھی حاصل کرنا چاہئے. تو ہے کہ وہاں ایک اور شہوت انگیز null رکھتا ہے. اور پھر آخری بات میں یہاں چیک کرنے کے لیے کیا ہے. فہرست یہ نل کے برابر نہیں ہے، لیکن اگر شہوت انگیز null برابر ہے، تو ہم کو چھوڑ کہ مکمل طور پر. اور اس میں سب اگلے فہرست ملتا ہے pictorially کا جس کے نتیجے میں پوائنٹر، اس طرح ایک تصویر. تو یہ ایک منظر نامے ہے. اور آپ کے بارے میں پوچھ رہے تھے کہ ایک خاص طور پر اس طرح کی صورت حال ہے، ہم نے پہلے ہی ایک نوڈ فہرست ہے جہاں. اور میں اصل میں واپس جانا تو مسئلہ بیان، ہم کریں گے اگلا صرف کے لئے، کا کہنا ہے کہ 34 ہے داخل بحث کی خاطر. تو میں صرف سہولت کے لئے جا رہا ہوں یہاں پر ہے کہ اپنی طرف متوجہ. میں صرف malloced ہے. کی میں نے، شہوت انگیز null کے لئے جانچ پڑتال کر رہا ہوں فرض ہیں. اب، میں ابتدا کرنے جا رہا ہوں (ن) 34 ہو. اور اس ن ہو جائے گا. یہ اگلے ہو جائے گا. اور یہ گزشتہ ہو جائے گا. اس بات کا یقین میں نے نہیں کیا بنا دو پیچھے کی طرف اس کے حاصل. پہلا آتا ہے تعریف میں. مجھے اس کو ٹھیک کرتے ہیں. یہ پچھلے ہے. یہ اگلے ہے. ان جیسی ہیں، اگرچہ کی مسلسل رکھنے ہیں. پچھلا. یہ اگلے ہے. تو میں صرف کی جانچ پڑتال کی، میری نوٹ malloced ہے شہوت انگیز null لئے، نوڈ میں 34 تفویض. پچھلا شہوت انگیز null ہو جاتا ہے. تو یہ مجھے دیتا ہے. اگلا فہرست ہو جاتا ہے. تو فہرست یہ ہے. تو یہ اب ایک ہی ہے اس ڈرائنگ کے طور پر وہ ایک کی طرف اشارہ ہے، تا کہ، تیر اسی میں. اور پھر میں نے کی جانچ پڑتال کر رہا ہوں اگر فہرست شہوت انگیز null برابر نہیں ہے. اور یہ اس وقت نہیں ہے. پھر میں نے فہرست میں کرنے جا رہا ہوں گزشتہ پوائنٹر ہو جاتا ہے. تو پچھلے کی فہرست PTR ہو جاتا ہے. تو اس لگانے کا اثر ہے یہاں ایک گرافیکل تیر. اور یہ کہ ایک بہت کم ہو رہا ہے لہراتی، لائنوں. اور پھر، آخر میں، میں نے اپ ڈیٹ پوائنٹر کی طرف اشارہ کرنے کی فہرست. تو اب اس نے اس آدمی کی طرف اشارہ. اور اب، ایک فوری کرتے ہیں وویک چیک. یہاں فہرست ہے جس میں، ہے عالمی متغیر. پہلے نوڈ،، بے شک، 34 ہے، کیونکہ میں نے اس کے تیر پیروی کر رہا ہوں. میں کرنا چاہتے ہیں اور اس وجہ سے ہے کہ صحیح ہے فہرست کے آغاز میں داخل تمام نئے مراکز. ان کی اگلی میدان اس آدمی کی طرف جاتا ہے. میں جا رہیں گے تو، میں اگلے شہوت انگیز null ہے مارا. تو نہیں فہرست ہے. میں نے پچھلے مارا، میں حاصل مجھے توقع جہاں کی حمایت. تو چند اشارہ موجود ہیں، ظاہر ہے، جوڑتوڑ. لیکن اگر آپ ایسا کرنے کے لئے کہا گیا تھا حقیقت یہ ہے کہ یہ مسلسل وقت میں آپ صرف کا مطلب چیزوں کی ایک محدود تعداد ہے آپ کو ایسا کرنے کی اجازت دی کر رہے ہیں. اور یہ تعداد کیا ہے؟ یہ ایک قدم ہو سکتا ہے. یہ دو ہو سکتا ہے. یہ 1،000 اقدامات ہو سکتا ہے. لیکن یہ آپ کو نہیں کر سکتے ہیں جس کا مطلب ہے، محدود ہے looping کی کسی بھی قسم کی پر جا رہا ہے یہاں، کوئی تکرار، کوئی loops کے. یہ صرف مشکل کوڈت لائنوں ہوگا ہم اس نمونے میں ہے کے کوڈ کے طور پر. تو اگلے مسئلہ 12 ہم سے پوچھا ہٹانے کے عمل کو مکمل اس کو ہٹا دیتا ہے اس طرح ہے کہ میں ذیل میں N لکیری وقت میں فہرست میں سے. تو آپ ایک چھوٹا سا زیادہ ہے wiggle کمرے کی اب. تم، کہ ن فرض کر سکتے ہیں تو موجودہ فہرست میں، موجود رہیں گے کوئی ایک سے زیادہ بار. اور وہ بھی ایک کوئز کی بنیاد پر ہونا مراد ہے آسان مفروضہ، تو کہ آپ کو 50 نمبر کہیں تو فہرست میں، آپ بھی نہیں کرتے کرنے کے لئے جاری رکھنے کے بارے میں فکر کرنے کی ہے ہر ممکن کے لئے تلاش، iterate کے صرف منتقل کرے گا جس میں 50 کی نقل، محدود وقت میں کچھ minutia میں. تو ہٹانے کے ساتھ، یہ ایک یقینی طور پر تھا زیادہ مشکل اور زیادہ لکھنے کے لئے کوڈ. لیکن پہلی نظر میں، واضح طور سے، ہو سکتا ہے غالب اور طرح کچھ نظر آپ کر سکتے ہیں کوئی راستہ نہیں ہے ایک گئے تمام سوالات پر کے ساتھ آئے. لیکن ہم انفرادی اقدامات پر توجہ مرکوز ہے، امید ہے کہ، یہ اچانک ہو جائے گا آپ کو ہڑتال کہ یہ فرد کی ہر اقدامات واضح سمجھ میں آتا ہے ماضی میں. تو ایک نظر ڈالیں. تو سب سے پہلے، ہم پوائنٹر ابتدا ہو خود کی فہرست. میں لکیری وقت چاہتے ہیں، اس کا مطلب میں نے کچھ لوپ کے لئے جا رہا ہوں. اور ایک عام طریقہ پر iterate ایک فہرست کی ساخت یا کسی بھی قسم میں نوڈس ساخت کے iteratively لینے کے لئے ہے کے اعداد و شمار کے سامنے ایک پوائنٹر ساخت اور پھر صرف اپ ڈیٹ کرنے شروع یہ اور آپ کے راستے پر چلنا آنکڑا ڈھانچہ کے ذریعے. تو میں بالکل ایسا کرنے جا رہا ہوں. پوائنٹر جبکہ، میرا عارضی متغیر، چلو، شہوت انگیز null برابر نہیں ہے آگے بڑھو اور چیک. میں خوش قسمت حاصل کیا؟ میں فی الحال ہوں نوڈ میں (ن) کے میدان میں ہے برابر میں تلاش تعداد میں دیکھ رہا ہوں؟ اور اگر ایسا ہے تو، کچھ کرتے ہیں. اب، یہ محسوس کریں تو حالت پورے چاروں طرف کوڈ کے مندرجہ ذیل لائنوں. یہ میں نے پرواہ صرف ایک ہی چیز ہے - سوال میں ایک بڑی تعداد کو تلاش کرنے کی. تو کوئی اور، آسان، جس میں ہے تصوراتی چیزوں کو تھوڑا سا. لیکن اب، میں نے محسوس کیا، اور آپ کو ہو سکتا ہے صرف سوچنے کے بعد اس کا احساس ہوا یہ تھوڑا سا کے ذریعے، وہاں ہے اصل میں دو مقدمات یہاں. نوڈ میں ہے جہاں ایک ہے ایک ہے جو فہرست کے آغاز کہ ہے کیونکہ، تھوڑا پریشان کن ایک خصوصی کیس، آپ کو نمٹنے کے لئے ہے، کیونکہ اس بات کے ساتھ، جس میں صرف اسنگتی ہے. ہر جگہ اور فہرست میں، ایک ہی بات ہے. گزشتہ نوڈ اور اگلے ہے نوڈ، گزشتہ نوڈ، اگلے نوڈ. لیکن اس آدمی کو ایک چھوٹی سی خاص ہے انہوں نے شروع میں ہے. تو پوائنٹر فہرست برابر ہے خود کو، تو میں کے شروع میں ہوں تو کی فہرست اور میں (ن) کو مل گیا ہے، مجھے اس کی ضرورت چیزوں کی ایک جوڑے کو ایسا کرنے کی. ایک، میں فہرست میں تبدیل کرنے کی ضرورت ہے اگلے میدان، 50 کی طرف اشارہ. تو میں کوشش کر رہا ہوں لگتا ہے کہ 34 دور کرنے کے لئے. تو اس آدمی کو جانا ہے دور صرف ایک لمحے میں. تو میں کہنے جا رہا ہوں، فہرست اگلا اشارہ ہو جاتا ہے. ٹھیک ہے، یہ پوائنٹر ہے. اگلا یہاں اشارہ کر رہا ہے. تو اس یہ تیر حق تبدیل کر رہا ہے اب یہاں اس آدمی کی طرف اشارہ. اب، ہمارے پاس ہے، یاد ایک عارضی متغیر. تو ہم کسی بھی نوڈس یتیم نہیں ہے، میں نے بھی میں اس آدمی کو ہے کیونکہ میری ہٹانے کے عمل. تو اب، اگر فہرست خود، شہوت انگیز null نہیں ہے میں نے کچھ ٹھیک کرنے کے لئے کی ضرورت ہے. اب مجھے یقین ہے کہ یہ تیر بنانے کی ضرورت ہے، پہلے کی طرف اشارہ ہے جس میں 34 سے 50 سے، اس، دور جانا ہے کیونکہ میں سے چھٹکارا حاصل کرنے کی کوشش کر رہا ہوں 34، 50 بہتر کوئی بھی برقرار رکھنے کے نہیں تھا کے طور پر اس قسم کے واپس حوالہ تیر کی تجویز پیش کی. تو میں صرف اس لائن کیا. تو پھر میں کیا کر رہا ہوں. اس صورت واقعی بہت آسان ہے. فہرست کے سر کاٹ نسبتا براہ راست ہے. بدقسمتی سے، یہ ہے اور پریشان کن بلاک. تو اب، میں کیس پر غور کرنے کے لئے ہے درمیان میں کچھ ہے جہاں. لیکن اس کے علاوہ، بہت خوفناک نہیں ہے اس طرح نحو کے لئے. تو میں کے آغاز میں نہ ہوں تو فہرست، میں کہیں مشرق میں ہوں. اور یہاں یہ لائن، کہہ رہا ہے شروع آپ میں ہیں جو بھی نوڈ میں. گزشتہ نوڈ کے اگلے میدان کو دیکھیے اور پوئینٹر میں اس نقطہ. کی pictorially کا یہ کرتے ہیں. کہ پیچیدہ ہو رہی تھی. تو میں یہاں پچھلے شعبوں پڑے - ایسا کرنے دو - یہاں اگلا شعبوں. میں بلکہ میرا اشارہ آسان کرنے کے لئے جا رہا ہوں ایک پوری چڑھانے کی اپنی طرف متوجہ سے آگے اور پیچھے چیزوں crisscrossing ایک دوسرے کے. اور اب،، صرف یہ 1، 2 کا کہنا ہے کہ دو بحث کی خاطر کے لئے 3، یہاں تک کہ اس کے ساتھ قطار نہیں کرتا سوال میں مسئلہ. تو یہاں میری منسلک فہرست ہے. میں نے اس میں دو دور کرنے کے لئے کوشش کر رہا ہوں کہانی کے مخصوص ورژن. تو میں نے پوائنٹر اپ ڈیٹ کیا ہے اس لڑکے کی طرف اشارہ کیا جائے. تو اس PTR ہے. انہوں نے کہا کہ یہاں کی طرف اشارہ ہے. یہ موجود ہے، فہرست ہے عالمی سطح پر پہلے. اور وہ کوئی بات نہیں جو یہاں کی طرف اشارہ ہے. اور اب، میں نے دو دور کرنے کے لئے کوشش کر رہا ہوں. پوائنٹر اشارہ کر رہا ہے اگر ایسا ہے تو، میں ہوں ، بظاہر، کی پیروی کرنے کے لئے جا 1 میں میرے رکھتا ہے جس میں گزشتہ پوائنٹر،. پھر میں کہنے جا رہا ہوں کہ اگلے اس سے مجھ پر لاتا ہے جس کے میدان، یہاں باکس، جا رہا ہے برابر پوائنٹر اگلا. تو اس پوائنٹر تو اس اگلے ہے. اسکا مطلب ہے کہ یہ تیر کی ضروریات اس آدمی کی طرف اشارہ. تو کوڈ کے اس لائن صرف کیا ہے اس کا ایک تھوڑا سا ہے کیا. اور اب، یہ ایک طرح لگ رہا ہے صحیح سمت میں قدم. ہم بنیادی طور پر 2 سے کترن کرنا چاہتے ہیں 1 اور 3 کے وسط کی. تو یہ ہے کہ ہم چاہتے ہیں کہ سمجھ میں آتا ہے اس کے ارد گرد کے راستے اس پوائنٹر. تو یہ اگلی لائن کی جانچ پڑتال کی ہے تو پوائنٹر اگلا، شہوت انگیز null نہیں ہے، وہاں ہے 2 کے حق میں یقینا کسی، کہ ہم بھی ایسا کرنے کا مطلب ہے کہ ایک چھوٹا سا یہاں کترن. تو اب میں اس پوائنٹر عمل کرنے کی ضرورت اور گزشتہ پوائنٹر پر اپ ڈیٹ ایک کا ایک تھوڑا سا کرنے کے لئے اس آدمی یہاں نقطہ workaround ہے. اور اب، ضعف یہ اچھا ہے. ہے کہ میں یہ ایک تھوڑا گندا ہے اب 2 کی طرف اشارہ کوئی ایک. 2 بائیں طرف اشارہ کر رہا ہے. اور 2 صحیح اشارہ کر رہا ہے. لیکن وہ، وہ جو چاہے کر سکتے ہیں کیونکہ وہ آزاد کرنے کے لئے کے بارے میں ہے. اور یہ کوئی فرق نہیں کیا ان اقدار اب ہیں. کیا ضروری ہے باقی ہے لوگ اوپر روٹنگ ہیں اور اب اس کے ذیل میں. اور یقینا، یہ ہے کہ ہم اگلے کیا ہے. ہم بتا جس کا مطلب ہے ہم مفت پوائنٹر، آپریٹنگ سسٹم، آپ کا استقبال ہے اس کو دوبارہ حاصل کرنے کے لئے. اور پھر آخر میں، ہم واپسی. ورنہ لپیٹ، تو ہم ابھی تک واپس نہیں کیا ہے، ہم تلاش کر رکھنے کے لئے ہے. تو پوائنٹر صرف اگلے پوائنٹر برابر اس آدمی کو یہاں منتقل کا مطلب ہے. یہاں اس آدمی کو منتقل. یہاں اس آدمی کو منتقل، حقیقت میں، ہم نمبر نہیں مل سکا ہم نے ابھی تک تلاش کر رہے ہیں. تو واضح طور سے، یہ مکمل طور پر لگتا ہے زبردست، میں نے سب سے پہلے میں، لگتا ہے کہ نظر، خاص طور پر آپ کی جدوجہد میں مصروف ہے تو اس کے ساتھ گئے تمام سوالات کے دوران اس وقت کے دیکھ کچھ اس طرح. اور آپ کی پیٹھ پر اپنے آپ کو عوامی تحریک. ٹھیک ہے، میں کر سکتے ہیں کوئی راستہ نہیں ہے کوئز پر اس کے ساتھ آئے. لیکن میں آپ کر سکتے ہیں، بحث کریں گے آپ کو توڑ تو ان انفرادی میں نیچے صرف مقدمات اور اس کے ذریعے چل احتیاط سے، اقرار، کے تحت ہی سہی دباؤ حالات. شکر ہے، تصویر بنا خوش سب کچھ. تم میں اس کی اپنی طرف متوجہ کر سکتے ہیں طریقوں میں سے کسی بھی تعداد. آپ crisscrossing ایسا کرنے کی ضرورت نہیں ہے یہاں بات. آپ کو براہ راست کے ساتھ کیا کر سکتے ہیں اس طرح لائنوں. لیکن میں اس مسئلہ کا خلاصہ، جنرل، احساس تھا کہ آخر میں تصویر ایک چھوٹی سی نظر آنا چاہئے کچھ اس طرح، کیونکہ مسلسل وقت ہے کہ آپ رکھنے تقاضا جام اور جام اور جام شروع میں نئے مراکز فہرست کے. کوئی سوال؟ شاید سب سے مشکل مرحلہ یقینی طور پر کوڈنگ سوالات. سامعین: تو اسی طرح کی فہرست ہے گزشتہ مثالوں میں سر. DAVID J. MALAN: بالکل، بالکل. کے لئے صرف ایک مختلف نام ایک عالمی متغیر. ورلڈ وائڈ کیا ہے؟ روب Bowden: ٹھیک ہے. تو یہ آپ کہاں سے ایک ہے پیراگراف لکھنا تھا. کچھ لوگوں مضامین لکھا اس سوال کے لئے. لیکن آپ کو صرف ان چھ شرائط استعمال کرنے کی ضرورت کیا ہوتا ہے جب کی وضاحت کرنے آپ facebook.com رابطہ کرنے کی کوشش. تو میں صرف عمل کے ذریعے بات کریں گے ان تمام شرائط کا استعمال کرتے ہوئے. تو ہمارے براؤزر میں، ہم facebook.com ٹائپ اور درج کریں مارا. تو ہمارے براؤزر ایک تعمیر کرنے کے لئے جا رہا ہے HTTP کے بھیجنے کے لئے جا رہا ہے کہ درخواست کے لئے فیس بک کرنے کے لئے کچھ کے عمل کے ذریعے فیس بک کے ساتھ ہم پر جواب دینے کے لئے اس صفحے کے HTML. تو عمل کی طرف سے کیا ہے جس HTTP درخواست اصل میں فیس بک کے لئے ہو جاتا ہے؟ تو سب سے پہلے، ہم نے ترجمہ کرنے کی ضرورت Facebook.com. تو، نام Facebook.com دیا اصل میں HTTP درخواست کرتا ہے جہاں جانے کے لئے کی ضرورت ہے؟ تو ہم Facebook.com ترجمہ کرنے کی ضرورت ایک IP ایڈریس پر، جس میں منفرد کیا مشین ہم اصل شناخت کرنے کے لئے اس کی درخواست کے لئے چاہتے ہیں. آپ اپنے لیپ ٹاپ ایک آئی پی ایڈریس ہے. انٹرنیٹ سے منسلک کچھ ایک آئی پی ایڈریس ہے. تو DNS، ڈومین نام کا نظام، یہ ہے کہ کیا ترجمہ ہینڈل کرنے جا رہا ہے facebook.com سے ایک آئی پی ایڈریس ہے کہ آپ اصل میں رابطہ کرنا چاہتے ہیں. تو ہم DNS سرورز سے رابطہ کریں اور کا کہنا ہے کہ، facebook.com کیا ہے؟ یہ اوہ، یہ IP ایڈریس 190،212 ہے، کا کہنا ہے کہ کچھ، کچھ، کچھ. ٹھیک ہے. اب، میں جانتا ہوں کہ کیا مشین مجھے سے رابطہ کرنا چاہتے ہیں. تو پھر آپ کو آپ HTTP درخواست بھیجیں اس مشین پر. تو یہ کس طرح ہے کہ مشین پر حاصل کرتا ہے؟ ٹھیک ہے، کی درخواست سے چلا جاتا ہے روٹر ؤرجاوان روٹر. کلاس میں مثال کے طور پر یاد رکھیں، جہاں ہم اصل راستہ دیکھا ہے ہم نے کوشش کی ہے جب پیکٹ لیا بات چیت کے لئے. ہم اس بحر اوقیانوس پر سے کود دیکھا ایک نقطہ یا جو کچھ بھی میں اوقیانوس. تو آخری مدت پورٹ. تو یہ آپ کے کمپیوٹر پر ہے. آپ فی الحال ایک سے زیادہ چیزیں کر سکتے ہیں انٹرنیٹ کے ساتھ بات چیت. تو میں کہتا ہوں،، اسکائپ چل رہا کیا جا سکتا ہے. میں کھلی ایک ویب براؤزر کو ہو سکتا ہے. میں کچھ ہو سکتا ہے کہ فائلوں torrenting. لہذا ان تمام چیزوں کے ہیں کے ساتھ بات چیت کسی طرح میں انٹرنیٹ. تو آپ کے کمپیوٹر سے کچھ ڈیٹا موصول جب انٹرنیٹ سے، کس طرح یہ کرتا ہے جانتے درخواست اصل میں ڈیٹا چاہتا ہے؟ یہ خاص طور پر ہے کہ آیا یہ کس طرح معلوم ہوتا ہے اعداد و شمار کے لئے کیا مراد ہے مخالفت کے طور پر درخواست torrenting ویب براؤزر کے لئے ہے؟ تو یہ ہے کہ میں بندرگاہوں کا مقصد ہے ان درخواستوں میں سے سب آپ کے کمپیوٹر پر ایک بندرگاہ کا دعوی کیا ہے. تو آپ کے ویب براؤزر، ہے، کا کہنا ہے کہ میں پورٹ 1000 پر سن رہا ہوں. اور آپ torrenting پروگرام کہہ رہا ہے، میں پورٹ 3000 پر سن رہا ہوں. اور اسکائپ میں پورٹ 4000 استعمال کر رہا ہوں، کا کہنا ہے کہ. آپ کو کچھ معلومات حاصل تو تعلق رکھتا ہے ان ایپلی کیشنز میں سے ایک ہے، کے اعداد و شمار جس میں بندرگاہ کے ساتھ نشان لگا دیا گیا ہے یہ اصل میں کے ساتھ بھیجا جانا چاہیے. تو اس اوہ، میں سے تعلق رکھتے ہیں، کا کہنا ہے کہ پورٹ 1000. تو میں اس کو آگے بڑھانے کی ضرورت ہے اپنے ویب براؤزر کے ساتھ. تو وجہ یہ ہے کہ یہاں متعلقہ ہے ویب سرورز کے لئے کرتے ہیں یہ ہے کہ پورٹ 80 پر سننے. میں Facebook.com سے رابطہ کریں تو، میں ہوں کچھ مشین کے ساتھ بات چیت. لیکن میں نے اس میں سے جو بندرگاہ کہنے کی ضرورت میں کے ساتھ بات چیت کرنا چاہتے ہیں مشین. اور ویب سرورز ہوتے ہیں پورٹ 80 پر سننے. وہ چاہتے تھے تو وہ اس قائم کر سکتے ہیں اپ تو یہ پورٹ 7000 پر کے طور پر فہرست. اور پھر ایک ویب براؤزر میں، میں کر سکتا ہوں پر 7000: دستی طور پر Facebook.com ٹائپ بندرگاہ کی 7000 کی درخواست ارسال کریں فیس بک کی ویب سرور کی. DAVID J. MALAN: اور اس معاملے میں، یہاں تک کہ ہم نے کی ضرورت نہیں تھی، اگرچہ کہ لوگوں کو اس کا ذکر، اس معاملے میں، کیا پورٹ پروپوزل کی گذارش اصل میں جائیں گے؟ دوبارہ کوشش کریں. بالکل ٹھیک. ایک سوکشمتا کہ کے لئے تلاش، لیکن نہیں کہ وہاں کوئی آخری ہے. روب Bowden: تو HTTPS، یہ ہے کے بعد سے کے لئے خاص طور سن مرموز، یہ پورٹ 4430 پر ہے. سامعین: اور ای میلز کے 25 ہیں، ٹھیک ہے؟ DAVID J. MALAN: آؤٹ باؤنڈ ای میلز، 25، جی ہاں. روب Bowden: میں بھی اکثر نہیں جانتے - کم لوگوں کے تمام ہوتے ہیں چیزوں کے لئے محفوظ. میں نے سب کچھ کے تحت لگتا ہے 1024 محفوظ ہے. شائقین کو کیوں کہا تھا 3 غلط نمبر تھا؟ روب Bowden: کی وجہ سے ایک آئی پی ایڈریس میں، ہندسے کے چار گروہوں ہے. اور وہ 0 سے 255 کرنے کے لئے کر رہے ہیں. تو 192.168.2.1 ایک عام سی بات ہے مقامی نیٹ ورک IP ایڈریس. ان میں سے سب 255 سے بھی کم ہیں نوٹس. تو میں نے 300 کے ساتھ شروع کرتے ہیں، کہ ممکنہ طور پر نہیں کر سکتے تھے تعداد میں سے ایک رہا. DAVID J. MALAN: لیکن یہ پاگل کلپ سے - وہ ایک تھا جہاں CSI، تھا تعداد وہ بھی بڑا تھا آئی پی ایڈریس کے لئے. روب Bowden: اس پر کوئی سوال؟ اگلے ایک، میں تو مکمل تبدیلی موضوع، لیکن ہم نے کے لئے اس پی ایچ پی کی صف ہے کواڈ میں گھروں. اور ہم ایک بے ترتیب فہرست ہے. اور ہم میں سے ہر ایک کی فہرست میں آئٹم پرنٹ کرنا چاہتے صرف گھر کے نام پر مشتمل. تو ہم نے ایک جعلی foreach لوپ ہے. تو نحو جعلی foreach ہے، یاد صف میں شے کے طور پر صف. تو لوپ کے ہر iteration کے ذریعے، گھر میں سے ایک پر لے جا رہا ہے صف کے اندر اقدار. پہلے iteration، گھر پر Cabot گھر ہوگا. ایک دوسرے iteration، گھر پر جائے گا تو کورئیر گھر اور. تو گھر کے طور پر ہر ایک کواڈ کے لئے، ہم صرف پرنٹ کرنے کے لئے جا رہا - آپ کو بھی مائدونت کیا جا سکتا ہے - اس کے بعد لسٹ آئٹم اور گھر کا نام اور اس کے بعد لسٹ آئٹم بند. گھوبگھرالی منحنی خطوط وحدانی یہاں اختیاری ہیں. اور پھر ہم بھی سوال میں کہا ہے کہ خود، بند کرنے کے لئے یاد ہے بے ترتیب فہرست ٹیگ. تو ہم پی ایچ پی موڈ سے باہر نکلنے کی ضرورت ہے ایسا کرنے کے لئے. یا ہم مائدونت کیا جا سکتا ہے بے ترتیب فہرست ٹیگ بند. DAVID J. MALAN: یہاں بھی ٹھیک کریں گے کے لئے ایک پرانے اسکول استعمال کرنے کے لئے کیا گیا ہے 0 = 0 $ کے ساتھ میں لوپ اور شمار کرنے کے لئے استعمال کرتے ہوئے رے کی لمبائی پر اعداد و شمار. مکمل طور پر ٹھیک بھی، صرف ایک چھوٹا سا wordier. سامعین: تو آپ کے لئے جا رہے تھے [اشراوی]، آپ کیا کریں گے - میں لوپ [اشراوی] ہے اسے بھول جاؤ. آپ کواڈ بریکٹ میں $ گے؟ DAVID J. MALAN: بالکل. جی ہاں، بالکل. روب Bowden: اور کچھ؟ DAVID J. MALAN: ٹھیک ہے. تجارت آف. تو جوابات کے bunches تھے ان میں سے ہر ایک کے لئے ممکن ہے. ہم واقعی صرف کے لئے تلاش کر رہے تھے ایک الٹا اور مجبور کچھ ایک کمی. اور نمبر 16 صارفین کی توثیق، پوچھا ان پٹ کلائنٹ سائڈ، جاوا سکرپٹ کے ساتھ کے طور پر، بجائے سرور سائیڈ کے، پی ایچ پی کے ساتھ. تو کیا ایک الٹا ہے کر کلائنٹ سائڈ؟ ٹھیک ہے، ہم تجویز پیش کی چیزوں میں سے ایک ہے آپ تاخیر کو کم ہے کہ، آپ کی وجہ سے رابطہ فکر کرنے کی ضرورت نہیں ہے چند لے سکتے سرور، جس milliseconds کے یا سیکنڈ کے بھی جوڑے کہ گریز کی طرف سے اور صرف صارفین کی ان پٹ کلائنٹ سائڈ کی طرف سے کی توثیق ایک پر جمع ہینڈلر ٹرگر اور وہ ٹائپ کریں، کیا جانچ پڑتال نام کے لئے میں کچھ؟ وہ کچھ ٹائپ کیا ای میل ایڈریس کے لئے؟ وہ کی طرف سے ایک چھاترالی منتخب کیا ڈراپ ڈاؤن مینو میں؟ تم نے انہیں فوری رائے دے سکتے ہیں gigahertz کمپیوٹر کا استعمال کرتے ہوئے یا وہ کہ جو بھی اصل میں ان کی میز پر. تو یہ صرف ایک بہتر صارف ہے عام طور پر تجربہ. لیکن کلائنٹ سائڈ کرنے کے ایک کمی کی توثیق، تم نے بھی کے بغیر کرتے ہیں سرور سائیڈ کی توثیق کر رہا ہے CS50 سے باہر آنے سے سب سے زیادہ کسی کو بھی جانتا ہے آپ کو صرف آپ چاہتے ہیں کسی بھی اعداد و شمار کو بھیج سکتے ہیں ایک سرور کے طریقوں میں سے کسی بھی تعداد. سچ کہوں تو، سب سے زیادہ کسی بھی براؤزر میں، آپ کر سکتے ہیں ترتیبات میں اور صرف کے ارد گرد کلک کریں جاوا سکرپٹ کو بند کر دیں، جس سے کرے گا، لہذا، کسی بھی شکل کے غیر فعال توثیق. لیکن آپ کو یاد کر سکتے ہیں کہ میں بھی کا استعمال کرتے ہوئے کلاس میں کچھ جادو چیزیں کیا ٹیل نیت اور اصل ڈرامہ حاصل بھیجنے کی طرف سے ایک براؤزر ہونا ایک سرور کی درخواستوں. اور یہ یقینی طور پر نہیں ہے کسی بھی جاوا اسکرپٹ کا استعمال کرتے ہوئے. یہ صرف میرے حکم دیتا ہے ٹائپ ہے ایک کی بورڈ میں. تو واقعی، کافی اندر اندر کسی بھی پروگرامر ویب اور HTTP کے ساتھ سکون وہ جو چاہے ڈیٹا بھیج سکتے ہیں توثیق کے بغیر ایک سرور پر. اور آپ کے سرور بھی جانچ پڑتال نہیں ہے تو، انہوں نے مجھے ایک نام دیا ہے، یہ اصل میں ایک درست ای میل ایڈریس، کیا وہ ایک چھاترالی منتخب کریں، آپ کو آخر سکتا ہے اپ داخل جعلی یا صرف خالی ڈیٹا آپ کے ڈیٹا بیس میں، جس میں شاید ایک اچھی بات نہیں جا رہا ہے تو آپ کو یہ بھی نہیں تھا سنبھالنے کر رہے تھے. تو یہ ایک پریشان کن حقیقت ہے. لیکن عام طور پر، کلائنٹ سائڈ میں توثیق کے بہت اچھا ہے. لیکن یہ دو مرتبہ کے طور پر زیادہ سے زیادہ کام کا مطلب ہے. مختلف وجود وہاں اگرچہ کے لئے لائبریریوں، جاوا سکرپٹ لائبریریاں مثال کے طور پر،، یہ بہت ہے کہ سر میں درد کی بہت کم. اور آپ کوڈ کے کچھ دوبارہ استعمال کر سکتے ہیں سرور سائیڈ، کلائنٹ سائڈ. لیکن یہ عام طور پر ہے کہ احساس ہے اضافی کام. جی ہاں. سامعین: تو اگر ہم صرف کم محفوظ ہے - DAVID J. MALAN: [ہنستا ہے] اہ. لوگ ہمیشہ مشکل ہیں فیصلہ کرنے والوں کے. روب Bowden: یہ کریں گے قبول کیا گیا ہے. DAVID J. MALAN: کیا ہے؟ روب Bowden: میں اس مسئلہ پیدا. قبول کیا گیا ہے. DAVID J. MALAN: جی ہاں. سامعین: ڈاؤن لوڈ، اتارنا. روب Bowden: لیکن ہم نے قبول نہیں کیا سب سے پہلے ایک کے لئے - ٹھیک ہے، ہم کے لئے تلاش کیا گیا ہے آپ کی طرح کچھ کرنے کی ضرورت نہیں سرور کے ساتھ بات چیت. ہم صرف تیزی سے قبول نہیں کیا. سامعین: کیا کے بارے میں صفحہ دوبارہ لوڈ نہیں کرتے؟ روب Bowden: جی ہاں. یہ ایک قبول جواب تھا. DAVID J. MALAN: ہم نے محسوس کیا ہے جہاں کچھ بھی اس بات کا امکان نہیں کے مقابلے میں زیادہ امکان تھا اگر آپ کی کیا پتہ تھا کہ ایک مشکل ہے، کہہ رہے ہیں کبھی کبھی اپنی طرف متوجہ کرنے کے لئے لائن. اس کی بجائے ایک لنک کی فہرست کا استعمال کرتے ہوئے برقرار رکھنے کے لئے ایک صف کی integers کے فہرست کے مطابق. سے منسلک کے ساتھ تو ایک الٹا ہم اکثر حوالہ دیتے ہیں ان کی پوری حوصلہ افزائی کی ہے کہ فہرستوں تعارف آپ تحرک حاصل تھا. انہوں نے بڑھ کر سکتے ہیں. وہ سکڑ کر سکتے ہیں. تو آپ کو hoops کے ذریعے کود کرنے کی ضرورت نہیں اصل میں زیادہ میموری کو بنانے کے لئے ایک صف کے ساتھ. یا آپ کو نہیں ہے صرف کا کہنا ہے کہ، معذرت، صارف. صف بھرا ہوا ہے. فہرست میں تو متحرک ترقی. لنک کی فہرست کے اگرچہ ایک کمی؟ سامعین: یہ لکیری ہے. منسلک فہرست پر تلاش لکیری ہے اس کی بجائے آپ لاگ ان کیا DAVID J. MALAN: بالکل. ایک لنک کی فہرست پر تلاش لکیری ہے، اس کے مطابق ہے، چاہے، آپ کر سکتے ہیں کی وجہ سے صرف ان روٹی crumbs کی پیروی، ان اشارہ، فہرست کے آغاز سے ختم کرنے کے لئے. آپ کو بے ترتیب تک رسائی اور بیعانہ نہیں کر سکتے ہیں، اس طرح، بائنری تلاش، یہ ہے یہاں تک کہ اگر کے مطابق، آپ کر سکتے ہیں کہ ایک صف کے ساتھ کیا. اور ایک قیمت بھی ہے. جی ہاں. سامعین: یاد داشت غیر فعال؟ DAVID J. MALAN: جی ہاں. ٹھیک ہے، میں ضروری نہیں کرے گا غیر فعال ہیں. لیکن یہ آپ کو زیادہ میموری لاگت آتی ہے، آپ کو ہر کے لئے 32 بٹیں کی ضرورت ہے اضافی پوائنٹر کے لئے نوڈ، میں ایک اکیلے منسلک فہرست کے لئے کم از کم. اب، آپ کو صرف integers کے ذخیرہ کرنے رہے ہیں آپ پوائنٹر اضافہ کر رہے ہیں، ہے اصل میں قسم کی غیر معمولی. یہ میموری کی رقم کو دگنا ہے. لیکن حقیقت میں، تو آپ کو ذخیرہ کرنے کر رہے ایک ہو سکتا ہے کہ structs کے لنک کی فہرست 8 بائٹس، 16 بائٹس، اس سے بھی زیادہ اس سے، شاید یہ کم ہے ایک معمولی قیمت کے. لیکن اس کے باوجود ایک قیمت ہے. لہذا ان میں سے کسی ہوگا downsides میں کے طور پر ٹھیک رہا. 18. لکھنے کے لئے پی ایچ پی کی بجائے سی کا استعمال کرتے ہوئے ایک کمانڈ لائن پروگرام. تو یہاں، استعمال کرنے کے لئے اکثر تیزی سے ایک پی ایچ پی یا روبی یا ازگر کی طرح زبان بدلیں. آپ کو صرف فوری طور پر کھلی ایک ٹیکسٹ ایڈیٹر کے اوپر. آپ کو بہت زیادہ کام کرتا ہے آپ کے لئے دستیاب. پی ایچ پی کے افعال میں باورچی خانے کے سنک ہے، C میں، آپ کی جبکہ بہت، بہت کم ہے. اصل میں، لوگوں کو مشکل راستہ معلوم آپ ہیش میزیں نہیں ہے. آپ فہرست منسلک ہے نہیں ہے. آپ ان کرنا چاہتے ہیں تو، آپ کے لئے ہے انہیں خود پر عملدرآمد. پی ایچ پی کی تو ایک الٹا یا واقعی کسی بھی تشریح زبان تیزی ہے جس کے ساتھ آپ کوڈ لکھ سکتے ہیں. لیکن ایک کمی، ہم اس کو دیکھا جب میں فوری طور پر ایک misspeller لئے whipped پی ایچ پی کا استعمال کرتے ہوئے درس میں عمل درآمد کے، ہے کہ ایک تشریح زبان کا استعمال کرتے ہوئے عام طور پر سست ہے. اور ہم ایک ساتھ دکھا کر دیکھا کہ 3 0.3 سیکنڈ کے وقت میں اضافہ کیونکہ فرمان کے سیکنڈ، کہ اصل میں کیا ہوتا ہے. ایک الٹا تھا آپ کو اس مرتب کرنے کی ضرورت نہیں ہے. تو یہ بھی ترقی کی رفتار اتفاق سے، آپ کی ضرورت نہیں ہے کیونکہ ایک پروگرام چلا رہا کرنے کے لئے دو اقدامات. آپ کو صرف ایک ہے. اور تو ہے کہ خوبصورت ہے مجبور کے ساتھ ساتھ. ایک SQL ڈیٹا بیس کا استعمال کرتے ہوئے کی بجائے ڈیٹا ذخیرہ کرنے کے لئے ایک CSV فائل. تو SQL ڈیٹا بیس pset7 کے لئے استعمال کیا جاتا ہے. CSV فائلوں آپ کو زیادہ استعمال نہیں کیا. لیکن آپ کے pset7 میں بالواسطہ طور پر اس کا استعمال کیا اچھی طرح یاہو خزانہ سے بات چیت کی طرف سے. لیکن CSV صرف ایک ایکسل فائل کی طرح ہے، لیکن سپر آسان، کالم کہاں ہیں صرف اندر کوما سے demarked ایک دوسری صورت میں ٹیکسٹ فائل کے. اور ایک SQL ڈیٹا بیس کا استعمال کرتے ہوئے ہے ایک چھوٹا سا زیادہ مجبور. تم چیزوں کو حاصل ہے کیونکہ یہ ایک الٹا ہے کی طرح منتخب کریں اور داخل کریں اور حذف. اور تم، شاید، کے اشاریہ جات حاصل ہے کہ ایس کیو ایل اور اس طرح کے دیگر ڈیٹا بیس، اوریکل، میموری میں آپ کے لئے تعمیر، جس میں آپ کو منتخب کریں شاید نہیں ہے کا مطلب نیچے لکیری سب سے اوپر جا رہا. یہ اصل میں کچھ ہونے جا رہا ہے بائنری تلاش یا کچھ اور طرح روح میں اسی طرح کے. تو وہ عام طور پر تیزی سے ہو. لیکن ایک کمی ہے یہ صرف زیادہ سے زیادہ کام ہے. یہ زیادہ کوشش کی ہے. آپ کے ڈیٹا بیس کو سمجھنے کی ہے. تم نے اسے قائم کرنے کے لئے ہے. آپ کو چلانے کے لئے ایک سرور کی ضرورت ہے اس ڈیٹا بیس. آپ کو سمجھنے کی ضرورت اس کی تشکیل کرنے کے لئے کس طرح. تو یہ صرف ان تجارت آف کی قسم. CSV فائل، آپ کر سکتے ہیں جبکہ gedit کے ساتھ اس کی تخلیق. اور تم جانا اچھا ہو. اس کے بعد کوئی پیچیدگی نہیں ہے. اس کی بجائے ایک ہیش ٹیبل کے ایک trie استعمال کرتے ہوئے ذخیرہ کرنے کے لئے الگ الگ جکڑا جانا؟ کے ساتھ ایک یاد تازہ الفاظ کی لغت pset5 کی. تو ایک اصول میں، الٹا کی کوشش کرتا ہے کم از کم، کیا ہے؟ مسلسل وقت، کم از کم آپ ہیں فرد کی ہر ایک پر hashing آپ کی طرح ایک لفظ میں حروف، pset5 کے لئے ہو سکتا ہے. پانچ hashes، چھ ہو سکتا ہے پانچ یا چھ ہو تو hashes لفظ میں حروف. اور یہ بہت اچھا ہے. اور پر پابند بالائی ہے تو کس طرح جب تک آپ الفاظ ہو سکتا ہے، ہے یقینا asymptotically مسلسل وقت. جبکہ علیحدہ ساتھ ایک ہیش میز اس کے ساتھ وہاں، مسئلہ جکڑا جانا؟ آنکڑا ڈھانچہ کی طرح ہے کہ آپ یلگوردمز کی کارکردگی عام طور پر چیزوں کی تعداد پر منحصر ہے پہلے ہی اعداد و شمار کے ڈھانچے میں. اور یہ یقینی طور پر کے ساتھ معاملہ ہے زنجیروں، جس کے تحت آپ کو ڈال زیادہ چیزیں ایک ہیش ٹیبل میں، اب ان زنجیروں بدترین میں جس کا مطلب ہے، جانا کیس، آپ کے لئے تلاش کیا جا سکتا ہے بات تمام طرح ایک کے آخر میں ہے ان زنجیروں کے، جس میں مؤثر طریقے سے لکیری کچھ میں devolves. اب، عملی طور پر، یہ بالکل کر سکتے ہیں کہ ایک ہیش میز کے ساتھ معاملہ زنجیروں اسی سے تیز ہے trie کے عمل. لیکن اس کے علاوہ، مختلف وجوہات کے لئے ہے کوشش کی ایک پوری بہت استعمال کر رہے ہیں جس یاد ہے کہ کر سکتے ہیں، حقیقت میں، سست چیزیں نیچے، آپ کو اچھا حاصل نہیں ہے کیونکہ کیشنگ کہا جاتا کچھ کے فوائد، جہاں ایک دوسرے کے ساتھ قریب ہیں وہ چیزیں یاد میں حاصل کیا جا سکتا اکثر زیادہ تیزی سے. اور کبھی کبھی آپ کے ساتھ آ سکتا ایک بہت اچھا ہیش تقریب. آپ کا تھوڑا سا برباد کرنے کے لئے یہاں تک کہ اگر میموری، آپ کو، بے شک، کرنے کے قابل ہو سکتا ہے تیز رفتار اور نہیں چیزیں تلاش کے طور پر برا کے طور پر linearly. تو مختصر میں، یہ ضروری نہیں تھا ان میں سے ایک یا اس سے بھی دو میں سے کسی کے ساتھ ہم کے لئے تلاش کر رہے تھے مخصوص چیزیں. قائل واقعی کچھ ایک الٹا اور منفی پہلو کے طور پر عام طور پر ہماری آنکھ کو پکڑ لیا. روب Bowden: تو الٹا کے لئے، ہم نے کیا اپنے طور پر قبول نہیں "تیزی سے." آپ اس کے بارے میں کچھ کہنا تھا. آپ کو نظریاتی طور پر تیزی سے انہوں نے کہا کہ یہاں تک کہ اگر، ہم آپ کو اس قسم کی سمجھ جانتا تھا کہ اسے 1 0 ہے. اور ہیش کی میز، اصول میں، 1 0 نہیں ہے. رن ٹائم کے بارے میں کچھ کا ذکر عام طور پر پوائنٹس آپ کو مل گیا ہے. لیکن "تیزی سے،" کے حل کے سب سے زیادہ پر کوشش کرتا تھے کہ بگ بورڈ حل سے معروضی سست کہ ہیش میزیں تھے. تو تیزی سے اور خود واقعی سچ نہیں ہے. DAVID J. MALAN: ڈوم ڈی ڈوم ڈوم. میں شاید احساس ہے کہ صرف ایک ہوں کہ کرنا ہے کس طرح ہے حق، کا اعلان کیا جائے؟ روب Bowden: میں اصل میں کوئی اندازہ نہیں تھا. DAVID J. MALAN: اسے بنایا میرے سر میں احساس. روب Bowden: میں اس سے کر رہا ہوں. ٹھیک ہے. تو اس سے آپ کو اپنی طرف متوجہ کرنے کے لئے تھا، جہاں سے ایک ہے آپ کے لئے اسی طرح کی تصویر شاید ماضی امتحان پر دیکھا ہے. تو صرف اس کو دیکھو. تو HTML نوڈ سے، ہم نے دو بچوں، سر اور جسم. تو ہم برانچ - سر اور جسم. سر ایک عنوان ٹیگ ہے. تو ہم ایک عنوان ہے. اب، ایک بات بہت سے لوگوں کو بھول گیا ان ٹیکسٹ کے مراکز ہیں اس درخت کے اندر اندر عناصر. تو یہاں ہم ovals کے طور پر ان کو اپنی طرف متوجہ کرنے کے لئے ہو ان سے ان کے فرق مراکز کی اقسام. لیکن نوٹس بھی یہاں ہم سب سے اوپر ہے، مشرق، اور نیچے ہونے کی وجہ سے ختم ہو جائے گی ٹیکسٹ نوڈس. لہذا ان بھول کسی حد تک تھا ایک عام غلطی کی. جسم کے تین بچے ہیں - ان تین divs. تو DIV، DIV، DIV اور پھر متن ان divs کی نوڈ کے بچوں. کہ بہت زیادہ ہے کہ سوالات کے لئے. DAVID J. MALAN: اور یہ نوٹنگ کے قابل ہے، ہم نے ان پر رہنے نہیں ہے اگرچہ ہم پر خرچ وقت میں تفصیلات حکم کرتا ہے جاوا سکرپٹ،، میں حقیقت یہ ہے، معاملہ تکنیکی. تو سر میں جسم سے پہلے آتا ہے ایچ ٹی ایم ایل، تو اس پر ظاہر ہو جانی چاہئے اصل ڈوم میں جسم کے چھوڑ دیا. ان، صرف FYI کریں، عام طور پر، یہ ہے کہ دستاویز کے لئے کہا جاتا ہے کچھ، جہاں یہ کوئی بات ہے. اور تم ایک تجزیہ کار پر عمل درآمد کیا گیا تو، عمارت میں ایچ ٹی ایم ایل پڑھتا ہے کہ ایک پروگرام یاد میں درخت، ایماندار ہو، یہ شاید intuitively کیا آپ ویسے بھی - اوپر نیچے، بائیں سے دائیں. روب Bowden: اس پر سوال؟ میں اگلے ایک کرنا چاہیے؟ DAVID J. MALAN: اس بات کا یقین. روب Bowden: ٹھیک ہے. تو اس پر قبضہ بفر ہے حملے کے سوال. یہاں کو تسلیم کرنے کے لئے اہم بات یہ ہے، ٹھیک ہے، کس طرح ہو سکتا ہے ایک مخالف چال عمل میں اس پروگرام صوابدیدی کوڈ؟ تو argv1، پہلی کمانڈ لائن اس پروگرام دلیل، ہو سکتا ہے منمانے طویل. لیکن یہاں ہم کاپی کرنے memcpy استعمال کر رہے ہیں argv1، جو یہاں بار ہے. ہم دلیل کے طور پر یہ گزر رہے ہیں. اور تو اس کا نام بار پر لے جا رہا ہے. تو ہم بار memcpying رہے ہیں اس بفر C میں. ہم کتنے بائٹس کاپی کر رہے ہیں؟ ٹھیک ہے تاہم بہت سے بائٹس بار ہوتا ، اس دلیل کی لمبائی کا استعمال کرتے ہوئے. لیکن C صرف 12 بائٹس وسیع ہے. تو ہم نے ایک کمانڈ لائن کی دلیل ٹائپ 12 بائٹس سے زیادہ ہے، ہم اس اتپرواہ کرنے کے لئے جا خاص طور پر بفر. اب، کس طرح ایک مخالف دھوکہ ہو سکتا ہے صوابدیدی کوڈ پر عمل میں پروگرام تو وہ یہاں یاد اہم FOO کو بلا رہا ہے. اور تو اہم کالز FOO. اس کو اپنی طرف متوجہ کرتے ہیں. تو ہم اپنے اسٹیک ہے. اور اہم اسٹیک فریم ہے کے نیچے دیے گئے. کچھ وقت، اہم کالز FOO. ٹھیک ہے، فوری طور پر، اہم کالز FOO. اور تو FOO کو اس کے اپنے اسٹیک فریم ملتا ہے. اب، کسی وقت، FOO کو واپس جا رہا ہے. اور FOO کی واپسی گئے، ہم جاننے کی ضرورت ہے اہم ہم کے اندر جو کوڈ کے مطابق جانتے کرنے کے لئے کہاں تھے ہم نے اہم میں دوبارہ شروع کرنا چاہئے. ہم نے ایک پورے سے FOO کو فون کر سکتے ہیں مختلف مقامات کے گروپ. ہم کس طرح جہاں واپس کرنے کے لئے جانتے ہیں؟ ٹھیک ہے، ہم اس کا کہیں ذخیرہ کرنے کے لئے کی ضرورت ہے. تو کہیں حق یہاں، ہم اسٹور ہم ایک بار کرنے کے لئے واپس آ جانا چاہئے جہاں FOO کو واپسی. اور اس کی واپسی کا پتہ ہے. تو کس طرح ایک مخالف فائدہ اٹھا سکتا ہے اس کی حقیقت یہ ہے کہ اس بفر C محفوظ کیا جاتا ہے، چلو یہاں سی ہے، کا کہنا ہے کہ. تو ہم سی کے لئے 12 بائٹس ہے. یہ سی ہے. اور یہ ہے FOO اسٹیک انگوٹی ہے. بدنیتی پر مبنی صارف داخل تو اگر 12 سے زیادہ بائٹس یا وہ ایک حکم میں داخل 12 سے زیادہ ہے کہ لائن کی دلیل حروف، پھر ہم جا رہے ہیں اس بفر اتپرواہ. ہم جا رکھنے کے کر سکتے ہیں. اور کچھ نقطہ پر، ہم دور جانا ہم شروع یہ کافی اس واپسی ایڈریس overwriting کی. تو ایک بار ہم، واپسی ایڈریس ادلیکھت اس کا مطلب یہ ہے کہ جب FOO کو واپسی، ہم جہاں کہیں بھی کرنے کے لئے آرہے ہیں بدنیتی پر مبنی صارف کی طرف سے اس کے لئے کہہ رہی ہے یہ جو کچھ بھی کی طرف سے، میں داخل ہوئے جو کچھ بھی قیمت حروف صارف میں داخل. اور اس بدنیتی پر مبنی صارف جا رہا ہے تو خاص طور پر ہوشیار، وہ اس کر سکتے ہیں printDef میں کہیں پر واپس تقریب یا malloc میں کہیں تقریب، بس کہیں بھی صوابدیدی. وہ ہے کیا لیکن اگر اس سے بھی زیادہ ہوشیار ہے صارف یہیں پر واپس. اور پھر آپ پر عمل شروع ان کے کوڈ کا لائنز کے طور پر. تو اس وقت، صارف داخل کر سکتے ہیں وہ اس خطے میں جو چاہے. اور وہ مکمل کنٹرول ہے آپ کے پروگرام پر. اس پر سوال؟ تو اگلا سوال مکمل ہو گیا ہے اس طرح میں FOO کی reimplementation یہ اب کوئی کمزور ہے. تو طریقوں کے ایک جوڑے کی ہے آپ نے یہ کیا کیا جا سکتا ہے. ہم اب بھی صرف C ہے لمبائی 12 کیا جا رہا ہے. آپ اس کو تبدیل کیا جا سکتا ہے آپ کے حل کے حصے کے طور پر. ہم نے بھی بنانے کے لئے ایک چیک شامل اس بات کا یقین بار، شہوت انگیز null نہیں تھا. آپ کی ضرورت نہیں تھی اگرچہ مکمل کریڈٹ کے لئے. تو ہم نے سب سے پہلے جانچ پڑتال کر رہے ہیں بار کے تار کی لمبائی. اس وقت، 12 سے زیادہ ہے تو اصل کاپی نہیں ہے. تو وہ اسے ٹھیک کرنے کا ایک طریقہ ہے. یہ فکسنگ کا ایک اور طریقہ ہے بجائے اس کے C ہونے کے صرف لمبائی 12 کا ہو، یہ ہے لمبائی strlen کی (بار) کا ہو. یہ فکسنگ کا ایک اور طریقہ ہے اصل میں صرف واپس کرنے کے لئے. تو کیا تم بس کی سب سے چھٹکارا مل گیا تھا تو اس، آپ کو صرف تمام خارج کر دیا تھا تو کوڈ کی لائنیں، تم ہو گیا ہوتا مکمل کریڈٹ، اس تقریب کے بعد اصل میں کچھ بھی پورا نہیں کرتا. یہ کمانڈ لائن کاپی ہے میں کچھ صف میں دلیل اس کے مقامی اسٹیک فریم. اور پھر بات یہ ہے کہ واپس آ رہا ہے. اور جو کچھ بھی اس میں کامیاب ہو گیا ہے. تو واپس بھی کافی تھا مکمل کریڈٹ حاصل کرنے کی راہ. DAVID J. MALAN: کافی نہیں روح کی سوال لیکن فی قابل قبول بہر حال رپورٹ. روب Bowden: اس میں سے کسی پر سوال؟ ایک بات ہے کہ آپ کم از کم کوڈ کو مرتب کرنے کے لئے کی ضرورت ہے. تکنیکی آپ نہیں ہیں تو اگرچہ کمزور اپنے کوڈ کو نہیں کرتا تو مرتب، ہم اس کو قبول نہیں کیا. کوئی سوال؟ ٹھیک ہے. DAVID J. MALAN: آپ چاہتے ہیں اس عنوان کا کہنا ہے کہ؟ روب Bowden: نمبر DAVID J. MALAN: تو اس میں سے ایک میں، اس اچھی خبر ہے یا بری خبر یا تو تھا. یہ لفظی ایک ہی مسئلہ ہے پہلے کوئز کے طور پر. اور یہ تقریبا ایک ہی ہے پر pset1 مسئلہ. لیکن یہ جان بوجھ کر ہونا آسان کر دیا گیا تھا ایک آسان پرامڈ، ہو سکتا ہے کہ ایک ایک تھوڑا سا کے ساتھ حل آسان iteration کے. اور واقعی، کیا ہم حاصل کر رہے ہیں یہاں، اتنا منطق نہیں تھا شاید، اس نقطہ کی طرف سے، آپ ہیں کیونکہ تم تھے کے مقابلے میں زیادہ آرام دہ اور پرسکون loops کے یا کیوں loops کے لئے کے ساتھ ایک ہفتے میں، لیکن واقعی میں اس کے علاوہ چڑھاو آپ کے ساتھ ایک چھوٹا سا آرام دہ اور پرسکون رہے ہیں پی ایچ پی کی صرف اس کے بارے میں نہیں ہے کہ اس تصور پروگرامنگ. یہ اصل میں ایک زبان کے طور پر استعمال کیا جا سکتا کمانڈ لائن پروگرام لکھنے کے لئے. اور یقینا، کہ ہم کوشش کر رہے تھے کیا ہے آپ کی توجہ اپنی طرف متوجہ کرنے. یہ ایک کمانڈ لائن پی ایچ پی پروگرام ہے. تو یہاں C کوڈ، جبکہ صحیح C میں، پی ایچ پی کے لئے درست نہیں. لیکن کوڈ کو واقعی ایک ہی ہے. آپ کوئز کے لئے حل موازنہ کریں تو 1 کوئز کے خلاف 0، آپ اس کو تلاش کریں گے اس کے علاوہ، تقریبا ایک جیسی ہے کچھ ڈالر کی نشانیاں اور ایک ڈیٹا کی قسم کی غیر موجودگی. خاص طور پر، ہم یہاں ایک نظر ڈالیں تو، آپ کو اس میں، ہم iterate دیکھیں گے کہ کیس، 1 سے 7 کے ذریعے. ہم اس 0 انڈیکس کر سکتا تھا. لیکن کبھی کبھی، میں یہ صرف لگتا ہے چیزوں کے بارے میں سوچنے کے لئے ذہنی طور پر آسان 1 سے 7. آپ کو ایک بلاک کرنا چاہتے ہیں تو، پھر دو بلاکس، پھر تین، پھر ڈاٹ، ڈاٹ، سات ڈاٹ. ہم 1 J initialized ہے کیا جا رہا ہے اور پھر میں نے کرنے کے لئے پر اعتماد. اور یہاں سب کچھ ہے دوسری صورت میں ایک جیسی. لیکن نوٹ کے قابل ہیں چیزوں کی ایک جوڑے. ہم آپ کو یہ دو لائنوں، یہ پہلی دے goofily ایک shebang کے طور پر نام سے ایک، تیز بینگ کے لئے. اور یہ صرف راستے کی وضاحت، ایک پروگرام ہو سکتا ہے جس میں فولڈر، آپ استعمال کرنا چاہتے پتہ چلا ہے کہ اس فائل کی تشریح. اور اس کے بعد پھر لائن، کورس کے، پی ایچ پی موڈ میں داخل ہے. اور بہت سب سے نیچے دیئے لائن سے باہر نکلنے کے پی ایچ پی موڈ کا مطلب. اور اس کے ساتھ، عام طور پر، کام کرتا ہے زبانوں کی تشریح. آپ لکھتے ہیں تو یہ قسم کی پریشان کن ہے ایک foo.php نامی ایک فائل میں پروگرام. اور پھر آپ کے صارفین کو ہے صرف ، اس پروگرام کو چلانے کے لئے، ٹھیک ہے، یاد میں ٹائپ کرنے کے لئے ہے "پی ایچ پی خلائی foo.php." قسم اور کچھ نہیں تو پریشان کی. اور یہ بھی پتہ چلتا ہے کہ آپ کے پروگرام سب نہیں ہے جو پی ایچ پی، میں لکھا ہے اس صارف کے لئے روشن. تو آپ کو مکمل طور پر. پی ایچ پی ختم کر سکتے ہیں لیکچر سے یاد. اور آپ اصل میں. / FOO کرتے ہیں کر سکتے ہیں آپ کو اس کے بنانے کی طرف سے اس chmodded ہے کارکردگی. تو CHMOD A + X FOO کو کہ کیا ہوتا. اور تم بھی shebang یہاں شامل کریں. لیکن واقعی، مسئلہ میں ہو رہی تھی کچھ اس طرح باہر پرنٹ. کوئی HTML، یقینی طور پر کوئی سی کوڈ، کچھ پی ایچ پی. تو ملو تو مسئلہ 25 میں واپس آئے. اور 25 میں، آپ درج ذیل دی گئی ایک تھا جس میں کنکال کوڈ، بہت آسان ویب کے صفحے. اور رسیلی حصہ HTML وار نیچے تھا یہاں، ہم جسم کے اندر ہے جہاں آدانوں کی منفرد ID ہے کہ ایک فارم جس کے اندر دو آدانوں، ایک تھا نام، ایک کے ایک خیال کے ساتھ بٹن کی ایک خیال کے ساتھ. سب سے پہلے، قسم متن یہ تھا قسم کی دوسری پیش. اور اس طرح ہم، اصل میں، زیادہ آپ کو دی آپ کو صرف تو، ضرورت سے زیادہ اجزاء تم لوگ جس کے ساتھ اختیارات میں تھا اس مسئلہ کو حل کرنے کے لئے. آپ سختی کی ضرورت نہیں ہے ان آئی ڈی کے تمام. لیکن یہ آپ کو حل کرنے کے لئے کی اجازت دیتا ہے یہ مختلف طریقوں سے. اور سب سے اوپر، نوٹس مقصد کو متحرک کرنے کے لئے تھا اس طرح ایک کھڑکی - خوش، ملو - کا استعمال کرتے ہوئے براؤزر میں پاپ تو، سپر آسان بدسورت نہیں، الرٹ تقریب. اور اس طرح، آخر میں، یہ فوڑے تصوراتی کسی نہ کسی طرح کے لئے سننے کے لئے فارم کلائنٹ سائڈ کی گذارشات ، کسی نہ کسی طرح سرور سائیڈ، کی طرف سے جمع کرانے پر رد عمل صارف ٹائپ اس قدر پکڑ نام کے خانے میں، اور اس کے بعد ایک انتباہ کے جسم میں اس کی نمائش. تو آپ ایسا کر سکتے ہیں کا ایک طریقہ کے ساتھ ہے ایک چھوٹا سا لگتا ہے جس jQuery کی، سب سے پہلے میں syntactically perplexing. آپ کو خالص ڈوم کوڈ کے ساتھ یہ کر سکتے ہیں - ID کی طرف سے document.getelement. لیکن اس ورژن پر ایک نظر ڈالیں. میں اہم کے ایک جوڑے کی ہے لائنز پہلے. ایک تو ہم ہے جو، اس لائن ہے تم نے دیکھا ہے ہو سکتا ہے کے لئے ایک جیسی مجھے یقین ہے کہ، میں، form2.html ہفتے میں 9 کلاس سے. اور یہ صرف پھانسی، کہہ رہا ہے مندرجہ ذیل کوڈ جب دستاویز کے لئے تیار ہے. یہ اہم ہونے کی وجہ سے صرف اس وجہ سے HTML صفحات اوپر پڑھ رہے ہیں بائیں سے دائیں نیچے،. اور اس وجہ سے، آپ کیا کرنے کی کوشش کریں تو کچھ ڈوم کے لئے یہاں کے کوڈ میں کچھ عنصر، کچھ HTML ٹیگ، کہ نیچے ہے یہاں، آپ بھی جلد ہی کر رہے ہیں، یہ بھی نہیں ہے کیونکہ میموری میں پڑھا گیا. تو اس document.ready کہہ کر لائن، ہم کہہ رہے ہیں، یہاں کچھ کوڈ، براؤزر کی. لیکن پوری جب تک اس پر عمل نہیں کرتے دستاویز کے لئے تیار ہے، کہ ڈوم ہے درخت کی یاد میں موجود ہے. یہ ایک چھوٹا سا زیادہ ہے syntactically ایک تو، براہ راست تھوڑا سا مختلف، میں کہہ رہا ہوں، جہاں، پکڑو جن کی منفرد HTML عنصر شناخت آدانوں ہے. اس کا کیا ہیش ٹیگ ہے ، منفرد ID کرنا. اور پھر میں بلا رہا ہوں. جمع. تو یہاں جمع ایک تقریب دوسری صورت میں، ہے ایک طریقہ کے طور پر جانا جاتا ہے، ہے بائیں ہاتھ پر اعتراض کے اندر میں نے اجاگر نہیں کیا تھا کہ وہاں کی طرف. آپ کو ایک اعتراض کے طور پر آدانوں کے بارے میں سوچنا تو اگر یاد میں - اور یقینا یہ ہے. یہ ایک درخت میں ایک نوڈ ہے - . کا مطلب جمع کرتے وقت اس فارم کے ساتھ اس ID پیش کیا جاتا ہے، پھانسی مندرجہ ذیل کوڈ. مجھے کوئی پرواہ نہیں کیا نام تقریب میں عمل کر رہا ہوں ہے. تو یہاں میں نے کیا ہے، کے طور پر اس سے پہلے، استعمال کر رہا ہوں لامڈا تقریب یا ایک سے ملاقات کی گمنام تقریب. یہ بالکل ذہنی نہیں ہے اس کا کوئی نام ہے دلچسپ دوسرے سے، آپ کو صرف ہو تو ٹھیک ہے جو کبھی ایک بار اسے فون کرنے جا رہا. اور اندر میں نے اصل میں سنبھال فارم جمع کراتے. میں سب سے پہلے ایک متغیر کا اعلان قیمت کہا جاتا ہے. اور پھر اس کے اثرات کیا ہے یہاں حصہ اب روشنی ڈالی؟ کہ میں کیا کرتا ہے میرے لئے اعلی سطح کے؟ سامعین: اس کی قیمت ہو جاتا ہے صارف ذیل HTML میں نے نہیں کیا. یہ تو اس کی شناخت ہو جاتا ہے اور اس کی قیمت مل جاتا ہے. DAVID J. MALAN: بالکل. یہ جن کی منفرد، نوڈ گرپس شناخت کنندہ کا نام ہے. یہ اس قدر ہو جاتا ہے ہے، شاید، کیا صارف اس کے یا خود ٹائپ. اور پھر یہ ذخیرہ ہے کہ میں متغیر کی قدر کہا جاتا ہے. ایک طرف ایک، آپ یہ بھی کر سکتے ہیں ایک چھوٹی سی مختلف اس نے کیا. کچھ کرنے کی طرف سے مکمل طور پر قابل قبول جھوٹ متغیر کی قدر ہو جاتا ہے document.getElementById. یہ ایک چھوٹا سا ہے اور یہی وجہ ہے یہ ہے jQuery کے استعمال نہیں تکاؤ. "NAME". قیمت. تو مکمل طور پر قابل قبول. ایسا کرنے کے مختلف طریقے. jQuery کے صرف ایک چھوٹا سا زیادہ succinct اور ہو جاتا ہے یقینی طور پر زیادہ مقبول پروگرامرز کے درمیان. اب، میں وویک کا تھوڑا سا کر رہا ہوں کیونکہ مسئلہ میں، چیک بیان میں ہم واضح طور پر، انہوں نے کہا کہ اگر صارف نے ابھی تک ٹائپ نہیں ہے اس کا یا اس ایک الرٹس ظاہر نہیں کرتے، نام. لیکن آپ کو صرف کی طرف سے، اس کے لئے چیک کر سکتے ہیں ایک کے لئے خالی سٹرنگ کے لئے جانچ پڑتال اگر وہاں اقتباس-unquote جو اصل میں وہاں کچھ بھی نہیں ہے. لیکن یہ اقتباس-unquote جو کے برابر نہیں ہے، میں الرٹس فون کرنا چاہتے ہیں. اور یہاں دلچسپ حصہ یہ ہے کہ ہم، کے علاوہ آپریٹر استعمال کر رہے ہیں جس میں جاوا اسکرپٹ میں کیا کرتا ہے؟ سلسلہ بندی کرنا. تو یہ PHPs ڈاٹ آپریٹر کی طرح ہے. اسی خیال، تھوڑا سا مختلف نحو. اور میں صرف سٹرنگ پیدا کر رہا ہوں آپ کی سکرین شاٹ پر دیکھا - خوش، اور تو. اور پھر آخری تفصیل یہ ہے. میں کیوں جھوٹے اندر واپس کرتے ہیں اس گمنام تقریب کی؟ سامعین: کوئی قیمت نہیں ہے. اگر آپ فارم میں اسے ڈال دیا. قیمت نہیں ہے تو یہ صرف، کا کہنا ہے کہ خالی برابر، تو یہ کرتے ہیں. کہ جمع کرانے میں ایک خالی نہیں تھا. DAVID J. MALAN: ٹھیک ہے. تاہم ہوشیار رہو. یہاں کوئی نہیں ہے. اور اس کی واپسی کے جھوٹے سے باہر ہے حالات تو. تو یہ، جھوٹے واپس، لائن پر روشنی ڈالی کوئی بات نہیں کیا جب executes ہے فارم پیش کیا جاتا ہے. کیا اس کے جھوٹے اندر واپس لوٹنے ہے یہ کہا جاتا ہے کے طور پر ایونٹ ہینڈلر،، سوال میں تقریب جمع کرانے جا رہے ہیں؟ سامعین: کیونکہ یہ صرف ایک بار ہوتا ہے. DAVID J. MALAN: صرف ایک بار ہوتا ہے. کافی نہیں. جی ہاں؟ سامعین: اس سے فارم کو روکتا ہے ، پہلے سے طے شدہ رویے پر جمع صفحہ دوبارہ لوڈ کریں گے جس میں. DAVID J. MALAN: بالکل. تو میں، اصطلاح یہاں پیش اوور لوڈنگ کر رہا ہوں میں کہہ رہا ہوں، کیونکہ شکل ہے پیش کیا جا رہا ہے. آپ کو مشورہ ہے کہ کے طور پر، یہ اصل میں نہیں ہے سچ HTTP کے انداز میں پیش کر دیا گیا. آپ کی وجہ سے، جمع کریں پر کلک جب ہماری onSubmit ہینڈلر، ہم intercepting رہے ہیں اس فارم جمع کرانے کی تو بات کرنے کی. ہم پھر ہماری بات کر رہے ہیں جاوا سکرپٹ کے کوڈ کے ساتھ. لیکن میں نے جان بوجھ کر، جھوٹے واپس آ رہا ہوں میں نے ایسا نہیں کرنا چاہتے ہیں کیا کیونکہ دوسری تقسیم کے بعد پورے فارم کے لئے ہے خود کو ویب پر پیش کرنے کے لئے کو تبدیل کرنے کے کی طرف سے کلیدی قدر جوڑوں کے ساتھ سرور کچھ اس طرح ہو یو آر ایل Q = بلیوں یا جو کچھ ہم نے کیا، مثال کے طور پر، کلاس میں. میں، ایسا نہیں کرنا چاہتے ہیں کیونکہ اس کے لئے کوئی سرور سن ہے جمع کرانے کے فارم. یہ مکمل طور پر جاوا سکرپٹ کے کوڈ میں کیا ہے. میں بھی نہیں تھا اور اس وجہ سے ایک کارروائی، اپنے فارم پر منسوب کیونکہ میں اس کے لئے ارادہ نہیں ہے کبھی سرور پر جانا. تو یہ پیش کیا جا رہا ہے. لیکن ہم اس فارم intercepting رہے ہیں جمع کرانے اور پہلے سے طے شدہ کی روک تھام اصل میں ہے جس کے رویے، تمام طریقہ سرور پر جانا. سامعین: تو یہ کلائنٹ سائڈ کو مدنظر رکھتے ہوئے. DAVID J. MALAN: رکھتے ہوئے یہ کلائنٹ سائڈ. بالکل صحیح. اگلا، دوسرا اپ ایس کیو ایل اوہ میرے تھا. روب Bowden: ٹھیک ہے. تو یہ پہلا سوال عام طور پر تھا لوگوں کے لئے کسی نہ کسی طرح. بعد میں لوگوں کے بہتر گئے تھے اگرچہ. تو آپ درست اعداد و شمار کو منتخب کرنے کے لئے تھا یہ کالم دونوں کے لئے اقسام. اور ان میں سے دونوں کچھ ہے ان کے بارے میں چیزیں ہے کہ انتخاب مشکل بنا. تو int ایک درست نہیں تھا تعداد کے لئے ٹائپ کریں. ایک 12 عددی اکاؤنٹ وجہ تعداد، ایک int کے لئے کافی بڑا نہیں ہے کل ہندسے کو محفوظ. تو ایک درست انتخاب ایک بڑا ہوتا ہے آپ کو پتہ ہے کہ ہو تو جمع Int. ایک کا انتخاب ہو سکتا ہے لمبائی 12 ایک چار میدان. لہذا ان میں سے کسی کام کیا جائے گا. int نہیں کرے گا. اب، توازن، واپس pset7 لگتا. تو ہم نے خاص طور پر دشملو استعمال کیا جاتا ہے حصص یا کی قیمت کی دکان - DAVID J. MALAN: کیش. روب Bowden: کیش. ہم رقم کا ذخیرہ کرنے کے لئے دشملو استعمال کیا جاتا ہے صارف فی الحال ہے کہ نقد رقم کی. تو ہم ایسا سبب ہے یاد ہے، کیونکہ، floats کے. صحت سے متعلق میں تیرتا فائدہ نہیں ہے. یہ خاص طور پر کیش اسٹور نہیں کر سکتے ہیں ہم جیسے اقدار یہاں کرنا چاہتے ہیں. تو اشارہ واضح طور پر سٹور کرنے کے قابل ہے ، کچھ کہنا، دو اعشاری مقامات. توازن، ہم یہ چاہتے ہیں یہی وجہ ہے کہ فلوٹ دشملو اور نہ ہو. DAVID J. MALAN: اور بھی، بھی، اگرچہ یہ دوسرے میں ہوشیار ہو سکتا سوچنے کے لئے سیاق و سباق، شاید یہ ایک int کے لئے ایک موقع ہے. میں صرف کا ٹریک رکھنے کے گا پیسے میں چیزیں. ہم واضح طور پر پہلے سے طے شدہ سے ظاہر ہوتا ہے کیونکہ ، 100.00 ہونے کی قدر ہے کہ یہ صرف ایک int ہو سکتا ہے کا مطلب ہے. اور بہت بڑی تعداد کے ساتھ ایک اور سوکشمتا اس کا مطلب نہیں تھا ایک چال کا سوال ہو. لیکن یاد ہے کہ مائی ایس کیو ایل میں ایک int، جیسے C میں، کم از کم میں آلات، 32 بٹ ہے. اور ہم آپ کی توقع نہیں ہے، اگرچہ معلوم ہے کس طرح بہت سے ہندسے ہے کا مطلب ہے، یاد ہے کہ سب سے بڑی تعداد آپ ممکنہ طور پر نمائندگی کر سکتے ہیں ایک 32 بٹ کی تعداد کے ساتھ تقریبا کیا ہے؟ ہم نے ہمیشہ کیا نمبر کہتے ہیں؟ 2 کیا تقریبا ہے جو، 32 کرنے کے لئے؟ آپ کو خاص طور جانتے ہیں کی ضرورت نہیں ہے. لیکن تقریبا زندگی میں مددگار ہے. یہ تقریبا 4 ارب ہے. تو ہم نے چند بار کہا ہے کہ. میں جانتا ہوں کہ میں نے اس کو چند بار کہا ہے. اور یہ تقریبا 4 ارب ہے. اور یہ کہ ایک اچھی حکمرانی ہے انگوٹھے کے بارے میں پتہ. آپ 8 بٹس، 256 ہے تو جادو نمبر ہے. آپ 32 بٹس، 4 ہے تو ارب دے یا لے. تو آپ کو صرف نیچے 4 ارب لکھنا تو، آپ کو اس سے کم ہندسے ہے نظر آئے گا جو واضح طور پر نہیں ہے جس کا مطلب ہے 12، قبضہ کرنے کے لئے کافی expressiveness ایک 12 ہندسوں اکاؤنٹ نمبر. روب Bowden: ٹھیک ہے. تو دوسرے لوگوں کے بہتر گئے. تو لگتا ہے کہ بینک ایک $ 20 ماہانہ عائد تمام اکاؤنٹس پر دیکھ بھال کی فیس. کیا SQL سوال کر سکتے ہیں کے بینک کے ساتھ یہاں تک کہ اگر، ہر شمار سے 20 ڈالر کی کٹوتی یہ کچھ منفی توازن کے نتیجے میں؟ تو بنیادی طور پر، چار ہیں سوالات کی اہم اقسام - ، داخل منتخب کریں، اپ ڈیٹ، اور ختم. تو ہم ہم کیا سوچتے ہیں یہاں استعمال کرنے کے لئے جا رہے ہیں؟ اپ ڈیٹ کریں. تو ایک نظر ڈالیں. لہذا ہم یہاں اپ ڈیٹ کر رہے ہیں. کیا ٹیبل ہم اکاؤنٹس کو اپ ڈیٹ کر رہے ہیں؟ تو اکاؤنٹس کو اپ ڈیٹ. اور پھر نحو، کیا کہتا ہے اکاؤنٹس میں ہم کو اپ ڈیٹ کر رہے ہیں؟ ٹھیک ہے، ہم برابر توازن قائم کرنے کر رہے ہیں توازن مائنس 20 کی موجودہ قیمت. تو یہ تمام قطار اپ ڈیٹ کرے گا اکاؤنٹس کی، تفریق توازن سے 20 ڈالر. DAVID J. MALAN: ایک عام غلطی، ہم کبھی کبھی یہ معاف کر دیا، اگرچہ، اصل میں یہاں پی ایچ پی کوڈ کرنا تھا استفسار تقریب بلا یا ڈال سب کچھ کے ارد گرد کی قیمت درج ہے کہ وہاں کی ضرورت نہیں تھی. روب Bowden: ایس کیو ایل ہے یاد رکھیں کہ پی ایچ پی کی طرف سے ایک علیحدہ زبان بدلیں. ہم پی ایچ پی ایس کیو ایل لکھ ہونا ہو. اور پی ایچ پی تو یہ بھیج رہا ہے ایس کیو ایل سرور پر. کرنے کے لئے لیکن آپ کو پی ایچ پی کی ضرورت نہیں ہے ایک ایس کیو ایل سرور کے ساتھ بات چیت. DAVID J. MALAN: بالکل. ڈالر علامات کے ساتھ تو کوئی متغیر اس تناظر میں ہونا چاہئے. یہ صرف ریاضی کے سب کر سکتے ہیں ڈیٹا بیس کے اندر اندر. روب Bowden: ٹھیک ہے. تو اگلے ایک. یہ اگلے ایک ہے؟ جی ہاں. کیا SQL سوال کر سکتے ہیں کے بینک کے ساتھ تو اس کے اکاؤنٹ نمبر بازیافت امیر گاہکوں کے ساتھ ان 1،000 سے زیادہ بیلنس؟ تو چار اہم اقسام میں سے جو ہم یہاں کرنا چاہتے ہیں جا رہے ہیں؟ منتخب کریں. تو ہم منتخب کرنے کے لئے چاہتے ہیں. کیا ہم منتخب کرنے کے لئے چاہتے ہیں؟ ہم منتخب کرنے کے لئے کیا کالم چاہتے ہیں؟ ہم خاص طور پر چاہتے ہیں کریں گے تعداد کو منتخب کریں. لیکن آپ کو سٹار، ہم نے کہا کہ اگر بھی اس کو قبول کر لیا. تو کیا میز سے تعداد کو منتخب کریں؟ اکاؤنٹس. اور پھر ہم حالت چاہتے ہیں؟ کہاں 1،000 سے زیادہ توازن. ہم نے بھی زیادہ سے زیادہ قبول سے یا اس کے برابر. گزشتہ ایک. کیا SQL سوال کر سکتے ہیں کے بینک کے ساتھ بند، یعنی، ہر اکاؤنٹ خارج ہے $ 0 کے توازن ہے؟ تو چار میں سے جو ہم ہیں استعمال کرنے کے لئے چاہتے ہیں کے لئے جا رہے ہیں؟ حذف کریں. تو اس کے لئے نحو؟ کیا ٹیبل سے حذف کریں؟ اکاؤنٹس. اور پھر حالت ہے جس پر ہم کو حذف کرنا چاہتے ہیں - بیلنس صفر کے برابر ہے. تو اکاؤنٹس سے تمام صفیں حذف کریں میزان صفر ہے، جہاں. ان میں سے کسی پر سوال؟ قطار کرنا چاہتے ہیں؟ DAVID J. MALAN: قطار گائیڈ. تو اس میں سے ایک میں، ہم آپ کو ایک حد تک دی ہم ایک کی کہ واقف ساخت structs کے ساتھ ساتھ کلاس میں تھوڑا سا، ایک ڈیٹا تھا جو روح سے متعلق ساخت. ایک قطار کے ساتھ اگرچہ فرق ہے ہم کسی نہ کسی طرح یاد تھا کہ جو بڑی، قطار کے سامنے میں تھا ہم زیادہ سے زیادہ کر سکتے ہیں کا حصہ ہے تاکہ میموری کے موثر استعمال، کم از کم ہم ایک صف کا استعمال کرتے ہوئے کر رہے تھے تو. کیونکہ یاد، ہم ایک صف ہے تو، تو، مثال کے طور پر، اس کے سامنے ہے قطار، میں یہاں قطار میں حاصل کرنے کے ہیں، اور اس کے بعد کسی کو لائن میں ہو جاتا ہے میرے پیچھے میرے پیچھے میرے،،، اور پیچھے ایک شخص لائن کے باہر قدم، آپ کر سکتے ہیں، ہم اپنے انسانی کے کچھ دیکھا کلاس میں رضاکاروں کی، سب کو ہے اس طرح منتقل. لیکن عام طور پر، سب کرنا ہے کچھ وقت کا بہترین استعمال نہیں ہے ایک پروگرام میں، کیونکہ اس کا مطلب ہے کہ آپ الگورتھم میں چل رہا ہے asymptotic رننگ ٹائم؟ یہ لکیری ہے. اس قسم کے بیوکوف ہے پسند ہے اور میں محسوس کرتا ہوں. لائن میں اگلے شخص اگلا ہے تو میں جانے کے لئے کرنا ہے جو شخص سٹور، وہ سب کے سب نہیں ہے ایک دوسرے کے ساتھ منتقل کرنے کے لئے. صرف وہ شخص کر گرفتار کیا جائے وقت مثال کے طور پر، آتا ہے. لہذا ہم وہاں تھوڑا سا وقت بچا سکتے ہیں. اور ایسا کرنے کے لئے، اگرچہ، اس کا مطلب کہ قطار کے سربراہ یا قطار کے سامنے جا رہا ہے آہستہ آہستہ گہری اور گہری منتقل صف میں اور آخر میں شاید ہم ایک کا استعمال کرتے ہوئے کر رہے ہیں تو اصل میں ارد گرد لپیٹ لوگوں کو محفوظ صف اس قطار میں. تو آپ کو تقریبا سوچ سکتے ہیں ایک سرکلر کے اعداد و شمار کے طور پر صف اس معنی میں ساخت. تو آپ کو کسی نہ کسی طرح کا ٹریک رکھنے کے لئے ہے اس کے سائز کے یا اس کے واقعی آخر اور پھر اس کے آغاز کہاں ہے. تو ہم آپ کے اعلان کی تجویز ایسی ہی ایک قطار، کالنگ یہ سوال، صرف ایک خط. پھر ہم سامنے ہو کہ تجویز صفر اور اس initialized ہے سائز صفر ہے initialized جائے. تو اب، کچھ بھی نہیں ہے کہ قطار کے اندر. اور ہم مکمل کرنے کے لئے تم سے پوچھنا میں ذیل میں enqueue کے عمل تقریب ن اضافہ کر دیتی ہے اس طرح کہ اس کے بعد (ق) کے اختتام اور صحیح واپس. لیکن ق مکمل یا منفی ہے تو، تقریب کی بجائے جھوٹے واپس آ جانا چاہئے. اور ہم آپ کو ایک جوڑے دی مفروضات کے. لیکن وہ واقعی فعل نہیں ہو متعلقہ، صرف یہ ہے کہ bool کے، موجود ہے تکنیکی، bool کے نہیں کرتا، کیونکہ آپ شامل جب تک سی میں موجود ایک بعض ہیڈر فائل. تو یہ صرف اس بات کا یقین کرنے کے کیا گیا تھا کوئی یہ ایک چال ہے کیا گیا بات کا سوال قسم کے. تو enqueue، ہم نمونہ میں تجویز مندرجہ ذیل حل لاگو کرنے کے لئے. ایک، ہم سب سے پہلے آسانی چیک کرنے کے لیے، کم پھانسی پھل. قطار مکمل یا بڑی تعداد ہے کہ آپ کو داخل کرنے کی کوشش کر رہے ہیں کم ہے ہم نے کہا کہ صفر، کے مقابلے میں مسئلہ کی تفصیلات چاہئے ہم صرف چاہتے ہیں، کی اجازت نہیں غیر منفی اقدار، تو آپ کو کرنا چاہئے صرف فوری طور پر جھوٹے واپس. تو کچھ نسبتا آسان جانچ پڑتال کی خرابی. آپ کو اس کی اصل شامل کرنا چاہتے ہیں تاہم اگر تعداد، آپ کا تھوڑا سا کرنا پڑا یہاں سوچ. یہ تھوڑا پریشان کن ہے اور جہاں یہ ہے ذہنی طور پر، آپ کی ضرورت کی وجہ سے wraparound کو ہینڈل کرنے میں کس طرح پتہ. لیکن خیال کا جراثیم یہاں اس کا ہے ہم سے دلچسپی ہے کہ wraparound ہے اکثر ماڈیولر ریاضی کا مطلب ہے اور جدید آپریٹر، فیصد کی طرف سے، اگر آپ ایک بڑی قیمت سے جا سکتے ہیں جہاں واپس صفر اور پھر ایک اور دو اور تین اور پھر واپس کے ارد گرد صفر، ایک اور دو اور تو آگے تین اور بار بار. تو ہم ایسا کرنے کی تجویز طریقہ ہے ہم میں انڈیکس چاہتے ہیں کہ تعداد جہاں کہا جاتا سرنی ہمارے integers کے جھوٹ. لیکن وہاں حاصل کرنے کے لئے، ہم سب سے پہلے کرنا چاہتے ہیں قطار کا سائز لیکن جو کچھ بھی ہے پھر اس پر شامل کرنے کے جو بھی فہرست کے سامنے ہے. اور اس کے اثرات پر ہم سے ڈال دیا ہے حق قطار میں پوزیشن اور فرض نہیں ہے کہ لائن میں پہلے شخص شروع میں ہے، جس میں انہوں نے یا وہ بالکل ہو سکتا ہے تو ہم یہ بھی سب کو منتقل کر رہے تھے. لیکن ہم صرف کام پیدا کر رہے ہیں خود اپنے لئے ہم نے تو اس مخصوص راستہ. تو ہم نے نسبتا آسان رکھ سکتے ہیں. ہم یاد کرتے ہیں کہ ہم صرف قطار میں ایک int شامل. اور پھر ہم صرف سچ واپس. دریں اثنا، dequeue میں، ہم سے پوچھا آپ درج ذیل کے لئے. اس طرح میں اس پر عملدرآمد ہے کہ یہ dequeues، کہ، ہٹا دیتا ہے اور واپسی ہے قطار کے سامنے میں INT. INT کو ہٹانے کے لئے، یہ کافی ہے اسے بھولنا. آپ کو اس سا کی جگہ لے لے کرنے کی ضرورت نہیں. تو یہ اصل میں اب بھی وہاں ہے. بس ایک کی ہارڈ ڈرائیو پر ڈیٹا کی طرح، ہم صرف حقیقت کو نظر انداز کر رہے ہیں یہ وہاں اب ہے. ق خالی ہے اور اگر ہمیں چاہئے اس کی بجائے منفی 1 واپس. تو اس صوابدیدی محسوس ہوتا ہے. کیوں منفی 1 واپس اس کی بجائے باطل کی؟ جی ہاں. سامعین: Q ذخیرہ کرنے کا ہے مثبت اقدار. آپ کو صرف مثبت اقدار کی دکان سے (ق) میں، منفی ایک غلطی ہے. DAVID J. MALAN: ٹھیک ہے، سچ ہے. ہم صرف مثبت ذخیرہ کرنے کر رہے وجہ اقدار یا صفر، تو یہ ٹھیک ہے ایک پرہری کے طور پر ایک منفی قدر واپس قیمت، ایک خاص علامت. لیکن آپ کو، وہاں کی تاریخ پھر سے لکھنا کر رہے ہیں کیونکہ ہم صرف کر رہے ہیں کی وجہ سے غیر منفی اقدار کو واپس لوٹنے ہم چاہتے ہیں کیونکہ ہے ایک پرہری قیمت ہے. تو زیادہ خاص طور پر، کیوں نہیں صرف غلطیوں کے معاملات میں جھوٹے واپس؟ جی ہاں. سامعین: آپ ناکام رہے ہیں ایک عددی واپس. DAVID J. MALAN: بالکل. سی ہو جاتا ہے جہاں یہ ہے خوبصورت کامحدود. اگر آپ جا رہے ہیں کہہ رہے ہیں ایک int واپس، آپ کو مل گیا ہے ایک int واپس. آپ کو پسند ہیں حاصل کرنے اور واپس لوٹنے شروع نہیں کر سکتے ایک bool یا فلوٹ یا سٹرنگ یا اس طرح کچھ. اب، دریں اثنا، جاوا اسکرپٹ اور پی ایچ پی اور کچھ دیگر زبانوں میں کر سکتے ہیں، حقیقت میں، آپ کو مختلف واپس لوٹنے ہے اقدار کی اقسام. اور اصل میں، مفید ہو سکتا ہے جہاں آپ کو مثبت ints کے، سے zeros واپس کر سکتے ہیں، منفی ints کے، یا جھوٹے یا شہوت انگیز null بھی غلطی کی نشاندہی کرنے کے لئے. لیکن ہم نہیں ہے سی میں استرتا تو dequeue کے ساتھ، جو ہم ہے ایسا کرنے کی تجویز - روب Bowden: آپ جھوٹے واپس آ سکتے ہیں. یہ ہیش صرف یہ ہے کہ جھوٹی ہے صفر جھوٹے کی وضاحت. تو آپ جھوٹے واپس اگر، آپ کو صفر پر آرہے ہیں. اور صفر، ہمارے قطار میں ایک درست بات ہے منفی 1 نہیں ہے جبکہ اگر جھوٹے منفی 1 ہوا. لیکن آپ کو بھی نہیں ہونا چاہئے معلوم ہے کہ کرنے کی ضرورت ہے. DAVID J. MALAN: ہے کیوں میں نے یہ نہیں کہا. روب Bowden: لیکن یہ سچ نہیں تھا تم جھوٹے واپس نہیں کر سکتے ہیں. DAVID J. MALAN: اس بات کا یقین. تو dequeue، ہم قبول نوٹس اس کی دلیل کے طور پر خالی. ہم نہیں ہیں اور اس وجہ سے ہے کہ اندر کچھ بھی گزر ہم صرف عنصر کو خارج کرنا چاہتے قطار کے سامنے میں. تو ہم کس طرح ایسا کرنے کے بارے میں جانا ہے؟ ٹھیک ہے، سب سے پہلے، ایسا کرنے دو فوری وویک چیک. قطار سائز 0 ہے، تو ہے کیا جائے گا کوئی کام نہیں. 1 منفی واپس. کیا. تو وہ اپنے پروگرام کے ایک چند لائنوں کے ہے. تو صرف چار لائنوں رہے. تو یہاں میں تدریج کرنے کا فیصلہ سائز. اور مؤثر طریقے سے سائز decrementing میں بھول رہا ہوں مطلب یہ ہے کہ وہاں کچھ ہے. لیکن میں نے بھی اپ ڈیٹ کرنے کی ضرورت ہے جہاں کی تعداد کے سامنے ہیں. تو ایسا کرنے کے لئے، میں نے کی ضرورت ہے دو چیزیں کرنے کے لئے. میں سب سے پہلے کیا نمبر یاد کرنے کی ضرورت ہے قطار کے سامنے پر ہے، میں اس چیز کو واپس کرنے کی ضرورت ہے. تو میں نے غلطی سے بھول نہیں کرنا چاہتا اس کے بارے میں اور پھر اس کے اوپر لکھیں. میں نے صرف ایک int میں یاد کرنے کے لئے جا رہا ہوں. اور اب، میں اپ ڈیٹ کرنا چاہتے q.front +1 q.front کیا جائے گا. اس میں پہلے شخص تھے تو اگر لائن، اب، میں 1 پلس کرنا چاہتے ہیں لائن میں اگلے شخص کی طرف اشارہ. لیکن میں نے اس wraparound کو ہینڈل کرنے میں ہے. اور صلاحیت ایک عالمی مسلسل ہے، کہ مجھے اس بات کا یقین کرنے کے لئے اجازت دینے کے لئے جا رہا ہے میں آخری شخص کو نقطہ کے طور پر لائن، modulo ہے آپریشن کو لے آئے گا پر صفر کرنے کے لئے مجھے واپس قطار کے سامنے. اور یہ کہ یہاں wraparound ہینڈل. اور پھر میں (ن) واپس کرنے کے لئے آگے بڑھنے. اب، سختی سے بات، میں نے نہیں کیا (ن) کا اعلان کرنا ہوگا. میں نے اس پر قبضہ اور اس کو ذخیرہ کرنے کی ضرورت نہیں تھی عارضی طور پر، قیمت ہے کیونکہ وہاں اب بھی. تو میں نے صرف صحیح ریاضی کر سکتے ہیں سابق سربراہ کو واپس کرنے کی قطار کے. لیکن میں صرف یہ زیادہ واضح تھا محسوس کیا کہ اصل INT قبضہ کرنے کے لئے، اسے ڈال دیا (ن) میں، اور پھر اس کو واپس وضاحت کے لئے، لیکن سختی ضروری نہیں. پسسٹ. وہ سب کے سب میرے سر میں pronounceable ہیں. روب Bowden: تو پہلا سوال بائنری درخت مسئلہ ہے. تو پہلا سوال ہم، ہے ان کی تعداد دی. اور ہم کسی نہ کسی طرح میں ان کو داخل کرنا چاہتے ہیں ان مراکز یہ ہے کہ اس طرح کی ایک درست بائنری تلاش درخت. تو ایک بات کے بارے میں یاد بائنری تلاش درخت یہ نہیں ہے یہ ہے کہ صرف یہ ہے کہ بائیں بات کم اور بات ہے حق زیادہ ہے. یہ کرنے کی ضرورت ہے پورے درخت بائیں کم ہے، اور پورے درخت درست کرنے کے لئے زیادہ ہے. میں تو سب سے اوپر یہاں 34 ڈال دیا، اور اگر ایسا ہے تو میں یہاں 20 ڈال دیا، تو یہ تو درست ہے اب تک، کیونکہ 34 یہاں. 20 بائیں طرف کی جا رہی ہے. تو وہ کم ہے. لیکن میں نے اس کے بعد، یہاں 59 نہیں ڈال سکتا کیونکہ 59 20 کے حق پر ہے، اگرچہ یہ 34 کے بائیں طرف اب بھی ہے. ذہن میں اس رکاوٹ کے ساتھ تو، شاید اس کو حل کرنے کا سب سے آسان طریقہ مسئلہ ہے صرف ترتیب ان کی تعداد - تو 20، 34، 36، 52، 59، 106. اور پھر ان داخل بائیں سے دائیں. تو 20 یہاں جاتا ہے. 34 یہاں جاتا ہے. 36 یہاں جاتا ہے. 52، 59، 106. اور آپ کو بھی ساتھ سوچا ہو سکتا ہے کچھ میں plugging اور احساس، اوہ، میں نے کافی تعداد میں نہیں ہے، انتظار کریں یہاں اس میں کو بھرنے کے لئے. تو میں reshift کرنے کی ضرورت ہے میری راستے نوٹ کی جا رہی ہے. لیکن اگر، آخری تین میں نوٹس بائیں سے دائیں جانب آپ پڑھ، اس میں ہے بڑھتی ہوئی کے لئے. تو اب، ہم اعلان کرنا چاہتے ہیں struct کے لئے جا رہا ہے اس درخت میں نوڈس. ایک بائنری درخت میں تو ہم کیا ضرورت ہے؟ تو ہم قسم کی ایک قیمت ہے INT، تو کچھ INT قیمت. میرے خیال میں ہمیں کہا جاتا ہے پتہ نہیں کیا حل میں یہ - ن سیریز: Int. ہم بائیں بچے پوائنٹر کی ضرورت اور دائیں بچے پوائنٹر. تو یہ اس طرح نظر آئے جا رہا ہے. اور یہ اصل میں اس سے پہلے دیکھتا ہوں دوگنا سے منسلک کب فہرست چیزیں، تو کا نوٹس - میں سکرال کرنے کے لئے جا رہا ہوں راستہ واپس نیچے مسئلہ 11. تو، یہ اس کے لئے ایک جیسی دکھائی دیتی ہے نوٹس ہم صرف ان کو فون کرنے کی ہو سوائے مختلف ناموں کے. ہم اب بھی ایک عدد صحیح ہے قیمت اور دو اشارہ. اس کی بجائے علاج کی صرف یہ ہے کہ اگلی بات کی طرف اشارہ کے طور پر اشارہ اور گزشتہ بات، ہم علاج کر رہے ہیں اشارہ ایک بائیں بچے کی طرف اشارہ اور دائیں بچے. ٹھیک ہے. تو یہ ہمارا struct نوڈ ہے. اور اب، صرف تقریب ہم کرنے کی ضرورت ہے اس گزرنا ہے، عمل درآمد جس ہم درخت، پرنٹنگ پر جانے کے لئے چاہتے ہیں، حکم میں درخت کی اقدار. تو یہاں دیکھ، ہم پرنٹ کرنے کے لئے چاہتے ہیں 20، 34، 36، 52، 59، اور 106. کس طرح ہم نے اس کو پورا کرتے ہیں؟ تو یہ خوبصورت اسی طرح کی ہے. آپ ماضی کے امتحان میں دیکھا تو مسئلہ آپ کو پرنٹ کرنے کے لئے کرنا چاہتا تھا درمیان میں کوما کے ساتھ پورے درخت سب کچھ، یہ بھی اصل میں تھا اس سے آسان. تو یہاں حل ہے. یہ نمایاں طور پر آسان تھا آپ تکراری طور پر کیا تو. کسی کو بھی کرنے کی کوشش کی تو مجھے پتہ نہیں iteratively ایسا کرنے کے لئے. لیکن سب سے پہلے، ہم ہماری بنیاد کیس ہے. کیا جڑ خالی ہے؟ اس وقت ہم صرف واپس جا رہے ہیں. ہم کچھ بھی پرنٹ کرنے کے لئے نہیں کرنا چاہتا. تو ہم گزرنا جا رہے ہیں تکراری طور پر نیچے. پورے بائیں subtree پرنٹ. تو کم سب کچھ پرنٹ اپنے موجودہ قیمت سے. اور پھر میں نے اپنے آپ کو پرنٹ کرنے کے لئے جا رہا ہوں. اور پھر میں نیچے recurse جا رہا ہوں میری پورے حق subtree، تو سب کچھ میری قیمت سے زیادہ. اور یہ پرنٹ کرنے کے لئے کی جا رہی ہے کے لئے میں سب کچھ. کس طرح یہ اصل سوال کہ کو accomplishes؟ سامعین: میں ایک سوال ہے [اشراوی] پر. روب Bowden: قریب تو ایک ہی راستہ کسی بھی پنراورتی مسئلہ صرف سوچنا ہے یہ پسند ہے کے بارے میں سوچنا ہے کے بارے میں تمام کونے کے مقدمات. تو ہم چاہتے ہیں کہ غور اس پورے درخت کو پرنٹ. تو ہم پر توجہ مرکوز کرنے جا رہے ہیں یہ خاص طور پر نوڈ ہے - 36. پنراورتی کالوں، ہم دکھاوا لوگ صرف کام. تو یہاں، پر اس پنراورتی کال گزرنا، ہم بھی سوچ کے بغیر اس کے بارے میں، صرف بائیں پار کرنیوالوں تین، پہلے ہی 20 پرنٹ یہ تصور اور ہمارے لئے 34. اور پھر جب ہم آخر میں تکراری پر گزرنا فون ٹھیک ہے، یہ درست طریقے سے پرنٹ گا 52، 59، اور ہمارے لئے 106. تو یہ 20، 34 پرنٹ کر سکتے ہیں کہ دیا، اور دیگر، 52، 59، 108 پرنٹ کر سکتے ہیں ہم کیا کرنے کے قابل ہو جائے کرنے کی ضرورت ہے پرنٹ ہے اس کے وسط میں ourself کی. تو ہم سے پہلے سب کچھ باہر پرنٹ. ourself کی پرنٹ، تو موجودہ نوڈ پرنٹ 36، باقاعدہ printf کا، اور اس کے بعد ہمارے بعد سب کچھ پرنٹ. DAVID J. MALAN: یہ کہاں تکرار ہے بہت خوبصورت ہو جاتا ہے. یہ ایمان کی یہ حیرت انگیز چھلانگ جہاں آپ کے کام کی tiniest سا کرتے. اور پھر آپ ہیں کسی اور باقی. اور یہ کہ کسی اور آپ کو، ستم ظریفی یہ ہے، ہے. سنگین براانی پوائنٹس کے لئے، اگر ایسا ہے تو اگر آپ کے سوالات پر سکرال - روب Bowden: سوال؟ DAVID J. MALAN: اور نیچے تھوڑا جہاں کی تعداد، کسی کو بھی جانتا ہے ان کی تعداد سے آئے؟ روب Bowden: میں لفظی کوئی اندازہ نہیں ہے. DAVID J. MALAN: وہ ظاہر کوئز میں. سامعین: وہ ایک سے نمبر ہیں؟ DAVID J. MALAN: وہ تعداد. ایک چھوٹی سی ایسٹر انڈے. تو میں آن لائن دیکھ کر آپ کو ان لوگوں کے لئے گھر، آپ کو ای میل کے ذریعے ہم سے بتا سکتے ہیں اگر heads@CS50.net کیا اہمیت ان بار بار چلنے والی چھ تعداد ہیں 1 کوئز کے دوران، ہم آپ کے شاور گا فائنل میں حیرت انگیز توجہ کے ساتھ لیکچر اور کشیدگی کی گیند. ٹھیک ٹھیک، اچھا. روب Bowden: کوئی آخری سوال کوئز پر کچھ کے بارے میں؟