أستاذ: هكذا فإن جدول الأعمال ل هذا الأسبوع، وليس أن الكثير من الاشياء. ولكن نأمل جدا ومفيدة جدا وذات الصلة ليا رفاق هذا الاسبوع. ولكن نحن في طريقنا للقضاء ربما 15، 20 دقيقة فقط التحدث بسرعة حول القائمة رابط. قوائم الرابط تسير ل يتم تغطية على هذه المسابقة. لذلك ربما سيكون من المفيد جدا لمعرفة بعض الشيء عن ما هو. ونحن في طريقنا لقضاء اسعة غالبية القسم اليوم تخطى المشاكل ممارسة مسابقة الصفر. وبعد ذلك سنقوم انقاذ ربما 20 أو 30 دقيقة في نهاية لأي أسئلة العالقة أي شخص لديه. وبعد ذلك، وكان آخر خمس دقائق، وانا ذاهب لإعطاء ضخ ما يصل خطاب لهذه المسابقة. يا رفاق جميعا نريد أن نكون هنا لذلك. لأنه سيكون وقتا طيبا. كل الحق، وحتى بعض المواد على القائمة رابط. كيف انهم عادة هيكلة هو لديك ما يسمى عقدة، أليس كذلك؟ قمت بالاتصال هذه الأشياء العقد، والتي هي البنيات. سأذهب حول كيفية إنشاء عقدة في الشريحة التالية. ولكن أساسا كلها مرتبطة قوائم هي هي البيانات التي وقد موتر معا عن طريق المؤشرات. وبالتالي فإن الاستفادة لدينا استخدام قائمة مرتبطة أكثر، ربما، مثل مجموعة، هو حقيقة أنه في مجموعة كنت في حاجة واحدة كتلة متجاورة من ذاكرة جميعا في نفس المكان، واحد بعد آخر، لتكون قادرة على ذلك. في حين أن قائمة مرتبطة، هل يمكن لدينا قطع صغيرة عشوائية من الذاكرة في جميع أنحاء جهاز الكمبيوتر الخاص بك موتر معا عن طريق المؤشرات. وبهذه الطريقة أنت يمكن الوصول إلى المعلومات أن يأتي أحد بعد البعض بعد الآخر دون الحاجة فقط جزء كبير من الذاكرة في جهاز الكمبيوتر الخاص بك في مكان ما. وهكذا وهذا هو واحدة من كبرى أسباب لماذا نستخدم القائمة رابط. ثانيا، فإنه من السهل جدا أن حيوي تغيير حجم القائمة رابط لفي مجموعة، عندما تقوم بتعريف صفيف، لديك قيمة مجموعة معينة. دعنا نقول أردت أن تخلق مجموعة من 10 الأعداد الصحيحة. I إنشاء مجموعة من 10 الأعداد الصحيحة، وهذا كل شيء. انها 10. أنا لا أعرف ما يجب القيام به بعد ذلك. إذا أردت أن تجعل من 11، لا يمكن أن تفعل ذلك. إذا كنت تريد أن تجعل من 9، لا يمكن أن تفعل ذلك. بينما في قائمة الارتباط، يمكنك إضافة و حذف وإدراج أي مكان تريد. يمكنك تغيير حجم حيوي الخاص بك هيكلة هنا، بنية البيانات الخاصة بك. وهذا يعطينا الكثير أكثر مرونة إضافية أننا لا عادة يكون مع المصفوفات. الخلط بين أي شخص على اساس هيكل كيف يمكن لائحة الوصلة أو لماذا يجب علينا أن نستخدم واحد على مجموعة؟ نعم، سنذهب في أكثر من التفاصيل كيفية إنشاء في الواقع واحدة. ولكن هذا هو مجرد نوع من الشعور العام في الوقت الحالي. رائع. وهكذا وموتر المصفوفات معا هذه الأشياء الصغيرة الجميلة دعا العقد. كل عقدة وهو نوع من البنية. تذكر، والبنية هي إذا أردت لخلق نوع معين من متغير في C التي لا بالفعل الوجود، أنت، كمبرمج، يمكن أن تخلق في الواقع أن نفسك. وحتى هذا النوع من البيانات ودعا هيكل عقدة، وفعلا تم إنشاؤها من قبل لنا، وهذا لا توجد داخل C من تلقاء نفسها. والطريقة التي إنشاء واحد هو أن يكون لديك رأس typedef والبنية، الذي يحكي مترجم أنا على وشك إنشاء البنية. نحن اسم الذهاب و"عقدة". وداخل نحن ذاهبون تعريف متغير في، وهو ذاهب لتخزين قيمة. ثم نحن في طريقنا أيضا ل ومؤشر يسمى "بجوار" الذي يشير إلى التالي عقدة في القائمة رابط. ثم الانتهاء من ذلك فقط عن طريق تكرار العقدة مرة أخرى حتى المترجم يعرف، OK هذا هو نهاية بلدي البنية. وحتى في هذه الطريقة، نحن نوع من خلق مجموعة صغيرة لطيف النوع من الشيء مع قيمة ومع مؤشر. ويمكنك ربط كل منهم جنبا إلى جنب مع تلك المؤشرات. بحيث يمكن أن يكون كل نوع موتر معا في سلسلة. رائع. يمكن أن تسمع أن أفضل قليلا؟ الجمهور: نعم. أستاذ: حسنا. وبالتالي فإن الطريقة التي، كما كنت الرجال يمكن أن نرى، ويتمحور على القائمة رابط نموذجية هو أن يكون لديك رأس. لديك قيمة رأس وهي ليست يجري وأشار من قبل أي مؤشر آخر. لكنه سيحتاج إلى نقطة في، أو إشارة، عقدة أخرى. عقدة بعد الذهاب الى مرجع عقدة بعد ذلك، وهلم جرا وهكذا دواليك حتى تصل في نهاية المطاف نهاية القائمة رابط الخاص بك. وانك لن يكون لها المؤشر هناك. وهكذا، أعتقد أن مثل، على سلسلة، أو حتى إذا كان أي من رفاق بها، أنا لا أعرف، كما هو الحال مع حلقات الفاكهة عندما كنت صغيرا. تفعل سلسلة معا وحملها حول عنقك. اعتقد انها نفس الشيء بالضبط. لديك هذه الأشياء الصغيرة التي كنت يمكن سلسلة معا أن أشر إلى واحد بعد ذلك، إلى واحد بعد ذلك، وهلم جرا وهكذا دواليك حتى يكون لديك سلسلة من بنية بيانات التي يمكنك استخدامها كيفما تشاء. وبالتالي فإن الطريقة أن هذا كنا عادة إدراج أو حذف أي عقدة من وصلة قائمة مختلفة جدا تبعا للمكان الذي عقدة. لذلك، على سبيل المثال، ل مؤشرات دائما مشيرا في الوقت ذاته قيمة معينة، عند حذف أو إدراج عقدة، كنت ترغب في التأكد من أن المؤشر هو كل لافتا في الأمور في نصابها الصحيح. لذلك إذا أردت أن يحتمل إدراج عقدة جديدة مع قيمة واحدة داخل وصلة فرزها القائمة، ونحن نعلم جميعا هنا من الصورة التي سيكون ل تذهب في ما بين الرأس واثنين، أليس كذلك؟ لأن واحدا يناسب هناك حق. لكن الطريقة التي كنا نفعل ذلك هو من قبل dereferencing أول مؤشر من الرأس وإرسال ذلك إلى واحد. ولكن نأتي إلى مشكلة هنا. يمكن لأي شخص أن يرى ما هي المشكلة هو إذا كان لنا أن dereference الأول المؤشر من الرأس إلى واحد؟ ما هي المشكلة قد واجهتنا إذا حاولنا لإضافة هذا إلى الجزء الأمامي من مجموعة لدينا؟ الحضور: (غير مسموع) أستاذ: بالضبط. حتى هنا لدينا مؤشر الذي كان مرة واحدة لافتا من الرأس إلى اثنين. ولكن إذا كنت تحصل على التخلص من ذلك مؤشر، أشر إلى واحد، لدينا الآن أي فكرة أين تذهب للعثور على اثنين. لأنه كما قلت من قبل، كنت قد حصلت على قطعة عملاقة من الذاكرة في جهاز الكمبيوتر الخاص بك. كل هذه العقد يمكن أن يتخلل عشوائيا في أي مكان في جهاز الكمبيوتر الخاص بك. وكنت لا أعرف كيف للذهاب نحو إيجاد ذلك. وهكذا كنت في حاجة الى مؤشرات لافتا إلى كافة العقد في نهاية المطاف. وإلا إذا كنت غير قصد dereference واحد دون تكليف الأول قيمة أول مرة، كنت مجرد الذهاب لانقاص كل شيء بعد ذلك. فما نحن في طريقنا لل القيام به هو، لو كنت لأول مرة تريد إنشاء المؤشر على العقدة التي تريد إدراجها. نشير إلى المكان الذي أريد أن أدخله إلى، ثم بعد ذلك لك يمكن أن تشير الرأس إلى الخلف إلى واحد. هل هذا يعقل أن الجميع هنا؟ رائعة. أعتقد أنها تماما مثل سلسلة. إذا قمت بإضافة سلسلة، انها نوع من بديهية كيف كنت أذهب حول إدراج ذلك. حسنا، هذا هو في الواقع الكثير أقصر مما كنت اعتقد انه سيكون، لمدة خمس دقائق كلام معسول على قوائم الارتباط. فقط حتى يا رفاق لديهم الفكرة الأساسية لما هو. هنا لدينا جدول أعمال مسابقة الصفر. لا تدع هذا تخويف لك. وأنا أعلم أنه الكثير من المعلومات. يبدو مخيفا جدا. انها أيضا الكثير من، وأنا أعتقد، CSC النوع من الشروط. أشياء مثل سلاسل عشري، مؤشرات، تخصيص الذاكرة الديناميكية من حيث هي السبر مخيفة جدا. ولكن ونحن في طريقنا لكسر لهم إلى أسفل، والقيام ببعض المشاكل الممارسة حتى يتسنى لك جميع اللاعبين مستعدون لهذا الاختبار. كم منكم الرجال لديهم بدأت بالفعل دراسة؟ OK، يا رفاق ربما تريد لبدء الشروع في العمل على ذلك، لأن هذه المسابقة هو يوم غد. أو الخميس لبعض منكم. نعم، لذلك نحن ذاهبون للذهاب على بعض المشاكل الممارسة. إذا كنت تريد كل الرجال في اتخاذ من ورقة وقلم رصاص. ونحن في طريقنا لمجرد قضاء الغالبية العظمى من القسم اليوم تخطى بعض من ذلك حتى تتمكن اللاعبين لديهم فكرة عما يمكن توقعه في هذه المسابقة. حسنا. وقبل بضعة المطلبي تفاصيل فضلا، عن أي شخص الذي لم يكن على هذا الرابط هناك، إذا تذهب إلى cs50.yale.edu، على الجبهة هذه الصفحة هناك صلة تقول "حول مسابقة الصفر." رابط يأخذك هناك. إذا كنت لم أقرأ ذلك، الرجاء قراءتها. لأنه يخبرك المهم حقا المعلومات المتعلقة مسابقة. انا ذاهب الى سحب هذا الخروج من ان مجرد وجسديا، إذا يا رفاق لا أعرف من أين للذهاب، سيكون لدينا مشاكل. وحتى إذا كان آخر يوم لك في التعايش مع A لN، انتقل إلى قاعة كلية الحقوق. وإذا بك يبدأ الماضية مع P إلى Z، انتقل إلى قاعة ديفيز. وهذا لا ينطبق إلا على الناس في القسم الاربعاء. إذا كنت تتناولين هذه المسابقة على الخميس، أن تذهب إلى SSS 114 حيث محاضرتك هو عادة. الحضور: (غير مسموع) أستاذ: O لZ، وأنت تسير للذهاب إلى قاعة ديفيز. انا ذاهب الى تغيير ذلك، أليس كذلك؟ أوه، نعم، كنت لا مجرد تلقائيا. أوه نعم، هذا هو أنت كريستا. نعم، بلدي سيئة. نعم، يا الألف إلى الياء، وأنت تسير للذهاب الى ديفيز Auditorim. انا ذاهب لإصلاح هذا مرة واحدة يمكنني تحميل. نعم. وبعد ذلك أيضا شيء من المهم أن العقل غير أن الأربعاء، إذا كنت رسميا التحق في قسم الأربعاء، يجب أن تأخذ اختبارك يوم الاربعاء. وإذا كنت مسجلا في الخميس، يجب أن تأخذ اختبارك الخميس. وانها خلال وقت الدراسة. حيث اعتقد انها مثل ل01:00 02:15 يوم الأربعاء و2:30 حتي 03:45 يوم الخميس. إذا كان لديك صراعات لا يمكن التوفيق بينها، الأعذار العميد هي الشيء الوحيد، للأسف، نحن يمكن أن تتخذ. لأننا كان ل الغالبية العظمى من طلبات للتبديل من الأربعاء إلى الخميس. ونحن لا يمكن الوفاء إلا إذا لدينا طلب من عميد الكلية. حسنا. حتى قبل أن نبدأ في زوجان من المشاكل الممارسة، انا فقط أن يذهب أكثر نصائح اندي مفيدة للنجاح. يا رفاق، عند دراسة، كنت حقا ترغب في ممارسة كتابة التعليمات البرمجية باليد. أول مرة في حياتي أخذت مسابقة CS، لم أكن ممارسة الكتابة كود باليد قبل وكان غاية صدمة في مدى صعوبة. عند الرجال لا ندخل في العادة من كتابة كل شيء، يتعلق الأمر بشكل طبيعي جدا يجري قادرة على أن autocompleted الأقواس والفاصلة المنقوطة هناك. عندما تكتب بها من جهة، في بعض الأحيان انها جدا، من السهل جدا أن ننسى فاصلة منقوطة، أو ننسى لإغلاق قوس، أو ننسى لإغلاق القولون، أو شيء من هذا القبيل. وذلك عند كتابة التعليمات البرمجية من جهة، انها شعور مختلف تماما. لذلك يا رفاق، عندما كنت تعمل من خلال بعض المشاكل الممارسة، انها جيدة لممارسة اليوم حقا. أو غدا، وأفترض، إذا كنت أخذ مسابقة يوم الخميس. ثانيا، لدينا في الماضي، مثل، يستحق ثماني سنوات من الممارسة مسابقات الانترنت. ومسابقة هذا العام ربما يكون جدا، تشبه الى حد بعيد كل منهم. انهم جميعا متشابهة جدا. يمكنك الحصول على نوع من إلى النمط من نوع الأسئلة أن نسأل، نوع وظائف أننا سوف أكتب في ذلك، وهلم جرا، وهلم جرا. حتى تأخذ مسابقات الممارسة، خاصة في ظل ضيق الوقت. 75 دقيقة للقيام مسابقة ل ليس هناك الكثير من مقدار الوقت. انها طويلة جدا. وهكذا يا رفاق تريد حقا للتأكد من أنك الرجال في العادة من الكتابة كود باليد بسرعة. لأنك لا تريد لأول مرة الوقت لرؤية مسابقة من أن طول يكون على اختبارك. يا رفاق تريد حقا للتأكد من أن تتدرب مسبقا. رابعا، تريد مراجعة محاضرة ومقطع شرائح. لم يكن لديك لحفظ الأشياء. في الواقع، يسمح للجميع ورقة واحدة من الملاحظات ورقة بيضاء، أمام وخلف. يمكنك الرجال نوع أو الكتابة. إذا وجدت نفسك بحاجة إلى حفظ أي شيء، ووضعها أسفل على تلك الورقة. أنا أضمن لك، لا أريد أن يكون عالقا في منتصف هذا الاختبار يجري مثل، أوه نعم، ما هو وقت التشغيل من هذا النوع مقابل هذا النوع. مجرد وضعها ونسخه مباشرة من ورقة الملاحظة. ثم يمكنك فعلا مجرد استخدام الخاص بك الدماغ للتفكير في المشاكل بدلا من أن نذكر الحقائق. وهكذا حقا الاستفادة أي تفاصيل المتخصصة ان كنت تعتقد أنك بحاجة إلى حفظ، صوت نزول المطر عليه على ورقة المراجعة. OK، على أية أسئلة لوجستيا فيما يتعلق مسابقة قبل أن نبدأ بعض مشاكل مسابقة ممارسة؟ نعم؟ الحضور: لم تتح لي فرصة للنظر في هذه المسابقة (غير مسموع) ولكن ذلك سيكون تطبيق الغالب، أم أن هناك أيضا ستكون، مثل، أسئلة المعرفة؟ أستاذ: انها كثيرا. مع ذلك، فإن الطريقة التي I لو وصفت مسابقة is-- أضع معا بعض المشاكل الممارسة التي سحبت من جميع المسابقات. ولكن سترى أن هناك اثنين الرئيسية أنواع من الأسئلة سنطلب منك. واحد هو مستوى التفاصيل منخفض جدا من الاشياء. سنعطيك قطعة صغيرة من التعليمات البرمجية ويقول: هناك خطأ هنا؟ ما يمكن طبع هنا؟ ما سينتج هذا الرمز، وهلم جرا. حتى مستوى منخفض جدا من التفاصيل من المعلومات. وعلى الجانب الآخر، سيكون لدينا جدا مستوى عال الأسئلة القائم على المعرفة. هل يمكن ان توضح ما الفرق بين البحث الثنائي وبحث الخطي هو؟ لماذا نريد أن استخدام واحد على الآخر؟ ولعل ما هو GDB؟ لماذا نريد استخدام GDB؟ مستوى أعلى وأكثر أساسية أسئلة فهم. لذلك سترى خليط من اثنان منهم في مسابقة بك. أي شيء آخر قبل أن يتوجه مباشرة إلى ذلك؟ حسنا. الحضور: واحد أكثر من ذلك. أستاذ: أوه، أكثر واحد. آسف. الجمهور: نعم، كل الحق. هكذا كنت تقول في الدقيقة 75 و قصيرة جدا، مثل أنه من غير المرجح هذا وسوف ننتهي؟ أو، مثل، 75 دقائق هو بالضبط الكثير من الوقت كما أننا بحاجة لو كنا أعدت بشكل مناسب؟ أستاذ: OK، وبالتالي فإن مسابقة هو التحدي. هو بالتأكيد تحديا. سوف تجد نفسك في وقت قصير. ربما كنت تريد الذهاب لضرب، مثل 10، 15 دقيقة للذهاب، ويجري مثل القرف. لقد تركت الكثير للقيام به. وهذا شيء طيب تماما. الجميع سوف يشعرون بنفس الطريقة. مجرد أن تكون حذرا جدا في كم من الوقت لديك. وولهذا السبب أقول لكم الرجال تفعل مسابقات الممارسة. لأنه يعطي حقا شعور كبير ما هذه المسابقة ستكون مثل. حتى إذا وجدت نفسك يجري قادرة على الانتهاء من ممارسة مسابقات في كمية لا بأس بها من الوقت، يمكنك تيرة نفسك جيدا، ثم سوف لا يكون لديك مشكلة يوم الأربعاء أو الخميس. رائع. حتى لو كان الجميع wants-- أعتقد معظم الناس لديهم ورقة من الورق من بالفعل. انا ذاهب الى أساسا فقط تعطيك الأسئلة عينة، تعطيك الرجال، مثل، بضع دقائق للقيام بها. ونحن سوف يذهب أكثر كطبقة ما إجابات لمنهم. لذلك هذا هو نموذجي جدا السؤال أوائل سنقوم أسألك، مجرد تحويل الأرقام بين أسس مختلفة. ثنائي، كما يا رفاق يمكن أذكر، هو قاعدة اثنين. العشري هو قاعدة 10، أو ما كما يفسرها البشر عادة. ست عشري هو القاعدة 16، والذي هو الصفر من خلال تسع وكذلك من خلال F. ولذلك لا يوجد أربعة أرقام أنا يطلب منك الرجال لتحويل هنا. سأعطيك أحب، ثلاث ل أربع دقائق للتفكير في كيفية كنا نذهب حول حل هذه. الحضور: هل سمحنا الآلات الحاسبة؟ أستاذ: لن تحتاج الآلات الحاسبة، نعم. أعتقد بالإضافة الأساسية، كما أعتقد، هو وسيطلب من جميع اللاعبين للقيام به. وفقط حتى النوع الأول من لديهم شعور متى يتم الجميع، بحث، موجة، وأنا لا أعرف، وابتسامة، تبدو سعيدة إذا كنت فعلت. نعم. ربما بضع دقائق أكثر. حسنا، دعنا جعله. انا ذاهب عمدا ل تعطيك الرجال وقتا أقل من المحتمل أن تحتاج إلى قيام بعض هذه المشاكل، ببساطة لأنني أريد أن تأكد من أن نحصل من خلال مجموعة من المشاكل. لذلك لا تقلق إذا كنت لا لديك فرصة لإنهاء. موافق تماما طالما لديك فكرة عن كيفية التوجه نحو ذلك. لذلك دعونا نمضي قدما ونفعل أول واحد. لذلك أولا، لا أحد يريد أن يقول لي في ثنائي، ماذا كل هذه الأرقام تمثل من حيث قيمها؟ نعم؟ الحضور: اثنان ل قوة صفر، 2-1. أستاذ: بالضبط. هكذا. الحق، لذلك عادة عندما نكون في قاعدة 10 كل هذه تمثل هي، مثل، 10 إلى قاعدة الصفر، أليس كذلك؟ هذا هو مكان واحد الخاص بك. كل ما تبذلونه من المكان 10 هو هو 10 لسلطة واحدة. 100 المكان الذي هو 10 إلى قوة اثنين. مهما كنت في قاعدة يجري للقيام بنفس الشيء بالضبط، فقط مع قاعدة مختلفة. ثنائي لذلك، كل ما هو غير قاعدة اثنين. وأنت تسير لتحويل جميع الأرقام إلى قسمين إلى أي قوة من هذا الرقم. وحتى في هذا المعنى، ونحن يمكن أن يكون وسيلة أسهل أن تكون قادرة على إضافة ما يصل أو خلاصة القول كافة الأرقام في ترتيب لتحويلها إلى قاعدة 10. لذلك لا أحد يريد أن يقول لي ما الجواب لأول واحد هو في الأساس عشرة؟ الحضور: اثنان، [غير مسموع] أستاذ: نعم. الحضور: 42. أستاذ: 42، هناك تذهب. لذلك كانت الطريقة التي حصلت على هذه الإجابة من طرف فعل اثنين من الأول، وهو اثنان. بالإضافة إلى اثنين من الثلث، وهو ثمانية. زائد اثنين الى الخامس، الذي هو كل ما خلفها. يمكنك تلخيص عنها وانها 42. هو أي شخص الخلط على كيف وصلنا ذلك؟ بالإضافة الأساسية جدا، مثل قلت، يجب أن تكون على ما يرام. إن لم يكن، وأيضا، يمكننا أن ممارسة ذلك أيضا. ولكن هذا كل الحق. رائع. هل يريد أي شخص أن تعطيني الإجابة لثانية واحدة كذلك؟ 50؟ جيد. أي شخص الخلط حول كيفية وصلنا إما أن؟ بارد، سآخذ إجابات على الشريحة التالية. لذلك لا تقلق إذا كنت تحتاج إلى نسخ عليه. حسنا، حتى ست عشري هو اصعب قليلا. ولكن انا ذاهب لتظهر لك الرجال اختصار لكيفية القيام بذلك. حتى عشري، كما كنت تذكر، كل ما هو يكون 16. ولأننا كما يفعل البشر لا فعلا لدينا 16 أرقام لتمثيل ذلك، نذهب من صفر إلى تسعة، والتي لدينا لأول مرة 10 القيم، ثم نقوم به من خلال F، التي هي القيم الستة المقبلة. وبالتالي فإن أسهل طريقة للذهاب من أي رقم ثنائي إلى رقم سداسي عشري هو تفريقهم الى نصفين. وبالتالي فان أي رقم ثنائي سندفعه على الأرجح لن يكون ثمانية أرقام. يمكنك كسر فقط لهم حتى في الوسط. لذا فإن أول احدا-- واحدة واحدة، واحد واحد، واحد، واحد، واحدة واحدة. نوع من التفكير عنه، كما تعلمون، رسم مائل أو فاصلة بينهما. ويمكنك تحويل فقط مباشرة مهما كان هذا هو أول عدد عشري، ومهما هنا هو في الثاني من ست عشرية. لذلك تذكر من تدوين المشترك، ماذا القيم الست عشرية تبدأ؟ الحضور: صفر. أستاذ: 0X. لذلك نحن نعرف أنه في أي وقت نطلب منكم لتحويل أي عدد لعشري، أو في أي وقت ترى أي الرقم الذي يبدأ مع 0X، كنت أعرف أنه من قيمة ست عشرية. ثم كنت تريد الذهاب ليطلب منك تحديد ما هي هذه رقمين. والطريقة يمكنك أن تفعل ذلك، حتى يوفق أن نصف وفرز حتى أن نصف. حتى في هذا المثال، ما ان واحد، واحد، واحد، واحد يكون؟ ما قيمة من شأنه أن يكون؟ تريد أن تكون F، أليس كذلك؟ تريد أن تكون 15. ولذلك فإن هذا سيكون F. واحد، واحد، واحد، واحدة هنا أيضا F. حتى واحد، واحد، واحد، واحد، واحد، واحد، واحد، واحد في عشري، كل ما هو غير عشرية 0xFF. لأن يمثل هذا الشوط F، بقيمة 15، وهذا الشوط ممثلة F، قيمة 15. لأن نتذكر، نحن العد من صفر إلى تسعة. ومثل 10، B هو مثل 11، F 15. هل هذا معقول للجميع كيف وصلنا من ثنائي إلى رقم سداسي عشري؟ الحضور: وهكذا كيف نحصل 15 من واحد، واحد، واحد، واحد؟ أستاذ: نعم، هذا هو ثنائي، أليس كذلك؟ تخيل هذا هو مجرد رقم ثنائي. بحيث يكون لديك اثنين من ل الصفري، التي تعد واحدة. الحضور: أوه، حسنا. لذلك أنت فقط مجموعه من ذلك. أستاذ: نعم، ثم أنت فقط الإجمالية التي بها. هذا كل ما هو عليه. الحضور: OK. أستاذ: OK. الحضور: حتى تذهب من ثنائي إلى عشري إلى رقم سداسي عشري؟ أستاذ: هذا هو أسهل طريقة للقيام بذلك، نعم. كنت لن عشري ل العشري لديه سوى صفر إلى تسعة. نحن مجرد نوع من تقسيم هذا يصل الى قسمين. الحضور: (غير مسموع) باستخدام العشرية للعثور على ما كان يتطابق مع ما يصل إلى الست عشري. أستاذ: أعني، أنت فرز حتى باستخدام الرياضيات الأساسية. الجمهور: نعم. أستاذ: نعم، الى حد كبير. فمن مربكا بعض الشيء. ولكن نعرف فقط ان كنت يمكن تقسيم أيا كان هذه القيمة الى نصفين فقط. انظروا، ما هو هذا في ثنائي؟ ما عدد غير ذلك؟ انها سوف تكون شيء من الصفر إلى F. هنا أيضا ستكون شيء من الصفر إلى F. وبعد ذلك يمكنك فقط وضع هذين هناك حق. الحضور: OK. أستاذ: نعم. حسنا. لذلك يا رفاق تريد محاولة واحدة المقبل بعد ذلك؟ صفر، واحد صفر واحد، واحد صفر، واحد صفر. سأعطيك الرجال مثل 30 ثانية، منذ كنت ربما لم أكن أعرف خدعة لكيفية القيام بذلك في وقت سابق. OK، أي شخص ترغب في الحصول على هذا واحد لقطة؟ 0X5A. أستاذ: 0X5A. 5A. جيد. لذلك هذا هنا أن be-- تريد ليقول لنا كيف حصل ذلك؟ أولا، كيف تحصل على خمسة؟ الحضور: لأن الصفر، واحد صفر، واحد هو خمسة. أستاذ: هل يفهم الجميع لماذا صفر، واحد صفر، واحد هو خمسة؟ كنت قد حصلت على واحدة هنا. لديك شيء في غضون سنتين أو الأولى. في غضون سنتين أو الثانية، كنت لديك واحدة، وهو أربعة. لذلك قمت بإضافة بالإضافة إلى أربعة واحد، لديك خمسة. الجميع جيدا؟ حسنا. ثم ما يكون هذا ولماذا؟ ما عدد لا تتوافق مع A؟ الحضور: 10. أستاذ: وما هذا في قاعدة اثنين؟ الحضور: (غير مسموع) أستاذ: بالضبط. حتى هذه القيمة الثانية هنا سيكون 0X5A. الجميع جيدة حول كيفية تحويل؟ انها أبسط كثيرا مما كنت أعتقد أنه هو. أريد فقط للتأكد من تعلمون نصائح مفيدة والحيل لكيفية القيام بذلك. الحضور: لماذا يمكنك تقسيم فقط في منتصف هذا القبيل؟ أن يكون مجرد مثل، حسنا، أنا ذاهب فقط ل تهتم هذه أول مرة (غير مسموع)؟ أستاذ: لأن هذا هو الواقع الطريقة التي يتم تمثيل قيم ست عشرية. 0X، وهذا يعني في الواقع أي شيء آخر غير تخبرك انه من رقم سداسي عشري. وهذا يمثل دائما الأرقام الأربعة الأولى. وهذا يمثل دائما الأرقام الأربعة الأخيرة. وحتى هذه رقمين فقط تتوافق مع بت مختلفة. الحضور: ولذا فإننا سوف always-- أستاذ: أنت دائما ذاهب للحصول على ثمانية بت قيمة. الحضور: هل هذا مجرد مثل شيء هنا، أو أن شيئا على الإطلاق؟ أستاذ: هذا مجرد شيء في أجهزة الكمبيوتر، موافق. الحضور: OK. رائع. أستاذ: أيضا، لذلك في هذا المثال نحن تحويلها من ثنائي إلى عشري، ومن ثنائي إلى رقم سداسي عشري. يا رفاق نريد أن نتأكد من أنك أيضا ممارسة تسير في الاتجاه المعاكس. حتى إذا أعطيتك عشرية 0xFF، هل يمكن رسم أن الخروج في ثنائي، أليس كذلك؟ قمت بتحويل F إلى ثنائي، وهو واحد، واحد، واحد، واحد، تحويل F إلى ثنائي، الذي هو واحد، واحد، واحد، واحد. ولذا فإننا قد يطلب منك أن تفعل على العكس من ذلك. حتى عشري إلى ثنائي، أو سداسي عشري إلى ثنائي. لذلك أنت تريد أن تجعل تأكد من أنك تعرف كلا الاتجاهين. نحن على الأرجح سوف أسألك مزيج من الاثنين. نعم، لديك سؤال؟ أستطيع أن see-- كنت جيدة؟ الجمهور: نعم. أستاذ: OK. أنا جيدة لمحو هذا؟ رائعة. كل الحق، لذلك الإجابات هنا إذا كان أي شخص هو الغريب في وقت لاحق والحصول على الخلط. حسنا. الحضور: هل يهم إذا وضعنا رسائلنا في العاصمة أو صغيرة؟ أستاذ: إنه يفعل، ل الست عشري، من خلال اتفاقية، وأحرف كبيرة كل الشخصيات. لذلك من خلال F هي ستكون كبيرة. إذا وضعت صغيرة لذلك، أنا لا أعرف إذا كان لنا أن علامة بالضرورة أنها خاطئة. ولكن من الناحية النظرية، هذا ليس تقنيا كيف كنت من المفترض أن يكون عليه. ولذلك يجب أن تكون جميع الأحرف الكبيرة. نعم، سؤال جيد. حسنا. السؤال الثاني. النظر في هذا البرنامج جميل هنا. سوف نطرح هذا السؤال: سأعود هذا. لذلك، أولا، ما هو داخل القياسية io.h هذا الاهتمام لهذا البرنامج؟ ثانيا، ماذا باطل يعني في السطر الثالث؟ وثالثا، ماذا عودته من الصفر الرئيسية، كما خط الستة، يعني بشكل عام؟ إذا يا رفاق يريد أن يكتب تلك إلى أسفل، لأن لدي أن يعود مرة أخرى إلى الشريحة فقط حتى تستطيع أن ترى التعليمات البرمجية. هذا مثال، مثل، ربما أعلى مستوى السؤال أين نحن نطلب منكم ما هي الأشياء يعني في البرنامج. الجميع جيدة بالنسبة لي ل العودة إلى الشريحة؟ OK، بارد. ولذا فإنني سوف تعطيك الرجال مثل ربما ثلاثة دقائق للنظر في هذه العجالة حقيقية واحدة. حسنا، هذا واحد مثل من السهل إلى حد ما، من الناحية النظرية. هل يريد أحد أن يقول لي ما هو لأول مرة داخل قبل التجزئة بما في ذلك معيار ملف مكتبة io.h لدينا؟ لماذا نحن بحاجة إلى أن المكتبة وشملت لهذا البرنامج؟ ما هنا هل نحن في حاجة إليها ل؟ نعم؟ الجمهور: هو أنه عندما كنت وضعت أن printf؟ أستاذ: بالضبط. printf لذلك، في أي وقت كنت تأخذ مدخلات من المستخدم وطباعة شيء إلى الشاشة، وهذا الإدخال القياسي، مكتبة الناتج. التفكير في الأمر أن way-- المدخلات والمخرجات. هل لدي الانتاج؟ نعم أنا أفعل. لذلك أنا أعرف أنني ذاهب دائما ل تحتاج المكتبة توحيد i.o. حتى printf هي وظيفة التي نحتاج للوصول وتتضمن الهاشتاج مكتبة i.o القياسية. حسنا. ثانيا، ماذا يعني الفراغ؟ لدينا كثافة العمليات الرئيسي (الفراغ)، ماذا باطلة هنا أقصد هنا في السطر الثالث؟ نعم، في الجزء الخلفي. الحضور: (غير مسموع) أستاذ: بالضبط. تذكر ذلك، تعلمنا بدءا PSET لدينا التي يمكنك فعلا تحديد سطر الأوامر الحجج التي برنامجك، وأنك الوظيفة الرئيسية، ويأخذ كما كنت، المستخدم، نسميها. اذا كان لدينا باطلا، وهذا يعني أنك يمكن فقط تشغيل البرنامج مباشرة دون أي وسائط سطر الأوامر. الجميع اضح على ذلك؟ حسنا. وأخيرا لماذا نحن عناء القيام هذا الشيء عودة صفر هنا؟ لماذا نحن حتى يكون لها الباحث الرئيسي؟ لماذا لا يكون لنا فقط الفراغ الرئيسي باطل؟ نعم؟ الحضور: فقط لكي ما في وسعنا مما لا شك فيه أن هذا البرنامج هو تخرج بنجاح، كما تعارض إذا تم ترقيم ذلك. وكنا نعلم أن هذا نوع مختلف من الخطأ. أستاذ: نعم، بالضبط. هذا هو مجرد جدا الشيء التقليدي الذي نقوم به، غير ذلك تماما في نهاية البرنامج الخاص بك، فقط للتأكد من أن المهمة الرئيسية الخاصة بك يعمل بشكل صحيح، نحن دائما نريد أن نفعل عودة الصفر. على الرغم من أننا قد بالضرورة لا نرى أن تطبع أي مكان. لأنه كما المبرمجين، كما تعلمون، إذا لديك العديد من خطوط مختلفة من التعليمات البرمجية وكنت لا أعرف من أين هذه هي تسير بشكل خاطئ، وإذا حدث خطأ تريد تأكد من أن تحصل على هذا الخطأ. وذلك عادة إذا ما سارت الأمور الخطأ سيكون لدينا عودة واحد فقط للتأكد من أننا نعرف أنه هو. حتى إذا كنت ترى عودة الصفر، التي عادة يعني برنامجك نفذت بنجاح. جيد؟ رائع. OK، البرنامج الثاني هنا. النظر في ذلك. وإذا كنت ترى الرجال تطفو، ويمكن يا رفاق ربما لديك فكرة جيدة عن ما أنا على وشك أن أطلب منكم. حتى عندما يكون هذا البرنامج ينفذ، كما ترون، أنا اعلان تعويم داخل بلدي وظيفة الرئيسية. أنا تسميتها "الإجابة"، وأنا وضع أن يساوي واحد مقسوما على 10. أنا طبع، لواحد المكان العشري، أن تطفو. ثم أعود صفر. لذلك عند تنفيذ البرنامج، بذاكرتي إلى الجشع الآن، هذا البرنامج يطبع 0.0. كما نعلم جميعا، ونأمل أننا جميعا أعرف، واحد مقسوما 10 ليس 0.00، انها 0.1. ولكن لماذا يعتقد شرح هذا البرنامج أن 1 مقسوما على 10 يطبع إلى 0.1 الآخرين من 0.1؟ سأعطيك الرجال ربما مثل 30 ثواني للتفكير بسرعة فقط عن ذلك وسوف أعود إلى البرنامج. حسنا. أي شخص يريد أن إعطائها بالرصاص؟ في ثلاث جمل أو أقل، لأن عادة نحن الذهاب لتقييد جميع الأجوبة إلى ثلاث جمل أو أقل لذلك لم يكن اجتر فقط أشياء عشوائية على اختبارك. نعم، أخذ لقطة. الحضور: لذلك أعتقد أن هناك هذا شيء يسمى، مثل، (غير مسموع) لذلك قد يكون هناك، على سبيل المثال، قد يكون هناك، مثل، 0.09، أنه إذا قمت بطباعة أولا أرقام، فإنه سيكون 0.0؟ أستاذ: انهيار، ليس تماما. Christabell؟ الحضور: أنت تقسيم واحد و 10، وانهم على حد سواء صحيحة. وبالتالي فإن الطريقة التي انها تسير لتخزينه هو كعدد. وبالتالي فإن أقرب عدد صحيح يكون 0.0. وذلك أن 0.1. أستاذ: نعم، هذا أمر جيد حقا. هذا هو الجواب الصحيح. لذلك هذا هو مربكة جدا مفهوم لكثير من الاطفال. وأنا حقا نريد أن نتأكد من أن هذا ويتعزز في رأس الجميع. وذلك ما نسميه العائمة عدم الدقة نقطة، حيث السبب في الكثير من برامجك في الجشع لم تنجح في البداية كان ل كنت قد نسيت أن يلقي المتغير الخاص بك. ذلك ما قاله Christabell كانت صحيحة تماما. A تعويم غير دقيق بطبيعته. لأنه في الكمبيوتر، والحق، لدينا كمية محدودة من أجزاء من الذاكرة يمكننا استخدامها لتمثيل الأرقام. لذلك، على سبيل المثال، وهذا ID CS50 is-- أعتقد أنه من كمبيوتر 64 بت. لا يمكن إلا تعويم تكون ممثلة بمقدار محدود من هذه البتات. وحتى 0.1 مع الأصفار لانهائية، كان هذا هو 0.1، أليس كذلك؟ ولكن لا يمكننا تخزين الواقع هذا العدد في جهاز الكمبيوتر الخاص بنا. نحن فقط لم يكن لديك ذاكرة كافية للقيام بذلك. وحتى أقرب تقريب ما المخزنة في الذاكرة هو في الواقع شيء من هذا القبيل 0.000 شيء، شيء ما، شيء ما، شيء ما. التي، بمجرد اقتطاع ذلك، جولات وصولا الى 0.0. وحتى هذا المثال هو مجرد واحد الذي يوضح الكثير من القضايا لدينا كلما نحن تحاول أن تفعل الرياضيات بشكل غير صحيح دون الصب كعدد مختلفة. بذلك فقط تكون على حذر من حدوث ذلك. على مسابقات، إذا نعطيك كتلة من رمز وانها مثل، ما يطبع في نهاية؟ واذا كان بعض قيمة عشوائية لك يجب أن الرجال يعرفون لماذا هذا يحدث. نعم؟ الحضور: يتم التخلص من اقتطاع كل شيء بعد نقطة معينة؟ [غير مسموع] أستاذ: نعم، ذلك الواقع هذا هو مثال سيء حقا، لأن 0.100 مهما فعلا سوف اقتطاع الى 0.1. ولكن إذا كنت لتشغيل it-- أنا لا تذكر، لأن العام الماضي أنها تجلى ذلك في برنامج مختلف. ركضوا في ما يسمى وCS50 الأجهزة، التي يختلف عن الهوية. وكان أن نظام 32 بت، على ما أعتقد. وحيث كانت هناك أرقام مختلفة. ولكن في الأساس، ونعرف تماما أن المفهوم الكامل للاقتطاع وكيف يقطع مجرد أمور قبالة. وحتى إذا كان rounds-- الحضور: بدون التقريب. أستاذ: بالضبط. نعم. رائع. مرحبا، في الجزء الخلفي. نحن ذاهبون فقط على بعض أسئلة المراجعة مسابقة. حسنا. والنظر في ذلك برنامج مختلف هنا. انا ذاهب الى ان نعطيكم رفاق دقيقتين لقراءة أكثر من ذلك. هذا هو الشيء الذي كان لغاية في الآونة الأخيرة وأعتقد أن فجر الكثير منكم عقول الرجال و. ولكننا بصدد الحديث من خلال هذا مرة أخرى فقط للتأكد من أنك أفهم ذلك تماما. حسنا. حسنا. أي شخص بحاجة الى مزيد من الوقت ل من خلال قراءة هذا الرمز؟ حسنا. لذلك يبدو لي أن في هذا البرنامج أنا خلق سلسلتين باستخدام GetString. واحدة تسمى الصورة واحدة تسمى ر. واذا كانا لا يزالان على قدم المساواة يساوي بعضها البعض، فإنه يجب طباعة "أنت اكتب نفس الشيء ". ولكن elsewise، فإنه طباعة، "أنت كتابة أشياء مختلفة "، أليس كذلك؟ يبدو جدا وبسيطة جدا. ولكن، مع ذلك، إذا كنت فعلا محاولة لكتابة هذا البرنامج، يبدو أنه حتى عندما كنت إدخال نفس الجمل بالضبط، لا يزال يطبع خارج، "أنت كتابة أشياء مختلفة! " هل يريد أي شخص أن يأخذ اطلاق النار على لماذا هذا البرنامج دائما يستجيب أن المدخلات تختلف، حتى عندما الكلمات نفسها هي نفسها؟ حتى إذا كان لي أن input-- ديفيد الحب استخدام مثال مثل أمي، أليس كذلك؟ صغيرة M-O-M لS، T يساوي صغيرة M-O-M. إذا ركضت ذلك من خلال هذا الرمز، لماذا يفعل ذلك طباعة "كتبته أشياء مختلفة؟" لا أحد يحتاج أكثر الوقت للتفكير في هذا الأمر؟ حسنا، أنا أعتقد نحن في حالة جيدة. نعم؟ الحضور: OK، لذلك فمن شيئا عن حيث يتم تخزينها في الذاكرة، أليس كذلك؟ أستاذ: نعم. الحضور: أين انها مثل، إذا كانت هذه يتم تخزين سلسلة الصورة في الذاكرة spot-- أنا اختراع this-- هو صفر. أستاذ: طبعا. الحضور: وسلسلة ر يتم تخزين في بقعة الذاكرة، مثل، 167، ثم هل الصفر لا يساوي 167. أستاذ: بالضبط. OK، لذلك تذكر هذا لا يصدق الوحي شرحنا لكم الرجال في الأسبوع الماضي، أن سلاسل لا توجد حقا؟ عندما نخلق ما يسمى سلسلة نحن، في الواقع، خلق ما يسمى نجمة شار. الذي كل ما هو غير مؤشر سلسلة أو مجموعة من حرف. وحتى في هذا المثال، إذا كنت كانت لإدخال M-O-M الطريق أن جهاز الكمبيوتر الخاص بي سوف مخزن هو ضمن الذاكرة مائل الصفر، أليس كذلك؟ هذه أربعة أحرف، حرف، سيتم تخزينها في مكان ما. ثم هذه الأربعة الشخصيات، مائل الصفر، يتم تخزين في مكان آخر، أليس كذلك؟ ليس لدي أي فكرة عن مكان عناوين هي، انهم في مكان ما في جهاز الكمبيوتر الخاص بي. لكنني لا أعرف بالضبط أين هم. عندما أقوم بإنشاء سلسلة الصورة، كل ما هو حقا هو مؤشر إلى تبدأ هذه السلسلة. وعندما خلق هذه القيمة ر، كل ما هو مؤشر إلى هنا. وحتى عندما كنت في محاولة لمساواة وتحقق لمعرفة ما إذا الصورة غير متساوين يساوي تي، والكمبيوتر هو في الحقيقة مجرد العودة إلى لكم عنوان من هذه م وعنوان ذلك م. وبسبب انهم اثنين قطع منفصلة من البيانات التي يتم تخزينها في مختلفين العناوين في جهاز الكمبيوتر الخاص بك، جهاز الكمبيوتر الخاص بك أبدا ل التعرف عليها بأنها هي نفسها. لا يريدون أي شخص إعطاء النار على ما نحن يجب أن تفعل إذا أردنا تصحيح هذا ويكون لديه برنامج تشغيل الصحيح بدلا من ذلك؟ نفكر في ذلك لبضع ثواني. ماذا نحن بحاجة إلى تغيير ل الحصول على هذا البرنامج عمل الطريقة التي تريد أن تعمل؟ نعم، تريد أن تأخذ طعنة في ذلك؟ الحضور: هل نحن نحاول dereference لل مؤشر وتحقق من خلال مجموعة؟ أستاذ: هذا واحد طريقة للقيام بذلك. لذلك، ما هو اسمك مرة أخرى؟ أنا آسف، وأذكر لي. زي: زي. أستاذ: نعم، فما زي اقترح ستعمل على الاطلاق. الصحيح؟ نستطيع dereference المؤشر ويذهب في الواقع والوصول البيانات الفعلية داخل هنا. ويمكن لنا أن نقارن فقط الشاشة بأكملها. يمكننا القول، OK، مؤشر، تعطيني ما هو داخل هنا. فإنه إرجاع م. وأود أن أقول، مؤشر، تعطيني ما هو داخل هنا. إرجاع م. هل تلك المباراة؟ نعم فعلا. ثم ننتقل. واصلنا التحقق من اثنين كامل سلاسل على طول الطريق حتى النهاية ومعرفة ما إذا كان هؤلاء الناس سواسية، إذا كان كل القيم متساوية. وإذا كان كل القيم متساوية، ثم نعرف سلاسل صحيحة. على الاطلاق، وهذه هي الطريقة التي كنا نفعل ذلك؟ لا أحد الخلط على أي شيء من هذا؟ كامل مفهوم كيف السلاسل هي مؤشرات حقا فقط، وكيف لا وجود لها في الواقع؟ ولماذا نحصل على الأخطاء مثل الطريقة نحصل عليه؟ لأن أنا أضمن لكم يا رفاق، مؤشرات وتخصيص سلسلة والذاكرة وسوف يأتي. نعم؟ الحضور: (غير مسموع) dereference ذلك، عليك فقط وضع نجم (غير مسموع) أستاذ: الحق. وذلك لderererence وسيلة المؤشر للذهاب إلى هذا العنوان للمؤشر والحصول على البيانات، والقيمة هناك. وسيلة لتحقيق ذلك هي مؤشر نجم. لا تخلط بين هذا و. الحضور: (غير مسموع). أستاذ: نعم. الحضور: لذلك يمكنك الكتابة فقط إذا نجم قدم المساواة مع الرجل متساوين نجمة ر. أستاذ: حسنا، لا. لا. الجمهور: هذا ليس جيدا بما فيه الكفاية، أليس كذلك؟ أستاذ: انها ليست، لأنك فحص فقط الحرف الأول. ربما كنت تريد الذهاب ل تحتاج نوعا من حلقة بالتكرار عبر كل واحد حرف في كل من السلاسل. نعم. حتى إذا كنت تريد أن تحقق لمجرد أن نرى إذا بدأوا مع نفس الشيء، يمكنك القيام به إذا، نجم الصورة يساوي نجم ر. ثم أنت تعلم أن ما لا يقل عن أنها بدأت مع نفس الحرف. نعم؟ الحضور: ولذلك فإن السبيل يمكنك أن تفعل ذلك سيكون وكأنه جزءا لا يتجزأ من حلقة أو المؤشر؟ أستاذ: نعم. الى حد كبير مجرد لحلقة. تذكر، ديفيد في الدرجة المذكورة ونحوي السكر الحر؟ وكان لديه هذا جدا شيء من الخلط بين النجوم ر زائد واحد، حيث أن دمج من خلال وتحريك المؤشر؟ وأسهل طريقة للقيام هذا هو مجرد ر ط. حتى انها مجرد صفيف. الطريقة التي عملتم على ل حلقة التي امتدت من الصفر إلى i، حيث أنا هو طول سلسلة، هل يمكن فقط الكتابة التي بدلا من ان يفعل مؤشر كله، شيء المرجعية. وبالتالي فإن هذه الأمور هي بالضبط ما يعادلها في جهاز الكمبيوتر الخاص بك. يا رفاق ربما لن تحتاج إلى معرفة ذلك، ولكن من الجيد أن مجرد نوع من لدينا في الظهر عقلك. أعلم تماما أن الكمبيوتر يعترف كتل مختلفة من التعليمات البرمجية كما الشيء نفسه. لأن هذا هو فقط أكثر بكثير المستعمل ودية بالنسبة لنا لتقديم الحقيقة كما هي مجموعة. انها مجرد أسهل. الحضور: حتى استخدام strlen إلى مثل، get-- أستاذ: نعم. الحضور: OK. أستاذ: هل يمكن استخدام strlen، أو إذا كنت لم يكن لديك strlen يمكنك القيام به للتو حتى تصل مائل الصفر على حد سواء. إما أن تعمل. نعم. الحضور: حتى انها لdereference كل حرف واحد إذا كنا فعلا كتابة هذا الرمز، ونحن يمكن القيام به فقط ر قوسين ط مثل مع النجم أمامه؟ أستاذ: نعم، يساوي يساوي الصورة قوس ط، ومن ثم مواصلة التحرك ط أسفل حتى أن تصل إلى نهاية. نعم، هذا ما كنت تفعل. وسآخذ الواقع بجوار مثال عندما كنا في الواقع إرسال strlen هكذا أنتم رفاق النوع من الحصول على للعب مع حولها قليلا. هكذا كل واضحة على الذاكرة فقط، سلاسل، المؤشرات، عناوين الجودة؟ بعض المفاهيم مستوى أعلى أنك الإرادة لحاجة أكيدة لمعرفة على مسابقة غدا. حسنا. جيد. نعم. حسنا، الشيء الوحيد الذي سنطلب أيضا لكم، كما نفعل كل عام في مسابقة، هو، لنفترض أن كنت قد نسيت (والتي يبدو أننا ننسى أن تفعل سنويا) حيث يتم تعريف ملف الرأس strlen. وذلك لدينا لإعادة كتابة ذلك بأنفسنا. وفيما يلي قائمة من المبادئ التوجيهية يمكننا أن نقدم لكم الرجال حيث تحصل على افتراض أن ق فإن سلسلة لا تكون فارغة. يمكن أن نفترض أن الصورة ستكون إنهاء بخط مائل الصفر. حتى تعرف أن ما انها سوف تنتهي. وعلى سبيل المثال، أن أن طول مرحبا يكون خمسة. لذلك يمكنك أن تفترض أن مرحبا سوف يكون خمسة، H-E-L-L-O. لم يكن لديك لنفترض أن المؤخر حسابات الصفر لطول. هذا آخر شيء هنا، لا قلق بشأن تجاوز عدد صحيح. هل يتذكر أحد ما هو عدد صحيح فيض؟ الحضور: يتجاوز طول (غير مسموع). أستاذ: نعم، هل يمكن ان توضح قليلا، ماذا يعني ذلك؟ الحضور: لذلك، أعتقد أنه يعود للمثال اقتطاع وقت سابق. ولكن إذا كان لديك فقط الكثير من الأرقام التي تتجاوز عدد البتات التي يمكنك تعيينها في الواقع أنه سيكون مجرد نوع من قطع. أستاذ: نعم، هكذا نموذجي كمبيوتر، كم بت لدينا؟ الحضور: 32؟ أستاذ: نعم، 32، الصحيح. وحتى هذا، ما، أربعة مليار ملياري؟ أربعة مليار دولار، ما يصل إلى أربعة مليارات الأعداد الصحيحة الموجبة، أليس كذلك؟ ملياري سلبية، ملياري إيجابية، يعتمد على الطريقة التي تريد أن تفعل ذلك. وذلك أساسا أننا يمكن أن يكون ما يكفي من الأعداد الصحيحة التي يمكن أن تصل إلى اثنين إلى 31 ناقص 1، أليس كذلك؟ لأنه بمجرد أننا ضرب اثنين إلى 32، ونحن لا لدى تلك الذاكرة كبيرة في جهاز الكمبيوتر الخاص بنا. وهكذا، من الناحية النظرية، وأنا يمكن أن يأتي مع عدد وهذا هو، مثل، اثنين إلى 46. انها عدد كبير الحمار، ولكن نظريا يمكن لك. وتجاوز عدد صحيح ذلك هو إذا حاولت إنشاء صحيح أن يتجاوز ما الكمبيوتر الخاص بك هو قادر على تخزين. وهكذا يا رفاق ل هذا المثال ليس لديها ما يدعو للقلق لنا مما يتيح لك عملاق سلسلة هذا هو اثنين إلى حرف ال32 طويل. التي سيتم يعني حقا. كل الحق، لذلك أنا مجرد الذهاب الى اعطاء يا رفاق الهيكل الأساسي من هذا. وأنت تسير لإنشاء وظيفة دعا الباحث strlen حيث ويمر في، نجم شار، أو سلسلة، مؤشر إلى سلسلة تسمى الصورة. كل الحق، والجميع نسخ هذا إلى أسفل. رائع. Oops-- طريقة أخرى. لذلك هذا هو نوع من مثل قطعة أصعب من المشكلة، ولذا فإنني سوف تعطيك الرجال ربما خمسة ل ست دقائق لنوع من العصف الذهني والكتابة بهذه المهمة. الحضور: نحن لا حساب (غير مسموع)، ليس لدينا لاستخدام عدد صحيح؟ أستاذ: لا، أنت لا تفعل ذلك. سأعطيك الرجال تلميحا. قد يكون حلقة في حين مفيد جدا هنا. نعم. من هنا حلوى. سوف الحلوى تكون متاحة أيضا للمسابقة، على ما أعتقد. لذلك يا رفاق سوف تكون جميع مسكر يصل غدا. يمكن I-- كنت حصلت عليه. الحضور: OK. أستاذ: نعم. ربما 30 ثانية أكثر أو نحو ذلك. كل الحق، وإذا كنت لم تفعل، فلا تقلق. سوف نمضي من خلال هذا معا. حسنا. لذلك أنا ذاهب لمجرد تخطيط لل البنية الأساسية لهذه الوظيفة هنا. الباحث strlen. أولا، لا أحد يريد أن أقول لي ما يعني أن كثافة العمليات؟ نحن بحاجة إلى أن يكون في هذه الوظيفة. الحضور: Strlen (غير مسموع). أستاذ: بالضبط. لذلك كل ما يحدث هنا، نحن بحاجة للعودة عدد صحيح. وكما هو محدد في المواصفات، نريد أن return-- لأنها تذهب اللاعبين، مجرد الاستمرار. كل شيء جيد. أكل كل شيء لذلك أنا لم يكن لديك لإعادته، في الواقع. كثافة العمليات يعني فقط ان كنت ستكون عودته صحيح. ما هو هذا شار نجمة الصورة؟ ماذا يعني ذلك؟ الحضور: مثل، ما يجري إدخال في. أستاذ: بالضبط. وما هو تقريبا الشيء نفسه كنجم شار؟ الحضور: سلسلة؟ أستاذ: بالضبط. لذلك كل ما نقوم به هو إعطاء هذا مؤشر إلى سلسلة. حسنا. رائع. أيضا، لا ننسى، إذا نسينا لتعطيك هذه الأقواس، لا ننسى أن يكتب عليها بنفسك. لأن نظريا، رمز الخاص بك هو غير صحيحة إذا كنت قد نسيت أن أكتب لهم. فقط تدفع دائما الاهتمام. مثل، أشياء صغيرة ان كنت لا تلاحظ عندما كنت برمجة على الكمبيوتر المحمول، لأن الكمبيوتر المحمول يفعل ذلك بالنسبة لك؟ لا ننسى عندما كنت تكتب باليد. نعم؟ الحضور: ولكن كيف غير صحيح؟ مثل، لم نحصل على المشكلة برمتها خاطئة؟ أستاذ: لا، لا. لا تقلق. انها فعلا ممكن من الناحية النظرية بالنسبة لك للحصول على نقاط كاملة عن سؤال حتى لو التعليمات البرمجية أبدا تشغيل في الحياة الحقيقية. أقترح عليك أن لا تحاول لتحقيق ذلك. على سبيل المثال، إذا كان كل شيء مثل هذا هنا هو الحق، ولكنك نسيت القولون أو قوس، التعليمات البرمجية لن تعمل فعلا. ولكننا قد يكون رحيما. نعم؟ الحضور: هل لديك ل التعليق على الكتابة اليدوية لدينا؟ أستاذ: لا، لا، لا مخاوف بشأن ذلك. لم يعلق. وينبغي أن يكون اسلوب جيد. مثل، لا سجل سماش كل شيء على سطر واحد. ونحن لن تكون سعيدة معك إذا كنت تفعل ذلك. لا يريدون أي شخص تعطيني السطر الأول؟ تلميح، فإنه من السهل جدا. نعم؟ الحضور: كثافة العمليات، ن يساوي الصفر. مجرد مجموعة حتى العداد. أستاذ: لذلك نحن نريد بعض نوع من عداد، أليس كذلك؟ أنا ذاهب لمجرد تسميته "الاعتماد" من أجل سهولة القراءة. ماذا نريد أن نضعها يساوي؟ الحضور: صفر. أستاذ: نعم. منقوطة. كما انها منقوطة الرسم غريبة جدا. مجرد ممارسة فعل ذلك. لذلك نحن نريد أن يكون أولا عداد من نوع int. لأننا نريد أن العد حتى كيف العديد من الشخصيات أو الحروف هي في هذه السلسلة، أليس كذلك؟ من السهل جدا الخطوة الأولى. OK، أكثر ربما قليلا معقدة الآن، كيف نحن ذاهبون للقيام بذلك؟ لا يريدون أي شخص تعطيني سطر من التعليمات البرمجية التي قد تكون قادرة على مساعدة حلقة من خلال كل ما هذا؟ نعم، والروح الشجعان في الظهر؟ الحضور: OK، وذلك في حين نقطة العلامات النجمية، ونعم، نجم الصورة، لا يساوي الصفر، ثم تفعل شيئا؟ أستاذ: هذا حقا، حقا قريبة. حقا قريبة. لذلك أنا ذاهب لمعالجة شيئين في ذلك. أولا وقبل كل شيء، انها ليست بالضبط صفر. ما هذا؟ انها فاصل لاغية، وهو مائل الصفر. حتى انهم مختلفة في حيث كيفية مخزنة. لذلك كنت قريبة جدا. وثانيا، نحن لا نريد لمجرد تحريك المؤشر. نريد أن الواقع الوصول إلى القيم، أليس كذلك؟ وهكذا كيف نفعل ذلك؟ سهل جدا. لا تفكر في المؤشرات، لا تفكر في الذكريات. العودة إلى أسبوعين من هذه الدورة. الحضور: (غير مسموع). أستاذ: بدءا، تذكر؟ ما هي السلاسل؟ كيف يتم تخزينها في الذاكرة؟ الحضور: كنت رفعوا. أستاذ: وهي التي اثيرت. كيف لنا إذن أن الوصول كل حرف في الداخل؟ الحضور: (غير مسموع). أستاذ: بالضبط. حتى while-- ما يدور داخل هنا؟ S من - الحضور: I. أستاذ: أوه، أنا غير موجود، أليس كذلك؟ الحضور: أوه، عد؟ أستاذ: يمكننا فقط استخدام العد، لا نستطيع نحن؟ الحضور: عذرا، دعوت هو أنا. أستاذ: نعم، كل شيء جيد. لدينا متغير هنا هذا بالفعل أعلن ومكافحة دينا. فلماذا لا نستخدم فقط أن للتنقل عبر حلقة في حين؟ هل هذا منطقي؟ وذلك في حين الصورة من count-- لا أحد يريد أن تعطيني ما يحدث بعد هنا؟ الحضور: إنه لا يساوي. أستاذ: لا يساوي، أليس كذلك؟ انها يساوي الانفجار، تعجب يساوي، كل ما تريد يا رفاق ل نسميها لا equal-- الحضور: (غير مسموع). أستاذ: نعم. تذكر اقتباس واحد هو لحرف، ونقلت المزدوجة للسلسلة. كن حذرا عند استخدامها. حتى عندما كنا نبحث من خلال مجموعة، والحرف الأخير، نحن نعلم أننا لا نريد أن يكون مائل الصفر. وذلك في حين. نحن لسنا في نهاية السلسلة. ماذا نريد القيام به في الداخل؟ الحضور: نحن نريد أن تضيف إلى عداد حتى يكون ذلك ضروريا زائد زائد؟ أستاذ: بالضبط. حتى هنا ونحن في طريقنا للقيام عد، عد زائد زائد. المفقودين سطر واحد أكثر من ذلك. نحن تقريبا هناك. ما نحن ننسى أن تفعل؟ الحضور: وبالعودة الصفر؟ أستاذ: هل تريد العودة الصفر؟ الجمهور: لا، والعودة إلى strlen. انتظر. أستاذ: والتي يتم تخزينها في؟ الحضور: عدد. العد. أستاذ: بالضبط. حتى هنا ونحن في طريقنا للعودة العد. لأن ما نحن تفعل هنا ultimately-- لدينا متغير مكافحة هذا الذهاب الى زيادة من خلال سلسلة لدينا. ونحن في طريقنا للحفاظ على الذهاب، والحفاظ على الذهاب، وحولها في هذه الحلقة. وعلى الرغم من أننا لسنا في نهاية هذا السلسلة، والذي هو فاصل فارغة. وفي كل مرة نذهب من خلال ذلك، فإننا سنضيف إلى مكافحة دينا. ونحن في طريقنا أيضا جنبا إلى جنب في هذه المجموعة. وفي النهاية، بمجرد أن ضرب الصفري، ونحن نعلم، أوه، ما في وسعنا كسر، وعودة العد. لدينا strlen لدينا. لا تحصل الجميع كيف وقد نفذ هذا؟ في حين loops-- وأنا أعلم أننا لم فعلت الكثير جدا معهم، ولكنهم عادة جدا ومفيدة جدا إذا كنت لا أعرف ما كنت وقف حالة ديها بالضرورة أن يكون. سؤال؟ الحضور: هل نكتب اغية على شرط حين؟ أستاذ: على الرغم؟ نعم، حتى في هذه المشكلة كان لي عليك يفترض أن الرجال الصورة لن تكون فارغة. لأن تذكر، من الناحية النظرية، إذا أعطيتك مؤشر الذي كان كبير جدا من الذاكرة، انها تعطيك لاغية، أليس كذلك؟ هذا ما التشغيلية أن النظام القيام به. حتى لو كنت لا أقول لك أن نفترض الصورة سيكون لاغيا، تحتاج إلى التحقق. حتى هنا، عليك أن تفعل، إذا الصورة يساوي يساوي باطلة، وعودة واحد. شيء من هذا القبيل. الحضور: (غير مسموع) صفر. أستاذ: OK، سأقول لماذا لا نستطيع أن نفعل ذلك. لأن تذكر في الذاكرة، والحق هنا. سنذهب هنا. كنت قد حصلت على كتل عملاقة من الذاكرة مع كل شبكات هذا المتجر قيم مختلفة، أليس كذلك؟ وهكذا is-- كل سلسلة ل سبيل المثال، إذا أردنا أن المدخلات مرحبا، سيكون H-E-L-L-O مائل الصفر، أليس كذلك؟ ثم من يدري، مثل عشوائي الأشياء التي هي هنا بعد ذلك. نحن لا نعرف فعلا ما هناك. وحتى لو كنت لتفعل بدلا من مائل الصفر، لاغية، قد لا يكون لاغيا. لأنه فقط قد يعني بعض الأشياء الأخرى عشوائية التي لا تنتمي في سلسلة الخاص بك. وحتى الطريقة التي نعرف دائما أن سلسلة تنتهي هي بخط مائل الصفر. وحتى هذا دائما كيف نحن تحقق لمعرفة نهاية السلسلة. لاغية، كل ما يعنيه ذلك هو إذا كان لديك مؤشر غير موجود، الأول قبل كل شيء، أو إذا الذاكرة الخاصة بك هو مجرد كبيرة بحيث لا يمكنك العودة إليها، ثم انها تريد ان تكون فارغة. لذا كن حذرا جدا عند التفريق الفرق بين لاغية ومائل الصفر. نعم. الجميع موافق مع هذا؟ حسنا. لذلك اضطررت يا رفاق كتابة strlen. عمليا نحن يمكن أن نسأل أيضا أن تكتب من A إلى I، أن نتذكر أن "Atwoa" أو أيا كان يا رفاق نريد أن نسميها؟ أن وظيفة في Vigenere وقيصر، أن تحويل قيمة ASCII إلى عدد صحيح؟ التي تأتي أيضا على المسابقات الماضية وظائف طلبنا منك أن تكتب. الى حد كبير أي وظيفة ان كنت قد استخدمت وغير من السهل جدا أن تكتب لنفسك، أجهزة الاستشعار مثل أقل، هو الجزء العلوي، لخفض، لالعلوي. وظائف من شأنها أن تحويل سلسلة من صغيرة إلى كبيرة. نحن جميعا نعرف كيف نفعل ذلك، أليس كذلك؟ فإنه من السهل جدا. فقط نريد أن نتأكد من أنك can-- انها نفس عملية التفكير. كنت مجرد تكرار خلال ويمكنك تغيير الامور. اما الاعتماد أو عندما تشغيل الامور بشكل مختلف. وأود أن suggest-- I لا أعرف ما إذا كنا في طريقنا أن أطلب منك أن تحفظ ما عاصمة A أو Z العاصمة، أو صغيرة A أو صغيرة ض هي في أسكي، ولكن أود أن أقترح ربما كتابة ذلك في القضية نحن نفعل. فقط حتى يا رفاق يكون مرجعا. مثل الأحرف الكبيرة A هو، ماذا، 197؟ ثم صغيرة مثل 50 شيئا. 65، نعم، هناك تذهب. حتى مجرد معرفة الى حد كبير الفرق بينهما هو 32. هذا أمر مهم جدا. نعم. أنا خير على هذه؟ حسنا. الحضور: نحن يمكن إرسال نظريا بعض هذه أسفل، وكذلك على little-- لدينا أستاذ: أنت نظريا يمكن أن مجرد نسخ وظيفة إلى أسفل. هذا صحيح. الجمهور: لا (غير مسموع). أستاذ: يا رفاق لديهم ورقة. يا رفاق لديهم ورقة المذكرة. يمكنك كتابته. يمكنك الكتابة عليه. يمكنك أن تفعل ما تريد مع ذلك. نعم. حتى من الناحية النظرية، إذا تريد، والذهاب ل. الحضور: (غير مسموع) ولكننا لا حقا تحتاج بالضرورة إلى تذكر وقيمة، ونحن يمكن فقط استخدام لأعلى أو ل انخفاض وظيفة، أليس كذلك؟ أستاذ: نعم. ولكن إذا أعطينا عليك سؤالا تقول الكتابة إلى العلوي، ثم كنت في حاجة إلى الكتابة عنها. لذلك يا رفاق يمكن أن نفترض أن لك الرجال من الوصول إلى جميع وظائف، ولكن إذا كنت تريد استخدامه لأعلى أو ل أقل من ذلك، ماذا لديك أيضا أن تفعل؟ الحضور: (غير مسموع) استخدام CS50 (غير مسموع) أستاذ: هل CS50.h؟ كن حذرا هناك. وذلك لالعليا، لخفض، هو الجزء العلوي، هو أقل من ذلك، وظائف تنطوي سلسلة التلاعب هم وكل ذلك في إطار إما أسكي أو داخل مكتبة الرياضيات أو داخل المكتبة السلسلة. حتى إذا كان استخدام يا رفاق تلك وظائف، وتوخي الحذر أن نتذكر إدراج ذلك الرأس. لذلك ربما أيضا شيء لك تريد أن تدرج في الميزانية الخاصة بك، ما هي رأس؟ ما هي المكتبات كنت أستعمل؟ ما هي الوظائف داخل هذه المكتبات؟ فمن المهم. نعم؟ الحضور: ويمكننا فقط شرطي خارج والقيام الهاشتاج من خلال تماما كل حرف نحن من أي وقت مضى ينظر مثل على جميع الأسئلة؟ أستاذ: هل يمكن. أنا لا أعرف كيف سعيد ونحن في طريقنا لتكون على درجة أن مسابقة عند كل قطعة من التعليمات البرمجية هو مرتين طالما أنه يجب أن يكون. أنا لا أعرف، ونحن قد خلع نقطة لأسلوب. ولكن من الناحية النظرية الخاصة بك سوف كود يكون على حق. يا رفاق يمكن شرطي من و تشمل فقط كل شيء. وهذا جيد جدا، نعم. الحضور: (غير مسموع). أستاذ: نعم. أود أن أقترح لا تفعل ذلك على الرغم من. نعم. الحضور: بارد. أستاذ: سؤال جيد. الحضور: لذا، فإن السيناريو الأسوأ. أستاذ: إن أسوأ الحالات. إذا كنت قد نسيت تماما، هل يمكن أن تفعل ذلك. نعم. نعم، رمز الحق هناك. كنت ن بدلا من العد ولكن، ل أعرف، كل ما يطفو القارب الخاص بك. الحضور: الانتظار، لذلك نحن لن يكون لالهاشتاج وتشمل لأننا بدءا من كثافة العمليات؟ أستاذ: نعم، أنا فقط يفترض أن طلب منا أن يكتب وظيفة. إذا أردت أن تكون آمنة، كنت ربما يمكن وضعه هناك. ولكن أنا فقط لا تهتم، نعم. أنا لا أعرف حتى لو كنت تحتاج إلى أي مكتبة لذلك. لأنك لا تطبع حقا أي شيء أو أي شيء، أليس كذلك؟ نعم، أنا لا أعرف إذا كان كنت في حاجة الى المكتبة. حسنا. وهذا هو أيضا أكثر قليلا على طول خطوط التلاعب الذاكرة. هذا النوع من صعبة بعض الشيء. التفكير في هذا. لديك وظيفة تسمى ظائفها. كان يمكن أن يدعى أنه أيا كان، ولكن اخترت أن تسميته ظائفها. لدي أعلاه بلدي الرئيسية. وتذكر أنك تريد أن يكون وظيفة بعد الرئيسية الخاصة بك، تريد للتأكد من يشمل النموذج الأولي للأعلى. ولكن في هذه الحالة كان قصيرة جدا أن شعرت أن بوسعي فقط إدراجه على قمة الرئيسي. لم أكن بحاجة إلى أن يكون النموذج الأولي، لأنه سبق أن كتبت أعلاه. لذلك كل ما أفعله في حياتي الوظيفة الرئيسية تم إنشاء عدد صحيح x تساوي 10. ادعو لي وظيفة وظائفها، ومن ثم طباعة ما يصل شيء. ثم وهذا في الواقع ما ظائفها يقوم به. يا رفاق ترغب في التفكير من خلال ذلك. لأنها صعبة بعض الشيء. انها جدا، صعب جدا، في الواقع. اعتقد من خلال ما هذا أن البرنامج سيكون إخراج. سأعطيك الرجال دقيقتين. مناقشات جيدة؟ الجمهور: نعم. أستاذ: نعم. كل الحق، لذلك هذا هو صعبة لسبب ما. وهذا هو السبب في أنني أردت أن أجمع بين هذا اهتمام الجميع. هل يريد أي شخص أن تعطيني اقتراح، محاولة؟ ما هذا من شأنه أن تطبع؟ تماما غرامة إذا كنت على خطأ. نعم؟ الحضور: اعتقد انها 100 و ثم 10 على سطرين منفصلة. أستاذ: و10؟ هل لديها أي تخمينات أخرى؟ نعم؟ الحضور: ربما 10 فقط ل وظائفها لا يعود أي شيء؟ أستاذ: OK، لذلك نحن لدينا تخمين رقم واحد غير أن تخمين رقم اثنين هو مجرد الذهاب لطباعة 10. هل لديها أي تخمينات أخرى؟ حسنا. لذلك دعونا المشي من خلال هذا، أليس كذلك؟ كلما تحصل على قطعة من التعليمات البرمجية، لا مجرد إلقاء نظرة على ذلك ويكون مثل، آه، هذا هو الكثير من الاشياء! أنا مرتبك جدا! مثل، وتهدئة نفسك باستمرار. أعرف تماما أنك يمكن فقط ننظر من خلال رمز خط سطرا. هذا كل ما هو عليه. انها مثل قراءة كتاب. حتى مع أي وظيفة، نبدأ دائما في الرئيسية. لذلك نحن في طريقنا لل تبدأ في الفراغ الرئيسي المترجم، حتى برنامج ال تشغيل بالفعل إلى أسفل، أليس كذلك؟ تبدأ في في الفراغ الرئيسي. الباحث س يساوي 10. لذلك أنا ذاهب لمحو هذا. انا ذاهب الى رسم الذاكرة فقط حتى تتمكن يمكن الرجال نوع من رؤية ما يحدث. تذكر إلى هنا لدينا كومة لدينا؟ هنا لدينا كومة مكان ما هنا. كومة يكبر، أليس كذلك؟ وضمن كومة، لديك التيار الكهربائي وظيفة وكذلك كل المتغيرات المحلية التيار الكهربائي. حتى هنا، الباحث س يساوي 10. داخل الدالة الرئيسية لدينا نحن إنشاء متغير يسمى السينية. نحن الإعداد الذي يساوي 10. هنا كنت قد حصلت على بعض السينية، وكنت الإعداد الذي يساوي 10، والحق، ضمن الرئيسية. الجميع جيدا؟ وظيفة. وحتى الآن، في إطار جهودنا الرئيسية وظيفة، نحن نطلق وظيفة لدينا كتب أعلاه. لذلك نحن الآن دخول الوظيفة الثانية. ونحن في طريقنا إلى خلق آخر متغير الباحث س يساوي 100. ما يحدث هنا في كومة؟ ماذا يحدث عند استدعاء وظيفة التي تخلق المتغيرات الجديدة؟ ما يحدث هنا في كومة؟ الحضور: (غير مسموع) أكوام على رأس؟ أستاذ: نعم. لذلك يخلق في الواقع نسخة. وذلك نوع من أكوام على القمة. التفكير في stack-- كومة من الكتب، وكومة من أي شيء. أكوام على القمة، الأولى في آخر بها، تستمر في، لأول مرة. لذلك سيكون لإنشاء العاشر هنا. التي ستكون لدينا جميع funcs المتغيرات. رائعة. حتى الآن لدينا اثنين من العاشر المختلفة التي تمثل هما شيئان مختلفان جدا. ثم نحن في طريقنا للطباعة من العدد الصحيح من س. لذلك دعونا طباعة 100، أليس كذلك؟ لأن هنا انها 100. لذلك هذا هو أول شيء أنه سيكون لطباعة. وبما أن هذه ترجع الدالة شيء، الآن بعد أن وظيفة، هذا الخط في main هو القيام به. الجميع جيدا معي حتى الآن؟ لذلك نحن الآن من خلال اثنين من ثلاثة أسطر من الوظيفة الرئيسية لدينا. الآن ونحن في طريقنا إلى السطر الثالث. ونحن في طريقنا إلى printf. ما هو هذا العاشر ضمن الرئيسية؟ ماذا تمثل؟ ما قيمة س هو الآن؟ الحضور: 100. أستاذ: انها 100؟ الحضور: لا يزال 10. أستاذ: لا يزال 10. نعم. لأن تذكر، ضمن وظائفها لدينا، س يساوي 100. ولكن إذا عدنا إلى الوراء إلى الوظيفة الرئيسية لدينا، يتم تخزين هذا المتغير في مكان مختلف على كومة دينا. حتى الآن نحن بحاجة إلى العودة إلى كومة الرئيسي وخطوط المياه المتغيرات المحلية. وهنا س يساوي 10. وهكذا نحن في طريقنا للطباعة 10. حتى انها كانت على حق تماما. ونحن في طريقنا لديها إخراج 100 و 10. نعم؟ الحضور: عند malloc، هل هو كومة أو كومة التي هي (غير مسموع)؟ أستاذ: عند malloc، كنت تتناولين الذاكرة من كومة وتخصيص ذلك. بحيث لم يكن لديك لفوضى مع أي من هذه. لذلك أعتقد أن ذهابه أكبر هنا هو ما يسمى النطاق. لأولئك منكم الذين كانوا في جلسة المراجعة الليلة الماضية، تحدثنا بإيجاز عن هذا. ويحدد نطاق وكيف عند وجود المتغيرات الخاصة بك. أو ضمن ما إطارات هل توجد المتغيرات الخاصة بك. الى حد كبير وبحكم التجربة عموما هو، variables-- الخاص بك إذا كنت إنشائها داخل braces-- مجعد وجدت فقط داخل تلك الأقواس المعقوفة. ذلك على سبيل المثال في وظيفة لدينا وظائفها، كما ترى تلك الأقواس اثنين. إذا كنت تقوم بإنشاء أي شيء داخل منه، وهناك احتمالات كل ما نقوم به هو إنشاء كومة وتخزين وجود. نفس الشيء في الرئيسية. التي يتم تخزينها فقط داخل الرئيسي. أيضا كنت تريد أن تكون جدا، حذرا للغاية هنا. لأن يقرض نطاق أيضا نفسه إلى أمثلة مختلفة. هكذا على سبيل المثال ل حلقة، لكثافة العمليات ط يساوي 0. أنا أقل من، وأنا لا أعرف، 10. I زائد زائد. وكنت قد حصلت على رمز داخل منه، أليس كذلك؟ حيث يقوم هذا المتغير، أنا، في الواقع موجودة فقط؟ فقط داخل للحصول على الحلقة. لذلك أراهن الكثير منكم الرجال قد ربما واجهت هذا الخطأ عندما تفعلونه البرامج في psets الخاص بك. كم منكم الرجال قد حاولت استخدام ط خارج لحلقة وكان خطأ؟ مثل الأعداد الصحيحة غير مرجعية أو شيء من هذا القبيل؟ السبب في حدوث ذلك لأن هنا كنت خلق شيء فقط موجود داخل للحصول على الحلقة. وإذا حاولت استخدام ذلك، وأنا لا توجد في الواقع خارجها. وذلك أساسا كمبيوتر يقولون، وأنا لا أعرف ما الذي نتحدث عنه. كل ما أعرفه هو أن الأول كان هنا، ولكن الآن لم يعد. حتى لو كنت لخلق لحلقة الداخل، أليس كذلك؟ وانا ذاهب لخلق آخر، مثل الباحث ي، ولها أن تفعل أيا كان. وكان لديك رمز داخل أن حلقة، ي موجود فقط هنا. ولكن هذا موجود أيضا داخل ط. وهكذا ي موجود فقط في هذا لحلقة، بينما أنا موجود في كل شيء. الجميع اضح؟ نفس الشيء مع عبارات الشرطية إذا كنت ترغب في خلق أي شيء. نفس الشيء مع حلقات في حين إذا تريد خلق أي شيء. هذا شيء أن يكون جدا، حذرين جدا حول. لذلك كان هذا مشكلة جيدة حقا في بمعنى أنه أثبت أمرين. فقد أظهر لأول مرة، النطاق. وأظهرت أيضا تخصيص الذاكرة. لأن يا رفاق يجب أن يعرف أن وظائف تنمو صعودا في المكدس. وأنه عند استدعاء وظائف، وأنت خلق أساسا كومة الجديد من الذاكرة. هذا يختلف جدا من ما هي الذاكرة التيار الكهربائي الخاص بك. نعم. يا للعجب! الجميع موافق على ذلك؟ كان ذلك مربكا. موضوعات جيدة جدا للذهاب أكثر، لأنك ربما الذهاب للحصول على بعض صعبة أشياء من هذا القبيل في هذه المسابقة. نعم. رائع. وسوف أضع لك الحصول على 100 على واحد خط ثم 10 من جهة أخرى. نعم، جيد جدا. حسنا، الآن يا رفاق سيحصل فرصة ليكون المشرفون الدوليون. يمكنك الحصول على الإجابة على جميع جميلة رسائل البريد الإلكتروني التي أنا في بعض الأحيان الحصول عليها. هكذا، أيها اندى، وأرى وأعتقد أن شيئا ما تسير بشكل خاطئ مع المترجم بلدي. أنا على يقين من أن قانون بلدي هو الصحيح، ولكن أظل الحصول على خطأ تجزئة في كل مرة كنت تشغيل. ماذا يحدث هنا؟ الرجاء المساعدة، والكثير من الحب. إذا يا رفاق حصل شيء من هذا القبيل أن كيف تردون؟ هذه هي في الواقع شائعة جدا أسئلة سنطلب منك. هو إذا، وسوف نقدم لكم السيناريو، وسوف نقدم لنا تخمين افضل ما لديكم في ما يجري. أي شخص لديه طعنة في ما يحدث؟ نعم؟ الحضور: ربما ألغى الإشارة القيمة لل لاغية، شيء من هذا القبيل المؤشر يتم الإشارة إلى شيء باطل. أستاذ: نعم، هذا سوف يكون مثال متى يحدث ذلك. ولكن ما هي صورة أكبر ما الذي يحدث هنا؟ الحضور: هل كنت تحاول الوصول إلى ذاكرة أنك لا من المفترض أن يكون الوصول إليها؟ أستاذ: بالضبط. حتى التفكير في خطأ ثوانى، وهو خارج حدود، المنطقة المحظورة في الذاكرة التي يجب أن لا تكون مؤثرة. كثيرا جدا عندما كنت تحاول لindex-- مثل على سبيل المثال، كنت قد أعلنت عن مجموعة من صفر إلى تسعة. ولكن محاولة تلمس هذا 10 القيمة، لم يكن لديك الوصول إلى ذلك. لأنك لم تعلن ذلك. وحتى جهاز الكمبيوتر الخاص بك هو الذهاب أن ننظر إلى أن يكون مثل، اه يا، كنت في محاولة للذهاب خارج حدود فهرس. انا ذاهب الى ان نعطيكم تجزئة الخطأ. التفكير في كقطاع، أليس كذلك؟ شريحة اضافية، والعيب عند محاولة اختراق شيئا ويجب أن لا يكون هناك. خطأ تجزئة هو في أي وقت محاولة لمس الأشياء التي يجب أن لا تكون مؤثرة. الأمثلة الشائعة لذلك هي مؤشر. بالطبع، إذا كنت تحاول لمسة الذي كان باطلا، التي من شأنها أن تعمل أيضا كذلك. إذا المؤشر كان يحاول لمس الأشياء التي لا ينبغي أن تلمس، هذا ويمكن أيضا أن تعمل بشكل جيد. الأكثر عادة عليك نرى هذا في صفيف. الجميع جيدا؟ الحضور: حتى إذا كنت تريد للوصول إلى نقطة 10TH وهناك ليست سوى الحد تسعة أو شيء من هذا. أستاذ: نعم، بالضبط. علم. رائع. عزيزي اندى. لذلك نحن قد حصلت على هذه رائع أشياء تسمى الأنواع. إذا دمج sort-- ونحن رأى في المثال عندما فعله داود كله شيء في class-- لماذا، إذا كان ذلك أسرع بكثير من أي من أنواع أخرى، لماذا نحن حتى عناء معرفة أي من أنواع أخرى؟ ما هو هذا السؤال يسأل حقا لك؟ ما هو word-- ثلاثة الحضور: ما هو المفاضلة؟ أستاذ: بالضبط. هذا ما يسأل هذا السؤال. ما هو المفاضلة بين دمج النوع آيات أي أنواع أخرى؟ الحضور: يأخذ الذاكرة، أليس كذلك؟ أستاذ: هل شرح أن أكثر قليلا؟ دعونا أولا شرح مخزن دمج. كيف دمج النوع تعمل؟ الحضور: لذلك يعمل عن طريق تقسيم كل شيء الى النصف ومن ثم وضعها معا وإعادة تخصيص في النظام، مثل كل مرة تقوم فيها دمج مجموعات. أستاذ: الكثير جدا. حتى أتمكن من رسم هذا الخروج، ولكن سيكون يأخذني خمس دقائق لاستدراجه للخروج. ننظر إلى الوراء إلى الشرائح القسم حيث غطينا دمج النوع. بالضبط. وبالتالي فإن الطريقة دمج أعمال الفرز غير أنه يقسم الأشياء في نصف، ومن ثم يبدو تماما في القيم أولا وقبل كل منهم ويفرز هذا فقط. يخلق باستمرار صفائف جديدة و يضع الأمور أكثر وأكثر في النظام. وذلك في حين أن حقا، حقا بسرعة لأن it's-- تعلمون، بحث ثنائي سجل ن ن. كنت تقوم بإنشاء الكثير المصفوفات المختلفة التي كنت استخدام كمية كبيرة من الذاكرة. وذلك في حين أنها أسرع، والمفاضلة هنا هو أنك كنت تستخدم أكثر من الذاكرة. وهكذا، التلميح، وأنواع التفتيش غطيت الكثير من هذا العام مما كانت عليه في السنوات السابقة. يا رفاق يجب أن نرى أن انعكس بالتالي على هذه المسابقة. وأود أن تنفق بالتأكيد الوقت في الذهاب على كل ما من أنواع مختلفة هي، بحث كيف ثنائي، كيف الخطية عمل البحث. كيفية ربما شبة الكود رمز تلك خارجا. ما هي أوقات تشغيل؟ شيء من هذا القبيل مرات تشغيل جدا من السهل لنسخ أسفل على ورقة المذكرة، الصحيح؟ من الصعب حقا عندما كنت في منتصف الاختبار وعليك أن هذا الرقم. نسخ عليه. أنا أضمن لك أنك بحاجة الى الذهاب الى معرفة ذلك. ما هي المبادلات؟ أسوأ الحالات، وأفضل السيناريوهات لجميع من لهم، والحصول على جدا أن نعرف. نعم؟ الحضور: هل نحن بحاجة إلى تعرف كيفية رمز دمج النوع؟ مثل، هل نحن بحاجة ل تذكر العودية؟ أستاذ: أشك بشدة، فقط لأنه مثل معقدة إلى حد ما. ولكن قد لا يكون قابل للتطبيق إذا كنا أطلب منك أن استخدام شبة الكود بها. نعم. نعم، OK، أكثر واحد. قد تأتي هذا الأمر في كنت آخر قطعة في شيء. نعم؟ لم يسمع الجميع ذلك؟ OK، لذلك الى حد كبير أول كل شيء، ما نوع البرنامج سيكون مما يتيح لك إخراج مثل هذا؟ تذكر طلبنا لك معرفة هذا النوع الجديد من أداة التصحيح؟ ما كان اسم ذلك؟ Valgrind، الحق وكان البرنامج حيث هل يمكن أن نسمي ذلك يمكن تتبع كافة الذاكرة كنت استخدام في برنامجك ويجري. حتى إذا كنت قد حصلت على شيء، مثل، خسر بالتأكيد، 40 بايت في كتلة واحدة. ربما كنت لا تذكر لتحريره. لأنه إذا كنت تستخدم بايت من الذاكرة، وهذا يعني انك قمت الوصول إليها تلك الذاكرة، ولكنك لم تكن قادرة على تحرير. لذلك أنت تريد أن تجعل تأكد أنك أيضا باستخدام free-- هذا هو function-- للافراج عن من ذاكرة تخصيص بواسطة malloc. رائع. حتى هذه الشريحة، سآخذ عنه. انها في كل مكان في الكثير من محاضرات، في الكثير من الشرائح القسم. كنت تريد حقا للتأكد من كنت أعرف تماما كل هذا. إما في ورقة ملاحظتك أو إذا كنت تريد حفظه، لا تتردد في. هذا حقا، حقا، المهم حقا. أيضا جيدة جدا السؤال الذي قد نطلب. لماذا اختيار sort-- نظرة على اختيار sort-- جميع أوقات التشغيل ون المربعة. بغض النظر عن كيفية تأتي القائمة ل لكم و، فلماذا هو اختيار sort-- سأعطيك الرجال 30 أعتقد الثانية حول هذا الموضوع. لأنه نوع من الخلط. أنها تنطوي على بعض التفكير المفاهيمي. لماذا الأوقات المدى تكون هي نفسها في كل من أسوأ وأفضل السيناريوهات؟ نعم؟ الحضور: لاختيار نوع كل موقف أو مساحة في هذه المجموعة الصغيرة الشيء أو أيا كان. وحتى في أفضل السيناريوهات، حتى لو كان فرزها ذلك تماما، فإنه لا يزال من الضروري أن يكون مثل، OK، واحد. في مكاني الأول لدي واحدة. وتذهب من خلال كل منهم. OK، هو واحد أصغر. وبعد ذلك يذهب مرة أخرى ومثل، OK، وهما هو أصغر من جميع الأشياء. لكنها ما زالت تحتاج الى تحقق من كل واحد. أستاذ: نعم. هكذا على سبيل المثال، دعنا نقول فقط لدينا قائمة، مرتبة مسبقا، مجموعة 1-5. الطريقة التي أنواع التحديد هو أن وغني عن طريق، فإنه يتحقق هذين. ثم فإنه يتحقق هذين. ومن ثم فإنه يتحقق، وذلك يتحقق. فإنه يحتفظ فحص كل منهم، بغض النظر عن وجود أو عدم انها مرتبة في الواقع. لأن هذا ببساطة الطريقة التي يعمل هذا القبيل. وحتى هذا السؤال هو نوع من مثل سؤال المفاهيمي سنطلب. حيث لأول مرة، كنت ل تعرف أي نوع الاختيار هو، الحق، لتكون قادرة للإجابة على هذا السؤال. عليك أن تكون قادرا على فهم من الناحية النظرية ما يجري. ومن ثم يمكنك تطبيق ذلك وأعتقد، OK دعونا مجرد تصور سيناريو أسوأ الحالات. انهم جميعا في ترتيب تنازلي. كيف يمكن أن تؤثر عليه؟ ما اذا كان ترتيب تصاعدي؟ اذا كان فرز بالفعل؟ كيف يؤثر ذلك في أوقات التشغيل؟ ومن ثم اختيار نوع، ستلاحظ أنه لا يهم في الواقع. لأنك فحص جميع القيم بغض النظر عن ما يحدث. وحتى الأشياء الجيدة أن نتذكر. لماذا تختلف بعض أنواع من الآخرين وأفضل السبل وأسوأ السيناريوهات من شأنه أن يؤثر كل منهم. انا ذاهب الى ضرب حقا في أنواع لأن هذا سوف يكون على هذه المسابقة. نعم. حسنا. هناك ست دقائق من نهاية المباراة. ويمكنني أن تأخذ ثلاث دقائق من الأسئلة. يمكنني أيضا أن تسكع ل مثل 20 دقيقة بعد القسم إذا كنت ترغب في طرح الأسئلة أيضا. لا أحد فقط يكون مختصرا حقا أسئلة أو القضايا المفاهيمية انهم غير واضحة حول الحق الآن؟ نعم؟ الحضور: هل يمكن أن تحدثنا قليلا قليلا عن مشغلي المختصة بالبت؟ أستاذ: نعم. مشغلي المختصة بالبت ذلك هي ما كنت على الارجح قد ترغب فقط في وضعه على الورقة. حتى quickly-- أنا لا أريد للذهاب كثيرا في العمق لأن هارفارد، في استعراضها الدورة، تغطيتها بشكل جيد. مشغل أحادي المعامل، هناك خمسة منهم، أليس كذلك؟ هناك هذا الذي هو x أو وظيفة، هناك العطف، وهو و. الأنابيب، الذي هو أو. ثم لديك اثنين أنواع مختلفة من التحولات. إذا أعطي لك قيمتين، إذا أعطي لك، مثل، واحدة واحدة. ما من شأنه أن تقييم ل؟ إذا أعطي لك صحيح وصحيح، صحيح؟ ماذا عن حق أو باطل؟ لا يزال صحيحا، أليس كذلك؟ لأنه لا يوجد أحد أو. سنقوم على الأرجح تعطيك أرقام. لذلك تذكر، واحد يساوي صحيح، صفر يساوي كاذبة. ونحن قد تعطيك هذه الأشياء وأطلب منك أن تقول لنا ما يحدث. هارفارد يغطي ذلك ضمن أول 10 دقيقة من جلسة دراستهم حقا، حقا جيدا. لذلك يا رفاق تريد أن تجعل متأكد من أنك ننظر إلى الوراء على ذلك. الحضور: هل pisa5 سيكون على هذه المسابقة؟ أستاذ: رقم حتى لا ننظر pisa5 الآن. من الصعب. فقط حتى لا يكلف نفسه عناء النظر في pisa5. لكن، وكما بعض التلميحات والاقتراحات، وأنا سوف أقترح عليك أن تبدأ pisa5 حالما مسابقة قد انتهت. وسيكون هذا أصعب الاسبوع، ولكن بعد ذلك يا رفاق سيتم تمريرها على التلال الأخضر والجراء المتداول، وأنه بخير. هذه الفئة يحصل كبيرة أسهل بعد PSET الخامس. الساعات المكتبية: الحضور هي الأحد، الاثنين؟ أستاذ: نعم، لذلك فإن ساعات العمل الأحد إلى يوم الاثنين لPSET. ساعات العمل الليلة الأساس سوف يكون مجرد استعراض للمسابقة. إذا كان أي شخص يريد أن يأتي في واطلب والمشرفون الدوليون سؤال، سنكون هناك. سآخذ ربما واحد أكثر من سؤال إذا كان أي شخص لديه سؤال؟ نعم؟ الحضور: عندما كنت العقد تحديد و(غير مسموع) إذا أنت تقول نجمة عقدة ثم المقبل، لا الكمبيوتر تلقائيا أفهم أن كنت في اشارة الى مؤشر آخر؟ أستاذ: رقم الحضور: لديك ل إعادة ربط ذلك (غير مسموع)؟ أستاذ: ذلك أساسا ل البنية من عقدة و، تذكر، انها مثل إنشاء العقدة و ثم لديك مؤشر يسمى المقبل. كل ما نقوم به هو وجود هيكل هناك. لديك لتعيين هذا المؤشر في مكان ما. حتى أجهزة الكمبيوتر لا تعرف ما تقوم به حتى الان. لديك لتعيين فعلا عندما كنت تقوم بإنشاء قائمتك المرتبطة. وهذا ما أساسا سوف PSET 5 يكون على. لذلك لا تقلق حول أي من هذا الحق الآن. الحضور: لذلك نحن لسنا في حاجة ل تركز كثيرا على القائمة رابط، فقط التصور العام؟ أستاذ: مجرد أكوام حد كبير، طوابير وقوائم الارتباط والأشجار والجداول التجزئة. مجرد أن تكون قادرة على معرفة ما هي عليه. نحن لن أطلب تريد أي شيء محدد لأننا لم تفعل حقا PSET أن يغطي أي من ذلك حتى الآن. حتى في آخر دقيقتين قبل أنا وضعت لك مجانا لقتل هذا الاختبار. الى حد كبير، مثل التفكير في كيفية الآن يا رفاق قد حان في هذه الفئة. أتذكر عندما أسبوعين من هذه الفئة، البعض منكم قضاء ثلاث ساعات الكتابة الماء. كم من الوقت سيستغرق لك الرجال لكتابة المياه الآن؟ 30 ثانية، ربما؟ التفكير في مدى تعلموا يا رفاق. CS هو موضوع حقا، من الصعب حقا. ليس هناك شك في ذلك. من الصعب، لهذا السبب لا أحد يدرس ذلك. من الصعب فقط. وأنه بخير تماما. وأنا فخور حقا أن جعلت الجميع من هذا بكثير. Psets ليست سهلة. أنها تأخذ الكثير من الوقت. يا رفاق، أنا لن أطلب منك أن تكتب لعبة 15 أو Vigenere على PSET. لا حاجة ليفزع للتو عن ذلك. جميع نختبره هنا هو تقييم المعرفة المفاهيمية الخاصة بك، فضلا وبعض المهارات الأساسية الخاصة بك من الترميز. تم تصميم اختبار ل تكون صعبة حقا. مثل، وهو مصمم لك أن لا تحصل على 100. انها مصممة أيضا لانها لكم لربما لن تكون قادرة على الانتهاء في 75 دقيقة. وهذا شيء طيب تماما. أنا طالب نفسي. أنا أعرف، أنا أكره عندما امشي من مسابقة تكون مثل القرف. كان من الصعب حقا. ربما ما يحدث ل happen-- وهذا شيء طيب تماما، أنا أقول يا رفاق الآن. الوسائل على هذه الأمور ليست مرتفعة على الإطلاق. وبالنسبة لأولئك منكم الذين وقد تم الحصول على مثل، الثلاثات على مجموعات مشكلتك، هذا لا يعني أنك سوف تحصل على 60 في المئة في هذه الفئة. إذا كنت تحصل على 60٪ على مسابقة، التي لا يعني كنت تريد الذهاب ل الحصول على (د) في هذه الفئة. ونحن نرى، لا سيما الأول، ل أولئك منكم في القسم الخاص بي، أرى مدى صعوبة يا رفاق يعملون جميعا. وأنا على تتبع ذلك. سوف اللاعبين سيكون على ما يرام. لا يوجد الذاكرة المؤسسية لل السعادة في نهاية الفصل الدراسي. لأن جميع الاطفال هارفارد يقولون أصدقائهم، أوه، سوف يكون على ما يرام. لا أحد يقول يا رفاق ذلك هنا. لذلك يجب أن أقول لكم أن الرجال هنا. سوف اللاعبين سيكون على ما يرام. أنا فخور جدا لجميع اللاعبين. الاختبار سيكون الثابت. دراسة لذلك، وبعد ذلك مجرد رميها بعيدا. الحصول على استعداد لتعلم أشياء جديدة. وتناول الحلوى. قمنا لديك الكثير من الحلوى. الحصول على ليلة نوم جيدة. لا لا ينام، ل سيكون ذلك سيئا حقا. CS هو الكثير من المنطق. إذا كنت لا أنام، لا يمكن أن تعمل، والدماغ لا يمكن أن تعمل. وسأكون هنا ل20 المقبل دقائق إذا كان أي شخص يريد أن تسكع. يا رفاق ذاهبون للقضاء عليها. حظ سعيد.