[Powered by Google Translate] [جھلکیاں] [کوئز 0]
>> [Lexi راس، ٹومی MacWilliam، لوکاس Freitas جوزف Ong] [ہارورڈ یونیورسٹی میں]
>> [یہ CS50 ہے.] [CS50.TV]
>> ہے، سب لوگ.
0 کوئز، جو اس بدھ کو ہو رہی ہے کے لئے جائزہ لینے کے سیشن میں آپ کا استقبال ہے.
ہم آج رات کیا کرنے جا رہے ہیں، میں 3 دیگر TFs کے ساتھ ہوں،
اور مل کر ہم نے جو ہم نے کورس میں نے اب تک کیا ہے کا جائزہ لینے کے کے ذریعے جانے کے لئے جا رہے ہیں.
یہ 100٪ جامع نہیں ہے، لیکن یہ آپ کو ایک بہتر خیال دے دینا چاہئے
کیا آپ کے پاس پہلے سے ہی نیچے اور کیا آپ اب بھی بدھ سے پہلے کا مطالعہ کرنے کی ضرورت ہے.
اور سوالات کے ساتھ آپ کے ہاتھ اٹھانے کے لئے آزاد محسوس جیسا کہ ہم ساتھ جا رہے ہیں،
لیکن اس بات کو ذہن میں رکھنا ہے کہ ہم میں وقت تھوڑا سا بھی پڑے گا آخر
اگر ہم نے چند منٹ کے ساتھ اسپیئر کے ذریعے حاصل عمومی سوالات کرنا،
تو یاد رکھیں کہ، اور تو ہم 0 ہفتہ کے آغاز میں شروع کرنے جا رہے ہیں.
>> [0 جائزہ کوئز!] [0 حصہ] [Lexi راس] لیکن اس سے پہلے کہ ہم ایسا کرتے ہیں کہ لشکر طیبہ کے بارے میں بات
کوئز کے لاجسٹکس.
>> [رسد] [کوئز بدھ کے روز 10/10 پر لیکچر کے بدلے میں جگہ لیتا ہے]
>> [(تفصیلات کے لئے http://cdn.cs50.net/2012/fall/quizzes/0/about0.pdf کو جانئے)] یہ بدھ، 10th اکتوبر ہے.
>> جو اس بدھ ہے، اور اگر آپ اس یو آر ایل یہاں جاؤ،
جو بھی ہے CS50.net وہاں کے سے قابل رسائی ایک لنک
آپ جہاں کی بنیاد پر جانے کے لئے کے بارے میں معلومات دیکھ سکتے ہیں
آپ کی آخری نام یا اسکول الحاق کے طور پر ساتھ ساتھ
اس کے بارے میں بالکل کوئز کیا احاطہ اور قسم کے سوالات کے کہ آپ کو حاصل کرنے کے لئے جا رہے ہیں بتاتا ہے.
، اس بات کو ذہن میں رکھیں کہ آپ کے حصے میں گئے تمام سوالات کے کے لئے جائزہ لینے کا موقع بھی ہو گا
تو آپ کے TFs کچھ پریکٹس مسائل میں جا چاہئے،
اور یہ کہ جہاں آپ اب بھی کوئز کے لئے مطالعہ کرنے کی ضرورت ہے کو دیکھنے کے لئے کے لئے ایک اچھا موقع ہے.
چلو بٹس 'این' بائٹس کے آغاز میں شروع ہیں.
یاد تھوڑا صرف ایک 0 یا 1 ہے،
اور ایک بائٹ ان میں سے 8 بٹس کے ایک مجموعہ ہے.
چلو بٹس کے اس مجموعہ میں ابھی یہاں دیکھو.
ہم جاننے میں کتنے بٹس ہیں کرنے کے قابل ہونا چاہئے.
ہم کہاں شمار صرف ان میں سے 8، 0 آٹھ یا 1 یونٹ ہے.
اور چونکہ 8 بٹس، 1 بائٹ ہے ہے،
اور شش اعشاری پر قبول کریں.
شش اعشاری 16 کی بنیاد ہے، اور یہ بہت آسان ہے میں تبدیل
بائنری میں ایک بڑی تعداد ہے، جو ہے کہ وہ کیا ہے شش اعشاری میں ایک بڑی تعداد ہے.
ہم کرتے ہیں ہم 4 گروپوں میں نظر آتے ہیں،
اور ہم نے انہیں مناسب شش اعشاری ہندسوں پر تبدیل.
ہم 4 دائیں سب سے زیادہ گروپ کے ساتھ شروع، تو 0011.
1 ایک اور 2 ایک ہو، تو ایک دوسرے کے ساتھ ہے کہ 3 کرتا ہے جا رہا ہے.
اور پھر 4 کے دوسرے بلاک کو دیکھو.
1101. وہ 1 ایک، ایک، 4، اور ایک 8 ہونے جا رہا ہے.
ساتھ ساتھ ہے کہ 13، جو D. کرتا ہے جا رہا ہے
اور ہمیں یاد رکھنا ہے کہ ہم نے 9 کے ذریعے شش اعشاری میں 0 نہ صرف کرتے ہیں کریں گے.
ہم نے 0 F ذریعے جانا، تو 9 کے بعد، ایک 10 کے مساوی
11 B، cetera ET جہاں F 15 ہے.
یہاں 13 D ہے،
تو اس دشملو قبول کرنا جو ہم کرتے اصل میں ہم ہے
2 ایک طاقت کے طور پر ہر ایک کی پوزیشن کا علاج کریں.
یہ 1 ایک، ایک 2، صفر 4s، صفر 8s، ایک 16، cetera ET ہے،
اور یہ تھوڑا سا مشکل ہے تمہارے دماغ میں حساب کرنے کے لئے، لیکن اگر ہم اگلی سلائڈ پر دیکھیں
ہم اس کا جواب دیکھ سکتے ہیں.
>> بنیادی طور پر ہم دائیں سے بھر بائیں واپس جا رہے ہیں،
اور ہم 2 اسی طاقت کی طرف سے ایک عددی ضرب کر رہے ہیں.
، اور شش اعشاری کے لئے ہم نے 0x سے شروع میں ان کی تعداد کو ظاہر یاد
تو ہم ایک دشملو تعداد کے ساتھ ملط نہیں ہے.
پر جاری ہے، یہ ایک ASCII ٹیبل ہے،
اور جو ہم نے کے لئے استعمال ASCII حروف سے عددی اقدار کا نقشہ ہے.
خفیہ نگاری pset میں یاد رکھیں، ہم ASCII ٹیبل کے وسیع پیمانے پر استعمال کیا
کے لئے خفیہ نگاری کے مختلف طریقوں کو استعمال کرنے کے لئے،
کیسر اور Vigenère صفر، مختلف خطوط کو تبدیل کرنے کے
صارف کی طرف سے دی گئی کلید کے مطابق ایک تار میں.
ASCII ریاضی کا ایک تھوڑا سا میں نظر ہے.
کردار قسم ہے جو کہ (ق) ہو گی 'P' 1 + کی تلاش میں،
یاد ہے اور یہ کہ '5 '5 ≠.
اور کس طرح ہم ان 2 فارم کے درمیان میں تبدیل کریں گے؟
یہ اصل میں بھی مشکل نہیں ہے.
کے لئے 5 حاصل کرنے کے لئے، ہم subtract '0 '
کیونکہ وہاں کے درمیان '0 5 مقامات ہیں اور '5.
تاکہ دوسرے راستہ ہے جس سے ہم صرف 0 شامل جانا ہے،
تو یہ باقاعدگی سے ریاضی کی طرح طرح کی ہے.
صرف یاد ہے کہ جب اس کے ارد گرد کچھ کی قیمت درج ہے یہ ایک کردار ہے
اور اس طرح ASCII ٹیبل میں ایک قدر کے مساوی ہے.
زیادہ عام کمپیوٹر سائنس کے موضوعات میں چل رہا ہے.
ہم نے سیکھا ایک الگورتھم ہے اور ہم کس طرح استعمال کرتے ہیں پروگرامنگ
الگورتھم کو لاگو کرنے کے لئے.
یلگوردمز کی کچھ مثالیں واقعی کی طرح سادہ کچھ ہیں
جانچ پڑتال ہے کہ ایک نمبر بھی عجیب ہے.
اس کے لئے یاد ہے ہم نے 2 کی طرف سے نمبر MOD اور اگر نتیجہ ہے 0 چیک کرنے کے لیے.
اگر ایسا ہے تو، یہ بھی ہے. اگر نہیں، تو یہ عجیب ہے.
اور یہ کہ ایک بہت ہی بنیادی الگورتھم کی ایک مثال ہے.
>> ایک سے زیادہ شامل کسی بھی تھوڑا سا بائنری تلاش ہے،
جو ہم جائزہ لینے کے سیشن میں جانے کے بعد میں کریں گے.
اور پروگرامنگ کی اصطلاح ہے ہم ایک الگورتھم لینے کے لئے استعمال کرتے ہیں
اور یہ کمپیوٹر کوڈ تبدیل پڑھ سکتے ہیں.
پروگرامنگ کی 2 مثالیں سکریچ ہے،
ہے جو ہم 0 ہفتے میں کیا کیا.
اگرچہ ہم اصل میں نہیں کوڈ ٹائپ کریں، اس کے نفاذ کا ایک طریقہ ہے
اس الگورتھم، جو تعداد 1-10 چھپائی ہے،
اور یہاں ہم C پروگرامنگ زبان میں بھی ایسا ہی ہے.
یہ فعل کے برابر ہے، صرف مختلف زبانوں یا نحو کے وزٹرز کا ریکارڈ رکھا جائے گا.
پھر ہم بولین اظہار کے بارے میں سیکھا،
اور ایک بولین ایک قیمت ہے جو یا تو صحیح یا غلط ہے،
اور یہاں اکثر بولین اظہار
صورت حال کے اندر جاتے ہیں، اگر ایسا ہے تو (X 5 ≤)
ٹھیک ہے، ہم نے پہلے سے ہی مقرر X 5 =، تو اس حالت صحیح اندازہ کرنے کے لئے کی جا رہی ہے.
اور اگر یہ سچ ہے، جو کچھ بھی کوڈ شرط کے نیچے ہے
کمپیوٹر سے اندازہ کیا جا رہا، تاکہ سٹرنگ طباعت کی جا رہی ہے
معیاری پیداوار، اور مدت کی حالت
بیان اگر قوسین کے اندر جو کچھ بھی ہے سے مراد.
تمام آپریٹرز کی یاد رکھیں.
| جمع جب ہم کوشش کر رہے ہیں 2 یا اس سے زیادہ حالات | اس && اور یاد
نہیں == = چیک کرنے کے لیے کہ 2 چیزیں برابر ہیں.
یاد رکھیں کہ = تفویض کے لئے ہے جبکہ == ایک بولین آپریٹر ہے.
≤ ≥، اور پھر آخری 2 خود وضاحتی ہے.
بولین لاجک کا ایک عام یہاں کا جائزہ لیں.
بولین اظہار بھی loops میں اہم ہیں،
جو ہم اب ختم ہو جائیں گے.
ہم loops کے بارے میں 3 اقسام اب تک CS50 میں سیکھا، جبکہ، اور جبکہ کرتے.
اور یہ جاننا ضروری ہے کہ جب زیادہ تر مقاصد کے لئے
ہم کسی بھی قسم کی لوپ اصل میں عام طور پر استعمال کر سکتے ہیں
مقاصد یا عام نمونوں کے کچھ اقسام ہیں
پروگرامنگ جو خاص طور پر ان loops میں سے ایک کے لئے فون
کہ یہ بنانے کے لئے سب سے زیادہ موثر یا اسے اس طرح سے کرنے کے لئے کوڈ خوبصورت ہے.
آو ختم کیا ان loops میں سے ہر ایک کے لئے استعمال کیا جاتا اکثر جاتا ہے.
>> میں ہم لوپ کے لئے عام طور پر پہلے سے ہی پتہ ہے کتنی بار ہم iterate کرنا چاہتا ہوں.
یہی ہے جو ہم حالت میں ڈال.
کے لئے، میں = 0، میں 10 <، مثال کے طور پر.
ہم پہلے ہی جانتے ہیں کہ ہم 10 بار کچھ کرنا چاہتے ہیں.
اب، جبکہ لوپ کے لئے، عام طور پر ہم یہ ضروری نہیں کرتے
معلوم ہے کہ کتنی بار ہم لوپ کو چلانا چاہتا ہوں.
لیکن ہم کسی قسم کی حالت کا پتہ ہے کہ ہم اس سے کرنا چاہتے ہیں
ہمیشہ سچ ہو یا ہمیشہ جھوٹے ہو.
مثال کے طور پر، وقت مقرر کیا گیا ہے.
چلو کا کہنا ہے کہ ایک بولین متغیر ہے.
جبکہ یہ سچ ہے کہ ہم کوڈ کا اندازہ کرنا چاہتے ہیں،
تو تھوڑا سا زیادہ قابل توسیع، لوپ کے لئے ایک چھوٹا سا ایک سے زیادہ عام سا
لیکن لوپ کے لئے کوئی بھی تھوڑی دیر لوپ میں تبدیل کیا جا سکتا ہے.
آخر کرتے ہیں، جبکہ loops، جو سے trickiest فورا سمجھ سکتے ہیں،
اکثر استعمال کیا جاتا ہے جب ہم نے کوڈ پہلے اندازہ چاہتے ہیں
پہلی بار اس سے پہلے کہ ہم حالت چیک کرنے کے لیے ہے.
کے لئے ایک عام استعمال کے کیس کیا ہے جبکہ لوپ
ہے جب آپ کو صارف کی ان پٹ کو حاصل کرنے کے لئے چاہتے ہیں، اور آپ کو پتہ ہے کہ آپ صارف سے پوچھنا چاہتے ہیں
ان پٹ کے لئے کم سے کم ایک بار، لیکن اگر وہ آپ کو نہیں اچھی ان پٹ فورا
آپ کو ان کا سوال ہے یہاں تک کہ وہ آپ کو اچھی ان پٹ دے رکھنے کے لئے چاہتے ہیں.
یہ ایک سب سے زیادہ عام استعمال ہے جبکہ لوپ،
اور ان loops کی اصل ساخت کو دیکھو.
ان میں خاص طور پر ہمیشہ ان نمونوں پر عمل کرتے ہیں.
>> کے اندر کے لئے لوپ پر آپ کو 3 اجزاء ہیں:
ابتدا، جیسا کہ عام طور پر کچھ int میں، = 0 جہاں میں انسداد ہے
حالت، جہاں ہم کہتے لوپ کے لئے اس کے طور پر اس کی حالت اب بھی کی ڈگری حاصل کی طویل چلانے کے لئے چاہتے ہیں،
میں <10، اور پھر آخر میں، اپ ڈیٹ کریں، جس میں ہے کہ ہم کس طرح اضافہ کی طرح
لوپ میں ہر موڑ پر انسداد متغیر.
وہاں دیکھ کر ایک عام بات بس میں + + ہے،
جس سے 1 کی طرف سے ہر بار اضافہ کا مطلب ہے.
آپ میں + = 2 کی طرح کچھ بھی کر سکتے ہیں،
جس کا مطلب ہے کہ میں 2 ہر وقت آپ کو لوپ کے ذریعے جاؤ شامل.
اور پھر ایسا کوئی کوڈ ہے جو اصل میں لوپ کے حصے کے طور پر چلتا ہے سے مراد ہے.
اور تھوڑی دیر کے لوپ کے لئے، اس وقت ہم واقعی لوپ سے باہر ابتدا ہے،
مثال کے طور پر، کا کہنا ہے کہ ہم لوپ کے اسی قسم کے طور پر میں نے ابھی بیان کرنے کی کوشش کر رہے ہیں.
ہم کہیں گے int میں 0 = سے پہلے لوپ شروع ہوتا ہے.
تو پھر ہم کہتے ہیں جب میں 10 <ایسا کر سکتی ہے،
کوڈ کے بہت پہلے کی طرح ایک ہی بلاک،
اور اس وقت مثال کے طور پر کوڈ کے اپ ڈیٹ کا حصہ،، میں +، +
اصل میں لوپ کے اندر جاتا ہے.
اور آخر میں، کے لئے، جبکہ یہ وقت لوپ کی طرح ہے
لیکن ہمیں یاد رکھنا کہ کوڈ کو ایک بار اندازہ گا
سے پہلے کی حالت کی جانچ پڑتال ہے، تو یہ ایک بہت زیادہ احساس کرتا ہے
اگر آپ کو اوپر سے نیچے کی ترتیب میں اس کی طرف دیکھتے ہیں.
میں ایک جبکہ لوپ کوڈ کی تشخیص کرتا ہے اس سے پہلے کہ آپ کو وقت کی حالت کو بھی نظر کیا
تھوڑی دیر لوپ جبکہ یہ پہلی چیک کرتا ہے.
بیانات اور متغیر.
جب ہم ایک نئی متغیر بنانا چاہتے ہیں تو ہم سب سے پہلے اسے ابتدا کرنا چاہتے ہیں.
>> مثال کے طور پر، int بار متغیر بار initializes،
لیکن یہ نہیں دے کوئی قدر، تو بار کی قیمت ہے؟
ہم نہیں جانتے ہیں.
یہ کچھ ردی کی ٹوکری کی قیمت جو پہلے میموری میں محفوظ کیا گیا تھا وہاں ہو سکتا ہے،
اور ہم اس متغیر کو استعمال کرنے کے لئے نہیں کرنا چاہتا
جب تک ہم اصل میں یہ ایک قیمت دے،
اس لیے ہم اسے یہاں اعلان.
پھر ہم اس کے نیچے 42 ابتدا.
اب، ظاہر کی، ہم جانتے ہیں کہ یہ ایک ہی لائن میں، int 42 = بار کیا جا سکتا ہے.
لیکن صرف متعدد اقدامات پر جا رہے ہیں کو صاف کرنے،
اعلان اور ابتدا علیحدہ یہاں ہو رہی ہیں.
یہ ایک مرحلے پر ہوتا ہے، اور اگلے ایک int باز بار = 1 +
اس کے نیچے اس کوڈ کو بلاک کے آخر میں بیان، کہ increments باز،
اگر ہم باز کی قدر کو پرنٹ کرنے کے لئے 44 ہو گی
کیونکہ ہم> 1 بار ابتدا کا اعلان،
اور پھر ہم اس کے ساتھ ایک بار پھر اضافہ + +
ہم نے اس خوبصورت مختصرا پر چلا گیا ہے، لیکن یہ اچھی بات ہے کہ ایک عام
موضوعات اور واقعات ہیں کو سمجھنے.
ہم بنیادی طور پر سکریچ میں نے یہ کیا،
تاکہ آپ موضوعات کے کوڈ کا ایک سے زیادہ انداز کے طور پر سوچ سکتے ہیں
ایک ہی وقت میں چل رہا ہے.
حقیقت میں، یہ شاید ایک ہی وقت میں چل رہا نہیں ہے،
لیکن وہ اس سے abstractly کی طرح ہم اس کے راستے میں سوچ سکتے ہیں.
>> شروع میں، مثال کے طور پر، ہم نے ایک سے زیادہ sprites تھا.
یہ ایک ہی وقت میں مختلف کوڈ قتل کیا جا سکتا ہے.
جبکہ دیگر کچھ کہہ رہا ہے چل سکتا ہے
سکرین کے ایک مختلف حصے میں.
واقعات منطق الگ کرنے کا ایک اور طریقہ ہے
، آپ کے کوڈ کے مختلف عناصر کے درمیان
اور ہم نے شروع میں واقعات براڈ کا استعمال کرتے ہوئے انکرن کے قابل تھے،
اور یہ کہ اصل میں جب میں حاصل کرتے ہیں، جب میں نے سنا نہیں،
لیکن بنیادی طور پر یہ معلومات منتقل کرنے کا طریقہ ہے
سپرائٹ ایک سے دوسرے.
مثال کے طور پر، آپ کو کھیل ختم منتقل کرنا چاہتے ہیں کر سکتے ہیں،
اور دوسرا سپرائٹ کھیل جب سے زیادہ حاصل ہے،
یہ ایک خاص طریقے میں جواب دیتا ہے.
پروگرامنگ کو سمجھنے کے لئے یہ ایک اہم ماڈل ہے.
صرف بنیادی 0 ہفتے کے دوران، کیا ہم گئے اب تک ہے
کی اس سادہ سی پروگرام کو دیکھو.
متن یہاں سے ایک چھوٹی سی چھوٹی سا ہو، لیکن میں اس پر واقعی جلدی کریں گے کر سکتے ہیں.
ہم نے اوپر cs50.h، اور stdio.h میں 2 ہیڈر فائلوں کو بھی شامل رہے ہیں.
پھر ہم نامی مسلسل کی حد کی وضاحت کر رہے ہیں 100 سال.
پھر ہم اپنے بنیادی کام پر عمل پیرا رہے ہیں.
چونکہ ہم کمانڈ لائن کے دلائل کا استعمال نہیں کرتے ہم یہاں باطل ڈال کرنے کی ضرورت ہے
اہم کے لئے دلائل کے طور پر.
ہم دیکھتے ہیں اہم اوپر int ہے. یہ واپسی کی قسم کے نیچے دیے گئے، اس وجہ سے واپس 0.
اور ہم CS50 لائبریری تقریب کا استعمال کرتے ہوئے کر رہے ہیں int حاصل
ان پٹ کے لئے صارف سے پوچھو، اور ہم نے اسے اس متغیر x میں جمع،
تو ہم X اوپر کا اعلان، اور ہم نے اسے X = GetInt کے ساتھ ابتدا.
>> پھر ہم اگر صارف نے ہمیں اچھی ان پٹ دی چیک کرنے کے لیے.
اگر یہ ≥ LIMIT ہے ہم 1 ایک غلطی کا کوڈ واپس اور ایک غلطی پیغام کو پرنٹ کرنا چاہتے ہیں.
اور آخر میں، اگر صارف نے ہمیں دیا ہے اچھا ان پٹ
ہم تعداد مربع اور اس نتیجہ کو پرنٹ جا رہے ہیں.
بس اس بات کا یقین کرنے کے لئے کہ ان تمام زدہ گھر
آپ یہاں کوڈ کے مختلف حصوں کے لیبل میں دیکھ سکتے ہیں.
میں مسلسل، ہیڈر فائلوں کا ذکر کیا ہے.
اوہ، int X. یاد ہے کہ ایک مقامی متغیر ہے اس بات کا یقین کر لیں کہ.
ہے کہ یہ ایک عالمی متغیر سے برعکس، جس کے بارے میں ہم بات کریں گے
بعد میں تھوڑا سا جائزہ لینے کے سیشن میں
اور ہم لائبریری کی تقریب printf کال کر رہے ہیں،
اگر ایسا ہے تو ہم stdio.h ہیڈر فائل شامل نہیں کیا تھا
ہم printf کو فون کرنے کے قابل نہیں ہو گا.
اور مجھے یقین ہے کہ تیر کاٹ یہاں آئے٪ D کی طرف اشارہ ہے،
جو printf میں فارمیٹنگ سٹرنگ ہے.
اس کا کہنا ہے کہ ایک نمبر D،٪ کے طور پر اس متغیر پرنٹ ہے.
اور یہ کہ اس 0 ہفتے کے لئے ہے.
اب لوکاس جاری کی جا رہی ہے.
ہے، لڑکوں. میرا نام lucas ہے.
میں کیمپس، Mather پر سب سے بہترین گھر میں ایک sophomore ہوں،
اور میں 1 ہفتہ اور 2.1 کے بارے میں تھوڑا بہت بات کرنے جا رہا ہوں.
[1 ہفتہ اور 2.1] [لوکاس Freitas]
جیسا کہ Lexi کہہ رہے ہو، جب ہم شروع سے C آپ کے کوڈ کو ترجمہ کرنا شروع کر دیا گیا تھا
چیزیں ہیں کہ ہم نے دیکھا میں سے ایک یہ ہے کہ آپ کو نہ صرف یہ کر سکتے ہیں
اپنا کوڈ لکھیں اور یہ ایک سبز پرچم اب کا استعمال کرتے ہوئے چلانے کے.
اصل میں، آپ کو کچھ اقدامات کو اپنے C پروگرام کو بنانے کے لئے استعمال کرنے کی ضرورت
ایک executable فائل بن جاتے ہیں.
بنیادی طور پر جو تم کرتے ہو جب تم نے ایک پروگرام لکھ رہے ہیں وہ یہ ہے کہ
آپ کو زبان سنکلک کہ سمجھ سکتے ہیں میں آپ کے خیال کا ترجمہ،
لہذا جب آپ C میں ایک پروگرام کو لکھ رہے ہیں
کہ تم کیا کر رہے ہیں وہ اصل میں کچھ لکھ کر رہا ہے کہ آپ کے سنکلک سمجھنے کی جا رہی ہے،
اور پھر سنکلک اس کوڈ کو ترجمہ کرنے کی جا رہی ہے
کچھ آپ کے کمپیوٹر میں یہ سمجھ جائے گی میں.
>> اور بات، آپ کے کمپیوٹر اصل میں ہے بہت گونگا ہے.
آپ کے کمپیوٹر 0s اور 1s ہی سمجھ سکتے ہیں،
تو اصل میں سب سے پہلے کمپیوٹر میں لوگ عام طور پر پروگرام
0s اور 1s، لیکن نہیں استعمال کرتے ہوئے، بھگوان کا شکریہ.
ہم 0s اور 1s کے لئے انداز کو حفظ کرنے کی ضرورت نہیں ہے
لوپ کے لئے یا جبکہ لوپ اور اس کے لئے ایک کے لئے.
یہی وجہ ہے کہ ہم ایک سنکلک ہے.
سنکلک کیا ہے یہ ہے کہ یہ بنیادی طور پر C کوڈ کا ترجمہ،
ہمارے معاملے میں، ایک زبان ہے کہ آپ کے کمپیوٹر کو سمجھ سکے گی
جو شئی کو، کوڈ، اور سنکلک ہے جو ہم استعمال کر رہے ہیں
ہے بجنا کہا جاتا ہے، تو یہ اصل میں بجنا کے لئے نشانی ہے.
جب آپ اپنے پروگرام ہے، آپ کو 2 چیز پر ہے.
سب سے پہلے، آپ کو اپنے پروگرام کو مرتب ہے، اور پھر آپ کو اپنے پروگرام کو چلانے کے لئے جا رہے ہیں.
اپنے پروگرام کو مرتب کرنے کے لئے آپ کو ایسا کرنے کے لئے اختیارات میں سے ایک بہت ہے.
پہلے بھی بجنا program.c کرنا ہے
جس میں پروگرام کے تحت اپنے پروگرام کے نام ہے.
آپ کو اس صورت میں وہ صرف کہہ رہے ہو دیکھ کر کر سکتے ہیں "ارے، اپنے پروگرام مرتب کریں."
تم کہہ نہیں رہے ہو یا کچھ "میں نے اپنے پروگرام کے لئے اس کا نام کرنا چاہتے ہیں".
>> دوسرا اختیار آپ کے پروگرام کا نام دے رہا ہے.
آپ کہہ سکتے ہیں بجنا و اور پھر وہ نام ہے جو کہ آپ چاہتے ہیں
executable فائل کے طور پر اور پھر program.c نام پر رکھا جائے.
اور تم بھی پروگرام بنا، اور کس طرح پہلے 2 مقدمات میں دیکھ سکتے ہیں
میں ڈال دیا، C، اور تیسرے میں سے ایک میں میں صرف پروگراموں ہے.؟
جی ہاں، آپ اصل میں نہیں ڈال ج چاہئے. جب آپ کو استعمال کرتے ہیں.
ورنہ سنکلک اصل میں تم پر چللانا کی جا رہی ہے.
اور بھی مجھے معلوم ہے کہ اگر تم لوگ یاد نہیں ہے،
لیکن اوقات ہم بھی استعمال کیا جاتا lcs50 یا ایل ایم کے ایک بہت.
اس سے منسلک کہا جاتا ہے.
یہ صرف سنکلک بتاتا ہے کہ آپ کو ان لائبریریوں کا استعمال وہیں،
اگر ایسا ہے تو آپ کو cs50.h کو استعمال کرنے کے لئے چاہتے ہیں، آپ اصل میں ٹائپ ہے
بجنا program.c lcs50.
اگر آپ ایسا نہیں کرتے ہیں تو، کمپائلر معلوم نہیں ہے
کہ آپ cs50.h. میں ان افعال کا استعمال کرتے ہوئے کر رہے ہیں
اور جب آپ کو آپ کے پروگرام کو چلانے کے لئے آپ کو 2 اختیارات ہیں کرنا چاہتے ہیں.
اگر آپ بجنا program.c کیا آپ اپنے پروگرام کو ایک کا نام نہیں دیا.
آپ a.out / کا استعمال کرتے ہوئے چلانے ہے.
A.out ایک معیاری نام ہے کہ بجنا آپ کے پروگرام فراہم کرتا ہے اگر آپ اسے نہیں دیتے ایک کا نام ہے.
، نہیں تو آپ کو پروگرام / کیا کرنے جا رہے ہو اگر آپ اپنے پروگرام کو ایک نام دیا
اور اگر آپ پروگرام کا نام کیا ہے کہ ایک پروگرام حاصل کرنے کے لئے جا رہا ہے
سی فائل کے طور پر پہلے سے ہی اسی نام پر پروگرام کیا جا رہا ہے.
اس کے بعد ہم ڈیٹا کی اقسام اور اعداد و شمار کے بارے میں بات کی تھی.
>> بنیادی طور پر ڈیٹا کی اقسام میں تھوڑا باکس وہ استعمال کرتے ہیں کے طور پر ایک ہی چیز ہیں
اقدار کو ذخیرہ کرنے، لہذا ڈیٹا اقسام صرف Pokémons کی طرح اصل میں ہیں.
وہ تمام سائز اور اقسام میں آتے ہیں.
میں جانتا ہوں کہ اگر وہ قياس کا احساس کرتا ہے نہیں ہے.
ڈیٹا سائز اصل میں مشین کی ساخت پر منحصر ہے.
تمام ڈیٹا سائز ہے کہ میں یہاں دکھانے کے لئے جا رہا ہوں
ایک 32 بٹ مشین، جو کہ ہمارے آلات کی صورت ہے اصل میں ہیں،
لیکن اگر آپ واقعی اپنے میک یا ونڈوز میں بھی کوڈنگ کر رہے ہیں
شاید آپ کو ایک 64 بٹ مشین کے لئے جا رہے ہیں،
تو یاد رکھو کہ ڈیٹا سائز میں کہا گیا ہے کہ میں جا رہا ہوں یہاں ظاہر کرنے کے لئے
32 بٹ مشین کے لئے ہیں.
پہلا یہ ہے کہ ہم نے دیکھا ایک int تھا،
جو بہت سیدھا ہے.
آپ کو ایک عددی ذخیرہ کرنے int استعمال کرتے ہیں.
ہم نے بھی کردار، چار دیکھا.
اگر آپ کو ایک خط یا ایک چھوٹا سا علامت کو استعمال کرنے کے لئے کرنا چاہتے ہیں تو آپ شاید حروف استعمال کرنے کے لئے جا رہے ہیں.
ایک چار 1 بائٹ، جو Lexi نے کہا کہ 8 بٹس، اس کا مطلب ہے.
بنیادی طور پر ہم ایک ASCII ٹیبل ہے کہ 256 ہے
0s اور 1s ممکن سنیوجنوں
اور پھر جب آپ حروف ٹائپ ترجمہ ہو رہا ہے
کردار آدانوں آپ کو ایک نمبر ہے کہ آپ کے پاس ASCII ٹیبل میں Lexi طرح کا کہنا ہے کہ.
ہم نے بھی فلوٹ، جو ہم نے دشملو تعداد کو سٹور کرنے کے لئے استعمال کرتے ہیں ہے.
اگر آپ 3،14 منتخب کرنے کے لئے کرنا چاہتے ہیں، مثال کے طور پر، آپ کو فلوٹ کو استعمال کرنے کے لئے جا رہے ہیں
یا ڈبل ​​ہے کہ زیادہ صحت سے متعلق ہے.
ناو 4 بائٹس ہے.
ایک ڈبل 8 بائٹس ہے، لہذا فرق صرف اتنا ہے، صحت سے متعلق ہے.
ہم نے بھی ایک طویل integers کے لئے استعمال کیا جاتا ہے ہے،
اور آپ کو 32 بٹ کے لئے ایک مشین ایک int اور ایک طویل ایک ہی سائز ہے کر سکتے ہیں،
تو یہ احساس نہیں ہوتا 32 بٹ ایک مشین میں ایک طویل کرنے کے لئے استعمال کر سکتے ہیں.
>> لیکن اگر آپ ایک میک اور 64 بٹ مشین کا استعمال کرتے ہوئے کر رہے ہیں، اصل میں ایک طویل 8 سائز ہے،
تو یہ واقعی ساخت پر منحصر ہے.
32 بٹ مشین کے لئے اس کا کوئی مطلب نہیں ہے واقعی ایک طویل کرنے کے لئے استعمال کریں.
اور پھر ایک طویل طویل، دوسری طرف، 8 بائٹس ہے،
تو یہ بہت اچھا ہے اگر آپ کو ایک طویل عددی کرنا چاہتے ہیں.
اور آخر میں، ہم سٹرنگ ہے، جو اصل میں ایک چار * ہے،
جو ایک چار پوائنٹر ہے.
یہ بہت آسان ہے لگتا ہے کہ تار کے سائز کی طرح بننے کی جا رہی ہے
حروف کی تعداد ہے کہ آپ وہاں ہیں،
لیکن اصل حروف * خود
ایک چار، جس میں 4 بائٹس ہے ایک پوائنٹر کے سائز ہے.
ایک چار * کا سائز 4 بائٹس ہے.
اس سے کوئی فرق نہیں اگر آپ کے پاس ایک چھوٹا سا لفظ یا ایک خط یا کچھ نہیں ہے.
4 بائٹس کو ہونے جا رہا ہے.
ہم نے بھی کاسٹنگ کے بارے میں تھوڑا سا سیکھا،
تم اتنے کے طور پر دیکھ سکتے ہیں، اگر آپ مثال کے طور پر، ایک پروگرام ہے جو یہ کہتا ہے کہ
int X = 3 اور پھر printf ("٪ D"، X / 2)
کیا تم لوگ جانتے ہو کہ سکرین پر پرنٹ کرنے کے لئے جا رہا ہے؟
>> کسی >> [طلباء] 2.
1 1 >>، جی ہاں.
جب آپ 2 3 / 1.5 حاصل کرنے کے لئے جا رہا ہے،
لیکن جب سے ہم نے ایک عدد صحیح استعمال کر رہے ہیں دشملو حصہ کو نظر انداز کرنے کی جا رہی ہے،
اور آپ 1 کے لئے جا رہے ہیں.
اگر آپ یہ ہو آپ کیا کر سکتے ہیں، مثال کے طور پر، نہیں کرنا چاہتا،
ناو کا اعلان Y = X.
پھر ایکس ہے کہ 3 ہوا کرتے تھے اب Y میں 3،000 جا رہا ہے.
اور پھر آپ Y / 2 پرنٹ کر سکتے ہیں.
اصل میں، میں نے ایک 2 ہونا چاہئے. وہاں.
یہ 3.00/2.00 کیا کرنے جا رہا ہے،
اور آپ 1.5 حاصل کرنے کے لئے جا رہے ہیں.
اور ہم اس .2 F دشملو حصہ میں 2 دشملو اکائیوں کے لئے پوچھنا.
اگر آپ .3 F یہ اصل میں 1،500 پڑے.
اگر یہ 2 1.50 ہونے جا رہا ہے.
ہم نے بھی اس کیس یہاں ہے.
اگر آپ کو فلوٹ کرتے X 3،14 = اور اس کے بعد آپ کو printf X
آپ 3،14 حاصل کرنے کے لئے جا رہے ہیں.
اور اگر آپ ایسا کرتے ہیں X = X int،
جو ایک int کے طور پر ایکس کا علاج کا مطلب ہے اور تم X اب پرنٹ
آپ 3.00 کے لئے جا رہے ہیں.
کیا اس کا کوئی مطلب ہے؟
کیونکہ آپ نے سب سے پہلے ایک عددی طور پر ایکس کا علاج کر رہے ہیں، تو آپ کو دشملو حصہ کو نظر انداز کر رہے ہیں،
اور پھر آپ کو X چھپائی رہے ہیں.
اور آخر میں، آپ یہ بھی کر سکتے ہیں،
int، X 65 =، اور اس کے بعد آپ کو ایک چار ج X = اعلان
اور پھر اگر تم C پرنٹ آپ اصل میں حاصل کرنے کے لئے جا رہے ہیں
A، تو بنیادی طور پر تم یہاں کیا کر رہے ہیں
کردار میں عددی ترجمہ
جیسا کہ ASCII ٹیبل کرتا ہے.
ہم نے ریاضی آپریٹرز کے بارے میں بات کی تھی.
ان میں سے زیادہ تر کافی براہ راست ہیں، لہذا + -، *، /
اور ہم جدید ہے، جس سے 2 کی تعداد کے ایک ڈویژن کا باقی ہے کے بارے میں بات کی تھی.
اگر آپ مثال کے طور پر 10٪ 3، ہے،
اس کا مطلب ہے کہ 3 کی طرف سے 10 کی تقسیم، اور کیا باقی ہے؟
1 جا رہا ہے، تو یہ اصل میں پروگراموں میں سے ایک بہت کچھ کے لئے بہت مفید ہے.
Vigenère اور کیسر کے لئے مجھے یقین ہے کہ تم لوگ جدید استعمال کیا ہے.
ریاضی آپریٹرز کے بارے میں بہت ہوشیار ہو جب * اور / امتزاج ہے.
>> مثال کے طور پر، اگر آپ ایسا کرتے ہیں (3/2) 2 * کیا آپ کو حاصل کرنے کے لئے جا رہے ہیں؟
[طلباء] 2.
جی ہاں، 2، کیونکہ 3/2 1.5 ہو جا رہا ہے،
لیکن آپ کو 2 integers کے درمیان آپریشن کر رہے ہیں
آپ اصل میں صرف 1 پر غور کرنے جا رہے ہیں،
اور پھر 1 2 * 2 جا رہا ہے، بہت، بہت ہوشیار رہو
integers کے ساتھ ریاضی جب کر رہی ہوں کیونکہ
آپ کو اس صورت میں ہے کہ 2 3 = حاصل ہو سکتا ہے.
اور بھی مقدم کے بارے میں بہت ہوشیار رہنا.
آپ قوسین کو عام طور پر اس بات کا یقین کر لیں کہ آپ کو معلوم ہے کہ تم کیا کر رہے ہو کا استعمال کرنا چاہئے.
کچھ مفید شارٹ کٹ، ظاہر کی، ایک میں + + یا مجھے + = 1 ہے
کرنے یا استعمال کرنے + =.
میں میں = 1 + کر کے طور پر ایک ہی بات ہے.
کیا میں تمہیں یہ بھی کر سکتے ہیں - یا میں - = 1،
جس میں -1 میں = کے طور پر ایک ہی بات ہے،
کچھ لوگ آپ loops کے لئے میں ایک بہت استعمال کرتے ہیں، کم سے کم.
کے علاوہ، * کے لئے، اگر آپ استعمال کرتے ہیں * = اور اگر آپ ایسا کرتے ہیں، مثال کے طور پر
میں *، = 2 میں میں = 2 * کہا کہ ایک ہی بات ہے
اور ڈویژن کے لئے ایک ہی چیز ہے.
اگر آپ ایسا کرتے I / = 2 میں = میں 2 / کے طور پر ایک ہی بات ہے.
>> اب افعال کے بارے میں.
تم لوگوں کو معلوم ہوا کہ افعال کو ایک بہت اچھا کوڈ کو بچانے کے لئے کی حکمت عملی
جب تم پروگرامنگ رہے ہو، اگر ایسا ہے تو آپ ایک ہی کام کو انجام دینے کے لئے چاہتے ہیں
کوڈ میں بار بار، شاید آپ کو ایک تقریب کو استعمال کرنے کے لئے کرنا چاہتے ہیں
تاکہ آپ اور پیسٹ کرنے سے زیادہ بار بار کوڈ کو کاپی نہیں ہے.
اصل میں، اہم ایک تقریب ہے، اور جب میں نے آپ کو ایک تقریب کی شکل ظاہر
آپ دیکھتے ہیں کہ یہ بہت واضح ہے جا رہے ہیں.
ہم نے بھی کچھ لائبریریوں سے افعال کا استعمال کرتے ہیں،
، printf، مثال کے طور پر، GetIn، جو CS50 لائبریری سے ہے
toupper جیسے دوسرے کام کرتا ہے.
ان کے افعال میں سے سب اصل میں دوسرے لائبریریوں میں لاگو کیا جاتا ہے،
اور جب آپ کو آپ کے پروگرام کے شروع میں سب سے پہلے ان تار فائلوں کو
آپ کہہ رہے ہیں آپ کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے ان افعال کے لئے کوڈ دے کر سکتے ہیں کر رہے ہیں
تو میں نے خود کی طرف سے نافذ کرنے کی ضرورت نہیں ہے؟
اور تم اپنے اپنے افعال بھی، تو لکھنے جب آپ کو پروگرامنگ شروع کر سکتے ہیں
آپ کو احساس ہے کہ لائبریریوں میں تمام کام کرتا ہے کہ آپ کی ضرورت ہے کی ضرورت نہیں ہے.
آخری pset کے لیے، مثال کے طور پر، ہم نے لکھا، جدوجہد کو اپنی طرف متوجہ کریں، اور تلاش،
اور یہ بہت، بہت ضروری ہے افعال لکھنے کے قابل ہو جائے
کیونکہ وہ مفید ہیں، اور ہم ان سب کو پروگرامنگ میں وقت کا استعمال کرتے ہیں،
اور اس کے کوڈ کا ایک بہت بچاتا ہے.
ایک تقریب کی شکل اس میں سے ایک ہے.
ہم نے شروع میں واپسی کی قسم ہے. واپسی کی قسم کیا ہے؟
یہ صرف ہے جب آپ فنکشن سے واپس جا رہا ہے.
اگر آپ مثال کے طور پر ایک تقریب، جز ضربیہ ہے،
جو ایک عددی کے جز ضربیہ حساب کرنے کے لئے کی جا رہی ہے،
شاید یہ ایک عدد صحیح بھی واپس جا رہا ہے.
اس کے بعد واپسی کی قسم int جا رہا ہے.
Printf اصل میں واپسی کی قسم باطل ہے
کیونکہ آپ کچھ بھی واپس آنے نہیں کر رہے ہیں.
آپ صرف پردے پر چیزیں چھپائی رہے ہیں
اور تقریب کے بعد چھوڑ.
تو آپ کو تقریب ہے کہ آپ کا انتخاب کر سکتے ہیں کے نام ہے.
تم تھوڑا ایک مناسب ہو، جیسا کہ اب ج کی طرح ایک نام کا انتخاب نہیں کرنا چاہئے
یا x2f طرح.
ایک نام ہے جو سمجھ میں آتا ہے کرنے کی کوشش کریں.
>> مثال کے طور پر، اگر یہ جز ضربیہ ہے، جز ضربیہ کا کہنا ہے کہ.
اگر یہ ایک تقریب ہے جو کچھ اپنی طرف متوجہ کرنے کی جا رہی ہے ہے نام، اسے اپنی طرف متوجہ.
اور پھر ہم پیرامیٹرز، جو بھی دلائل کو کہا جاتا ہے ہے،
جو وسائل آپ کی تقریب کی ضرورت کی طرح ہیں
آپ کے کوڈ سے اس کام کو انجام دینے کے لئے.
اگر آپ کو ایک نمبر کے جز ضربیہ حساب چاہتے ہیں
شاید آپ کو ایک نمبر جز ضربیہ حساب کرنے کی ضرورت ہے.
دلائل ہے کہ آپ جا رہے ہیں میں سے ایک تعداد خود ہے.
اور پھر اس سے کچھ کرنا اور آخر میں قیمت واپس جا رہا ہے
جب تک یہ ایک باطل تقریب ہے.
کی ایک مثال دیکھ.
اگر میں integers کے ایک صف میں ایک تقریب ہے کہ تمام نمبر خلاصہ لکھنے کے لئے چاہتے ہیں،
سب سے پہلے، واپسی کی قسم int جا رہا ہے
کیونکہ میں integers کے ایک صف ہے.
اور پھر میں sumArray طرح کی تقریب کا نام کے لئے جا رہا ہوں،
اور پھر یہ صف خود لے int nums جا رہا ہے،
اور پھر تو میں جانتا ہوں کہ کتنی تعداد میں خلاصہ ہے صف کی لمبائی.
پھر میں نے مثال کے طور پر ایک متغیر کہا جاتا رقم، 0، ابتدا ہے،
اور ہر وقت میں صف میں ایک عنصر دیکھ میں یہ رقم پر شامل کرتے ہیں، تو میں لوپ کے لئے ایک کیا جانا چاہئے.
جیسا Lexi نے کہا کہ، تم کرتے ہو int میں = 0، میں <لمبائی اور میں + +.
اور میں صف میں ہر عنصر کے لئے کیا رقم + = nums [میں]
اور پھر میں نے رقم واپس، تو یہ بہت آسان ہے، اور اس کے کوڈ کا ایک بہت بچاتا ہے
اگر آپ اس تقریب کا استعمال کرتے ہوئے وقت کی ایک بہت رہے ہیں.
پھر ہم نے حالات پر ایک نظر لیا.
ہم ہے اگر، اور، اور اور اگر.
چلو دیکھتے ہیں کہ ان کے درمیان کیا فرق ہے.
ان 2 کوڈ پر ایک نظر لے لو. ان کے درمیان کیا فرق ہے؟
سب سے پہلے بنیادی طور پر ہے کوڈ آپ کو بتانا چاہتے ہیں
، یا 0 - اگر ایک نمبر +، ہے.
سب سے پہلے میں سے ایک کا کہنا ہے کہ اگر یہ 0> ہے تو اس کے مثبت ہے.
اگر یہ 0 = ہے تو اس 0 ہے، اور اگر یہ 0 <ہے تو یہ منفی ہے.
>> اور ایک دوسرے کر رہے ہے، اور اگر، اور ہے.
دونوں کے درمیان فرق یہ ہے کہ یہ ایک اصل میں جا رہا ہے
اگر،> 0، <0 یا = 0 تین بار چیک کرنے کے لیے
اگر ایسا ہے تو آپ کو 2 نمبر ہے، مثال کے طور پر، اسے یہاں آئے ہیں اور کہتے ہیں جا رہا ہے
اگر (X 0>)، اور اس کے ہاں کہنے جا رہا ہے، تو میں مثبت پرنٹ.
لیکن پھر بھی مجھے معلوم ہے کہ یہ 0> ہے اور اس 0 یا <0 نہیں ہے
میں اب بھی کرنے جا رہا ہوں اس 0، <0،
تو میں نے اصل میں اندر اگر کی جا رہی ہوں کہ میں نے ایسا نہیں کرنا پڑا
کیونکہ میں نے پہلے سے ہی جانتے ہیں کہ یہ ان شرائط میں سے کسی ایک کو مطمئن کرنے والا نہیں ہے.
اگر میں استعمال کرتے ہیں، اگر، اور بیان اور کر سکتے ہیں.
یہ بنیادی طور پر کا کہنا ہے کہ اگر X = 0 میں مثبت پرنٹ.
اگر یہ نہیں ہے، میں نے بھی اس کی جانچ کی جا رہی ہوں.
اگر یہ 2 ہے، میں ایسا نہیں جا رہا ہوں.
بنیادی طور پر آپ کو کہنا ہے کہ اگر میں X = 2 تھا
اگر (X 0>)، جی ہاں، تو یہ پرنٹ کریں.
اب جب کہ مجھے معلوم ہے کہ یہ 0> اور یہ کہ یہ مطمئن اگر پہلا
میں اس کوڈ کو چلانے کے لئے بھی نہیں جا رہا ہوں.
کوڈ زیادہ تیز چلتا ہے، اصل میں، تیزی سے 3 بار اگر آپ اس کا استعمال.
ہم نے بھی اس کے بارے میں اور یا سیکھا.
میں جا رہا ہوں اس کے ذریعے کیونکہ Lexi نے پہلے ہی ان کے بارے میں بات کرنے کے لئے نہیں جا رہا ہوں.
| آپریٹر | یہ صرف && اور ہے.
>> صرف ایک چیز مجھے کہیں گے ہے احتیاط سے جب آپ کو 3 شرائط ہیں.
قوسین کا استعمال کریں کیونکہ یہ بہت برامک ہے جب تم نے ایک شرط ہے
اور ایک دوسرے یا ایک دوسرے سے.
قوسین صرف اس بات کا یقین کر لیں کہ آپ کے حالات کا کوئی مطلب کے لئے استعمال کریں
کیونکہ مثال کے طور پر، آپ کو اس صورت میں تصور کر سکتے ہیں، کہ
یہ پہلی شرط ہے اور ایک یا ایک سے دوسرے کو ہو سکتا ہے
یا 2 ایک میں مشترکہ شرائط اور
یا تیسرا، تو صرف ہوشیار رہنا ہوگا.
اور آخر میں، ہم سوئچ کے بارے میں بات کی تھی.
ایک سوئچ بہت مفید ہے جب آپ کو ایک متغیر ہے.
چلو کا کہنا ہے کہ ہے کہ آپ کو (ن) کی طرح ایک متغیر ہے
0، 1، یا 2 ہو سکتا ہے، اور ان کیسز میں سے ہر ایک
تم ایک کام کو انجام دینے کے لئے جا رہے ہیں.
آپ کہتے ہیں کہ متغیر سوئچ کر سکتے ہیں، اور اس کی طرف اشارہ کرتا ہے کہ
قیمت VALUE1 کی طرح ہے تو میں اس میں کیا کرنے جا رہا ہوں،
جو اور میں پھر توڑ ہے، کا مطلب ہے کہ میں دوسرے معاملات میں سے کسی ایک کو دیکھنے کے لئے نہیں کر رہا ہوں
کیونکہ ہم نے پہلے سے ہی اس صورت مطمئن
اور پھر value2 اور اسی طرح، اور میں بھی ایک پہلے سے طے شدہ سوئچ کر سکتے ہیں.
اس کا مطلب یہ ہے کہ اگر یہ مقدمات کہ میں نے کسی کو مطمئن نہیں کر
کہ میں کچھ اور کرنے کی رہی ہوں، لیکن اس اختیاری ہے.
یہ سب میرے لئے ہے. اب ٹومی ہے.
ٹھیک ہے، یہ ہفتہ 3 ish جا رہا ہے.
یہ موضوعات ہم crypto، گنجائش، arrays، cetera ET کریں گے، کو ڈھکنے کا کچھ ہیں.
crypto صرف ایک فوری لفظ. ہم اس گھر کو ہتھوڑا نہیں کر رہے ہیں.
>> ہم 2 pset میں نے یہ کیا ہے، لیکن کوئز کے لئے اس بات کا یقین کر لیں کہ آپ فرق پتہ ہے
، کیسر صفر اور Vigenère صفر کے درمیان
ان خفیہ کار کے کام کے دونوں اور کیا ہے کہ کس طرح خفیہ طرح ہے
اور بےرمز ان 2 خفیہ کار کا استعمال کرتے ہوئے متن.
یاد رکھیں، کیسر صفر صرف ایک ہی رقم کی طرف سے ہر کردار گھما،
اس بات کا یقین کر لیں کہ آپ جدید حروف تہجی میں حروف کی تعداد کی طرف سے کر رہے ہیں.
اور Vigenère صفر، دوسری طرف، ہر کردار گھما
ایک مختلف رقم کی طرف سے، تو بلکہ یہ کہہ سے
3 Vigenère کی طرف سے ہر کردار گھمایا ہر کردار باری باری دکھائے گا
ایک مختلف کچھ مطلوبہ الفاظ کی بنیاد پر رقم کی طرف سے
مطلوبہ الفاظ میں سے ہر ایک خط میں کچھ مختلف رقم کہاں کی نمائندگی کرتا ہے
کی طرف سے واضح متن کو باری باری دکھائے گا.
دو متغیر گنجائش کے بارے میں پہلی بات چیت ہے.
متغیرات میں سے 2 مختلف اقسام ہیں.
ہم مقامی متغیر ہے، اور یہ بیان کیا جا رہا ہے
باہر، اہم یا کسی بھی تقریب یا بلاک کے باہر
اور یہ قابل رسائی آپ کے پروگرام میں کسی بھی جگہ ہو جائے گا.
اگر آپ کو ایک تقریب ہے اور اس تقریب میں ایک جبکہ لوپ
بڑے عالمی متغیر رسائی ہر جگہ ہے.
ایک مقامی متغیر، دوسری طرف، وہ جگہ ہے جہاں یہ بیان کیا جاتا ہے scoped ہے.
>> اگر آپ یہاں ایک تقریب ہے، مثال کے طور پر، ہم اس تقریب میں جی ہے،
اور جی کے اندر یہاں ایک متغیر کہا جاتا Y ہے،
اور اس کا مطلب یہ ہے کہ یہ ایک مقامی متغیر ہے.
اگرچہ اس متغیر Y کہا جاتا ہے
اور اس کے متغیر ان 2 افعال Y کہا جاتا ہے
کوئی اندازہ نہیں ہے جو ایک دوسرے کے مقامی متغیر ہیں.
دوسری طرف، یہاں ہم کا کہنا ہے کہ int X 5 =
اور یہ کسی بھی تقریب کے دائرہ کار سے باہر ہے.
یہ اہم دائرہ کار سے باہر ہے، تو یہ ایک عالمی متغیر ہے.
یہ ان 2 کے افعال میں سے ہے کہ اندر کا مطلب ہے کہ جب میں X کا کہنا ہے کہ - یا X + +
میں اسی ایکس جس کے تحت اس Y اور اس Y مختلف متغیر ہیں تک رسائی حاصل کر رہا ہوں.
یہ ایک عالمی متغیر اور ایک مقامی متغیر کے درمیان کیا فرق ہے.
جہاں تک ڈیزائن کا تعلق ہے، کبھی کبھی یہ شاید ایک بہتر خیال ہے
متغیر مقامی رکھنے کے لئے جب بھی آپ کا امکان کر سکتے ہیں
ہونے کے بعد سے عالمی متغیرات میں سے ایک گروپ واقعی مبہم حاصل کر سکتے ہیں.
اگر آپ کے افعال میں سے ایک گروپ ہے سب ایک ہی بات کی تجدید
تم بھول اگر اس تقریب کو اتفاقی طور پر اس عالمی ترمیم کر سکتے ہیں،
اور یہ دوسری تقریب میں اس کے بارے میں نہیں جانتی ہے،
اور یہ بہت الجھا کے طور پر آپ کو زیادہ کوڈ حاصل ہے.
متغیر مقامی رکھتے ہوئے جب بھی آپ کا امکان کر سکتے ہیں
صرف اچھے ڈیزائن ہے.
Arrays، یاد رکھنا، صرف اسی قسم کے عناصر کی فہرست ہیں.
CI کے اندر 1 2.0، جیسے ایک فہرست نہیں کر سکتے ہیں، ہیلو.
ہمیں صرف یہ نہیں کر سکتے.
>> جب ہم C میں ایک صف کا اعلان عناصر کے سب ایک ہی قسم کی ہے.
یہاں میں 3 integers کے ایک صف ہے.
یہاں میں صف کی لمبائی ہے، لیکن اگر میں صرف اس نحو میں یہ اعلان کر رہا ہوں
میں کہاں وضاحت کیا عناصر کے سب میں تکنیکی طور پر یہ 3 کی ضرورت نہیں ہے.
سنکلک یہ اعداد و شمار صف کتنا بڑا ہونا چاہئے کافی ہوشیار ہے.
اب جب میں یا قائم کرنے کے لئے ایک صف کی قدر حاصل کرنا چاہتے ہیں
یہ ایسا نحو ہے.
اس صف کے دوسرے عناصر اصل میں نظر ثانی کیونکہ یاد،،
نمبر 0 سے شروع ہوتی ہے، 1 نہیں.
اگر میں اس قدر پڑھنے کے لئے چاہتے ہیں، میں جیسے کچھ کہہ سکتے ہیں int X صف = [1].
یا اگر میں اس قدر مقرر کرنا چاہتے ہیں، میں طرح یہاں کیا کر رہا ہوں،
میں کہتا ہوں صف [1] = 4.
ان انڈیکس کی طرف سے یہ عناصر تک رسائی حاصل کرنے کا وقت
یا اپنی پوزیشن یا جہاں وہ صف میں ہیں
اور یہ کہ لسٹنگ 0 سے شروع ہوتی ہے.
ہم arrays کے arrays بھی ہو سکتا ہے،
اور یہ ایک کثیر جہتی صف کے نام سے جانا جاتا ہے.
جب ہم نے ایک کثیر جہتی صف ہے
اس کا مطلب ہے کہ ہم قطار اور کالم طرح کچھ ہو سکتا ہے،
اور یہ صرف اس visualizing یا اس کے بارے میں سوچ کا ایک طریقہ ہے.
جب میں ایک کثیر جہتی صف ہے اس کا مطلب ہے کہ میں کی ضرورت شروع کرنے جا رہا ہوں
1 انڈیکس سے زیادہ کیونکہ اگر میں ایک گرڈ ہے
ہوئے کہا کہ آپ کس صف میں ہیں صرف ہمیں ایک نمبر نہیں دے ہے.
یہ واقعی صرف ہمیں اعداد کی ایک فہرست دینے جا رہے ہیں.
چلو کا کہنا ہے کہ میں یہ صف یہاں ہے.
میں ایک کہا جاتا گرڈ صف ہے، اور میں اس کی 2 قطار اور 3 کالم کو کہہ رہا ہوں،
اور اسی طرح یہ اس visualizing میں سے ایک طریقہ ہے.
جب میں کہتا ہوں کہ میں [1] میں عناصر حاصل کرنے کے لئے کرنا چاہتے ہیں [2]
اس کا مطلب یہ ہے کہ کیونکہ یہ قطار سب سے پہلے اور اس کے بعد کالم
میں 1 سے لے کر 1 نے کہا کہ قطار میں کودنے جا رہا ہوں.
>> پھر میں 2 کالم یہاں آنے رہا ہوں اور میں قیمت 6 حاصل کرنے کے لئے جا رہا ہوں.
احساس ہے؟
arrays کثیر جہتی، یاد رکھنا، تکنیکی طور پر صرف arrays کے ایک صف ہیں.
ہم arrays کے arrays کے arrays کر سکتے ہیں.
ہم جا رہنا ہے، لیکن واقعی ایک طریقہ کے بارے میں سوچ سکتے ہیں
یہ کس طرح کیا جا رہا ہے باہر چڑھائی اور کیا ہو رہا ہے اسے مرئی ہے
اس طرح ایک گرڈ میں.
جب ہم افعال پر arrays گزرتے ہیں، وہ سلوک کرنے جا رہے ہیں
جب ہم افعال باقاعدگی سے متغیر گزر سے تھوڑا سا مختلف سا
ایک int یا فلوٹ سنانے جیسا.
جب ہم ایک int یا چار یا ان دیگر ڈیٹا کے کسی بھی قسم کے گزر
ہم صرف اگر تقریب ترمیم پر ایک نظر لیا
اس متغیر کی قدر ہے کہ تبدیلی کی تشہیر کرنا نہیں ہے
بلا فنکشن.
ایک صف کے ساتھ، دوسری طرف ہو گا.
اگر میں ایک صف میں کچھ فنکشن گزرتے ہیں اور اس تقریب میں سے کچھ عناصر تبدیل،
میں نے جب تقریب جس نے اس کا نام واپس آ
میری صف اب مختلف ہو جا رہا ہے، اور اس کے لئے الفاظ
ہے arrays حوالہ کی طرف سے منظور کر رہے ہیں جیسا کہ ہم بعد میں دیکھیں گے.
یہ کس طرح اشارہ کام، جہاں ان بنیادی ڈیٹا کی اقسام سے متعلق ہے،
دوسری طرف، قیمت کی طرف سے گزر رہے ہیں.
>> اس کے بارے میں ہم کچھ متغیر کی ایک کاپی بنانے اور پھر کاپی میں گزرنے والے کے طور پر سوچ سکتے ہیں.
اس سے کوئی فرق نہیں ہے کہ ہم نے اس متغیر کے ساتھ کیا کرتا ہے.
بلا تقریب اس بات سے آگاہ نہیں کریں گے کہ یہ تبدیل کر دیا گیا تھا.
Arrays صرف ایک چھوٹا سا اس سلسلے میں مختلف سا ہے.
مثال کے طور پر، جیسا کہ ہم نے ابھی دیکھا، اہم صرف ایک تقریب ہے
جو 2 دلائل میں لے سکتے ہیں.
بنیادی کام پر پہلی دلیل argc، یا دلائل کی تعداد ہے،
اور دوسری دلیل argv کہا جاتا ہے،
اور وہ ان دلائل کی اصل اقدار ہیں.
چلو کا کہنا ہے کہ میں کہا جاتا this.c پروگرام ہے،
اور میں کہتا ہوں کہ یہ، اور میں کمانڈ لائن پر چلانے جا رہا ہوں.
اب کچھ دلائل میں اپنے پروگرام کو منتقل یہ کہا جاتا ہے،
میں جیسے کچھ کہنا / 50 کاوچ سرفنگ کے ہے.
اس کا ہے جو ہم ہر دن ٹرمینل میں ڈیوڈ کرنا تصور ہے.
لیکن اب اس پروگرام کی مرکزی تقریب اندر
ان اقدار ہیں، تو argc 4 ہے.
یہ تھوڑا الجھا ہو سکتا ہے کیونکہ واقعی ہم صرف 50 کاوچ سرفنگ کے گزر رہے ہیں ہو سکتا ہے.
جو صرف 3 ہے.
لیکن یاد رکھنا کہ argv کے پہلے عنصر یا پہلی دلیل
تقریب میں خود کے نام پر ہے.
تو اس کا مطلب ہے کہ ہم نے 4 چیزیں یہاں ہے،
اور پہلا عنصر اس / بننے جا رہا ہے.
اور یہ ایک تار کے طور پر کی نمائندگی کریں گے.
پھر باقی عناصر ہیں جو ہم پروگرام کے نام کے بعد میں ٹائپ.
تو بالکل اسی طرح جیسے ایک طرف ایک، جیسا کہ ہم شاید 2 pset میں دیکھا،
یاد رکھیں کہ 50 سٹرنگ عددی 50 ≠ ہے.
تو کی طرح، ہم کچھ نہیں کہہ سکتے 'int = X 3 argv.
>> وہ صرف مطلب نہیں ہے، کیونکہ یہ ایک تار ہے، اور یہ ایک عدد صحیح ہے.
تو اگر آپ کو 2 کے درمیان میں تبدیل کرنا چاہتے ہیں، یاد رکھنا، ہم جا رہے ہیں
نامی اس جادو atoi تقریب ہے.
یہ ایک تار لیتا ہے اور اس سٹرنگ کے اندر کی نمائندگی عددی واپس.
تو یہ ایک آسان غلطی ہے، کوئز بنانے،
صرف سوچ رہا تھا کہ یہ درست قسم خود کار طریقے سے ہو جائے گا.
لیکن صرف اتنا معلوم ہے کہ ان ڈور ہمیشہ رہیں گے
چاہے سٹرنگ صرف ایک عددی یا کردار یا فلوٹ پر مشتمل ہے.
تو اب وقت چل رہا کرنے کے بارے میں بات کریں.
جب ہم ان تمام یلگوردمز ہیں کہ یہ تمام پاگل کام کرتے ہیں،
یہ واقعی مفید ہو جاتا ہے سوال، کہ وہ کتنا وقت لگتا ہے؟ "
ہم نام asymptotic سنکیتن کچھ کے ساتھ کی نمائندگی کرتے ہیں.
تو اس کا مطلب یہ ہے کہ - ٹھیک ہے، کا کہنا ہے کہ ہم اپنے الگورتھم دو
کچھ واقعی، واقعی، واقعی بڑے ان پٹ.
ہم سوال پوچھنا چاہتے ہیں، "میں کتنا وقت پر لے جا رہا ہے؟
کتنے قدم ہمارے الگورتھم اسے چلانے کے لے جائے گا
ان پٹ کے سائز کی ایک تقریب کے طور پر؟ "
تو پہلی راستہ ہے جس سے ہم کو چلانے کے وقت کی وضاحت کر سکتے ہیں بڑی O. کے ساتھ ہے
اور یہ ہمارے بدترین رننگ ٹائم ہے.
تو اگر ہم ایک صف ترتیب کرنا چاہتے ہیں، اور ہم اپنے الگورتھم ایک صف دے
نزولی ترتیب میں ہے جب یہ ترتیب صعودی میں ہونا چاہئے،
جو بدترین ہونے جا رہا ہے.
یہ ہمارے وقت ہماری الگورتھم میں لے جائے گا کی زیادہ سے زیادہ لمبائی میں پابند بالائی ہے.
دوسری طرف، اس Ω بہترین رننگ ٹائم کی وضاحت کی جا رہی ہے.
تو اگر ہم چھانٹ رہا ہے الگورتھم میں پہلے ہی کے مطابق صف دیتے ہیں،
کب تک اسے حل کریں گے؟
اور یہ، تو، ایک وقت چلانے پر کم جانے کی وضاحت کرتا ہے.
تو یہاں صرف کچھ الفاظ ہیں جو کہ کچھ عام چل رہا اوقات کی وضاحت کرتے ہیں.
یہ صعودی میں ہیں.
چل رہا ہے سب سے تیزی سے وقت ہم مسلسل کہا جاتا ہے.
>> اس کا مطلب ہے کوئی بات نہیں کس طرح بہت سے عناصر پر ہم اپنے الگورتھم دے،
کوئی بات نہیں کتنا بڑا ہماری صف ہے، اسے حل کرنے
یا کر جو کچھ بھی ہم صف پر کر رہے ہیں وقت کے اسی رقم ہمیشہ لے گا.
تو ہم صرف ایک 1، جو مسلسل جاری ہے کے ساتھ اس کی نمائندگی کر سکتے ہیں.
لوگارتمی چلت وقت میں ہم نے بھی دیکھا.
تو بائنری تلاش کی طرح کچھ لوگارتمی ہے،
جہاں ہم نے نصف ہر وقت میں مسئلہ کاٹ
اور پھر وہاں سے چیزیں زیادہ حاصل کریں.
اور اگر تم نے کبھی کسی جز ضربیہ الگورتھم کی ایک O رہے ہیں لکھنے
آپ شاید اپنے دن کے کام کے طور پر اس پر غور نہیں کرنا چاہئے.
جب ہم چل رہا اوقات کا آپس میں موازنہ یہ ضروری ہے کہ ان چیزوں کو ذہن میں رکھ.
تو اگر میں ایک الگورتھم ہے کہ اے (ن) ہے، اور کسی
اے کے ایک الگورتھم (2n) ان اصل asymptotically برابر ہیں.
تو اگر ہم ارب eleventy کی طرح ایک بڑی تعداد پر (ن) کا تصور:
ایسا ہے، تو جب ہم ارب eleventy کی طرح کچھ + 3 ارب eleventy موازنہ کر رہے ہیں،
اچانک کہ +3 ایک بڑا فرق واقعی نہیں ہے اب ہے.
یہی وجہ ہے کہ ہم ان چیزوں کے برابر ہو پر غور شروع کرنے جا رہے ہیں.
ان constants کی طرح یہاں چیزیں اتنی 2 X اس، یا 3 انہوں نے مزید کہا،
یہ صرف constants ہیں، اور ان کو چھوڑنے جا رہے ہیں.
تو یہی وجہ ہے کہ ان دوڑ وقت کے تمام 3 میں کہہ رہے ہیں وہ O (ن) کے ہو کے طور پر ایک ہی ہیں.
اسی طرح، اگر ہم 2 دیگر رن اوقات ہے، کا کہنا ہے کہ O (ن + 2n ² ³) ہم شامل کر سکتے ہیں،
+ ن 7 +، اور پھر ہم ایک اور چلت وقت ہے جو صرف O ہے (ن ³) ہے.
پھر یہ ایک ہی چیز ہیں کیونکہ یہ - یہ وہی نہیں ہیں.
یہ وہی چیزیں ہیں، معاف کرنا. تو یہ وہی ہیں کیونکہ
اس ن ³ اس 2n ² غلبہ حاصل کرنے کی جا رہی ہے.
>> کیا ہے اگر ہم O (ن ³) اور اے کی طرح بار چلانے کے لئے ہے ایک ہی بات نہیں ہے (² ن)
کیونکہ یہ ن ³ اس N ² سے زیادہ بڑا ہے.
لہذا اگر ہم exponents ہے، اچانک یہ بات شروع ہوتا ہے،
لیکن جب ہم صرف عوامل کے ساتھ کام کر رہے ہو جیسا کہ ہم نے یہاں ہیں،
تو اس کیونکہ وہ صرف باہر چھوڑنے جا رہے ہیں بات نہیں ہے.
چلو الگورتھم میں سے کچھ ہم نے اب تک دیکھا ہے میں ایک نظر ڈالیں
اور ان کی چلت وقت کے بارے میں بات کرتے ہیں.
ایک کی فہرست میں ایک بڑی تعداد کے لئے تلاش کرنے کا پہلا طریقہ، کہ ہم نے دیکھا، لکیری تلاش تھی.
اور لکیری تلاش کے عمل سپر پر براہ راست ہے.
ہم صرف ایک فہرست ہے، اور ہم فہرست میں ہر ایک عنصر پر دیکھنے جا رہے ہیں
جب تک ہم نمبر معلوم ہم کے لئے تلاش کر رہے ہیں.
تو اس کا مطلب ہے کہ بدترین صورت میں، اس اے (ن).
اور سب سے زیادہ معاملہ اگر عنصر ہے
آخری عنصر، پھر لکیری تلاش کا استعمال کرتے ہوئے ہم ہر ایک عنصر کو دیکھنے کے لئے ہے
تک کے لئے جانتے ہیں کہ یہ فہرست میں دراصل ہم گزشتہ ایک حاصل کرنے کے لئے.
ہم نے ابھی تک نہیں نصف دے کر سکتے ہیں اور کہتے ہیں، "یہ شاید وہاں نہیں ہے."
لکیری تلاش کے ساتھ ہم پوری بات کو دیکھنے کے لئے ہے.
بہترین صورت رننگ ٹائم، دوسری طرف، مسلسل جاری ہے
کیونکہ بہترین صورت میں عنصر ہم کے لئے تلاش کر رہے ہیں صرف فہرست میں سب سے پہلے میں سے ایک ہے.
تو یہ ہمیں بالکل مرحلہ نمبر 1، کوئی بات نہیں کتنا بڑا فہرست ہے لے جا رہا ہے
اگر ہم ہر بار پہلے عنصر کے لئے لگ رہے ہیں.
>> تو آپ جب تلاش، یاد رکھو اس کی ضرورت نہیں کہ ہماری فہرست کے مطابق رکھا جائے.
کیونکہ ہم صرف ہر ایک عنصر پر دیکھو جا رہے ہیں، اور یہ واقعی کوئی فرق نہیں پڑتا
کیا تاکہ ان عناصر کو اندر ہیں
ایک سے زیادہ ذہین تلاش الگورتھم بائنری تلاش کی طرح کچھ ہے.
یاد رکھیں، بائنری تلاش کے عمل یہ ہے کہ آپ جا رہے ہیں
فہرست کے وسط میں تلاش رہو.
اور کیونکہ ہم نے مشرق کی طرف دیکھ رہے ہیں، ہم یہ توقع کرتے ہیں کہ فہرست کے مطابق ہے
ورنہ ہم جانتے ہیں کہ جہاں وسط ہے نہیں، اور ہم سے زیادہ دیکھ بھال کرنی ہے
ساری اسے تلاش کرنے کے لئے کی فہرست، اور پھر ہم نے اس نقطہ پر صرف وقت برباد کر رہے ہو.
لہذا اگر ہم نے ایک کے مطابق کی فہرست ہے اور ہم مشرق تلاش، ہم مشرق کا آپس میں موازنہ کرنے کے لئے جا رہے ہیں
عنصر ہم کے لئے تلاش کر رہے ہیں.
اگر یہ بہت زیادہ ہے، تو ہم صحیح نصف بھول سکتا
کیونکہ ہم جانتے ہیں کہ اگر ہمارا عنصر پہلے ہی بہت زیادہ ہے
اور سب کچھ اس عنصر کا حق بھی زیادہ ہے،
تو پھر ہم وہاں کوئی نظر کی ضرورت نہیں ہے.
کہاں دوسری طرف، اگر ہمارے عنصر بہت کم ہے،
ہم جانتے ہیں کہ اس عنصر کے بائیں کو سب کچھ بھی ہے بہت کم ہے،
تو اسے وہاں تلاش کرنے کا احساس نہیں کر سکتا، یا تو.
اس طرح، کی فہرست کے midpoint میں ہر قدم اور ہر وقت ہے کہ ہم نظر آتے کے ساتھ
ہم نے نصف میں ہماری پریشانی میں کمی کی وجہ سے اچانک ہم جانتے ہیں کہ رہے ہیں
اعداد و شمار ہے کہ ایک ہم کے لئے تلاش کر رہے ہیں نہیں ہو سکتا کی ایک پوری چڑھانے.
>> pseudocode میں یہ کچھ اس طرح نظر آئے گا،
اور اس وجہ سے ہم آدھے ہر ایک وقت میں فہرست کاٹنے رہے ہیں،
ہمارے بدترین رن لکیری سے لوگارتمی وقت چھلانگ.
تو اچانک ہم لاگ ان اقدامات کے لئے ایک کی فہرست میں ایک عنصر کو تلاش کرنے کے لئے.
بہترین صورت رننگ ٹائم، تاہم، اب بھی ہے مسلسل
کیونکہ اب، چلو صرف اتنا کہنا ہے کہ عنصر ہم کے لئے تلاش کر رہے ہیں ہے
ہمیشہ اصل فہرست کے عین مطابق وسط.
تو ہم بڑے جیسا کہ ہم چاہتے ہیں کے طور پر ہماری فہرست میں اضافہ، لیکن کر سکتے ہیں اگر عنصر ہم کے لئے تلاش کر رہے ہیں مشرق میں ہے،
تو وہ صرف ہمیں مرحلہ نمبر 1 پر لے جا رہا ہے.
تو یہی وجہ ہے کہ ہم O (لاگ ان ن) اور Ω (1) یا مسلسل ہو.
ہم اصل میں اس فہرست میں بائنری تلاش چلائیں.
تو ہم کا کہنا ہے کہ ہم نے 164 عنصر کے لئے تلاش کر رہے ہیں.
پہلی چیز جو ہم کرنے جا رہے ہیں اس فہرست کے midpoint تلاش.
یہ صرف اس لئے ہوتا ہے کہ midpoint ان 2 تعداد کے درمیان میں گر جا رہا ہے،
تو صرف منمانے کہتے ہیں، ہر بار midpoint 2 تعداد کے درمیان آتا ہے،
ہم مہاسرا.
ہم صرف اس بات کا یقین کریں کہ ہم اس راستے سے ہر قدم بنانے کے لئے کی ضرورت ہے.
تو ہم نے منہاج القرآن کے چل رہا ہے، کر رہے ہیں اور ہم کا کہنا ہے کہ 161 ہماری فہرست کے درمیان میں ہے جا رہے ہیں.
تو 161 <164، اور 161 کے بائیں ہر عنصر
164 <ہے، تو ہم جانتے ہیں کہ یہ ہمیں بالکل مدد نہیں ہے
یہاں تلاش شروع کرنے کے لئے کیونکہ عنصر ہم وہاں نہیں ہو سکتا کے لئے تلاش کر رہے ہیں.
تو جو ہم کر سکتے ہیں ہے ہم فہرست ہے کہ پوری بائیں نصف کے بارے میں بھول کر سکتے ہیں،
اور 161 آگے کے حق سے ہی سمجھتے ہیں.
>> تو پھر، یہ midpoint ہے، ہم مہاسرا.
اب 175 بہت بڑا ہے.
تو ہم جانتے ہیں کہ یہ ہمیں یہاں یا یہاں دیکھ نہیں،
تو ہم دور کہ صرف پھینک دیں اور آخر میں ہم نے 164 مار دونگا کر سکتے ہیں.
بائنری تلاش پر میں آپ کا کوئی سوال ہے؟
چلو پہلے ہی حل کی فہرست کے ذریعے تلاش سے منتقل
اصل میں کسی بھی ترتیب میں اعداد کی ایک فہرست لے کر
اور صعودی میں اس فہرست بنانے.
سب سے پہلے جس طریقہ سے ہم کو دیکھا بلبلا طرح بلایا گیا تھا.
اور یہ الگورتھم ہم نے دیکھا آسان ہو جائے گا.
بلبلا طرح کا کہنا ہے کہ ہے کہ جب فہرست کے اندر اندر کسی بھی 2 عناصر جگہ سے باہر ہیں،
مطلب وہاں ایک کم تعداد کے بائیں زیادہ تعداد ہے،
تو پھر ہم ان کے تبادلہ پر جا رہے ہیں، کیونکہ اس کا مطلب ہے کہ فہرست ہو جائے گا
"کے مطابق" سے پہلے تھا.
اور ہم صرف اس عمل کو دوبارہ جاری جا رہے ہیں اور بار بار
یہاں تک کہ آخر میں ان کے صحیح مقام پر بلبلا عناصر کی قسم اور ہم نے ایک کے مطابق کی فہرست ہے.
>> اس کی چلت وقت O جا رہا ہے (ن ²). کیوں؟
ٹھیک ہے، بدترین صورت میں وجہ سے، ہم ہر عنصر کو لے جا رہے ہیں، اور
ہم فہرست میں ہر دوسرے عنصر موازنہ کو ختم کرنے جا رہے ہیں.
لیکن بہترین صورت میں، ہم نے پہلے ہی کے مطابق فہرست ہے، بلبلا کی طرح
صرف ایک بار کے ذریعے جانے کے لئے، کا کہنا ہے کہ "نہیں. میں کوئی سویپ نہیں تھا، تو میں کیا کر رہا ہوں."
تو ہم Ω (ن) کے ایک بہترین صورت رننگ ٹائم ہے.
کی ایک فہرست پر بلبلا طرح چلائیں.
یا سب سے پہلے، کچھ pseudocode میں واقعی جلدی نظر.
ہم کا کہنا ہے کہ ہم ٹریک سے لوپ کے ہر iteration میں رکھنے کے لئے چاہتے ہیں کرنا چاہتے ہیں،
رکھنے یا نہیں ہم کسی بھی عناصر کو تبدیل کر دیا گیا باخبر رھنے کے لئے.
تو یہ ہے کی وجہ، ہم جب ہم کسی بھی عناصر کو تبدیل نہیں کیا ہے کو روکنے کے لئے جا رہے ہیں.
تو ہم ہمارے لوپ کے شروع میں کچھ تبدیل نہیں کیا ہے، تو ہم کہتے ہیں کہ غلط ہے گے.
اب، ہم نے فہرست کے ذریعے جانا ہے اور عنصر میں عنصر میں 1 + موازنہ جا رہے ہیں
اور اگر یہ معاملہ ہے کہ وہاں ایک چھوٹی تعداد کے بائیں ایک بڑی تعداد ہے،
تو ہم صرف ان کے تبادلہ کے لئے جا رہے ہیں.
>> اور اس کے بعد ہمیں یاد رکھنا ہے کہ ہم نے ایک عنصر تبدیل کرنے جا رہے ہیں.
اس کا مطلب یہ ہے کہ ہم فہرست کے ذریعے کم از کم 1 بار جانے کی ضرورت
کیونکہ حالت ہے جس میں ہم رک ہے، اور جب ساری فہرست پہلے ہی کے مطابق ہے،
مطلب ہم کسی سویپ نہیں کیا ہے.
تو یہی وجہ ہے کہ ہماری حالت یہاں نیچے ہے جبکہ بعض عناصر کی تبدیل کیا گیا ہے. '
تو اب ہم صرف یہ فہرست پر چلنے دیکھو.
میں 5،0،1،6،4 فہرست ہے.
بلبلا طرح بائیں میں ہر طریقے سے شروع کرنے جا رہا ہے، اور اس کا موازنہ کرنے جا رہا ہے
میں عناصر، تو 0 1 +، جس میں 1 عنصر ہے.
یہ، اچھی طرح 5 0> کہنے جا رہا ہے، لیکن ابھی 5 بائیں،
تو میں 5 اور 0 تبادلہ کرنے کی ضرورت ہے.
جب میں نے ان سے تبادلہ، اچانک میں یہ مختلف فہرست حاصل کریں.
5 اب> 1، تو ہم ان کے تبادلہ کے لئے جا رہے ہیں.
5 6> نہیں ہے، تو ہم یہاں کچھ کرنے کی ضرورت نہیں ہے.
لیکن 6 4>، تو ہم تبادلہ کرنے کی ضرورت ہے.
ایک بار پھر، ہم پوری بالآخر دریافت کی فہرست کے ذریعے چلانے کے لئے کی ضرورت ہے
کہ یہ حکم سے باہر ہو گیا ہے، ہم ان کے تبادلہ،
اور ہم اس وقت کی فہرست کے ذریعے 1 مزید وقت چلانے کی ضرورت ہے
اس بات کا یقین کر لیں کہ کہ یہ سب کچھ اس کی ترتیب میں ہے، اور اس نقطہ بلبلا طرح میں ختم ہو گیا ہے.
بعض عناصر کر رہی ہیں اور انہیں حل کرنے کے لئے ایک مختلف الگورتھم انتخاب طرح ہے.
انتخاب طرح کے پیچھے خیال یہ ہے کہ ہم نے فہرست کے مطابق حصہ تعمیر کرنے جا رہے ہیں
ایک وقت میں 1 عنصر.
>> اور کی فہرست کے بائیں طبقہ کی تعمیر کی طرف سے جس طرح سے ہم ایسا کرنے کے لئے جا رہے ہیں ہے.
اور بنیادی طور پر، ہر - ہر قدم پر، ہم سب سے چھوٹی عنصر ہم نے چھوڑ دیا ہے جا رہے ہیں
جو ابھی نہیں کیا گیا کے مطابق، اور ہم اسے اس کے مطابق طبقہ میں منتقل کی جا رہے ہیں.
اس کا مطلب ہے کہ ہم مسلسل کم از کم ناچھانٹا ہوا عنصر تلاش کرنے کی ضرورت ہے
اور پھر اس کم از کم عنصر لے اور جو کچھ بھی کے ساتھ اس کا تبادلہ
چھوڑ سب سے زیادہ عنصر ہے کہ نہیں کے مطابق ہے.
اس کی چلت وقت O جا رہا ہے (² ن) کیونکہ بدترین صورت میں
ہم ہر دوسرے عنصر ہر ایک عنصر موازنہ کرنے کی ضرورت ہے.
کیونکہ ہم کہہ رہے ہیں کہ اگر ہم فہرست کے بائیں نصف میں شروع، ہمیں ضرورت رہے ہیں
پوری صحیح طبقہ کے ذریعے سب سے چھوٹی عنصر کو تلاش کرنے کے لئے جانا.
اور پھر، پھر، ہم پوری صحیح طبقہ کے پاس جاؤ اور کی ضرورت ہے
سے زیادہ سے زیادہ اور اس سے زیادہ سے زیادہ جا پھر رکھیں.
یہ ن ² ہونے جا رہا ہے. ہم ایک لوپ کے لئے دوسرے کے لوپ کے اندر کے لئے کرنے کی ضرورت جا رہے ہیں
جو ن ² پتہ چلتا ہے.
بہترین کیس سوچ میں، کا کہنا ہے کہ ہم نے اسے پہلے ہی حل کی فہرست دے؛
ہم اصل میں ن ² سے کوئی بہتر نہیں ہے.
کیونکہ انتخاب طرح یہ جان کر کہ کوئی راستہ نہیں ہے
کم از کم عنصر صرف ایک ہے میں دیکھ ہو.
یہ اب بھی اس بات کا یقین کر لیں کہ کہ یہ اصل میں کم از کم ہے بنانے کے لئے کی ضرورت ہے ہے.
>> اور صرف اس بات کا یقین کر لیں کہ کہ یہ کم از کم ہے بنانے کے لئے، اس الگورتھم کو استعمال کرتے ہوئے کا طریقہ
ہر ایک عنصر پر دوبارہ نظر ہے.
تو واقعی، اگر آپ اسے دے - اگر آپ کو انتخاب کی طرح پہلے ہی حل کی فہرست دیتے ہیں،
یہ یہ ایک فہرست ہے جو کے مطابق نہیں ہے دینے کے سے بہتر کوئی نہیں ہے.
ویسے، اگر یہ معاملہ ہوتا ہے کہ کچھ O (کچھ) ہے
اور کسی چیز کے ومیگا، ہم زیادہ succinctly کہ اس چیز کی θ ہے صرف کہہ سکتے ہیں.
تو اگر آپ دیکھتے ہیں کہ کہیں بھی آئے، کہ اس کا کیا مطلب صرف اتنا ہے.
>> اگر کچھ (ن) کے تھیٹا ²، دونوں بڑی O (² ن) اور Ω (² ن) ہے.
بہترین اور سب سے زیادہ کیس تو، اس سے کوئی فرق نہیں ہے،
الگورتھم ایک ہی بات کو ہر وقت کیا جا رہا ہے.
تو یہ ہے جو انتخاب کی طرح کے لئے pseudocode کی طرح نظر سکتی ہے.
ہم بنیادی طور پر اس کا کہنا ہے کہ میں کی فہرست iterate چاہتے ہیں جا رہے ہیں
حق، اور لوپ میں سے ہر ایک iteration میں بائیں سے، میں منتقل کرنے جا رہا ہوں
فہرست کے اس کے مطابق حصہ میں کم از کم عنصر.
اور ایک بار میں نے کچھ وہاں منتقل، مجھے اس کی ضرورت اس عنصر میں دوبارہ نظر نہیں ہے.
کیونکہ جیسے ہی مجھے میں فہرست کے بائیں طبقہ ایک عنصر تبادلہ، اس کے مطابق ہے
کیونکہ ہم minimums کا استعمال کرتے ہوئے کی طرف سے صعودی میں سب کچھ کر رہے ہیں.
تو ہم نے کہا، ٹھیک ہے، ہم میں پوزیشن میں ہیں، اور ہم عناصر کے سب دیکھنے کی کیا ضرورت ہے
میں کا حق کے لئے کم از کم تلاش کرنے کے لئے.
تو اس کا مطلب ہے کہ ہم 1 + سے فہرست کے اختتام پر دیکھنا چاہتا ہوں.
اور اب، اگر عنصر ہے کہ ہم فی الحال دیکھ رہے ہیں ہماری کم از کم سے کم اب تک ہے،
جو یاد رکھو، ہم نے کم از کم آف شروع ہو رہے ہیں
ہم جو بھی عنصر اس وقت ہے، مجھے لگتا ہے کہ کم از کم ہے. ہے.
اگر میں ایک عنصر ہے جو اس سے چھوٹا ہے، تو میں کہنے جا رہا، ٹھیک کر رہا ہوں،
ٹھیک ہے، میں نے ایک نئی کم از کم مل گیا ہے.
میں جہاں تھا کہ کم از کم کو یاد کرنے جا رہا ہوں.
>> تو اب، ایک بار میں یہ درست ناچھانٹا ہوا طبقہ کے ذریعے چلا گیا ہے،
میں کہتا ہوں کہ میں عنصر جو میں پوزیشن میں ہے کے ساتھ کم از کم عنصر تبادلہ جا رہا ہوں کر سکتے ہیں.
اس کی فہرست بنانے جا رہا ہے، میرے بائیں سے دائیں جانب فہرست کے مطابق حصہ
اور ہم ایک عنصر میں دوبارہ نظر کے بعد اس حصے میں ہے کبھی ضرورت نہیں ہے.
ایک بار جب ہم اسے تبدیل کر دیا ہے.
تو اس فہرست پر انتخاب طرح چلائیں.
نیلے یہاں عنصر میں جا رہا ہے، اور سرخ عنصر کم از کم عنصر بننے جا رہا ہے.
تو میں فہرست کے بائیں میں تمام طرح شروع، 5 بجے.
اب ہم کم از کم ناچھانٹا ہوا عناصر کو تلاش کرنے کے لئے کی ضرورت ہے.
تو ہم کا کہنا ہے کہ 0 <5، تاکہ 0 میری نئی کم از کم ہے.
>> لیکن میں وہاں نہیں روک، کیونکہ ہم اگرچہ یہ تسلیم کرتے ہیں کہ 0 سب سے چھوٹی ہے کر سکتے ہیں،
ہم اس بات کو یقینی بنانے کے لئے کی فہرست کے ہر دوسرے عنصر کے ذریعے چلانے کے لئے کی ضرورت ہے.
4 1 تو بڑا ہے، 6 بڑی ہے، بڑا ہے.
اس کا مطلب یہ ہے کہ ان عناصر کا سب دیکھنے کے بعد، میں نے فیصلہ کیا ہے 0 سب سے چھوٹی ہے.
تو کیا میں 5 اور 0 تبادلہ کرنے جا رہا ہوں.
ایک بار میں اس تبادلہ، میں ایک نئی فہرست حاصل کرنے کے لئے جا رہا ہوں، اور میں جانتا ہوں کہ مجھے اس کی ضرورت 0 کہ میں دوبارہ نظر نہیں
کیونکہ ایک بار میں نے اسے تبدیل کر دیا ہے، میں اسے حل کر لیا ہے اور ہم نے کیا کر رہے ہیں.
اب یہ صرف اس لئے ہوتا ہے کہ نیلے عنصر دوبارہ 5،
اور ہم 1 کو دیکھنے کے لئے کی ضرورت ہے، 6 اور 4 1 یہ تعین کرنے کے لئے
سب سے چھوٹی کم از کم عنصر ہے، تو ہم نے 1 اور 5 تبادلہ کریں گے.
ایک بار پھر، ہم کو دیکھنے کے لئے کی ضرورت ہے - 6 اور 4 سے 5 موازنہ،
اور ہم نے 4 اور 5 تبادلہ ہو رہا ہے، کر رہے ہیں اور آخر میں موازنہ،
ان 2 نمبر اور ان سے تبادلہ جب تک ہم اپنے مطابق فہرست حاصل کریں.
انتخاب طرح کوئی سوال؟
ٹھیک ہے. موضوع میں آخری بار یہاں منتقل، اور یہ کہ تکرار ہے.
>> تکرار، یاد رکھنا، یہ سچ میٹا بات یہ ہے جہاں ایک تقریب
بار بار مطالبہ خود.
تو کچھ نقطہ پر، جبکہ ہمارا fuction بار بار خود کو بلا رہا ہے
کچھ نقطہ ہے جس میں ہم نے خود کو بلا کو روکنے کی ضرورت ہے.
کیونکہ اگر ہم ایسا نہیں کرتے، تو ہم صرف یہ ہمیشہ کے لئے جاری رکھنے کے لئے جا رہے ہیں،
اور ہمارے پروگرام صرف پر ختم نہیں ہے.
ہم اس شرط کی بنیاد کیس کہتے ہیں.
اور بیس کیس ایک تقریب نہیں بلکہ ایک بار پھر بلا سے کہتے ہیں،
میں صرف کچھ قدر واپس جا رہا ہوں.
تو ایک بار ہم نے ایک قیمت کو اس لئے واپس بھیج چکے ہیں ہے، ہم نے خود کو بلا بند کر دیا ہے،
اور ہم نے اب تک کر دیا ہے کالز کے باقی بھی واپس جا سکتے ہیں.
بیس کیس کی مخالف پنراورتی معاملہ ہے.
اور یہ اس وقت ہے جب ہم تقریب کہ ہم اندر اس وقت ہو ایک فون کرنا چاہتے ہیں
اور ہم شاید اگرچہ ہمیشہ نہیں، مختلف دلائل کو استعمال کرنے کے لئے کرنا چاہتے ہیں.
>> تو اگر ہم نے ایف کہا جاتا ایک تقریب ہے، اور F 1 دلیل لے فون کیا تھا،
اور ہم صرف F (1)، F (1)، F (1) بلا رکھنے، اور یہ صرف اس لئے ہوتا ہے کہ
دلیل 1 پنراورتی کیس میں آتا ہے، ہم ابھی تک روکنے رہے ہیں کبھی نہیں.
یہاں تک کہ اگر ہم نے ایک بنیاد کا معاملہ ہے، ہمیں اس بات کا یقین کر لیں کہ آخر میں ہم کہ بنیاد مقدمہ کو نشانہ بنانے جا رہے ہیں بنانے کے لئے کی ضرورت ہے.
ہم اس پنراورتی صورت میں رہنے ہی نہیں رکھتے.
عام طور پر، جب ہم خود کہتے ہیں، ہم شاید ایک مختلف دلیل ہر وقت جا رہے ہیں.
یہ ایک بہت سادہ پنراورتی تقریب ہے.
تو یہ ایک نمبر کے جز ضربیہ حساب کرے گا.
یہاں اوپر ہم اپنے بیس کا معاملہ ہے.
کیس ہے کہ (ن) ≤ 1، ہم جا جز ضربیہ دوبارہ کال نہیں کر رہے ہیں.
ہم روکنے جا رہے ہیں، ہم صرف کچھ قدر واپس جا رہے ہیں.
اگر یہ سچ نہیں ہے، تو پھر ہم ہمارے پنراورتی مقدمہ کو نشانہ بنانے جا رہے ہیں.
یہاں نوٹس کہ ہم جز ضربیہ (ن) ہی نہیں رہے ہیں بلا، کیونکہ یہ بہت مددگار ثابت نہیں ہوگا.
ہم کچھ اور جز ضربیہ فون کرنے جا رہے ہیں.
>> اور تمہیں دیکھ کر بہت، آخر میں اگر ہم نے ایک جز ضربیہ (5) یا کچھ منتقل کر سکتی ہیں،
ہم جز ضربیہ (4) اور اس فون پر جا رہے ہیں، اور آخر میں ہم اس کی بنیاد مقدمہ کو نشانہ بنانے جا رہے ہیں.
تو یہ اچھا لگ رہا ہے. چلو دیکھتے ہیں کیا ہوتا ہے جب ہم واقعی اس کو چلانے کے.
یہ اسٹیک ہے، اور چلو کا کہنا ہے کہ اہم بحث (4) کے ساتھ اس تقریب کو فون کرنے جا رہا ہے.
تو ایک بار دیکھتا ہے جز ضربیہ = 4، جز ضربیہ خود کو فون کروں گا.
، اچانک، اب ہم جز ضربیہ (3) ہے.
تو ان افعال کو بڑھتی ہوئی تک آخر میں ہم اپنی بنیاد کیس مارا رکھنے کے لئے جا رہے ہیں.
اس وقت اس کی واپسی کی قیمت کی واپسی (nx اس کی واپسی کی قیمت) ہے،
اس کی واپسی کی قیمت اس کی nx واپسی قیمت ہے.
آخر میں ہم کچھ تعداد کو نشانہ بنانے کی ضرورت ہے.
یہاں سب سے اوپر دیئے گئے، ہم 1 واپسی کا کہنا ہے کہ.
اس کا مطلب ہے کہ ایک بار ہم اس تعداد کو واپس، ہم نے اسٹیک اس پاپ کر سکتے ہیں.
تو یہ جز ضربیہ کیا (1) کیا جاتا ہے.
جب 1 ریٹرن، اس جز ضربیہ کی واپسی (1)، 1 اس کی واپسی.
، یاد رکھو، اس کی واپسی کی قیمت nx اس کی واپسی کی قیمت تھی.
تو اچانک، اس آدمی کو جانتا ہے کہ میں نے 2 واپس کرنا چاہتے ہیں.
>> تو، واپس اس کی قدر صرف nx واپسی قیمت ہے یہاں یاد ہے.
تو اب ہم 2 3 X کہتے ہیں، اور آخر میں، ہم یہاں کہہ سکتے ہیں کر سکتے ہیں
یہ تو صرف 3 4 X 2 X جا رہا ہے.
اور ہم اس کی واپسی میں ایک بار کا اہم عددی اندر نیچے اترو.
تکرار پر میں آپ کا کوئی سوال ہے؟
ٹھیک ہے. تو آخر میں سوالات کے لئے وقت ہے،
لیکن اب جوزف باقی موضوعات کا احاطہ کرے گا.
>> [یوسف Ong] ٹھیک ہے. تو اب کہ ہم recursions کے بارے میں بات کر چکے ہیں،
کیا ضم طرح ہے کے بارے میں تھوڑا بات.
طرح ضم بنیادی طور پر تعداد کی ایک فہرست چھانٹ رہا ہے کا ایک اور طریقہ ہے.
اور یہ کس طرح کام کرتا ہے ضم طرح کے ساتھ ہے، آپ کو ایک فہرست ہے، اور ہم کیا کرتے ہیں ہے
ہم کہتے ہیں، 2 حصوں میں اس تقسیم.
ہم کو سب سے پہلے طرح بائیں نصف پر دوبارہ ضم چلانے گے،
تو ہم صحیح نصف پر طرح ضم چلانے گے،
اور یہ کہ اب ہم دیتا ہے 2 حصوں کے مطابق کر رہے ہیں، اور اب ہم ان حصوں کو ایک ساتھ جمع کی جا رہے ہیں.
یہ تھوڑا سا مشکل ہے ایک مثال کے بغیر دیکھ کر، تو ہم حرکات کے ذریعے جاؤ اور دیکھتے ہیں کیا ہوتا کریں گے.
تو آپ شروع اس فہرست کے ساتھ، ہم نے 2 حصوں میں تقسیم ہے.
ہم بائیں نصف طرح پہلے ضم چلاتے ہیں.
تو کہ بائیں نصف ہے، اور اب ہم انہیں اس فہرست کے ذریعے دوبارہ چلائیں
جس میں ضم طرح میں منظور ہو جاتا ہے اور پھر ہم نظر، پھر،
اس فہرست کے بائیں جانب اور ہم اس پر طرح ضم چلاتے ہیں.
اب، ہم 2 نمبروں کی ایک فہرست ملے،
اور اب بائیں نصف صرف 1 عنصر طویل ہے، اور ہم نہیں کر سکتے
تقسیم، ایک فہرست ہے جو نصف میں صرف 1 عنصر ہے، تو ہم صرف کا کہنا ہے کہ، ایک بار ہم 50 ہے
جس میں صرف 1 عنصر ہے، اس کے پاس پہلے سے ہی کے مطابق ہے.
>> ایک بار ہم نے اس کے ساتھ کیا کیا کر رہے ہیں، ہم دیکھتے ہیں، کہ ہم کر سکتے ہیں
اس فہرست کے دائیں حصے پر منتقل
اور 3 بھی مطابق ہے اور تو اب ہے کہ اس فہرست کے دونوں حصوں کے مطابق کر رہے ہیں
ہم نے ان کی تعداد کو واپس ساتھ شامل ہو سکتے ہیں.
تو ہم 50 اور 3 بجے دیکھو، 3 50 سے چھوٹا ہے، تو یہ پہلے میں جاتا ہے اور پھر 50 اندر آتا ہے
اب، یہ کیا ہے، ہم واپس اس فہرست اور ترتیب دیں یہ صحیح نصف ہے اپ.
42 یہ اپنا نمبر ہے، تو یہ پہلے ہی حل ہے.
تو اب ہم ان کا موازنہ 2 اور 3 42 سے چھوٹا ہے، کہ سب سے پہلے میں ڈال دیا جاتا ہے،
اب 42 میں ڈال دیا جاتا اور 50 اندر ڈال دیا ہو جاتا ہے
اب، اس کے مطابق ہے، ہم سب واپس سب سے اوپر، 1337 اور 15.
ٹھیک ہے، اب ہم اس فہرست کے بائیں حصے میں دیکھو، 1337 خود کی طرف سے ہے تو یہ اور 15 کے ساتھ اسی کے مطابق ہے.
تو اب ہم ان 2 تعداد جو کہ اصل فہرست، 15 <1337 ترتیب پر جمع کرنے کے لئے،
تو یہ پہلے میں جاتا ہے، تو 1337 اندر جاتا ہے
اور اب ہم اوپر اصل فہرست کے دونوں حصوں کے مطابق.
اور ہم سب کرنا ہے یہ جمع ہے.
ہم اس فہرست کے پہلے 2 نمبر، <3 15 میں دیکھتے ہیں، تو اس طرح صف میں سب سے پہلے جاتا ہے.
15 <42، تو اس اندر اب جاتا ہے، 42 <1337، کہ اندر جاتا ہے
50 <1337، تو اس اندر جاتا ہے اور یہ محسوس کریں کہ ہم صرف 2 نمبروں کو اس فہرست پر سے چھٹی لی ہیں.
تو ہم 2 فہرستوں کے درمیان نہ صرف باری کر رہے ہیں.
ہم نے صرف شروع میں تلاش کر رہے ہیں، اور ہم عنصر لے جا رہے ہو
اور پھر چھوٹے ہمارے صف میں ڈال ہے.
اب ہم نے تمام حصوں کو ملا دیا گیا ہے اور ہم کیا کر رہے ہیں.
>> کے بارے میں کوئی بھی سوال کو ترتیب دیں ضم؟ جی ہاں؟
[Student کی] اگر یہ مختلف گروپوں میں تقسیم ہے، کیوں وہ نہیں ہے ایک بار اسے تقسیم
اور آپ کو ایک گروپ میں 3 اور 2 ہے؟ [سوال unintelligible آرام]
وجہ - تو سوال یہ ہے کہ وجہ سے ہم نے اس پہلے قدم پر نہ صرف ان کے بعد ہم ان کے ہیں کر سکتے ہیں ضم؟
وجہ سے ہم یہ کر سکتے ہیں، دونوں اطراف کے بائیں سب سے عناصر پر شروع،
اور پھر اس سے چھوٹا ایک رکھنا اور اس میں ڈال دیا ہے، کہ ہم ان یہ معلوم
انفرادی فہرستوں کے مطابق احکامات میں ہیں.
تو اگر میں دونوں حصوں کے بائیں سب سے زیادہ عناصر کو دیکھ رہا ہوں،
مجھے معلوم ہے کہ وہ ان کی فہرست کے سب سے چھوٹی عناصر کے لئے جا رہے ہیں.
تو میں نے ان سے اس بڑی فہرست کے سب سے چھوٹی عنصر مقامات میں ڈال کر سکتے ہیں.
دوسری طرف، اگر میں وہاں دوسرے درجے میں ان 2 فہرستوں میں دیکھتے ہیں،
50، 3، 42، 1337، اور 15، ان کے مطابق نہیں ہیں.
تو اگر میں 50 اور 1337 میں دیکھتے ہیں، میں نے میری فہرست میں 50 سب سے پہلے ڈال جا رہا ہوں.
لیکن یہ احساس نہیں کر سکتا، کیونکہ 3 ان میں سے سب سے باہر سب سے چھوٹی عنصر ہے.
تو صرف ایک وجہ سے ہم اس کو ملا قدم کر سکتے ہیں ہے کیونکہ ہماری کی فہرست کے مطابق پہلے ہی کر رہے ہیں.
یہی وجہ ہے کہ ہم نیچے تمام طرح ہے
کیونکہ جب ہم صرف ایک نمبر ہے، کہ تم کسی ایک کا نمبر معلوم ہے
میں بذات خود پہلے سے ہی ایک کے مطابق کی فہرست ہے.
>> کوئی سوال؟ نہیں؟
پیچیدگی؟ ٹھیک ہے، تمہیں دیکھ کر سکتے ہیں کہ ہر قدم پر آخر تعداد،
اور ہم نے نصف لاگ ان کریں (ن) کے دور میں ایک فہرست کی تقسیم کر سکتے ہیں،
جس کا ہے جہاں ہم یہ ن X لاگ ان کریں ن پیچیدگی ملے.
تمہیں دیکھ کر اور ضم طرح کے لئے سب سے بہتر کیس این لاگ ان ن ہے، اور یہ صرف اس لئے ہوتا ہے.
کہ بدترین، یا وہاں Ω بھی ہے ن ن لاگ ان کریں.
کو ذہن میں رکھنے کے لئے کچھ ہے.
پر منتقل، کچھ سپر بنیادی فائل میں O. /
اگر آپ جدوجہد کو دیکھا، آپ کو نوٹس، ہم نے کچھ قسم کی نظام کی تھی گے
جہاں آپ کو ایک لاگ فائل لکھیں اگر آپ کو کوڈ کے ذریعے پڑھا جا سکتا ہے.
چلو دیکھتے تم یہ کیسے ہو سکتا ہے.
ٹھیک ہے، ہم fprintf ہے، آپ کے طور پر صرف printf سوچ سکتے ہیں،
لیکن صرف ایک فائل کی بجائے، پرنٹنگ اور اس وجہ سے شروع میں F.
کوڈ کا اس طرح یہاں، کیا اس سے فرق پڑتا ہے، جیسا کہ آپ جدوجہد میں دیکھا ہے ہو سکتا ہے
کیا تعداد ہے قطار کی طرف سے قطار سے باہر آپ کی 2 جہتی صف پرنٹنگ کے ذریعے جاتا ہے.
اس صورت میں، printf آپ کے ٹرمینل سے پرنٹ یا جو ہم کہتے سیکشن کے معیار پیداوار ہے.
>> اور اب، اس صورت میں، ہم سب کرنا ہے fprintf کے ساتھ printf کی جگہ،
یہ بتاو کیا آپ نے جو فائل کو پرنٹ کرنے کے لئے چاہتے ہیں، اور اس صورت میں یہ صرف اس فائل پرنٹ باہر
بجائے اس کے کہ یہ آپ کے ٹرمینل چھپائی باہر.
ٹھیک ہے، تو وہ سوال جنم لیتا: ہم کہاں سے اس طرح کی فائل حاصل، ہے نا؟
ہم اس fprintf fuction میں لاگ ان کریں گزر گئے لیکن ہم نے کوئی اندازہ نہیں ہے وہ کہاں سے آیا تھا.
ٹھیک ہے، جلد کوڈ میں، جو ہم نے یہاں پر کوڈ کے اس حصہ تھا،
جو بنیادی طور پر کہتے ہیں کہ کہ کھلے کی فائل log.txt مطالبہ.
ہم کیا کرتے ہیں کے بعد یہ ہے کہ ہم اس بات کا یقین کر لیں کہ یہ فائل اصل میں کامیابی سے کھول دیا ہے بنانے کے لئے ہے.
تو یہ کئی وجوہات کی بناء پر ناکام ہو سکتی ہے، آپ کو آپ کے کمپیوٹر پر کافی جگہ نہیں ہے مثال کے طور پر،.
تو یہ ہمیشہ اہم ہے قبل اس کے کہ آپ کی فائل کے ساتھ کسی بھی آپریشن کیا
ہم اس چیک کرنے کے لیے چاہے وہ فائل کو کامیابی سے تشکیل دیا گیا تھا.
تو وہ کیا ہے کہ ایک، fopen میں ایک دلیل ہے، ٹھیک ہے، ہم نے بہت سے طریقوں سے ایک فائل کھول سکتے ہیں.
ہم جو کر سکتے ہیں ہے، ہم اسے W گزر جس سے فائل کی جگہ لے لے کا مطلب ہے پہلے ہی اگر یہ exits کر سکتے ہیں،
ہم ایک کے پاس ہے، جس میں وہ فائل کے آخر میں شامل یہ زیرکر رہا ہے کی بجائے کر سکتے ہیں،
یا ہم ر کی وضاحت کر سکتے ہیں جس کا مطلب ہے، کے طور پر صرف پڑھنے فائل کو کھولنے.
تو اگر پروگرام فائل میں کسی قسم کی تبدیلی کرنے کی کی کوشش کرتا ہے،
ان میں چللانا اور انہیں ایسا.
آخر میں، ایک بار ہم فائل کے ساتھ کیا کر رہے ہیں، کیا اس پر آپریشن کر رہی،
ہم اس بات کا یقین کر لیں کہ ہم فائل کو بند کرنے کے لئے کی ضرورت ہے.
اور اس وجہ سے آپ کے پروگرام کے آخر میں، آپ کو انہیں دوبارہ منظور جا رہے ہیں
کہ آپ اس فائل کو کھولا، اور اسے بند.
تو یہ کچھ ضروری بات ہے کہ آپ کو اس بات کا یقین کر لیں کہ آپ کیا کرنے کے لئے ہے ہے.
تو یاد رکھو، آپ کو ایک فائل کھول سکتے ہیں، تو آپ نے فائل پر لکھ سکتے ہیں،
فائل میں آپریشن کیا، لیکن اس کے بعد آپ کو آخر میں فائل قریب ہے.
>> بنیادی فائل میں آپ کا کوئی سوال I / O؟ جی ہاں؟
[Student کی سوال، unintelligible]
یہاں. سوال ہے، اس log.txt فائل کہاں ہے ظاہر کرتا ہے؟
ٹھیک ہے، اگر آپ صرف اس log.txt دے، یہ کارکردگی کے طور پر ایک ہی ڈائریکٹری میں پیدا کرتا ہے.
لہذا اگر you're - >> [Student کی سوال، unintelligible]
جی ہاں. اسی فولڈر میں، یا ایک ہی ڈائریکٹری میں، جیسا کہ آپ کہتے ہیں.
اب میموری، اسٹیک، اور ڈھیر.
تو کہ کس طرح کمپیوٹر میں طے کردہ میموری ہے؟
ٹھیک ہے، آپ کو یہاں اس بلاک کی طرح کے طور پر میموری کا تصور کر سکتے ہیں.
اور ہم یاد میں وہاں پھنس ڈھیر، اور اسٹیک ہے کہ وہاں ہے کیا کہتے ہیں.
اور ڈھیر گرنے کا اگنے اور اسٹیک بھیجا اگتا ہے.
تاکہ ٹومی کا ذکر ہے - اوہ، ٹھیک ہے، اور ہم ان 4 طبقات جو میں نے ایک سیکنڈ میں حاصل کرنے کے لئے کریں گے -
کے طور پر ٹومی نے پہلے کہا، آپ کو پتہ ہے کہ کس طرح اس کے افعال خود کہتے ہیں اور ایک دوسرے کو فون؟
انہوں نے اسٹیک فریم کے اس طرح سے تعمیر.
ٹھیک ہے، اگر اہم کالز FOO، FOO اسٹیک پر ڈال دیا جاتا ہے.
FOO کا مطالبہ بار، بار حاصل اسٹیک پر ڈال دیا، اور اس کے بعد اسٹیک پر ڈال دیا ہو جاتا ہے.
اور جیسا کہ وہ واپس، وہ ہر دور اسٹیک لیا ہو.
ان مقامات میں سے ہر ایک اور میموری کیا منعقد کرتے ہیں؟
ٹھیک ہے، سب سے اوپر، جو کہ متن حصہ ہے، پروگرام خود پر مشتمل ہے.
تو مشین کوڈ، جو وہاں ہے، ایک بار آپ کو اپنے پروگرام مرتب کریں.
اگلا، کسی بھی عالمی متغیر initialized.
>> تو آپ کو آپ کے پروگرام میں عالمی متغیر ہے، اور آپ کی طرح، 5 = کا کہنا ہے کہ،
، جو کہ اس کے علاقے میں ڈال دیا ہو جاتا ہے، اور یہ حق ہے کہ تحت
آپ کے ذہن میں کوئی غیر ابتدا شدہ عالمی ڈیٹا، جو صرف ایک int ہے،
لیکن تم کہتے ہو کہ نہیں یہ کچھ کے برابر ہے.
احساس یہ عالمی متغیر ہیں، تاکہ وہ اہم باہر ہیں.
تو یہ کسی بھی عالمی متغیر کا اعلان کر رہے ہیں لیکن نہیں initialized ہیں کا مطلب ہے.
تو کیا ڈھیر میں ہے؟ میموری malloc ہے، جو ہم تھوڑا سا میں حاصل کرنے کے لئے کریں گے کا استعمال کرتے ہوئے مختص ہے.
اور آخر میں، آپ اسٹیک کے ساتھ کسی بھی مقامی متغیر ہے
اور کسی بھی کام کرتا ہے آپ کو ان کے پیرامیٹرز میں سے کسی ایک میں فون کر سکتے ہیں.
آخری بات، آپ جانتے ہیں کہ کیا ماحول متغیر نہیں ہے،
لیکن جب بھی آپ پروگرام چلاتے ہیں، تو منسلک کچھ کی طرح ہے،
یہ شخص جو پروگرام دوڑ کا صارف نام ہے.
اور اس کے نیچے دیے گئے کی طرح ہو رہا ہے.
، میموری پتے، جو شش اعشاری اقدار ہیں کی شرائط میں،
0 میں سب سے اوپر شروع میں اقدار، اور وہ سب کے سب اور طریقہ یہ ہے کہ نیچے جاتے.
اس صورت میں، اگر آپ 32 بٹ نظام پر ہیں،
کے نیچے دیے گئے ایڈریس 0x جا رہا ہے، AF کے بعد، کیونکہ اس میں اس کا 32 بٹیں
جو 8 بائٹس ہے، اور اس معاملے میں 8 بائٹس 8 شش اعشاری ہندسے کے مساوی ہے.
تو یہاں ذیل ہے، پسند، 0xffffff جا رہے ہیں، اور وہاں آپ 0 کے لئے جا رہے ہیں.
تو کیا اشارہ ہیں؟ تم میں سے کچھ حصے میں یہ ہو سکتا ہے اس سے پہلے نہیں احاطہ کرتا ہے.
کیا ہے لیکن ہم اس پر لیکچر میں چلے گئے، ایک پوائنٹر صرف ایک ڈیٹا کی قسم ہے
جس اسٹورز، 50 کی طرح قدر کی کسی قسم کی بجائے، یہ یاد میں کچھ مقام کا پتہ ذخیرہ.
کہ میموری کی طرح [unintelligible].
تو اس صورت میں، ہم کیا ہے، ہم ایک عددی یا int * ایک پوائنٹر ہے،
اور یہ 0xDEADBEEF کے اس شش اعشاری ایڈریس پر مشتمل ہے.
>> ، تو ہم نے ہے، اب، یاد میں کسی نہ کسی مقام پر اس پوائنٹر پوائنٹس
50 قیمت ہے اور یہ کہ صرف ایک ہے، اس میموری مقام پر ہے.
کچھ 32 بٹ نظام، تمام 32 بٹ نظام پر اشارہ 32 بٹیں یا 4 بائٹس لے لو.
لیکن، مثال کے طور پر، 64 بٹ نظام پر اشارہ 64 بٹس ہیں.
تو وہ کچھ ہے آپ اس بات کو ذہن میں رکھنا چاہیں گے.
تو ایک نظام کو ختم بٹ، پوائنٹر آخر بٹس طویل ہے.
نوٹیفائر طرح کی اضافی چیزوں کے بغیر مشکل پچا
تو متحرک میموری تقرری کی ایک مثال کے ذریعے جانا.
کیا متحرک میموری مختص کرنے کے لئے ہوتا ہے، یا جو ہم کہتے ہیں malloc
اس کی مدد سے آپ کو سیٹ سے باہر کسی قسم کے ڈیٹا کی مختص.
تو اس کے ڈیٹا کی طرح ہے اس پروگرام کی مدت کے لئے زیادہ مستقل ہے.
جیسا کہ آپ جانتے ہیں کیونکہ، اگر آپ کو ایک تقریب کے اندر ایکس، اور اس تقریب کی واپسی کا اعلان
آپ کو ڈیٹا ہے جو کہ آپ نے X میں محفوظ کیا گیا تھا ہے وہ یہ کہ یہ کو رسائی حاصل ہے.
اشارہ ہمیں کیا ہے کہ وہ ہمیں میموری یا سٹور کی اقدار کو محفوظ
میموری کا ایک مختلف طبقہ، یعنی ڈھیر میں.
اب ایک بار ہم نے تقریب کے باہر واپس جب تک ہم ایک پوائنٹر ہے
یاد میں اس مقام پر، تو پھر ہم کیا کر سکتے ہیں ہے کہ ہم وہاں کی اقدار میں صرف دیکھ سکتے ہیں.
چلو ایک مثال میں نظر: یہ ہماری میموری کی ترتیب دوبارہ ہے.
اور ہم اس تقریب ہے، اہم ہے.
کیا اس سے فرق پڑتا ہے - ٹھیک ہے، بہت آسان ہے، صحیح - int X 5 =، یہ صرف اہم اسٹیک پر ایک متغیر ہے.
>> دوسری طرف، اب ہم پوائنٹر جو تقریب giveMeThreeInts مطالبہ کا اعلان.
اور اس طرح ہم اب اس تقریب میں جانا ہے اور ہم اس کے لئے ایک نئے اسٹیک فریم بناتے ہیں.
تاہم، اس اسٹیک فریم میں، ہم * int TEMP کا اعلان،
جو mallocs 3 integers میں ہمارے لئے.
تو int کے سائز ہمیں اس int کتنے بائٹس ہے،
اور malloc ہمیں دیتا ہے کہ ڈھیر پر جگہ کے بہت سے شراکت ہے.
تو اس صورت میں، ہم نے 3 integers کے لئے کافی جگہ کو پیدا کیا ہے،
اور ڈھیر کی طرح وہاں ہے، جس کی وجہ سے میں نے اسے تیار اعلی اپ کیا ہے.
ایک بار ہم کیا کر رہے ہیں، ہم واپس آتے ہیں یہاں، آپ کو صرف ضرورت ہے 3 ints واپس،
اور یہ ایڈریس واپس، جہاں کہ میموری ہے پر اس معاملے میں.
اور ہم پوائنٹر سوئچ = مقرر کریں، اور وہاں ہم صرف ایک پوائنٹر ہے.
لیکن کیا ہے کہ تقریب کی واپسی یہاں سجا دیئے ہے اور غائب ہو.
تو TEMP غائب ہے، لیکن ہم اب بھی جہاں ایڈریس کو برقرار رکھنے
ان 3 integers مینز کے اندر ہیں.
تو اس سیٹ میں اشارہ scoped سجا دیئے فریم کے لئے ہیں مقامی
لیکن میموری جس سے وہ حوالہ دیتے ڈھیر میں ہے.
>> کیا اس کا کوئی مطلب ہے؟
[Student کی] آپ اسے پھر سے کہہ سکتے ہیں؟ >> [جوزف] جی ہاں.
اگر ایسا ہے تو میں واپس صرف تھوڑا سا جاؤ، تم نے دیکھا ہے کہ TEMP مختص
وہاں ڈھیر پر کچھ یاد ہے.
تو جب اس تقریب کی واپسی giveMeThreeInts، یہاں اسٹیک غائب ہو رہا ہے.
اور یہ متغیرات میں سے کسی، اس صورت میں، اس پوائنٹر ہے جو کہ آپ نے سجا دیئے فریم میں مختص کیا گیا تھا ہے وہ یہ کہ یہ ہے.
جو غائب ہو رہا ہے، لیکن چونکہ ہم TEMP واپس
اور ہم پوائنٹر سیٹ = TEMP، پوائنٹر اب جگہ ایک ہی میموری کے طور پر عارضی تھی کی طرف اشارہ کرنے جا رہا ہے.
تو اب، اگرچہ ہم TEMP، کہ مقامی پوائنٹر کھو دیتے ہیں،
ہم اب بھی کیا یہ اس متغیر پوائنٹر کے اندر کی طرف اشارہ کرتے ہوئے کیا گیا تھا کی یاد کا پتہ رکھتے ہیں.
سوال؟ اس طرح کی ایک مبہم اور موضوع کے ہو گا اگر آپ اس کے حصے میں نہیں گیا ہے کر سکتے ہیں.
ہم آپ TF، یہ ختم کر سکتے ہیں ضرور جانا اور یقینا ہم سوالات کے جواب دے
اس کے لئے جائزہ لینے کے سیشن کے آخر میں.
لیکن یہ ایک پیچیدہ موضوع کے طرح ہے، اور اس میں مزید مثال کے طور پر کہ ظاہر کرنے کے لئے جا رہے ہیں
واضح کیا اشارہ اصل میں مدد کرے گا.
>> اس صورت میں، اشارہ arrays کے برابر ہیں،
تو میں اس کو ایک int صف کے طور پر ایک ہی بات کے طور پر پوائنٹر استعمال کر سکتے ہیں.
تو میں 0 میں تخکرمن رہا ہوں اور 1 سب سے پہلے عددی تبدیل کرنے،
2 عددی تبدیل کرنے، اور 3rd عددی 3.
تو اشارہ. ٹھیک ہے، Binky یاد.
اس صورت میں ہم ایک پوائنٹر مختص کی ہے، یا ہم نے پوائنٹر اعلان کیا،
لیکن ابتدائی طور پر، جب میں صرف ایک پوائنٹر اعلان کیا، اسے میموری میں کہیں بھی کی طرف اشارہ کرتے ہوئے نہیں ہے.
یہ صرف اس کے اندر ردی کی ٹوکری اقدار ہے.
تو مجھے کوئی اندازہ نہیں ہے جہاں اس پوائنٹر اشارہ کر رہا ہے.
یہ ایک پتہ جس 0 اور 1 جہاں یہ ابتدائی طور پر اعلان کیا گیا تھا کے ساتھ بھری ہوئی ہے.
میں نے اس کے ساتھ کچھ نہیں ہے جب تک کہ میں اس پر malloc کال کر سکتے ہیں
اور پھر اس کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے ڈھیر جہاں میں اقدار کے اندر ڈال کر سکتے ہیں پر ایک چھوٹی سی جگہ فراہم کرتا ہے.
پھر، مجھے نہیں معلوم اس میموری کے اندر کیا ہے.
تو پہلی بات یہ ہے مجھے کیا کرنا ہے ہے چیک کرنے کے لیے کیا نظام کافی میموری تھی
مجھے واپس پہلی جگہ ہے، جس کی وجہ سے میں نے کر یہ چیک کرنے کے لیے کر رہا ہوں ہے 1 عددی دے.
اگر پوائنٹر شہوت انگیز null ہے، اس کا مطلب یہ ہے کہ یہ کافی جگہ ہے یا کسی اور خامی پیش آگئی نہیں تھا،
تو میں اپنے پروگرام سے باہر سے باہر نکلنے چاہئے.
لیکن اگر اس نے کامیاب، اب میں اس پوائنٹر استعمال کر سکتے ہیں
اور کیا * پوائنٹر ہے، یہ مندرجہ ذیل ہے جہاں پتہ ہے
جہاں اس قدر ہے، اور اسے 1 کے برابر کا تعین کرتا ہے.
تو یہاں ہم جانچ پڑتال اگر اس میموری موجود رہے ہیں.
>> ایک بار جب آپ کو پتہ ہے کہ یہ موجود ہے، آپ اس میں ڈال کر سکتے ہیں
اس 1 کے معاملے میں کس قدر آپ کو اس میں ڈال کرنا چاہتے ہیں.
ایک بار ہم نے اس کے ساتھ کیا کیا کر رہے ہیں، آپ کو پوائنٹر کہ آزاد کرنے کی ضرورت ہے
کیونکہ ہم میموری ہے کہ ہے کہ آپ کو پہلی جگہ میں پوچھا سسٹم کو واپس حاصل کرنے کے لئے کی ضرورت ہے.
کمپیوٹر کیونکہ معلوم نہیں ہے جب ہم نے اس کے ساتھ کیا کیا کر رہے ہیں.
اس صورت میں ہم واضح طور پر یہ کہہ رہے ہیں، ٹھیک ہے، ہم نے اس میموری کے ساتھ کیا کر رہے ہیں.
اگر کسی دوسرے عمل کی ضرورت ہے، کسی دوسرے پروگرام کی ضرورت ہے، آگے جانا ہے اور اسے لے لو مفت محسوس ہو رہا ہے.
ہم بھی کیا کر سکتے ہیں ہم سیٹ پر مقامی متغیرات میں سے پتہ حاصل کر سکتے ہیں.
تو int ایکس کا اہم سجا دیئے فریم کے اندر ہے.
اور جب ہم نے اس ایمپرسینڈ کا استعمال کرتے ہیں، اور اس آپریٹر، کیا اس سے فرق پڑتا ہے
یہ x لیتا ہے، اور ایکس یاد میں کچھ معلومات ہے، لیکن یہ پتہ ہے.
یہ کہیں واقع ہے. کی طرف سے کالنگ اور عمومی X، اس کا کیا ہے، یہ ہمیں ایکس کا پتہ دیتا ہے.
ایسا کرنے سے، ہم جہاں X یاد میں ہے پوائنٹر نقطہ کر رہے ہیں.
اب ہم صرف * ایسا کچھ X، ہم 5 واپس حاصل کرنے کے لئے جا رہی ہے.
ستارہ یہ محولہ لقب ضبطی کہا جاتا ہے.
آپ نے پتے کی پیروی کرتے ہیں اور آپ کو اس کی قدر وہاں ذخیرہ ملتا ہے.
>> کوئی سوال؟ جی ہاں؟
[Student کی] اگر آپ کے پاس 3 نکیلی چیز نہیں ہے، یہ اب بھی مرتب؟
جی ہاں. اگر آپ نے 3 پوائنٹر بات نہیں ہے، یہ اب بھی مرتب ہو رہا ہے،
لیکن میں تم سے جو ایک سیکنڈ میں ہوتا ہے، یہ ہے کہ ایسا کیے بغیر گے،
ہے کہ جو ہم کہتے ہیں ایک میموری لیک. آپ کو دے نظام نہیں کر رہے ہیں
اس کی یاد واپس، اس لیے ایک کے بعد جبکہ پروگرام جمع ہو رہا ہے
کہ میموری کا استعمال کرتے ہوئے، نہیں ہے اور کچھ بھی نہیں اس کا استعمال کر سکتے ہیں.
اگر تم نے کبھی آپ کے کمپیوٹر پر 1.5 ملین کلو بائٹ کے ساتھ فائر فاکس دیکھا ہے،
ٹاسک مینیجر میں، یہ کیا ہو رہا ہے.
آپ کو پروگرام ہے کہ وہ نہیں ہینڈلنگ رہے ہیں میں ایک میموری لیک ہے.
تو کس طرح پوائنٹر اس کی ریاضی کا کام ہے؟
ٹھیک ہے، پوئینٹر ریاضی ایک صف میں جیسے تخکرمن کی طرح ہے.
اس صورت میں، میں نے پوائنٹر ہے، اور مجھے کیا کرنا ہے میں پہلی عنصر پوائنٹر نقطہ
3 integers کہ میں نے مختص کیا ہے اس صف.
تو اب میں کیا کرتا ہوں، ستارہ پوائنٹر فہرست میں پہلا عنصر کو تبدیل کر.
سٹار پوائنٹر یہاں +1 پوائنٹس.
+2 پوائنٹر +1 پوائنٹر تو پوائنٹر یہاں ختم ہو گیا ہے، یہاں ہے، یہاں ہے.
>> تو 1 کو شامل کرنے سے اس صف کے ساتھ منتقل کے طور پر ایک ہی بات ہے.
ہم کیا کرتے ہیں ہے، جب ہم +1 پوائنٹر کیا آپ یہاں ایڈریس ملتا ہے،
اور یہاں قیمت حاصل کرنے کے لئے کی ترتیب میں، آپ کو پورے اظہار سے میں ایک ستارہ ڈالا
یہ dereference.
لہذا، اس معاملے میں، میں 1 اس صف میں سب سے پہلے جگہ قائم رہا ہوں،
2، محل وقوع، اور تیسری 3 محل وقوع.
تو کیا میں یہاں کر رہا ہوں میں ہمارے +1 پوائنٹر چھپائی رہا ہوں،
جس میں صرف آپ کے وزٹرز کا ریکارڈ رکھا 2 دیتا ہے.
اب میں پوائنٹر incrementing رہا ہوں تو پوائنٹر +1 پوائنٹر برابر،
جو اسے آگے لے جاتا ہے.
اور تو اب اگر میں باہر +1 پوائنٹر پرنٹ پوائنٹر +1 3 ہے،
اس معاملے میں جو 3 پرنٹ.
اور کے لئے ڈاؤن لوڈ، اتارنا مفت کچھ پوائنٹر ہے کہ میں نے اسے دے
صف جو میں malloc سے واپس مل گیا کے آغاز کی طرف اشارہ جانا چاہیے.
تو، اس معاملے میں، اگر میں 3 یہاں کال، یہ صحیح نہیں کریں گے،
کیونکہ یہ صف کے وسط میں ہے.
میں اصل مقام پر حاصل کرنے کے لئے منہا کرنا ہے
ابتدائی پہلی جگہ اس سے پہلے کہ میں اسے آزاد کر سکتے ہیں.
تو، یہاں ایک سے زیادہ شامل مثال ہے.
اس صورت میں، ہم نے ایک کردار کی صف میں 7 حروف آونٹن کر رہے ہیں.
>> اور اس معاملے میں جو ہم کر رہے ہیں وہ یہ ہے کہ ہم ان میں سے پہلے 6 سے زیادہ looping کر رہے ہیں،
اور ہم نے ان Z. پر قائم کرنے کر رہے ہیں
لہذا، int کے لئے میں = 0، میں 6>، میں +، +
تو، پوئینٹر + میں ہمارے صرف اس صورت میں دے گا،
پوئینٹر، پوائنٹر +1 پوائنٹر، +2، +3 پوائنٹر، اور تو اور لوپ میں بیان.
یہ کیا ہو رہا ہے یہ ہے کہ یہ جو پتہ ملتا ہے، dereferences قیمت حاصل کرنے کے لئے،
اور تبدیلیوں ہے کہ ایک Z. قدر
اس کے بعد آخر میں یاد یہ ایک تار ہے، ٹھیک ہے؟
تمام ڈور شہوت انگیز null ختم حرف سے ختم کرنے کے لئے ہے.
تو، مجھے کیا کرنا ہے 6 پوائنٹر میں اندر شہوت انگیز null مختتم کردار ڈالا
اور اب کیا میں بنیادی طور پر ختم کر رہا ہوں یہاں ایک تار کے لئے printf عمل کر رہا ہے، ٹھیک ہے؟
>> تو، جب printf اب جب ہے یہ ایک تار کے آخر میں پہنچ گئی؟
جب تم میں سے کسی ایک کو شہوت انگیز null ختم کردار اختیار کرنے.
لہذا، اس صورت میں، اس صف کے آغاز کا اصل پوائنٹر پوائنٹس.
میں پہلا کردار پرنٹ. میں یہ ایک سے زیادہ عمر کے منتقل.
میں اس کردار کو پرنٹ. میں اس پر منتقل.
اور میں نے یہ کر رہی جب تک کہ میں آخر تک پہنچنے کے رکھو.
اور اب آخر * یہ پوائنٹر اس شہوت انگیز null ختم کردار واپس لے dereference گے.
اور اس وجہ سے میری دیر لوپ بھی چلاتی ہے صرف اس وقت جب اس قدر خالی ختم حرف نہیں ہے.
تو، اب میں اس لوپ سے باہر سے باہر نکلیں.
اور اگر ایسا ہے تو میں اس پوائنٹر سے 6 منہا،
میں واپس شروع کرنے کا طریقہ جاتے ہیں.
یاد ہے، میں یہ کر رہا ہوں کیونکہ میں نے شروع میں یہ مفت کے لئے جانا ہے.
>> تو، میں جانتا ہوں کہ بہت تھا. کے ذہن میں کوئی سوالات ہیں؟
براہ مہربانی، جی ہاں؟
[Student کی سوال unintelligible]
کہ آپ کو زور کا کہنا ہے کہ کر سکتے ہیں؟ معاف کیجئے گا.
[Student کی]، آخری سلائڈ ٹھیک ہے قبل اس کے کہ آپ پوائنٹر آزاد
واقعی میں آپ جہاں پوائنٹر کی قدر تبدیل کر رہے تھے؟
[جوزف] تو، ٹھیک ہے یہاں. >> [Student کی] اوہ، ٹھیک ہے.
، [جوزف] سو، میں ایک پوائنٹر مائنس مائنس ہے، ٹھیک ہے
جو چیز واپس ایک بڑھتا رہتا ہے، اور پھر میں نے اسے آزاد،
کیونکہ اس پوائنٹر صف کے آغاز کی طرف اشارہ کیا ہے.
[Student کی] لیکن یہ اگر آپ کو اس لائن کے بعد روک دیا جائے گا کی ضرورت ہے.
تو [جوزف]، اگر میں اس کے بعد بند کر دیا تھا، یہ ایک میموری لیک پر غور کیا جائے گے،
کیونکہ میں آزاد نہیں چلا تھا.
[Student کی] میں [unintelligible] پہلے تین لائنوں کے بعد جہاں آپ +1 پوائنٹر [unintelligible] نے.
[جوزف] اہ ہہ. تو کیا وہاں سوال ہے؟
معاف کیجئے گا. نہیں، نہیں. جاؤ، جاؤ، براہ مہربانی.
تو [Student کی]، آپ کو اشارہ کی قیمت تبدیل نہیں کر رہے ہیں.
آپ پوائنٹر مائنس مائنس کرنا نہیں پڑتا.
[جوزف] جی ہاں، بالکل.
تو، جب میں +1 پوائنٹر اور پوائنٹر +2
میں پوائنٹر نہیں کر رہا ہوں +1 پوائنٹر برابر ہوتی ہے.
لہذا، پوئینٹر صف کے آغاز کی طرف اشارہ رہتا ہے.
یہ صرف ہے جب میں پلس کرتے کے علاوہ کہ یہ پوائنٹر کے اندر قیمت کا تعین کرتا ہے واپس،
ہے کہ یہ اصل میں اس کے ساتھ چلتا ہے.
ٹھیک ہے.
مزید سوال؟
>> ایک بار پھر، اگر یہ غالب کی طرح ہے، اس سیشن میں شامل کریں گے.
اس کے بارے میں آپ کی تعلیم فیلو سے پوچھیں، اور ہم آخر میں سوالات کا جواب دے سکتا ہے.
اور عام طور پر ہم اس مائنس کام کرنا پسند نہیں ہے.
یہ کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے میں صف میں کتنا آفسیٹ ہے ٹریک رکھنے کی ضرورت ہے.
تو، عام طور پر، یہ صرف ہے کہ کس طرح پوائنٹر ریاضی کا کام اس بات کی وضاحت کرتے ہیں.
لیکن کیا ہم عام طور پر پسند ہے ہم پوائنٹر کی ایک کاپی بنانے کے لئے اچھا لگتا ہے،
اور پھر ہم اس نقل کو استعمال کرتے ہیں جب ہم سٹرنگ میں ادھر ادھر جا رہے ہیں کریں گے.
تو، آپ کو ان کے معاملے میں کاپی پورے سٹرنگ پرنٹ کرنے کے لئے استعمال کرتے ہیں،
لیکن ہم پوائنٹر مائنس 6 کی طرح نہیں ہے یا کہ ہم کس طرح اس میں منتقل کر دیا گیا ٹریک رکھنے،
صرف کیونکہ ہم جانتے ہیں کہ ہمارے اصل مسئلہ اب بھی فہرست کے آغاز کی طرف اشارہ کیا جاتا ہے
اور کہ ہم تبدیل یہ کاپی ہے.
لہذا، عام طور پر، اپنے اصل پوائنٹر کی کاپیاں کو تبدیل کریں.
طرح کی کوشش نہیں کی - اصل کاپیاں تبدیل مت پہنچاو.
صرف اپنے اصل کی نقول کو تبدیل کرنے کی کوشش کر رہا ہے.
تو، آپ کو نوٹس ہے جب ہم printf میں سٹرنگ گزر
آپ کو اس کے سامنے ایک ستارہ جیسا کہ ہم نے دیگر تمام dereferences کے ساتھ کیا تھا ڈال نہیں ہے، ٹھیک ہے؟
لہذا، اگر آپ کو باہر پرنٹ پورے سٹرنگ٪ S کی توقع ایک پتہ ہے،
اور اس معاملے میں پوائنٹر یا کرداروں میں سے ایک صف کی طرح اس معاملے میں.
>> سنہرے بالوں والی، چار ایس *، اور arrays میں ایک ہی بات ہے.
پوائنٹر حروف ہے، اور کردار arrays ایک ہی چیز ہیں.
اور اس پوائنٹر میں ہم سب کرنا ہے گزر جاتا ہے.
* پوائنٹر یا اس طرح کچھ کی طرح ہم کو منتقل کرنے کی ضرورت نہیں ہے.
تو، arrays اور اشارہ ایک ہی بات ہے.
جب آپ X کی طرح کچھ کر رہے ہیں، یہاں ایک صف کے لئے [Y]
جو ہڈ کے تحت کر رہی ہے یہ ہے کہ یہ کہہ رہا ہے، ٹھیک ہے، یہ ایک حروف کی صف ہے،
تو یہ ایک پوائنٹر ہے.
اور اس طرح X ایک ہی چیز ہے،
تو کیا اس سے فرق پڑتا ہے یہ ہے کہ یہ X Y جوڑتا ہے،
جو یاد میں آگے بڑھنے اتنا کے طور پر ایک ہی بات ہے.
اور اب X + Y ہمیں کسی قسم کا پتہ دیتا ہے،
اور ہم ایڈریس dereference یا تیر کی پیروی
جہاں کی یاد میں اس مقام پر ہے اور ہم یاد میں اس جگہ قدر.
تو، تو ان دونوں بالکل ایک ہی چیز ہیں.
یہ صرف ایک syntactic چینی ہے.
وہ ایک ہی بات کرتے ہیں. وہ ایک دوسرے کے لیے مختلف syntactics ہیں.
>> تو اشارہ کے ساتھ، کیا ہوا جا سکتا ہے؟ کی طرح، بہت بہت شکریہ. ٹھیک ہے. تو، بری چیزیں ہیں.
کچھ بری باتیں آپ کر سکتے ہیں کی جانچ پڑتال اگر آپ malloc کال خالی ٹھیک ہے، واپس نہیں کر رہے ہیں؟
اس صورت میں، میں نے نظام سے مجھے دینا رہا ہوں - یہ تعداد کیا ہے
2 ارب 4 اوقات کی طرح، کیونکہ ایک عددی کے سائز 4 بائٹس ہے.
میں نے اس کے لئے 8 ارب بائٹس کی طرح پوچھ رہا ہوں.
بالکل میرے کمپیوٹر آپ کے وزٹرز کا ریکارڈ رکھا کہ بہت یاد واپس دینے کے قابل نہیں ہے.
اور ہم چیک کرنے کے لیے اگر یہ شہوت انگیز null ہے نہیں کیا، تو جب ہم وہاں dereference کی کوشش کرتے ہیں -
جہاں وہ جا رہا ہے تیر کی پیروی کرتے ہیں - ہم اس میموری نہیں ہے.
اس کا ہے جو ہم شہوت انگیز null پوائنٹر محولہ لقب ضبطی کہتے ہیں.
اور یہ بنیادی طور پر آپ segfault کا سبب بنتا ہے.
یہ طریقوں آپ segfault کر سکتے ہیں میں سے ایک ہے.
دیگر بری چیزیں آپ کر سکتے ہیں - اوہ اچھا.
یہ ایک لوڈ، اتارنا null پوائنٹر محولہ لقب ضبطی کیا گیا تھا. ٹھیک ہے.
دیگر بری چیزیں - ٹھیک کرنے کے ساتھ ساتھ، کہ آپ صرف وہاں میں چیک لگا
کہ چیک کرتا ہے کہ آیا پوائنٹر شہوت انگیز null ہے
اور پروگرام سے باہر سے باہر نکلیں، اگر یہ ہوتا ہے کہ کی malloc شہوت انگیز null پوائنٹر واپس.
xkcd مزاحیہ ہے. وہ لوگ ہیں جن سے اب یہ سمجھ سکتا ہوں. قسم کی.
>> تو، میموری. اور میں نے یہ ختم ہو گیا تھا.
ہم ایک لوپ میں malloc بلا رہے ہیں، لیکن ہر وقت ہے کہ ہم کہتے ہیں malloc
ہم جہاں اس پوائنٹر اشارہ کر رہا ہے کے ٹریک کو کھو رہے ہیں،
کیونکہ ہم اسے clobbering رہے ہیں.
تو، ابتدائی malloc پر کال آپ کے وزٹرز کا ریکارڈ رکھا میموری دیتا ہے یہاں.
اس سے میری پوائنٹر اشارہ.
اب، میں اسے آزاد نہیں ہے، لہذا اب میں malloc پھر کہتے ہیں.
اب یہ یہاں اشارہ ہے. اب میری یاداشت یہاں اشارہ کر رہا ہے.
یہاں کی طرف اشارہ کرتے ہوئے. یہاں کی طرف اشارہ کرتے ہوئے.
لیکن میں یہاں کہ میں مختص تمام میموری کے پتے سے ٹریک کھو دیا ہے.
اور اس طرح اب میں ان کے پاس کوئی حوالہ نہیں ہے اب.
لہذا، میں اس لوپ سے باہر ان کے آزاد نہیں کر سکتے.
اور اس کے لئے کچھ اس طرح طے کرنے کے لئے،
اگر آپ کو مفت میموری بھول جاتے ہیں اور آپ کو اس میموری لیک،
آپ اس لوپ کے اندر یاد ایک بار آپ نے اس کے ساتھ کیا کیا کر رہے ہیں آزاد ہے.
ٹھیک ہے، یہ ہے کیا ہوتا ہے. مجھے معلوم ہے کہ تم میں سے بہت سے اس سے نفرت ہے.
لیکن اب - yay! آپ کے پاس 44،000 کلو بائٹ کی طرح ملتا ہے.
تو، آپ کو لوپ کے آخر میں آزاد،
اور یہ کہ یاد ہر وقت آزاد ہو رہا ہے.
بنیادی طور پر، آپ کا پروگرام میموری لیک نہیں ہے اب.
>> اور اب کچھ اور آپ کر سکتے ہیں ہے، کچھ میموری آزاد ہے کہ آپ نے دو مرتبہ کے لیے کہا ہے.
اس صورت میں، آپ کو malloc کچھ، آپ کو اس کی قدر تبدیل.
آپ یہ مفت ایک بار کیونکہ تم نے کہا تھا کہ تم اس کے ساتھ کیا کیا گیا ہے.
لیکن پھر ہم نے اسے پھر سے آزاد کر دیا.
یہ کچھ ہے جو بہت بری بات ہے ہے.
یہ ابتدائی طور پر segfault نہیں ہے،
لیکن ایک کے بعد، یہ کیا ہے ڈبل اس corrupts آپ کے ڈھیر ڈھانچے آزاد ہوئے
اور آپ کو اس کے بارے میں تھوڑا سا مزید جاننے کے لئے اگر آپ CS61 کی طرح ایک کلاس لینے کا انتخاب کریں گے.
لیکن بنیادی طور پر ایک کے بعد جبکہ آپ کے کمپیوٹر الجھن میں ہو جا رہا ہے
کیا میموری مقامات ہیں کہاں اور کہاں یہ محفوظ ہے کے بارے میں -
اعداد و شمار کی یاد میں کہاں جاتی ہے.
اور اس پوائنٹر آزاد دو مرتبہ ایک بری چیز ہے جو آپ کو نہیں کرنا چاہتا ہے.
>> دیگر چیزیں جو کہ غلط جا سکتے ہیں sizeof کا استعمال نہیں ہے.
تو، آپ کو اس کیس میں 8 بائٹس malloc
اور یہ کہ دو integers کے طور پر ایک ہی بات ہے، ہے نا؟
تو، یہ بالکل محفوظ ہے، لیکن یہ ہے کہ یہ ہے؟
ٹھیک ہے، کے طور پر مختلف architectures پر لوکاس کے بارے میں بات کی،
integers مختلف لمبائی کے ہیں.
لہذا، آلے ہے کہ آپ استعمال کر رہے ہیں، integers کے بارے میں 4 بائٹس ہیں،
لیکن وہ کسی دوسرے نظام 8 بائٹس یا انہوں نے 16 بائٹس ہو سکتا ہے کر سکتے ہیں.
لہذا، اگر میں یہاں صرف اس نمبر کا استعمال،
اس پروگرام کے آلے پر کام ہو سکتا ہے،
لیکن یہ کسی دوسرے نظام پر کافی میموری مختص نہیں ہے.
اس صورت میں، یہ وہی ہے جو sizeof آپریٹر کے لئے استعمال کیا جاتا ہے.
جب ہم کہتے ہیں (int) sizeof، اس کا کیا ہے
یہ ہمارے نظام ہے جو کہ پروگرام چلا رہا ہے ایک عددی کے سائز فراہم کرتا ہے.
تو، اس صورت میں، (int) sizeof 4 آلات کی طرح کچھ واپس آ جائیں گے،
اور اب یہ مرضی 4 2 *، جو 8 ہے،
جس میں صرف دو integers کے لئے ضروری جگہ کی رقم ہے.
ایک مختلف نظام پر، اگر ایک int 16 بائٹس یا 8 بائٹس کی طرح ہے،
یہ صرف کافی بائٹس اس رقم کو محفوظ کرنے کے واپس جا رہا ہے.
>> اور آخر میں، structs.
تو، اگر آپ کو یاد میں ایک سڈوکو بورڈ جمع کرنا چاہتے تھے، ہم اس کس طرح کر سکتا ہے؟
تم پہلی چیز کے لئے ایک متغیر کی طرح لگتا ہے ہو سکتا ہے،
دوسری بات کے لئے ایک متغیر، تیسری بات کے لئے ایک متغیر،
برا، ٹھیک ہے - چوتھی بات کے لئے ایک متغیر ہے؟
لہذا، ایک بہتر بنانے کے آپ کو اس کے سب سے اوپر پر کر سکتے ہیں ایک 9 X 9 صف بنانا ہے.
یہ ٹھیک ہے، لیکن اگر آپ سڈوکو بورڈ کے ساتھ دیگر چیزوں کے مربوط کرنا چاہتا تھا
پسند ہے کہ بورڈ کے مشکل ہے،
یا، مثال کے طور پر، آپ کا سکور کیا ہے، یا کتنا وقت آپ کو یہ بورڈ کو حل کرنے کے لئے لیا ہے؟
ٹھیک ہے، جو آپ کر سکتے ہیں ہے کہ آپ کو ایک struct تشکیل دے سکتے ہیں.
میں بنیادی طور پر کہہ رہا ہوں میں یہاں پر اس کی ساخت کی وضاحت کر رہا ہوں،
اور میں نے ایک سڈوکو بورڈ کی وضاحت کر رہا ہوں جو بورڈ ہے جو 9 X 9 پر مشتمل ہے.
>> اور کیا ہے کہ سطح کے نام پر اشارہ ہے.
یہ بھی X اور Y، جو جہاں میں ابھی ہوں نقاط ہیں.
یہ بھی وقت [unintelligible] خرچ کیا ہے، اور یہ حرکت میں اب تک inputted ہے کی کل تعداد ہے.
اور تو اس صورت میں، میں صرف ایک ڈھانچہ میں ڈیٹا کا ایک مکمل جھوبڈ گروپ کر سکتے ہیں
کے ارد گرد مختلف متغیر کی طرح اڑ میں ہونے کے بجائے
ہے کہ میں واقعی میں ٹریک نہیں رکھ سکتے ہیں.
اور اس کی اجازت دیتا ہے ہے ہمیں صرف اس struct کے اندر مختلف چیزوں کے حوالہ قسم کی کے لئے اچھا نحو ہے.
میں board.board صرف کرنا، کر سکتے ہیں اور میں سڈوکو بورڈ کو واپس ملتا ہے.
Board.level، مجھے کتنا مشکل ہے.
Board.x اور board.y کے وزٹرز کا ریکارڈ رکھا جائے گا. میرے جہاں میں بورڈ میں ہو سکتا ہے نقاط دے.
اور اس میں تک رسائی حاصل ہے جو ہم کہتے ہیں struct میں خانوں رہا ہوں.
یہ sudokuBoard، جس میں ایک قسم ہے کہ میں وضاحت کرتا ہے.
اور اب ہم یہاں ہیں. میں قسم sudokuBoard "بورڈ" کے نام سے متغیر ہے.
اور اس طرح اب میں تمام شعبوں تک رسائی حاصل کر سکتے ہیں کہ یہاں بنا یہ ساخت.
>> structs کے بارے میں کوئی بھی سوال ہے؟ جی ہاں؟
int X، Y [Student کی]، آپ کو ایک ہی لائن میں اعلان کیا دونوں؟ >> [جوزف] اہ ہہ.
[Student کی] تو، صرف تم ان میں سے سب کے ساتھ ایسا کر سکتا ہے؟
X کی طرح، Y کوما اوقات کل کہ؟
[جوزف] جی ہاں، آپ اس بات کو یقینی طور، لیکن وجہ ہے کہ میں نے ایک ہی لائن پر X اور Y ڈال سکتا ہے -
اور سوال یہ ہے کہ ہم ایک ہی لائن پر ایسا کر سکتے ہیں؟
ہم ایک ہی لائن پر کیوں نہیں کرتے ان میں سے سب ڈال دیا ہے
X اور Y ایک دوسرے سے جڑے ہوئے ہیں،
اور یہ تو صرف stylistically زیادہ درست ہے، ایک طرح سے،
کیونکہ یہ ایک ہی لائن پر دو چیزوں گروہ بندی کر رہا ہے
اس طرح طرح کی ایک ہی بات سے متعلق ہے.
اور میں نے صرف ان کے علاوہ علیحدہ. یہ صرف ایک سٹائل کی بات ہے.
یہ فعل نہیں جو فرق پڑتا ہے.
structs پر کوئی سوال؟
تم ایک struct کے ساتھ ایک Pokédex وضاحت کر سکتے ہیں.
پوکیمون ایک نمبر ہے اور یہ ایک خط ہے، ایک مالک ایک قسم ہے.
اور پھر اگر آپ پوکیمون کا ایک صف ہے، آپ کو Pokédex، ٹھیک ہے کر سکتے ہیں؟
ٹھیک ہے ڈاؤن لوڈ، اتارنا،. تو، structs سوال ہیں. وہ structs سے متعلق ہیں.
>> آخر میں، GDB. کیا GDB آپ کو کیا کرتا ہے؟ یہ اجازت دیتا ہے آپ کو اپنے پروگرام کو ڈیبگ.
اور اگر تم GDB کو استعمال نہیں کیا ہے، میں نے سفارش کی مختصر دیکھ
اور کیا GDB ہے زائد جا، کس طرح تم اس کے ساتھ کام کرتے ہیں، کہ آپ کس طرح اس کا استعمال کر سکتے ہیں،
اور یہ پروگرام کی جانچ.
اور اس وجہ سے ہے جو GDB کی اجازت دیتا ہے تم کرتے ہو [unintelligible] اپنے پروگرام کو روکنے کی مدد سے
اور ایک عملی لائن.
مثال کے طور پر، میں نے اپنے پروگرام کے 3 لائن کی طرح کو روکنے پر عملدرآمد کرنا چاہتے ہیں،
اور جب میں 3 لائن پر ہوں میں تمام اقدار جو وہاں ہیں پرنٹ کر سکتے ہیں.
اور اس طرح جو ہم کہتے ہیں کی طرح ایک سطر میں روک
ہمیں کال یہ اس لائن پر توڑ مقام ڈال
اور پھر ہم باہر اس وقت میں پروگرام کی حالت میں متغیر کو پرنٹ کر سکتے ہیں.
>> ہم سے تو اس لائن کی طرف سے لائن پروگرام کے ذریعے قدم کر سکتے ہیں.
اور پھر ہم اس وقت اسٹیک کی حالت میں دیکھ سکتے ہیں.
اور اس کے لئے GDB، ہم کیا کرتے ہیں ہم C فائل بجنا فون استعمال کرنے کے لئے،
لیکن ہم نے اسے ggdb کے پرچم کو منتقل ہے.
اور ایک بار ہم نے اس کے ساتھ ہم نتیجے میں آؤٹ پٹ فائل صرف gdb چلانے رہے ہیں.
اور اس لئے تم اس طرح متن میں سے کچھ کی طرح بڑے پیمانے پر حاصل
لیکن حکم میں واقعی تمہیں کیا کرنا ہے شروع میں ٹائپ ہے.
اہم توڑ کے مرکزی میں توڑ مقام رکھتا ہے.
400 لائن کے ارد گرد 400 کی فہرست کوڈ کی لائنوں کی فہرست ہے.
اور اس لئے تم اس کیس میں چاروں طرف صرف اور کہتے ہیں، دیکھو کر سکتے ہیں اوہ،
میں 397 لائن پر توڑ مقام، جس میں اس لائن ہے مقرر کرنا چاہتے ہیں،
اور پھر اپنے پروگرام اس قدم میں چلتا ہے اور اس کو توڑنے جا رہا ہے.
یہ وہاں روکنا جا رہا ہے، اور آپ کو مثال کے طور پر پرنٹ، کم یا زیادہ کی قدر کر سکتے ہیں.
اور اس حکم آپ کو جاننے کی ضرورت کا ایک گروپ ہے،
اور اس سلائیڈ شو کی ویب سائٹ پر جائیں گے،
اگر ایسا ہے تو آپ کو صرف ان کا حوالہ کرنا چاہتے ہیں یا پسند اپنے دھوکے باز شیٹ پر ڈال، بلا جھجھک.
>> ڈاؤن لوڈ، اتارنا. اس کوئز 0 جائزہ تھا، اور ہم اس کے ارد گرد رہنا اگر آپ کے ذہن میں کوئی سوالات ہیں کریں گے.
ٹھیک ہے.
>> [تعریف]
>> [CS50.TV]