روب BOWDEN: مرحبا، أنا روب بودين، ودعونا نتحدث عن quiz0. لذلك، السؤال الأول. هذا هو السؤال أين كنت في حاجة إلى رمز العدد 127 في المصابيح الثنائية. إذا كنت تريد، هل يمكن قيام التحويل المنتظم من bi-- أو من عشري إلى ثنائي. ولكن هذا سيكون على الارجح أن تأخذ الكثير من الوقت. أعني، هل يمكن معرفة ذلك، موافق، 1 هو في هناك، و 2 في هناك، 4 في هناك، 8 في هناك. طريقة أسهل، 127 128 ناقص واحد. أن المصباح الكهربائي أقصى اليسار هي 128 بت. حتى 127 هو حقا فقط كل من المصابيح الأخرى، منذ هذا هو أقصى اليسار المصباح الكهربائي ناقص 1. هذا كل شيء عن هذا السؤال. سؤال واحد. حتى مع 3 بت يمكنك تمثل 8 قيم متميزة. لماذا، إذن، هو أكبر 7 غير سالب صحيح عشري يمكنك تمثيل؟ حسنا، إذا استطعنا فقط 8 تمثيل قيم واضحة، فما نحن في طريقنا لنكون يمثل هو من 0 إلى 7. 0 يستغرق فترة تصل إحدى القيم. السؤال الثاني. مع بت ن، وكم متميزة يمكنك تمثل القيم؟ لذلك، مع بت ن، لديك 2 القيم الممكنة لكل قليلا. لذلك لدينا 2 القيم المحتملة ل بت الأول، 2 القيم المحتملة للمرة الثانية، 2 ممكن للثالث. وذلك أن 2 مرات 2 مرات 2، و في نهاية المطاف فإن الجواب هو 2 إلى ن. السؤال الثالث. ما هو 0x50 في ثنائي؟ هكذا نتذكر أن لديه عشري جدا تحويل مباشر إلى ثنائي. حتى هنا، نحن بحاجة فقط للنظر في 5 و0 مستقل. فما هو 5 في ثنائي؟ 0101، وهذا هو الشيء 1 والشيء 4. ما هو 0 في ثنائي؟ لا صعبة. 0000. حتى مجرد وضعها معا، و هذا هو العدد الكامل في ثنائي. 01010000. وإذا أردت هل يمكن خلع أن أقصى اليسار من الصفر. انها لا صلة لها بالموضوع. حتى ذلك الحين بدلا من ذلك، ما هو 0x50 في العشرية؟ إذا أردت، يمكنك could-- إذا كنت أكثر راحة مع ثنائي، هل يمكن أن تأخذ الجواب الثنائية وتحويل ذلك إلى عشري. أو أننا يمكن أن نتذكر فقط أن عشري. بحيث 0 هو في المقام 0-التاسع، و 5 في ال 16 إلى المركز الأول. حتى هنا، لدينا 5 مرات إلى 16 أولا، بالإضافة إلى 0 مرات 16 إلى الصفر، 80. وإذا نظرت إلى اللقب على السؤال، كان CS 80، والتي كانت نوع من تلمح إلى إجابة لهذه المشكلة. السؤال الخامس. لدينا هذا السيناريو خدش، وهو تكرار 4 مرات زبدة الفول السوداني جيلي. فكيف نفعل نحن الآن التعليمات البرمجية التي في C؟ حسنا، لدينا here-- الجزء بالخط العريض هو الجزء الوحيد كان لديك لتنفيذها. لذلك لدينا 4 حلقة هذا ما حلقات 4 مرات، جي printf زبدة الفول السوداني وهلام، مع خط جديد كما تطلب المشكلة ل. السؤال الستة، مشكلة خدش آخر. ونحن نرى أننا في حلقة إلى الأبد. نقوله ط متغير ثم تزايد ط بنسبة 1. الآن نريد أن نفعل ذلك في C. وهناك طرق متعددة يمكن أن فعلنا هذا. هنا حدث علينا أن المدونة حلقة إلى الأبد باعتباره بينما (صحيح). لذلك فإننا نعلن من المتغير الأول، فقط كما كان لدينا ط متغير في خدش. إعلان ط متغير، وإلى الأبد بينما (صحيح)، ونحن نقول المتغير الأول. هكذا printf٪ i-- أو هل يمكن أن استخدمتها٪ د. نقول هذا المتغير، و ثم زيادة ذلك، وأنا + +. السؤال سبعة. الآن نحن نريد أن نفعل شيئا مشابها جدا لماريو النقطة ج من مشكلة مجموعة واحدة. نحن نريد لطباعة هذه الهاش، نحن نريد لطباعة خمسة قبل ثلاثة مستطيل من هذه التجزئة. فكيف نحن ذاهبون للقيام بذلك؟ حسنا، نقدم لك كله مجموعة من الرموز، وكنت للتو لدينا لملء وظيفة الشبكة الطباعة. فماذا PrintGrid تبدو وكأنها؟ كذلك كنت في الماضي العرض والارتفاع. لذلك لدينا صلة خارجية 4 حلقة، وهذا التكرار على جميع الصفوف من هذا الشبكة التي نريد طباعتها. ثم لدينا ما بين 4 حلقة متداخلة، هذا هو الطباعة على كل عمود. لذلك لكل صف، ونحن طباعة ل كل عمود، تجزئة واحدة. ثم في نهاية الصف نحن طباعة خط جديد واحد للذهاب إلى الصف التالي. وهذا كل شيء عن الشبكة بأكملها. السؤال الثامن. ويقال إن وظيفة مثل PrintGrid ل يكون أحد الآثار الجانبية، ولكن ليس عودة القيمة. شرح تمييز. لذلك هذا يعتمد عليك التذكر ما هي الآثار الجانبية. حسنا، بالعودة value-- نحن نعرف PrintGrid لا لها قيمة المقابل، منذ هنا يقول باطلا. لذا فان أي شيء أن يعود الفراغ لا يعيد حقا أي شيء. فما هي الآثار الجانبية؟ حسنا، أحد الآثار الجانبية هو أي شيء الذي لا يزال قائما نوع من بعد انتهاء وظيفة لم يكن ذلك عاد لتوه، وأنه لم يكن فقط من المدخلات. هكذا، على سبيل المثال، فإننا قد تغيير متغير عمومي. من شأنها أن تكون الآثار الجانبية. في هذه الحالة بالذات، و أثر جانبي مهم جدا والطباعة على الشاشة. بحيث هو أحد الآثار الجانبية أن PrintGrid ديه. نحن طباعة هذه الأشياء على الشاشة. ويمكن ان يخطر لك أن كأثر جانبي، منذ هذا شيء استمرت بعد انتهاء هذه المهمة. هذا شيء خارج نطاق هذه الوظيفة التي في نهاية المطاف ويتم تغييرها، و محتويات الشاشة. السؤال تسعة. النظر في البرنامج أدناه، إلى أي أرقام الأسطر وقد أضيفت لل من أجل المناقشة. حتى في هذا البرنامج أننا فقط داعيا GetString، تخزينه في هذا S متغيرة، ومن ثم طباعة هذا المتغير S. موافق. ذلك يفسر لماذا سطر واحد موجود. تتضمن # cs50 نقطة ح. لماذا نحتاج إلى # تضمين cs50 نقطة ح؟ كذلك نحن استدعاء GetString وظيفة، ويعرف GetString في المكتبة cs50. حتى إذا لم يكن لدينا # تشمل cs50 نقطة ح، سوف نحصل على هذا الإعلان الضمني من الخطأ وظيفة GetString من المترجم. لذلك نحن بحاجة لتشمل library-- نحن في حاجة إلى تضمين ملف الرأس، أو آخر سوف المترجم لا ندرك أن GetString موجودا. شرح لماذا سطرين موجودا. IO القياسية حتى النقطة ح. انها بالضبط نفس الشيء كما المشكلة السابقة، باستثناء بدلا من التعامل مع GetString، ونحن نتحدث عن printf. حتى لو لم نكن نقول أننا بحاجة لتشمل القياسية IO نقطة ح، ثم أننا لن نكون قادرين لاستخدام وظيفة printf، لأن المترجم لن يعلم ذلك. Why-- ما هو المغزى للباطل في أربعة أسطر؟ حتى هنا لدينا كثافة العمليات الرئيسي (الفراغ). إن مجرد القول بأننا لم يتم الحصول على أي سطر الأوامر الحجج الرئيسية ل. نتذكر أننا يمكن أن نقول الباحث الرئيسية كثافة العمليات ARGC قوسين سلسلة ARGV. حتى هنا نحن نقول فقط أن نقول أننا باطل وتجاهل وسائط سطر الأوامر. شرح، فيما يتعلق الذاكرة، وبالضبط ما GetString في خط ستة العوائد. GetString يعود كتلة من الذاكرة، ومجموعة من الشخصيات. انها حقا العودة المؤشر إلى الحرف الأول. تذكر أن السلسلة نجم شار. هكذا S هو مؤشر إلى أول شخصية كل ما في السلسلة أن المستخدم دخلت على لوحة المفاتيح. ويحدث أن الذاكرة ليتم malloced، ذلك أن الذاكرة في كومة. السؤال 13. النظر في البرنامج أدناه. لذلك كل ما يقوم به هذا البرنامج وprintf جي 1 مقسوما على 10. لذلك عندما جمعت و أعدم، وهذا البرنامج مخرجات 0.0، على الرغم من 1 مقسوما على 10 هو 0.1. فلماذا هو 0.0؟ حسنا، هذا هو ل من قسمة عدد صحيح. حتى 1 هو عدد صحيح، 10 هو عدد صحيح. حتى 1 مقسوما على 10، كل شيء وتعامل على أنها صحيحة، وC، عندما نفعل قسمة عدد صحيح، نحن اقتطاع أي نقطة العشرية. حتى 1 مقسوما على 10 و 0، ومن ثم نحاول لطباعة هذا بمثابة تعويم، لذلك الصفر المطبوعة بمثابة تعويم هو 0.0. وهذا هو السبب نحصل على 0.0. النظر في البرنامج أدناه. نحن الآن طباعة 0.1. لذلك لا قسمة عدد صحيح، نحن فقط طباعة 0.1، لكننا طباعته إلى 28 منازل عشرية. ونحصل على هذه 0.1000، في مجمله مجموعة من الأصفار، 5 5 5، بلاه بلاه بلاه. لذا فإن السؤال هنا هو لماذا يفعل ذلك طباعة هذا، بدلا من 0.1 بالضبط؟ لذلك السبب هنا هو الآن العائمة نقطة الدقة. تذكر أن تطفو هو 32 بت فقط. ولذا فإننا يمكن أن تمثل سوى عدد محدود القيم النقطة العائمة مع تلك 32 بت. كذلك هناك في نهاية المطاف بلا حدود العديد من القيم النقطة العائمة، وهناك عدد لانهائي من العائمة قيم نقطة في بين 0 و 1، ونحن بالطبع قادرون على تمثل أكثر حتى من تلك القيم. لذلك لدينا لتقديم التضحيات ل تكون قادرة على تمثيل معظم القيم. حتى قيمة 0.1 مثل، على ما يبدو نحن لا يمكن أن تمثل بالضبط. وذلك بدلا من يمثلون 0.1 نفعل أفضل ما يمكن أن تمثل هذه 0.100000 5 5 5. وهذا قريب جدا، ولكن بالنسبة للكثير من التطبيقات لديك ما يدعو للقلق العائمة نقطة الدقة، لأننا لا يمكن أن تمثل كل نقطة عائمة بالضبط. السؤال 15. النظر في الكود بالأسفل. نحن فقط طباعة 1 زائد 1. لذلك ليس هناك خدعة هنا. 1 زائد 1 إلى 2 تقييم، و ثم نقوم بطباعة ذلك. هذا يطبع فقط 2. السؤال 16. نحن الآن طباعة الطابع 1 زائد 1 شخصية. فلماذا لا يفعل ذلك طباعة نفس الشيء؟ كذلك الطابع 1 بالإضافة إلى الطابع 1، 1 الطابع له قيمة ASCII 49. لذلك هذا هو حقا قائلا 49 زائد 49، و في النهاية هذا هو الذهاب الى طباعة 98. لذلك هذا لا يطبع 2. السؤال 17. استكمال تنفيذ من الغريب أدناه في مثل هذه الطريقة أن وظيفة بإرجاع True إذا ن أمر غريب وكاذب إذا كان n هو حتى. هذا هو الهدف الكبير للمشغل وزارة الدفاع. حتى نأخذ لدينا حجة ن، إذا كان n وزارة الدفاع 2 يساوي 1، وأيضا وهذا يعني أن تنقسم ن بنسبة 2 كان الباقي. إذا قسمت ن بنسبة 2 كان الباقي، أن يعني أن ن هو الغريب، لذلك نعود صحيح. آخر نعود كاذبة. أنت أيضا يمكن أن تفعل وزارة الدفاع ن 2 متساوين الصفر، والعودة كاذبة، إلا بالعودة الحقيقية. النظر في وظيفة متكررة أدناه. حتى إذا كان n أقل من أو يساوي 1، والعودة 1، عودة شيء آخر ن مرات و ن ناقص 1. فما هي هذه المهمة؟ حسنا، هذا هو فقط وظيفة عاملية. ويمثل هذا لطيف كما ن مضروب. حتى السؤال 19 الآن، نحن نريد ل تأخذ هذه الوظيفة متكررة. نحن نريد لجعله تكرارية. فكيف نفعل ذلك؟ فضلا عن الموظفين حل، ومرة ​​أخرى هناك طرق متعددة يمكن أن فعلت هذا، ونحن نبدأ مع هذا المنتج الباحث يساوي 1. وطوال هذه للحلقة، نحن ذاهبون ليتم في نهاية المطاف إلى مضاعفة المنتج في نهاية المطاف مع مضروب الكامل. وذلك لكثافة العمليات ط يساوي 2، وأنا غير أقل من أو يساوي ن، ط + +. هل يمكن أن يتساءل لماذا أنا يساوي 2. كذلك، تذكر أن لدينا هنا ل تأكد من الحالة الأساسية لدينا هي الصحيحة. حتى إذا كان n أقل من أو يساوي إلى 1، ونحن مجرد العودة 1. حتى أكثر من هنا، نبدأ في الاول يساوي 2. كذلك لو كنت 1، ثم the-- أو إذا كان ن 1، ثم للحلقة لن تنفيذ على الإطلاق. ولذا فإننا فقط عودة المنتج، الذي هو 1. وبالمثل، إذا كان ن أي شيء أقل من 1-- لو كان 0، 1 سلبية، whatever-- لكنا لا يزالون يعودون 1، وهو بالضبط ما نسخة العودية يقوم به. الآن، إذا كان n هو أكبر من 1، ثم نحن ذاهبون لفعل واحد على الأقل التكرار لهذه الحلقة. لذلك دعونا نقول أن n 5، ثم نحن تنوي القيام به مرة المنتج يساوي 2. حتى الآن المنتج هو 2. الآن نحن في طريقنا للقيام المنتج تساوي 3 أضعاف. الآن حان 6. الأوقات المنتج يساوي 4، والآن حان 24. المنتج يساوي 5 مرات، والآن حان 120. حتى ذلك الحين في نهاية المطاف، نحن العودة 120، وهو صحيح 5 مضروب. السؤال 20. هذا هو واحد حيث لديك لملء في هذا الجدول مع أي خوارزمية معينة، كل ما رأيناه، أن يناسب هذه المدى حسابي مرة هذه الأوقات المدى مقارب. فما هو خوارزمية هو أوميغا 1، ولكن يا كبير من ن؟ لذلك يمكن أن تكون هناك بلا حدود العديد من الإجابات هنا. تلك التي شهدناها ربما أكثر في كثير من الأحيان هو البحث الخطي فقط. حتى في أفضل الأحوال السيناريو، هذا البند نحن تبحث عن في بداية القائمة وذلك في أوميغا 1 خطوات، أول شيء علينا التحقق، نحن فقط العودة فورا وجدنا هذا البند. في أسوأ الحالات، هذا البند هو في النهاية، أو البند ليست في قائمة على الإطلاق. لذلك لدينا للبحث قائمة بأكملها، كل ن العناصر، وهذا هو السبب في أنه من س ن. حتى الآن انها شيء على حد سواء أوميغا ن ن سجل، ويا ​​كبير من ن ن السجل. كذلك الشيء الأكثر أهمية رأيناه هنا هو دمج النوع. حتى دمج النوع، تذكر، في نهاية المطاف هو ثيتا ن ن السجل، حيث يتم تعريف ثيتا إذا كان كل من أوميغا ويا كبير هي نفسها. كل من ن ن تسجيل. ما هو الشيء الذي أوميغا ن، و يا ن المربعة؟ حسنا، مرة أخرى هناك الأجوبة المحتملة متعددة. هنا يحدث لأننا نقول فقاعة النوع. سيكون الإدراج نوع العمل أيضا هنا. تذكر هذا النوع فقاعة لديه حيث أن التحسين، إذا كنت قادرا على الحصول على من خلال القائمة بالكامل دون الحاجة إلى القيام أي مقايضة، ثم، أيضا، يمكننا العودة فورا أن تم فرز القائمة لتبدأ. حتى في أفضل السيناريوهات، انها مجرد أوميغا ن. اذا لم يكن مجرد طيف قائمة لتبدأ فرز، ثم لدينا يا ن مربع مقايضة. وأخيرا، لدينا اختيار نوع لن تربيع، سواء أوميغا وكبيرة O. السؤال 21. ما هو عدد صحيح فيض؟ حسنا مرة أخرى، على غرار وقت سابق، لدينا العديد محدود بت فقط لتمثيل عدد صحيح، ولذلك ربما يكون 32 بت. دعونا نقول لدينا عدد صحيح وقعت. ثم في نهاية المطاف أعلى رقم موجب يمكننا أن نمثل هو 2 إلى 31 ناقص 1. فماذا يحدث لو كنا في محاولة لل ثم أن زيادة عدد صحيح؟ حسنا، نحن ذاهبون للذهاب في الفترة من 2 إلى 31 ناقص 1، على طول الطريق وصولا الى سلبي 2 إلى 31. لذلك هذا هو تجاوز عدد صحيح عندما كنت ابقاء تزايد، وفي نهاية المطاف لا يمكنك الحصول على أي أعلى وأنها مجرد يلتف كل في طريق العودة حول إلى قيمة سالبة. ماذا عن تجاوز سعة المخزن المؤقت؟ لذلك عازلة overflow-- نتذكر ما هو العازلة. انها مجرد جزء من الذاكرة. شيء من هذا القبيل هو مجموعة العازلة. لذلك تجاوز سعة المخزن المؤقت هو عندما حاولت الوصول إلى الذاكرة بعد نهاية تلك المصفوفة. حتى إذا كان لديك مجموعة من حجم 5 و لك محاولة الوصول إلى قوس مجموعة 5 أو 6 أو قوس قوس 7، أو أي شيء خارج نهاية، أو حتى أي شيء below-- قوس مجموعة سلبي 1-- كل هذه هي عازلة الفيضانات. كنت لمس الذاكرة بطرق سيئة. السؤال 23. حتى في هذا واحد تحتاج لتنفيذ strlen. ونقول لكم ان استطعت نفترض أن ليست أن يكون لاغيا، لذلك لم يكن لديك ل القيام بأي الاختيار لاغيا. وهناك طرق متعددة كنت قد فعلت ذلك. نحن هنا فقط اتخاذ مباشرة. نبدأ مع عداد، ن. ن هو عد عدد الحروف هناك. حتى نبدأ في 0، ومن ثم نحن تكرار عبر القائمة بأكملها. هو S قوس 0 يساوي اغيا شخصية فاصل؟ نتذكر نحن نبحث عن الطابع فاصل باطل لتحديد متى سلسلة لدينا. ما يجري لإنهاء أي سلسلة ذات الصلة. ذلك هو S قوس 0 يساوي إلى فاصل باطل؟ إذا لم تكن كذلك، ثم نحن ذاهبون الى ننظر إلى S قوس 1، ق 2 قوس. نحن تستمر حتى نحن العثور على فاصل فارغة. مرة واحدة وجدنا عليه، ثم ن يحتوي على إجمالي طول السلسلة، ويمكننا فقط أن يعود. السؤال 24. لذلك هذا هو واحد حيث كنت لدينا لجعل المفاضلة. ذلك شيء واحد هو جيد في واحدة الطريق، ولكن ما هي الطريقة هي سيئة؟ حتى هنا، ودمج النوع يميل ل يكون أسرع من فقاعة نوع. وقد قلت that-- جيدا، هناك هي الأجوبة متعددة هنا. ولكن الشيء الرئيسي هو أن نوع فقاعة هو أوميغا ن للحصول على قائمة تم فرزها. تذكر أن الجدول نحن فقط رأيت في وقت سابق. حتى تفرز فقاعة أوميغا لل ن، وأفضل سيناريو غير انها قادرة على الذهاب فقط خلال قائمة مرة واحدة، وتحديد يا هذا الشيء هو بالفعل فرزها، والعودة. دمج النوع، مهما يمكنك القيام به، هو أوميغا ن ن السجل. حتى لائحة فرزها، فقاعة النوع سيكون أسرع. الآن ماذا عن القوائم المرتبطة؟ حتى قائمة مرتبطة يمكن أن تنمو وتتقلص لتناسب العديد من العناصر حسب الحاجة. أما وقد قلت ذلك that-- عادة المقارنة المباشرة وستكون مرتبطة قائمة مع صفيف. ذلك على الرغم من المصفوفات يمكن تنمو بسهولة ويتقلص لتناسب العديد من العناصر حسب الحاجة، قائمة مرتبطة مقارنة لarray-- مجموعة لديها الوصول العشوائي. نستطيع المؤشر في أي عنصر معين للمجموعة. حتى لقائمة مرتبطة، لا يمكننا اذهبوا إلى العنصر الخامس، علينا أن تعبر من البداية حتى نصل إلى العنصر الخامس. وهذا ما سوف يمنعنا من تفعل شيئا مثل البحث الثنائي. الحديث عن البحث الثنائي، بحث ثنائي يميل إلى أن يكون أسرع من البحث الخطي. وقد قلت that-- لذلك، الشيء الوحيد الممكن هو أنك لا تستطيع أن تفعل ثنائي البحث على القوائم المرتبطة، يمكنك أن تفعل ذلك فقط على المصفوفات. ولكن ربما الأهم من ذلك، لا يمكنك أن تفعل البحث ثنائي على صفيف وغير مصنفة. مقدما قد تحتاج إلى فرز مجموعة، وعندها فقط يمكن يمكنك القيام به خاصية البحث الثنائي. حتى إذا كان لديك شيء ليس فرزها لتبدأ، ثم بحث الخطي قد يكون أسرع. السؤال 27. حتى النظر في البرنامج أدناه، والتي سوف تكون في الشريحة التالية. وهذا هو واحد حيث نحن تريد الذهاب الى صراحة قيم المتغيرات المختلفة. لذلك دعونا ننظر في ذلك. حتى سطر واحد. لدينا الباحث س يساوي 1. هذا هو الشيء الوحيد الذي حدث. وذلك في سطر واحد، ونحن نرى في منطقتنا الجدول، أن ذ، أ، ب، وكلها تمة ظلام دامس. فما هو العاشر؟ حسنا نحن فقط تعيين يساوي 1. ثم سطرين، حسنا، ونحن نرى أن يتم تعيين ص إلى 2، والجدول هو بالفعل ملأت بالنسبة لنا. لذلك x هو 1 و y هو 2. الآن، السطر الثالث، ونحن الآن داخل وظيفة المبادلة. ما لم نعبر لمبادلة؟ مررنا العطف العاشر ل لذلك، والعطف لذ ب. أين المشكلة في وقت سابق وذكر أن عنوان X هو 0x10، وعنوان Y هو 0x14. لذلك وب سواسية ل 0x10 0x14 و، على التوالي. الآن في خط ثلاثة، ما هي x و y؟ كذلك، لم يتغير شيء حول x و y في هذه المرحلة. على الرغم من انهم داخل إطار مكدس الرئيسي، لا يزال لديهم نفس قيم فعلوا من قبل. ونحن لا تعديل أي الذاكرة. ذلك أن x 1، y هي 2. حسنا. قال ذلك ونحن الآن الباحث تمة يساوي نجم أ. وذلك في أربعة أسطر، كل شيء هو نفسه باستثناء تمة. ونحن لم يتغير أي القيم من أي شيء باستثناء تمة. نحن وضع تمة يساوي نجم أ. ما هو نجم و؟ حسنا، نقطة إلى x، لذا ستار سوف المساواة السينية، الذي هو 1. هكذا يتم نسخ كل شيء إلى أسفل، وضبط تمة إلى 1. الآن السطر التالي. نجم من نجوم يساوي ب. ذلك الخط جيدا five-- مرة أخرى، كل شيء هو نفسه إلا كل ما هو نجم و. ما هو نجم و؟ حسنا، نحن فقط قال نجم لهو س. لذلك نحن تغيير X في المساواة نجوم ب. ما هو نجم ب؟ ذ. نقطة ب لذ. ذلك هو نجم ب ذ. لذلك نحن بوضع X يساوي Y، وكل شيء آخر هو نفسه. ولذا فإننا نرى في الصف التالي أن x هو الآن 2، والباقي يتم نسخ فقط بانخفاض. الآن في السطر التالي، نجم ب يساوي تمة. حسنا، قلنا مجرد نجم ب هي ذ، لذلك نحن وضع Y يساوي تمة. كل شيء آخر هو نفسه، حتى يحصل على نسخ كل شيء إلى أسفل. اننا وضع Y يساوي TMP، وهو واحد، وكل شيء آخر هو نفسه. الآن أخيرا، خط سبعة. نعود في الوظيفة الرئيسية. نحن بعد الانتهاء المبادلة. فقدنا أ، ب، و تمة، ولكن في النهاية نحن لم يتم تغيير أي من القيم من أي شيء في هذه المرحلة، نحن مجرد نسخ x و y أسفل. ونحن نرى أن x و y و الآن 2 و 1 بدلا من 1 و 2. نفذت المبادلة بنجاح. السؤال 28. لنفترض أن واجهتك رسائل الخطأ أدناه خلال ساعات الدوام العام المقبل باعتباره CA أو فريق العمل. تقديم المشورة حول كيفية إصلاح كل هذه الأخطاء. المرجعية غير معرفة حتى لGetString. ماذا يمكن أن ترى هذا؟ حسنا، إذا كان الطالب يستخدم GetString في مدوناتها، فقد تضمنت بشكل صحيح التجزئة cs50 نقطة ح لتشمل المكتبة cs50. حسنا، ماذا تحتاج إلى إصلاح هذا الخطأ؟ انهم بحاجة للقيام lcs50 شرطة في سطر الأوامر عندما كنت تجميع. حتى إذا كانت لا تمر رنة شرطة lcs50، وانهم لن يكون الفعلية التعليمات البرمجية التي تنفذ GetString. السؤال 29. معلنا ضمنا وظيفة المكتبة strlen. حسنا هذا الآن، لديهم لا يتم تجزئة المناسبة تشمل. في هذه الحالة بالذات، ملف الرأس التي يحتاجونها لتشمل سلسلة من نقطة ح، وبما في ذلك سلسلة نقطة ح، الآن والآن student-- المترجم لديه حق الوصول إلى تصريحات strlen، وأنه يعلم أن التعليمات البرمجية وباستخدام strlen بشكل صحيح. السؤال 30. المزيد من التحويلات في المئة من الحجج البيانات. فما هو هذا؟ كذلك تذكر أن هذه بالمئة signs-- كيف انهم ذات الصلة printf. حتى في printf أننا قد percent-- كنا قد طبع شيء مثل في المئة ط ن مائل. أو ربما نحن طباعة مثل بالمئة ط، الفضاء، ط المئة، والفضاء، وأنا في المئة. لذلك لكل من تلك علامات النسبة المئوية، ونحن بحاجة لتمرير متغير في نهاية printf. حتى إذا قلنا paren printf في المئة ط ن مائل paren وثيقة، حسنا، نحن نقول أننا الذهاب لطباعة عدد صحيح، ولكن بعد ذلك نحن لا تمر printf عدد صحيح لطباعة الواقع. حتى هنا المزيد من المئة التحويلات من الحجج البيانات؟ هذا ما يقول أن لدينا في مجمله مجموعة من النسب المئوية، وليس لدينا ما يكفي من المتغيرات لسد الواقع في تلك النسب المئوية. ثم بالتأكيد، بالنسبة للسؤال 31، بالتأكيد فقدت 40 بايت في كتل واحد. لذلك هذا هو الخطأ Valgrind. هذا يقول ان في مكان ما في التعليمات البرمجية، لديك التخصيص الذي هو 40 بايت كبيرة حتى تتمكن malloced 40 بايت، وأبدا أنت تحريرها. على الأرجح أنت بحاجة فقط العثور على بعض تسرب الذاكرة، وتجد فيها ما تحتاجه ل تحرير هذه الكتلة من الذاكرة. والسؤال 32، الكتابة غير صالحة للحجم 4. مرة أخرى هذا هو الخطأ Valgrind. لا تملك أن تفعل هذا مع تسرب الذاكرة الآن. وهذا هو، الأكثر likely-- أعني، انها ل نوعا من حقوق ذاكرة غير صالحة. وعلى الأرجح هذا هو بعض نوع من تجاوز سعة المخزن المؤقت. حيث لديك صفيف، ربما صفيف صحيحا، ودعونا يقولون انها من حجم 5، وكنت محاولة للمس مجموعة قوس 5. لذلك إذا حاولت أن أكتب القيمة، وهذا ليس قطعة من الذاكرة أن لديك بالفعل الوصول إلى، و حتى وأنت تسير في الحصول على هذا الخطأ، تقول الكتابة غير صالحة للحجم 4. Valgrind يجري الاعتراف كنت في محاولة للمس الذاكرة بشكل غير لائق. وهذا كل شيء عن quiz0. أنا روب بودين، وهذا هو CS50.