JASON هيرشهورن: مرحبا بكم إلى أربعة أسابيع، كل واحد. لدينا قبل اسبوع مزدحم واحد منا. يوم الاثنين من هذا الاسبوع ويوم الاربعاء في الأسبوع الماضي، كنت قد أدخلت إلى مؤشرات، وذلك نأمل أن لديها في مهب عقلك، ولكن نأمل أن لا جعلك في حيرة أيضا. إذا كان لديه، سوف نذهب أكثر أنه في قسم اليوم وكذلك ونحن في طريقنا للقيام المؤشرات. ونحن في طريقنا للذهاب أكثر من المكدس، الذي تحدثنا عنها في محاضرة بالفعل، ونحن ذاهبون الى التلميح الأشياء أن يأتي يوم الاربعاء وخارجها من حيث إدارة الذاكرة. وأخيرا، ونحن ذاهبون الى الحديث قليلا حول ستانفورد اللغة المحمولة، وهو مكتبة أنتم باستخدام هذا الأسبوع لتنفيذ تعيين المشكلة. كما أظهر لي لكم جميعا الاسبوع الماضي - أردت أن أضع هذه الشريحة من جديد، لأن هذا هو قائمة الموارد المتوفرة لك CS50. هذه هي ما نعطي لكم من مربع، وهذه هي بشكل لا يصدق المهم لماذا سوف تظهر الشريحة التالية. ولكن قبل أن نصل إلى الشريحة التالية، أريد أن أذهب على هذه مرة أخرى. لكل محاضرة، وهناك الملاحظات التي يتم اتخاذها. انها خلاصة المحاضرة، لكنه لديه أيضا مقتطفات الشفرة ومفيدة النصائح والحيل. لذلك إذا كنت تريد مراجعة المحاضرة - نأمل أن لا يغيب عن محاضرة، ولكن إذا كنت فعلت ذلك، يجب عليك rewatch ذلك - ولكن عندما تريد مراجعة المحاضرة، بالتأكيد تحقق من تلك محاضرة الملاحظات. هناك أيضا شفرة المصدر على الانترنت من كل محاضرة. cs50.net/shorts قصيرة، 6-12 أشرطة الفيديو دقيقة واحدة. شهدت يا رفاق كثيرين منهم. هناك أيضا أشرطة الفيديو نحن لا تعيين لكم ولكن الموضوعات التي هي غطاء المشمولة في محاضرة في هذه الدورة. حتى إذا كنت تريد تحديث على تلك المواضيع، لا تحقق من هذه السراويل. study.cs50.net ديه الاشعال على طن من الموضوعات. كان لديه أشرطة الفيديو. كان لديه مشاكل الممارسة. هو مورد رائعة. تأتي أي أسئلة، ولكن أيضا استجواب الوقت. زوجان المزيد من الموارد. هناك أمر الرجل في محطة والتي تمنحك بعض معلومات على وجه الخصوص وظيفة أو الأوامر. هناك جوجل، يا مورد المفضلة - واحدة من بلدي المفضلة الموارد. بلدي المفضل هو مورد واحد آخر، ونحن سنصل إلى في الثانية. هناك cs50.net/discuss. هذا المنتدى فصولنا. هناك ساعات العمل الاثنين من خلال الخميس، 8:00 حتي 11:00. هناك أيضا ساعات العمل على الانترنت للطلاب التمديد. وأخيرا، إذا كنت بحاجة إلى أي شيء، لديك أي أسئلة أو تعليقات، أو المخاوف، لديك بلدي معلومات الاتصال. الحصول على اتصال معي، من فضلك. حتى وأنا ألمح في، يوم الأربعاء المقبل، و الأسبوع اعتبارا من يوم غد، هي الأولى للمنتدى مسابقة، مسابقة الصفر، لأنه في الكمبيوتر العلوم نبدأ العد من الصفر. وسيتم توفير المزيد من المعلومات في محاضرة غدا، وسوف اليد التي ستنشر في نهاية المطاف على الانترنت مع أكثر تفاصيل محددة، ولا سيما موقع مسابقة الصفر. لكنه سوف تجرى يوم الاربعاء المقبل بدلا من المحاضرة. ليس هناك محاضرة يوم الاثنين المقبل لأنه يوم عطلة. وهذه المسابقة تشمل جميع المواد من أسبوع إلى أسبوع خمسة صفر، ذلك من خلال هذا الأسبوع، من خلال محاضرة غدا. وتشمل المواد والمحاضرات. وتشمل المواد أقسام. وتشمل مجموعات المواد المشكلة، و وخاصة تلك الأجزاء التي تبدأ مجموعات مشكلة حيث كنت أمشي من خلال بعض المعلومات الأساسية عن ما كنت على وشك أن تغطي. لا ننظر من خلال تلك المجموعات المشكلة. لمساعدتك مع كل مسابقة، المقبل الاثنين، على الرغم من أنه هو يوم عطلة، سيتم أثناء استضافة دورة الاستعراض على نطاق بالطبع. فيديو للدورة استعراض واسعة بطبيعة الحال وسوف يتم نشر على الانترنت إذا كنت ليست قادرة على تحقيق ذلك. بالإضافة إلى ذلك، يوم الثلاثاء القادم في القسم نحن ذاهبون إلى أن تفعل طن من مسابقة مراجعة ونأمل لعب بعض خطر كذلك، ولكن نحن في طريقنا ل أن تسير على الإجابة على كل ما تبذلونه الأسئلة، ولكن انا ذاهب لتأتي مع الكثير من الأسئلة مفيدة وتستند المعلومات في 10 عاما من المسابقات. لدي فكرة جيدة عن ما هو سوف تظهر وكيف الأسئلة سوف يطلب منه، ولذا فإننا سوف يذهب أكثر تلك الموجودة في القسم يوم الثلاثاء المقبل. بالإضافة إلى ذلك، لم أكن وضعت هذه الشريحة تصل في الأسبوع الماضي، ولكن هذا شيء نحن فعلت الاسبوع الماضي. هذه هي الطريقة التي اقترب كثيرا من المشاكل الترميز فعلنا. أردت أن التقطير من نهجنا في بعض الخطوات البسيطة التي يمكن أن تساعد كنت مع حل مشكلة الترميز. تذكر الاسبوع الماضي، ونحن ترميز ثنائي البحث، وأول شيء فعلناه عندما أردنا البحث رمز ثنائي وفكرنا في منطقتنا يرأس كيف يعمل. لم نكن رسم صورة في الصف، ولكن سألت الجميع لمشاهدة قصيرة الفيديو، الذي لم يكون صورة تمثيل كيف عملت بحث ثنائية. أول وكنا نريد حقا أن تفعل لفهم شيئا ما رسم الصورة لفهم منطقها، للتأكد من أننا نعرف كيف يعمل هذا الشيء. والشيء التالي فعلنا لكم في القسم في الاسبوع الماضي تم أخذنا لدينا العقلية نموذج، ونحن رفضنا ذلك في بعض شبة الكود. شبة الكود، مرة أخرى، مثل البرمجة بناء الجملة في الكلمات، ولكن ليس رمز C. ولا حتى محددة لC. اتخذنا لدينا فقط الأفكار واستغرق الإنجليزية استخدمنا للتعبير عن ذلك، وكتب ذلك في نوعا من طريقة يبحث البرنامج. لذلك هذا مجرد جزء من منطق. نحن اعتنى المنطق لدينا أولا. نحن فضت هذه البرمجة الصعب المشكلة إلى قسمين، وأخذنا رعاية من الجزء الأول المنطق. وبعد ذلك اقترب الجزء بناء الجملة. تذكر بعد أن وضعت في شبة الكود، ونحن اختار أجزاء من شبة الكود الذي عرفنا على تعيين عناصر محددة في C. على سبيل المثال، للالحلقات، وإذا كانت الظروف أو أكبر من أو يساوي المشغلين. وأخيرا، وآخر شيء فعلناه، الأخيرة جدا شيء فعلناه، كان رمز في الواقع هذا البرنامج في C. ونحن في طريقنا للذهاب من خلال هذه العملية مرة أخرى اليوم في كبيرة نسبيا الترميز المشكلة التي ستتناول الجزء الأكبر من النصف الثاني من القسم، ولكن أردت أن تضع هذا الإطار من هنا ليا رفاق. هو كيف كنا تقترب مشاكل في الصف، وكيف ربما كنت قد تم الاقتراب من هذه المشاكل على خارج الخاص بك من القسم. لذلك أنا ذاهب إلى ترك هذا الأمر هنا، وسنقوم الرجوع إلى هذا عندما نحن الترميز في وقت لاحق اليوم ويذهب بشكل منهجي من خلال هذه الخطوات. أخيرا، وردود الفعل. إذا كان لديك أي ردود فعل بالنسبة لي، و الموقع هو في أعلى هذه الشريحة، sayat.me/cs50. أعطني بعض ردود الفعل. حصلت على بعض ردود الفعل رائعة من يا رفاق الاسبوع الماضي. قلت لك حقا أحب pseudocoding والترميز فعلنا. كما قدم لي شخص ما وصلة لدراسة التي أظهرت أن الانتظار 06:57 ثانية بعد يسأل إذا أي شخص لديه الأسئلة هو الأمثل وقت للانتظار. حتى إذا كان لديك الوقف الخاص بها، اليوم انا ذاهب الى محاولة والانتظار سبع ثانية بعد أنا أسأل ما إذا كان أي شخص لديه أي أسئلة قبل الانتقال. حتى قبل أن ننتقل، لا أحد لديك أي أسئلة حتى الآن؟ أعطى غرفة التحكم لي سبع ثوان. موافق، وكان أحد أي أسئلة، ولكن لا تتردد في طلب منهم إذا قمت بذلك. أولا، هذا الاسبوع نحن نذهب لتغطية مؤشرات، كما المحنا في في جدول الأعمال في بداية الصف. مؤشرات كنت قد رأيت في المحاضرة. ربما كانوا قد ذاب عقلك. وهذا موافق، وهذا ما فعلوه ل مئات الطلاب CS50 قبل. وذلك على مدى 10 إلى 30 دقيقة القادمة، ونحن في سبيلنا للذهاب من خلال هذه المؤشرات ببطء وبشكل منهجي. إذا في أي لحظة لديك أي أسئلة، اسألني. استطيع ان اضمن انه زملائك في هذا قسم ويتابعون المباريات في المنزل لديها نفس الأسئلة بالضبط. دعونا نتحدث عموما الأولى، قبل أن يغوص المؤشرات، حول المتغيرات والبيانات التي قمنا تم استخدام من قبل. بالإضافة إلى وجود هذه الأشياء حتى على الشريحة، وانا ذاهب رسم هذه خارج. كما يقول هذه الشريحة والبيانات في الذاكرة لديه كل من قيمة وعنوان، لذلك نحن سوف تمثل شيئا في الذاكرة. تذكر الاسبوع الماضي أو عندما كنت قد رأيت صفائف الانجرار، نود أن نلفت عموما كما لهم سلسلة من مربعات، لذلك سنقوم مجرد رسم متغير واحد على شكل مربع في مكان ما في الذاكرة. هذا المربع في هذا المثال، سنقوم نسميها السينية، ولها قيمة. في هذه الحالة، نحن تهيئة المتغير إلى قيمة 50. سوف تلاحظ أيضا أنه بالإضافة إلى فقط قيمة، وهذا المتغير x لديها موقع في الذاكرة. في الواقع، وربما كنت إلى حد ما علم، والذاكرة لديه كمية محدودة من المساحات. هناك فقط الكثير من صناديق داخل الخاص الكمبيوتر حيث يمكنك تخزين الأشياء. والأفضل من ذلك، حتى تعرف أين الأشياء يتم تخزين كل مربع يحتوي على عنوان محدد، عدد معين حيث يمكنك العثور عليه. تماما مثل جميع الموظفين الجدد لديهم بهم العنوان البريدي في مركز العلوم، كل مربع في الذاكرة لديه عنوان محدد. عندما تذهب إلى هذا العنوان، ل يمكن الحصول على ما يقع هناك. انا ذاهب الى أن يكون تعسفيا تماما مع عنوان هذا المتغير، ولكن أنا أريد أن أقول أن العنوان هو 123. الآن، لم أكن مجرد كتابة 1-2-3. كتبت 0x123. الجزء 0X يعني هذا رقم سداسي عشري. ونحن لسنا بصدد الحديث عن الست عشرية الكثير اليوم، ولكن لاحظ أن عندما نشير إلى عناوين الذاكرة، نشير إليهم في ست عشري. لذلك كلما أنا أتحدث عن و العنوان، وسوف أضع أن 0X، وهذا فقط أقول هو 123 رقم سداسي عشري. انها في الأساس 16. انها ليست في الأساس 10. هل لدى أي شخص أي أسئلة حتى الآن؟ الكمال. ذلك أن متغير واحد. شاهدنا هذا من قبل، ولكن الآن نحن بدأت تذهب تحت غطاء محرك السيارة وانظر ما يحدث في الواقع. لذلك، المؤشرات. الشيء باردة حول المؤشرات هو أن على عكس متغير الطبيعي أن يكون بعض القيمة، وبعض صحيح، بعض الطابع، وربما سلسلة من أحرف إذا كنا نتحدث عن مجموعة، القيمة التي لديها هو مؤشر عنوان. على الشاشة، لدينا كثافة العمليات خ يساوي 50 الذي خلقنا من قبل. لقد ضعت بالفعل هذا المربع. دعونا أيضا رسم مربع. هذا سيكون - أوه، يا للسماء. نحن بحاجة إلى علامة جديدة. لم يكن أفضل بكثير. ولكن ونحن في طريقنا إلى استدعاء هذا المربع - وهذا هو متغير يسمى المؤشر. لديه أيضا مؤشر عنوان. انها في عنوان مختلف. انها متغير مختلفة. انها لن تكون على رأس أول واحد. لا يمكنك أن تأخذ وضع شيئين داخل علبة بريد. لا يمكنك الكتابة فوق الأولي واحد، لذلك نحن ذاهبون في عنوان مختلف هنا. نحن سوف تعطيه عنوان 456. ولكن قيمة المؤشر في سوف يكون العنوان، وفي هذه الحالة، فإنه يجري التي ينبغي معالجتها من المتغير x. المؤشر داخل ذلك، ونحن تخزين عنوان 123. وبناء الجملة يمكنني استخدام لأنه يكتب - نحن سوف يذهب أكثر من جملة في الثانية، ولكن نعرف أن بناء الجملة على هذا الشريحة هو بناء الجملة التي قد تستخدم لتعيين هذا الوضع حتى - قبل أن نصل إلى لغوي، على الرغم من أنني نريد أن نوضح للجميع و تأكد الجميع يدرك أن مؤشرات تمييزا لها عن المتغيرات لديك عنوان كقيمة، و ليس صحيحا أو حرف. حتى الآن جيد جدا؟ عموما أيضا، في وقت نواجه فيه رسم هذه الأشياء، وأنا لا مجرد الذهاب الى رسم العنوان في هنا. انا ذاهب الى اتخاذ السهم من هذا مربع لمتغير أخرى أنه مشيرا إلى أن يعطي الشعور أنني إذا كانت لإلقاء نظرة على عنوان 123، إذا كان لي أن استخدام هذا المؤشر للعثور على ما انها لافتا إلى، وأود أن أحصل هذا المربع أكثر من هنا. وأود أن تحصل على عدد 50. نعم، السؤال؟ الطالب: إذا كان المؤشر يخزن عنوان، ثم كيف يمكننا اختيار المصفوفات، وكثافة العمليات نجوم، أو مثل شار نجمة، أو أيا كان؟ JASON هيرشهورن: هل لك تكرار الجزء الأوسط؟ لقد فقدت لك. الطالب: كيف تختار صفائف، مثل نجمة الباحث أو نجمة شار، أو أيا كان، إذا كان دائما يخزن عنوان؟ JASON هيرشهورن: سؤال جيد. كيف نختار ما انها في الواقع مشيرا إلى أنه إذا يخزن دائما عنوان؟ إذا بدلا من نجمة الكتابة الباحث الحق هنا، كتبت نجمة شار، سيكون من لافتا إلى - هذا هو ما كنا الكتابة إذا أردنا ذلك أن نشير إلى حرف. عميق، في أعماقي في الآحاد والأصفار العالم، أن كثافة العمليات، التي شار، لا يهم حقا. ولكن من حيث C، ولكنه لا يريد لك أن تكون محددة جدا من حيث نوع من شيء كنت لافتا إلى. في المستوى الذي نحن البرمجة، ونحن في طريقنا لكتابة نوع من شيء نحن أشر إلى على الرغم من انها دائما معالجة داخل هذا المربع. هل لديك سؤال؟ موافق. الآن ونحن في طريقنا للنظر في بناء الجملة من أجل بعض المؤشرات. السطر الأول على هذه الشريحة - نجمة كثافة العمليات، والفضاء، ومؤشر - تهيئة ويخلق - لا تهيئة، إلى حد ما. لا تعيينها يساوي أي شيء، ولكنه يخلق هذا المؤشر. وذلك من حيث الرسم البياني الخاص بي - دعونا نذهب إلى هذا الجانب - أن السطر الأول، نجم كثافة العمليات مؤشر، ويخلق مربع. هذا المربع هو المتغير المؤشر، وانها في عنوان. سنقوم إعطائها مختلفة عنوان، 999. هذا كل شيء هذا الخط لا. شاهدنا هذا من قبل. هذا هو مثل أي وقت، وإذا كان لي أن مجرد إرسال الباحث العاشر هناك، فإنه يفعل نفس الشيء بالضبط، وخلق مربع يسمى خ. في هذه الحالة، ونحن اعطاء انها نوع مختلف. لذلك لن تكون كثافة. انها سوف تكون نجمة كثافة العمليات، و لذلك هذا المربع سوف يكون قليلا مختلفة مما لو كانت لمجرد يكون شار، على سبيل المثال. لأن حرف، أذكر، و بايت واحد فقط في الذاكرة. مؤشرات أربعة بايت. لذلك هذا المربع سوف ننظر قليلا مختلفة إذا نكتب نجمة كثافة كما بدلا من شار. ولكن بخلاف ذلك، ونحن بصدد إنشاء مربع، وانها في عنوان محدد. هذا هو كل ما يفعل السطر الأول. السطر الثاني من التعليمات البرمجية، وكثافة العمليات x تساوي 50، ويخلق من جديد آخر مربع x في موقع مختلف. ستظهر خلع 111. وهذه تتم تهيئة الواقع المؤشر بالإضافة إلى إنشاء مربع. نحن نضع 50 داخل هذا المربع. السطر الثالث من التعليمات البرمجية، مؤشر يساوي عنوان خ. أن وسائل المشغل عنوان شيء محدد جدا. كلما وضعنا علامة الضم أمام من اسم متغير، نقوله إعطاء لي عنوان هذا المتغير. لذلك عندما أكتب العطف س، وهذا قائلا تعطيني عنوان س، في هذه الحالة، 111. نعم؟ الطالب: وهل يكون مقبولا إذا كنا يحدث أن تعرف عنوان هذا متغير معين لمجرد يقول المؤشر يساوي 0x111؟ JASON هيرشهورن: حتى إذا كنت على علم بأن كان هذا في 111، يمكن أن تكتب مؤشر x تساوي هذه الست عشري عدد، ولكن لا استطيع ان ارى هذه الطريقة التي من شأنه أن نعرف من أي وقت مضى ما هو عليه، حتى أن لماذا نستخدم هذه الجملة. ولكن مرة أخرى، وهذا الضم س، العطف يقول تعطيني عنوان هذا متغير، وتماما مثل أي متساوية علامة لا، وهذا تخزين التي قيمة داخل المؤشر. لذلك كلما كنت ترى أن العطف، أعتقد أن هذا هو إعطائي عنوان هذا الشيء. العطف x غير إعطائي عنوان هذا × مربع. مرة أخرى، إذا فعلنا مؤشر العطف، ما يمكن أن أحصل عليها؟ الطالب: عنوان المؤشر. JASON هيرشهورن: عنوان من المؤشر. ما على وجه التحديد؟ الطالب: 0x999. JASON هيرشهورن: 999. سوف تعطي مؤشر العطف لي 999 في هذه الحالة. العطف أمام أي متغير يمنحك عنوان هذا المتغير. بطبيعة الحال، أنا لا نكترث عنوان هذا المؤشر. ما يهمني أكثر من ذلك بكثير عن عنوان هذا المتغير. أخيرا، رمز الماضي ونحن في طريقنا ان نراه هو في الواقع نفس الرمز، أن النجمة. ولكن في هذا الخط النهائي، انها تستخدم بطريقة مختلفة قليلا. لاحظ كيف في هذا السطر الأخير انها بجانب المتغير. كما كان من قبل كان بجانب نوع، فإنه وكان جزء من هذا النوع، ونحن بصدد إنشاء هذا النوع مؤشر عدد صحيح، والآن النجم يعني شيئا مختلفة قليلا. وهو ما يعني ذهاب علاج قيمة - الباحث المؤشر - علاج قيمة في هذا المتغير مثل عنوان، انتقل إلى هذا العنوان، و أعطني تلك القيمة. حتى النجم يعني، مرة أخرى، وعلاج القيمة والمؤشر كعنوان، انتقل إلى هذا العنوان، والعودة تلك القيمة. في هذه الحالة، أن القيمة هي 50، ولذلك فإن هذا الخط سوف printf 50. نعم؟ الطالب: حتى إذا حاولنا أن نفعل ذلك على وهو الأمر الذي لم يعلن أنه المؤشر، مثل على الدوران، والقيمة هي 50، فإنه في محاولة للذهاب لمعالجة 50، أم أنه مجرد تعطينا خطأ؟ JASON هيرشهورن: إذا فعلنا نجمة س، وحاولت أن printf، ما أن المترجم به، أو ما البرنامج ستفعل عندما كان يعمل، هو ستعامل 50 مثل عنوان وانتقل إلى معالجة عدد 50 في البرنامج. عموما، عندما كنت تريد الذهاب لهذه عناوين عشوائية، وأنت لن انتقل إلى عنوان حيث شيء هو لطيف هناك. وأنت تسير للذهاب إلى سيئة حقا معالجة أنك ليس من المفترض أن تذهب ل، والبرنامج هو الذهاب الى تحطم الطائرة. لذلك نعم، أنت على حق تماما. أن تفعل الشيء نفسه بالضبط، ولكن عندما نحاول أن تذهب إلى عناوين أننا لم طلب أو ليس لدينا أعلن، أو التي هي مجرد عشوائي عناوين، ونحن دائما تقريبا الحصول على المتاعب وتعطل برنامجنا. لم أن أجيب على سؤالك؟ الطالب: نعم، أعتقد ذلك لدي واحدة أخرى. لذلك إذا كنت الباردة يفعل ذلك وأنه سيكون تذهب إلى هذا العنوان، ما هو نقطة معلنا مؤشر باعتباره الماوس لللو استطعنا فقط أن أقول مؤشر يساوي شيء العطف؟ ومن ثم فإنه سيكون مثل ذات مغزى عنوان، ويمكننا أن نذهب الى هناك، أليس كذلك؟ JASON هيرشهورن: هل لك تكرار السؤال؟ الطالب: لماذا علينا أن نعلن لل مؤشر باعتبارها نجمة الباحث إذا كان من شأنه العمل على أن تعلن أنها مجرد مثل الباحث العادية، لأنه سيظل لديها شيء يمكن أن يكون ثم ألغى الإشارة القيمة، أليس كذلك؟ JASON هيرشهورن: إذن لماذا نحن معلنا بأنه نجم كثافة بدلا من مجرد مثل عدد صحيح و توفير هذا العدد في ذلك؟ الطالب: نعم. JASON هيرشهورن: لأن عندما نستخدم الأشياء - السؤال الكبير - عندما نستخدم الأشياء، كلما نستخدمه مؤشر ونحن في طريقنا لل علاج شيء من هذا القبيل المؤشرات، وغيرها الأمور تسير على أنني لن للذهاب الى الآن أنه يساعد إذا يعرف البرنامج الذي هذا الشيء هو مؤشر. فإنه سيتم التعامل معها بشكل مختلف في بعض طرق أخرى غير ذات صلة بالنسبة لنا، لكنها نحن نذهب لاستخدامه مثل المؤشر، ينبغي أن نقول نحن في طريقنا لل يمكن استخدام هذا كمؤشر. لذلك هذا هو الأساس كيفية عمل المؤشرات. انها ليست أكثر تعقيدا من ذلك، ولكن لسوء الحظ، فإنه يصبح الكثير أكثر تعقيدا عندما نضعه موضع التنفيذ. المقبل، ونحن بصدد القيام به شيء كبير جدا. بدلا من مجرد رمي بضعة خطوط من التعليمات البرمجية على الانترنت، وأنا موضوعا 4، 5، 6، 7، 8 9، 10 أسطر من التعليمات البرمجية. وبدلا من الترميز هذه خارجا على الخاص الكمبيوتر أو تشغيل هذا البرنامج على جهاز الكمبيوتر الخاص بك، أريدك أن تأخذ بها ورقة وقلم رصاص أو من ركلة جزاء، ومعرفة ما كل من خطوط هذه الرموز القيام به. تبدأ مع العمود الأيسر، والعمل من أعلى إلى أسفل، والتي تهيئة هناك الكثير من هذه المتغيرات، و ثم انتقل من خلال كل سطر من التعليمات البرمجية في العمود الأيمن والشكل ما يحدث. سأعطيك الجميع ثلاث دقائق ل بدء هذا بنفسك، ثم سنقوم يذهب أكثر من هذا كمجموعة. دعونا نبدأ الذهاب على هذا كمجموعة. لا بأس إذا لم تكن قد انتهت. أنا ذاهب لبدء مع اليد اليسرى جانب من العمود، ومن ثم سأقوم دعوة يا رفاق هنا، الشجعان كنت بينكم هنا، لتنفيذ سطر واحد من التعليمات البرمجية على الجانب الأيمن العمود، ومن ثم سنعمل طريقنا من خلال. لذلك أولا، أن السطر الأول من التعليمات البرمجية، وكثافة العمليات x تساوي 2 فاصلة ذ يساوي 8 فاصلة ض يساوي 12، ويخلق ثلاثة متغيرات. فعلت كل ذلك في سطر واحد. وهذا مفيد لخلق جملة أشياء متعددة من نفس النوع على سطر واحد. لذلك لدينا ثلاثة صناديق. يمكن أن نرى الجميع هؤلاء الثلاثة، أو هو أن منخفضة جدا؟ موافق. لدينا س، ص، ض. وفي العاشر، وحصلنا على 2. في y، نحصل على 8. وفي ض، نحصل على 12. جميلة القياسية حتى الآن. القادمة ونحن بصدد إنشاء أخرى مربع، متغير آخر. هذا هو مؤشر كثافة العمليات. انه دعا مؤشر س. سنقوم رسم أن أكثر من هنا. وماذا نحن تخزين داخل المؤشر س؟ الطالب: عنوان خ. JASON هيرشهورن: عنوان خ. في هذه الحالة، لا أعرف عنوان خ. يمكن أن يكون أي شيء، ولكن انا ذاهب الى جعل شيء ما الآن لجعله أسهل بالنسبة لنا. سنضع x في 111. لذلك هذا يحصل 0x111، وستظهر فإنه سهم طيفة للدلالة انها لافتا إلى x. وبالمثل، لدي مؤشر ذ ومؤشر ض. يحصلون على القيم. ستظهر هذه 0x222، 0x333. هذا الإعداد الأولي لدينا على الجانب الأيسر من العمود. أنشأنا ثلاثة أعداد صحيحة، و أنشأنا رميات ثلاثية. داخل كل مؤشر، ونحن حفظ عنوان واحد من ثلاثة الأولي المتغيرات خلقنا. الآن، على الجانب الأيمن من العمود، ونحن نستخدم أن النجمة الرمز في عدد من الطرق المختلفة، ليس كل منها لاستخدامها ل إلغاء مرجعية شيء أو للذهاب إلى عنوان محدد و إرجاع القيمة هناك. يمكن أن تقولوا لي ما السطر الأول من التعليمات البرمجية يفعل؟ شخص ما رفع أيديهم الذي لم يتحدث حتى الآن. لك؟ الطالب: تعيين ض إلى 16. JASON هيرشهورن: تم ضبطه ض إلى 16. حتى ض يساوي مرات خ ذ. في هذه الحالة، انها مجرد الضرب نقوم به. بحيث يساوي ض خ ذ مرات، 2 مرة 8 هو 16. الكمال. لذلك سنقوم بتحديث هذه. ض يساوي 16. أن السطر الثاني من التعليمات البرمجية خ الفضاء نجمة يساوي ذ الفضاء. ماذا يعني أن سطر من التعليمات البرمجية تفعل؟ جيف. الطالب: x تساوي مرات خ ذ؟ JASON هيرشهورن: الحق بالضبط. هذا هو منهج الاختزال ل x يساوي مرات خ ذ. ربما كنت قد رأيت أشياء مثل س زائد يساوي ذ؟ هذا بالإضافة x تساوي س ذ. في هذه الحالة، نقوم به شيئا مختلفة بعض الشيء، x تساوي مرات خ ذ. ثم ما الذي أحتاجه لتحديث هنا؟ الطالب: x هو 16. JASON هيرشهورن: x هو 16. التغييرات في الخضراء هي ما قمنا به حتى الآن. المقبل، لدينا ذ متساوية نجمة مؤشر س. يمكن للشخص المشي لي من خلال ما هذا السطر من التعليمات البرمجية يفعل؟ ماذا يعني هذا السطر من التعليمات البرمجية تفعل؟ المشي لي من خلال من البداية. الطالب: يستغرق أيا كان مؤشر x هو مشيرا إلى أن القيمة التي يجري وأشار بذلك، و فإنه يخزن في ذ. JASON هيرشهورن: ممتاز. انا ذاهب الى تكرار ذلك مرة أخرى. قمت بعمل رائع، ولكن حتى نتمكن تؤكد ذلك، وهذا يعني نجمة علاج الشيء في مثل هذا المتغير عنوان وتذهب إليها. لذلك، وعلاج الشيء في مؤشر س مثل عنوان، انتقل إليها، واتخاذ تلك القيمة 16، ثم نحن فقط توفير فإنه في المتغير y. وحتى الآن ذ يحصل الكتابة، وعليه الآن 16. السطر التالي من التعليمات البرمجية، نجم المؤشر تؤكد x تساوي مرات خ ذ. ماذا يعني أن سطر من التعليمات البرمجية تفعل؟ مرة أخرى، إذا كنت فقدت قليلا هنا، تقييمها من اليمين إلى اليسار. حتى موندو، ما يفعله الحق الجانب من أن تفعل؟ الطالب: إن الجانب الأيمن فقط يضاعف كل ما هو في المربع هو x و y. JASON هيرشهورن: وهذا 16 و 16، فما أن المساواة؟ الطالب: 256. JASON هيرشهورن: 256. وأين نحن إنقاذ 256؟ الطالب: أنت حفظه في أي مؤشر س يتم الإشارة إلى، وهو مربع X. وحتى الآن س يصبح 256. JASON هيرشهورن: حتى النجم، مرة أخرى، يعني تذهب إليها. نذهب إلى ما مؤشر س يتم الإشارة إلى. انها لافتا إلى x، وهناك نحن توفير قيمة 256. أي أسئلة حول أن واحدة محددة؟ لم نر النجم المستخدمة في الجانب الأيسر، ولكن، من عامل التعيين. لذلك هذا هو السطر الرابع من التعليمات البرمجية. السطر الخامس من التعليمات البرمجية، يمكن للشخص الذي لم يتحدث بعد تعطيني السطر الخامس من التعليمات البرمجية، أو سيرا على الأقدام من خلال ذلك معي؟ آني، ما أن تفعل؟ الطالب: تغيير قيمة المؤشر x إلى قيمة المؤشر ذ. JASON هيرشهورن: هذا صحيح تماما. قيمة المؤشر y غير هذا العنوان هنا، ونحن تخزين أنه في مؤشر متغير x. ولذلك فإن هذا يصبح 222. وانا ذاهب لتحريك السهم، أيضا، للدلالة على أنه الآن له عنوان مختلف. وحتى الآن مؤشر تسطير س والمؤشر تسطير ذ لها نفس القيمة. هذا ما يفعل ذلك الخط. ذلك أساسا، وانهم كلا مشيرا إلى ذ. إذا كان لدينا فقط مؤشرات لدينا، ونحن لم أكن أعرف حقا المتغيرات، ونحن قد فقدت س. ولكن لحسن الحظ، لدينا خ حفظها في هذه الوظيفة، لذلك فإننا لا نزال تعرف حيث x هو. ولكننا سوف نرى أن المشكلة القادمة في وقت لاحق، أنه إذا خسرنا مؤشر إلى شيء ما، قد أننا لا نعرف في الواقع حيث هو أو أن يكون قادرا على استعادتها. ولكن هذا من أجل المستقبل. حتى الآن الحق، وهذا صحيح تماما، آني. وأخيرا، أن السطر الأخير من التعليمات البرمجية. يمكن للشخص أن تعطيني ما السطر الأخير من التعليمات البرمجية يفعل؟ نعم؟ الطالب: إنه يضاعف ما هو في مؤشر ذ، لذلك 16 مرة 16 - JASON هيرشهورن: 16 غير ليس في مؤشر ذ. الطالب: حسنا، فإنه يذهب إلى هذا العنوان، يجدها، ثم يتكاثر أنه بحلول نفس الشيء - أنه لا و نفس الشيء مع مؤشر ض، والضرب القيم، ويخزنها في العاشر. JASON هيرشهورن: الحق بالضبط. وذلك ما أحتاج لتحديث؟ ما ينبغي أن يكون س؟ الطالب: إن أعلى اليسار، 256. JASON هيرشهورن: وماذا يمكنني تغييره إلى؟ آسف، ونحن سوف ترتفع مرة أخرى. الطالب: وينبغي أن يكون لا يزال هو نفسه. JASON هيرشهورن: نعم، فإنه في الواقع لا يزال يساوي 256. ولكن هذا صحيح تماما. دعونا كسر هذه أسفل. سنرى هنا، وهذا الشيء في قوسين، نجم المؤشر ذ، أن يعامل ما في المؤشر كما ذ عنوان، يذهب إلى أن عنوان، ويأخذ 16. حتى الآن لدينا 16، ونحن ضرب هذا من قبل نفس الشيء في ض. الذهاب الى هذا العنوان، مع الأخذ في 16. 16 مرات 16 هو 256، ونحن تخزين أن داخل س. س يحدث بالفعل ل يساوي 256، لذلك نحن لسنا الذهاب الى جعل التغيير. لم يكن لديك هذا الملف في الوقت الراهن، ولكن في التعليمات البرمجية المصدر لهذا القسم التي سيتم نشرها على الانترنت في cs50.net/sections، وقد كتبت جميع من هذا الأمر، بالضبط ما فعلناه. وأنا في الواقع شملت بعض الدول الاخرى المعلومات الصحيحة هنا، والتي نحن سوف تذهب من خلال في الثانية. نفعل هذه العمليات، كما ترون هنا، وبعد ذلك بطباعة مما أدى قيمة المتغير محددة التي تم تغييرها. لقد تم بالفعل كتابة هذا الرمز. أنا ذاهب لتشغيل هذه التعليمات البرمجية. والآن دعونا المشي من خلال الإخراج. دعونا نبدأ في البداية. قيمة x تساوي 2. وينبغي أن يكون له معنى. كان ذلك ما كنا في البداية تهيئة ل. عنوان x هو هذا الشيء مجنون. مرة أخرى، ونحن نرى، ولكن، على الرغم من أنها يبدو مجنون قليلا على الأولى التفتيش، ونحن نرى أن 0X هناك حق. هذا هو رقم سداسي عشري. ومن ثم نرى كل هذه الأشياء المجنونة. هناك ب وو، و أيضا في ج هناك. أيا من تلك طبيعية الصفر من خلال تسعة أرقام، ولكن لأن الست عشري هي قاعدة 16، تحتاج فعلا اثنين من رموز أخرى ل تمثل كل رقم. ذلك مرة أخرى، ونحن لسنا بصدد الحديث عن الست عشرية كثيرا، ولكن نعرف أنه عندما كنت تكتب الست عشري الأرقام، سترى شيئا من الصفر من خلال 9 أشياء زائد من خلال و. ذلك على الرغم من أنهم ليسوا جميعا الصفر من خلال تسعة أرقام، وهذا هو عدد، وهذا هو العنوان. ويمكن التعبير عنها في قاعدة 10 إذا أردنا. قيمة مؤشر س الحق هنا هو أيضا عدد عشري، وما هو انها نفس من؟ ما هو هذا العدد نفس؟ عنوان الدوران، أليس كذلك؟ خط الحق فوقه، هذين عناوين متطابقة، وهذا ما نتوقعه. عنوان x هو قيمة المؤشر إلى x. المقبل، لدينا عنوان مؤشر س، وهذا هو، مرة أخرى، وبعض الأرقام العشوائية. إذا نحن ذاهبون لتفتيشها، لاحظنا أنها تشترك في الكثير من نفس الأرقام ومنها الأخرى. انها مختلفة، لكنها تشترك الكثير من نفس الأرقام. يتذكر الحديث عن العازلة أخطاء تجاوز؟ عندما يمكنك إرسال أكثر من الأشياء التي هي إغلاق لكم في الذاكرة، وإذا ذهبت خارج حدود صفيف. مرة أخرى، ونحن لسنا بصدد الحديث عن هذا الحق الآن، ولكن بالنسبة لأولئك منكم الغريب، وهذه الأمور هي في الواقع جميلة قريبة من بعضها البعض. هذه المربعات هي قريبة جدا إلى واحد آخر في الذاكرة. وأخيرا، مؤشر س النقاط لل القيمة، وبطبيعة الحال، فإنه من 2. فعلت هذا النجم. تابعنا العنوان في المؤشر س في البداية، و عاد قيمة x. وأخيرا، فإننا نرى بالضبط ما فعلناه للتو. ض الأول هو 16، ثم خ هو 16، ثم ذ هو 16. س يصبح في نهاية المطاف 256 هنا. ومرة أخرى، لا يتم تغيير خ قبل أن السطر الأخير من التعليمات البرمجية. يبقى 256. إذا كنت ترغب في تكرار هذا بنفسك مرة أخرى، أو يذهب من خلال ذلك، أو تغيير بعض من هذه القيم حتى، لقد كتبت بالفعل هذا الرمز. يمكنك إجراء التغييرات إلى رمز ونرى كيف أن هذه التغييرات في الواقع تلعب بها في الحياة الحقيقية. قبل أن ننتقل مع مؤشرات، لا أي شخص لديك أي أسئلة؟ موافق. يمكن أن تأخذ الجميع يدا واحدة، و وضعها في الهواء، و- تغمض عينيك - وضع يدك اليمنى في الهواء باعتباره القبضة، وتعطيني ممتاز، ممتاز أسفل، الابهام المتوسطة، وكيف مريحة كنت مع مؤشرات حتى الآن. تغمض عينيك. موافق. يمكنك وضع يديك أسفل وافتح عينيك. شكرا لك. ونحن في طريقنا للمضي قدما. ونحن في طريقنا للحفاظ على الحديث عن مؤشرات، ولكن نحن ذاهبون الى الحديث عنهم في قليلا من سياق مختلف. نحن ذاهبون الى الحديث عن المصفوفات والمؤشرات. وتذكر الاسبوع الماضي أنا فجر عقولكم؟ أدمغة شخص ما، غادروا منها هنا على الأرض. كنت متأكد من فجر الاعتبار أن الشخص. كان ذلك مزحة سيئة. [ضحك] JASON هيرشهورن: أنا ذاهب للعمل على ذلك. ولكن على أي حال، سلاسل وجدنا من كانت المصفوفات. المصفوفات هي في الواقع مؤشرات. ماذا أعني بذلك؟ حسنا، إذا كان لنا أن إنشاء مجموعة من ستة حرفا، هذا الذي سطر من التعليمات البرمجية لا هنا - شار، مجموعة، وقوس فتح، وستة، على مقربة قوس، منقوطة - مرة أخرى، يخلق مجموعة من ستة أحرف. ملئه. لدي صورة له هنا. هذه الصناديق، ونحن نرى أن ملأها مع بعض الشخصيات وفارغة فاصل في نهاية المطاف. والأسفل، وهذا هو المكان الذي أود لك أن ألفت الانتباه. المربع الأول جدا - لقد فعلت هذا من قبل. فعلناه في الواقع هذا في كل مشكلة تعيين. يمكنني الرجوع إلى المربع الأول جدا في هذه المجموعة مجموعة كما قوس الصفر. فعلنا ذلك مليون مرة. أنا يمكن أن تشير في الواقع إلى المربع نفسه بطريقة أخرى. أستطيع أن أشير إلى أنها مجموعة نجوم. لأن مجموعة، إذا كنا فعلا ل طباعة ما يساوي مجموعة، مجموعة هو عنوان، وانها عنوان المربع الأول في هذه المجموعة. بحيث المشغل نجمة يعامل ما هو تخزينها في مجموعة كعنوان، ويذهب إلى هذا العنوان، والعوائد قيمة هناك. ومجموعة نجوم و العودة تماما مثل مجموعة قوس الصفر و يعود. مرة أخرى، في كل مكان كنا الكتابة قوس مجموعة الصفر، مجموعة نجوم من شأنه قد فعلت نفس الشيء بالضبط. في الواقع، مجموعة قوس الصفر فقط لدينا طلاء من السكر ما حدث فعلا. انها حقا مجموعة النجوم هو أكثر الطريقة الصحيحة، إذا كان هناك واحد صحيح الطريقة، للتفكير في ما هو يحدث في الواقع. ذلك أن كل شيء حسن وجيد، ولكن وهنا المكان الذي تحصل عليه رائعة. نذهب إلى الحرف الثاني هنا، وهذا الصفر. ينبغي أن يكون O، ولكن سنقوم اعطائها الصفر. نحن المشار إليها من قبل، و المربع الثاني في مجموعة، ومجموعة قوس واحدة كلما قمنا يتحرك من خلال صفيف. هناك طريقة أخرى للإشارة إلى ذلك، وهذا هو في الأسفل. هذا النجم، PAREN مفتوحة، مجموعة زائد 1، أغلقت PAREN. ذلك لأن وضعت صفائف من - هذه صناديق كلها بجوار بعضها البعض في الذاكرة - مجموعة نجمة يذهب إلى أول واحد. إذا كان الأمر كذلك ونحن في طريقنا لاتخاذ مجموعة التي عنوان، إضافة 1 إليه، ثم انتقل إلى هذا العنوان الجديد، التي يجري أن يكون الشيء الصحيح بجانب العنوان الأصلي. نعم؟ الطالب: حتى إذا كان صفيف، بدلا من كونها حرف، سيكون من رجات، ثم كنت قد لزيادة بنسبة 4 في كل مرة؟ JASON هيرشهورن: هذا سؤال كبير. اسمحوا لي أن ألفت شيئا أولا، ثم أنا سوف أجيب على سؤالك. رسم هذا على الشاشة حقا بسرعة قبل الوصول إلى الخاص السؤال، لدينا مجموعة لدينا - ويمضي، ولكن انا ذاهب فقط ل التركيز على أول زوجين من تلك. في الذاكرة، وهناك مربع أننا عندما كنا خلق تهيئة هذه المجموعة. هذا هو المتغير صفيف، وهذا هو عنوان. هو، في الواقع، فإن عنوان أول شيء، المربع الأول. لذلك هذا المربع هو في مكان ما. هذه المربعات الستة هي في مكان آخر. عندما نفعل مجموعة قوس الصفر، ونحن ذاهب للحصول على أول شيء هنا. وعندما نفعل مجموعة نجوم، ونحن في طريقنا للحصول على نفس الشيء بالضبط، وقيمة أن يشير إلى مجموعة. عندما نفعل مجموعة قوس 1، ونحن في طريقنا للحصول على المربع الثاني، ولكن أيضا، لأن المؤشر هو خارج تلك قوسين، أولا ونحن في طريقنا لإضافة 1 لهذا العنوان، ومن ثم نحن في طريقنا لمتابعة ذلك وتعطينا المربع الثاني. وهلم جرا وهكذا دواليك. مجموعة زائد 2 هو ذاهب لإضافة 2 إلى هذا معالجة هنا، لمرة أخرى، عناوين وتمثل مجرد أرقام كما عشري، في كثير من الأحيان. إضافة لذلك 2 لذلك، وتابع أن ل المربع الثالث، والذي يحدث أن تكون، كما كنت يمكن أن نرى، مسافتين بعيدا من المربع الأول. نأمل، التي جعلت من أقل مربكة بدلا من أكثر مربكة. ولكن لم تجعله أكثر مربكة؟ مرة أخرى، أنا ذاهب للحصول على الخاص سؤال في ثانية واحدة. لم تجعله أكثر مربكة ل أي شخص، أو لا أحد لديك أي أسئلة حول هذه الفكرة من المصفوفات كمؤشرات؟ رائعة. كما أنه سيكون رائعا إذا كان لديك أسئلة. ولكن الانتقال إلى سؤالك. كان السؤال صحيحة في الذاكرة يستغرق أربعة بايت، لذلك أربعة صناديق. إذا كنا نفكر في مربع واحد كما بايت واحد، أعداد صحيحة يستغرق أربعة صناديق. لذا تقول هذه هي الأعداد الصحيحة الآن. هذا هو صفيف الباحث هنا. أنا ذاهب لجعل بعض عناوين عشوائية. حتى لو كان هذا على مجموعة كثافة، و أول واحد قد يكون 10. أربعة مربعات واحد القادم على ل الأعداد الصحيحة هي أربعة صناديق كبيرة. سيكون هناك 10، 11، 12، 13، لذلك وهذا من شأنه أن يكون واحد 14. وهذا من شأنه أن يكون واحد 18. وهذا من شأنه أن يكون واحد 22، وهلم جرا. ذلك مرة أخرى، هي حرف بايت واحد. هم على حق بجانب بعضها البعض، حتى هذه الخريطة كنا نتحدث قبل يعمل تماما. ولكن كنت أحضر للتو حالة رجات. حسنا، إذا أضفت 1 إلى هذا، انما سيذهب الى 11. انها تريد ان تكون في منتصف هذا الباحث إذا تابعت أنه حقا على وجه التحديد من هذا القبيل. كنت في الواقع تسير مربع بواسطة مربع في الذاكرة. الشيء باردة حول هذا النوع من المؤشر الحسابي هو البرنامج هو ذكي بما فيه الكفاية لأعرف ماذا تقصد. عندما كنت تقوم بإضافة 1 إلى ذاكرة العنوان الذي يشير إلى صحيح، انها لن الواقع لإضافة أكثر من كتلة واحدة. انها سوف تضيف أكثر من أربع كتل. انها تسير لتوسيع نطاق هذا العدد لك شراء الحجم. وهذا يعود الى مسألة كورتيس، و لماذا نفعل نجمة كثافة العمليات بدلا من نجمة شار؟ كان هذا سؤالك؟ سأل أحدهم أنه في وقت سابق، أليس كذلك؟ لماذا نفعل نجمة كثافة العمليات بدلا من شار نجم ما اذا كان الذهاب لمعالجة أي ما يهم؟ وهذا لمساعدتنا مع هذا نوع المؤشر الحسابي. إذا نعلن شيئا كنجم شار لكنه يحدث في الواقع من خلال أعداد صحيحة، عندما أضفنا 1، أنه سيكون فقط التحرك مربع واحد على بدلا من أربعة نتوقع منطقيا لنقل أكثر. ذلك مرة أخرى، في مؤشر الحساب، عندما ونحن نتعامل مع هذه الأمور مثل عناوين، ثم إضافة أو طرح لهم ومن ثم الالتزام بالتعليمات ل معرفة ما يجري في الذاكرة، عدد نضيف لهم يحصل تحجيمها حسب حجم ونوع الشيء انهم لافتا إلى. حتى لو انهم لافتا إلى عدد صحيح - أعرف أنني أكرر نفسي - ولكن لو انهم صحيح، وكنت يحدث فعلا للتحرك أربعة مربعات أكثر في كل مرة. لو انهم شار، وكنت الذهاب الى التحرك مربع واحد. إذا كانت طويلة طويلة، وعلى بعد ثمانية بايت، وأنت تسير إلى التحرك ثمانية مربعات أكثر. مهما كان حجم نوع البيانات، من يدري؟ لا يهم حقا لأغراضنا. كل ما نحتاج إلى معرفته هو في الواقع، هذا الرياضيات هنا، مضيفا فقط 1 سوف يوصلنا الى المربع الثاني بغض النظر ما نوع الشيء هو في أن المربع الثاني. آمل هناك نوع من الأسئلة هنا، لأن ذلك كان كثيرا، وأنا لا يمكن أن فعلت الكمال وظيفة في تفسير ذلك. حقا؟ أي الأسئلة؟ للجمهور في الداخل - هناك نذهب. الطالب: لو كنت لجعل صفيف في وظيفة، وتريد أن العودة أن مجموعة إلى شيء آخر، كيف يمكنك إعادته؟ JASON هيرشهورن: سؤال ممتاز. حتى إذا كنت تريد أن تجعل مجموعة في وظيفة، ومن ثم العودة أن مجموعة - ولذا فإننا سوف نقول اننا سنحقق مجموعة في وظيفة التي دعا اليها الرئيسي. وتدعو هذه الوظيفة الرئيسية، وهذا وظيفة يخلق مجموعة، ثم يعود إلى الرئيسي. الآن شاهدنا شيئا مشابهة لهذه من قبل. حيث شهدنا شيئا من هذا القبيل حيث يخلق الرئيسي للمجموعة، ثم وظيفة تعالج ذلك؟ ما نحن مكتوبة قبل وهذا ما فعلت ذلك؟ الطالب: الفرز؟ JASON هيرشهورن: الفرز وقد فعلت ذلك. وقد فعلت عبة أيضا أن 15. في الفرز، ومررنا في مجموعة، و كومة قش، وبعد ذلك فرزها من قبل تحديث المدمر مختلفة أجزاء في أن مجموعة. لذلك اتخذنا مجموعة لدينا الأصلي - نتذكر، واحدة من المعلمات إلى كان ظيفة الفرز مجموعة - الطالب: أليس هذا مجموعة العالمية؟ JASON هيرشهورن: الحق. نعم، ونحن في طريقنا للحصول على العودة إلى هناك. ولكن قد تم إنشاؤه في - كان عالمي، أو كان عليه تم إنشاؤها في وظيفة؟ دعونا ننظر. يمكننا الإجابة على هذا. يبدو انها ليست مجموعة العالمية. وقد خلق ذلك الحق هنا على هذا الخط مجموعة من الأعداد الصحيحة، ومن ثم فإنه من مرت لدينا وظيفة الفرز. لذلك ليس من مجموعة العالمية. ولقد أدى ذلك في الرئيسي، مرت لدينا وظيفة الفرز. لدينا وظيفة الفرز المدمر تحديثات عليه، وإرجاع ذلك. كما يمكننا أن نرى ما يصل في أعلى، نوع - أوه، يا للسماء، آسف. الطالب: يعود الترتيب فقط سواء أم لا وجدت ذلك؟ JASON هيرشهورن: الحق. آسف. نوع فعلا - دعونا فتح ان ما يصل. النوع هو باطل. نوع لا يعود أي شيء ل النوع المدمر بتحديث مجموعة، مجموعة الأصلي. وهذا ما رأيناه من قبل، ولكن كان سؤالك ما إذا الفرز يخلق في الواقع مجموعة؟ الطالب: ارجع العوائد المحدثة مجموعة، أو شيء من هذا القبيل. JASON هيرشهورن: وشيء آخر أن وكان من الممكن القيام به كان يسمى الرئيسي وظيفة. وظيفة هذه الوظيفة هو خلق مجموعة من شيء ما، مجموعة من الأعداد الصحيحة، ومن ثم العودة التي مجموعة خلقت لالرئيسي. لذلك كما رأينا من قبل عندما نتحدث حول المكدس، والتي نحن في طريقنا لل الحديث عن بعض الشيء في وقت لاحق اليوم، مرة واحدة في ترجع الدالة، كل ما كان تم إنشاؤها في تلك الوظيفة، كل من المتغيرات المحلية، يذهب بعيدا. رأينا أن فكرة نطاق من قبل. لهذا السبب قمنا بإنشاء العالمية المتغيرات في وقت ما، إلى الهروب من هذا مشكلة الأمور تسير بعيدا عندما العودة مهامهم. ماذا كنت ستفعل في هذه الحالة هو أن وظيفة خلق مجموعة وليس كما متغير محلي على المكدس. فإنه إنشائه في جزء مختلف من الذاكرة التي تسمح أن تكون الأمور حفظ حتى عندما عادوا وظائف والإطار وظيفة، و كومة الإطار، وقد ترك المكدس. انا ذاهب الى استخدام بعض المصطلحات هنا. كنت لن نسمع عن هذا حتى يوم غد، ولكن هذه المنطقة من ويسمى ذاكرة الكومة، و أنا لا أريد أن أخوض في ذلك. ولكن ما أن وظيفة يمكن أن تفعل، ومرة ​​أخرى لتبسيط يحتمل، هو خلق ان مجموعة في مكان مختلف في الذاكرة التي تبقى في الواقع هناك ل طالما أنك تريد أن يبقى هناك، وأنه سوف يعود إلى تمرير مؤشر الرئيسي إلى أن مجموعة حفظها في أن الجزء الآخر من الذاكرة. لذلك يجعل بعض الصناديق في مكان آخر أن لا تحصل على تدميرها عندما الدالة بإرجاع ويمر إلى الرئيسية خطاب الى أن مجموعة من الصناديق. وهذا ربما ليس كافية الإجابة على سؤالك، ولكن التي سيتم استكشاف المزيد غدا عندما يتحدث رفاق حول الكومة في المحاضرة. دعونا ننتقل - أوه، يا للسماء! وهذا هو الدلفين! كيف رائعتين ذلك؟ الله! انهم حيواني المفضل، لذلك هم في الواقع رائعتين. لدي ثلاثة الدلفين الحيوانات المحنطة. ولكن يكفي عني. لديك كل أجهزة الكمبيوتر فتح أمامك. هنا هو احالة الترميز الخاصة بك. ونحن في طريقنا للبدء مع شبة الكود، على الرغم من ذلك لا تحصل متحمس جدا. تحتاج إلى كتابة برنامج يأخذ سطر الأوامر واحد واحد فقط حجة، وهذا العدد الدلافين لتدريبهم. وينبغي أن يكون هذا العدد أكبر من 0. وأنت تسير المقبل للسماح لل مدرب لدخول عصر ل كل من هذه الدلافين. كل عصر، ومرة ​​أخرى، ينبغي يكون أكبر من 0. وجميع هذه الأعمار ينبغي خزنها في صفيف. للحصول على العمر، ومع ذلك، تحتاج ل استدعاء دالة بما يلي النموذج - نجمة كثافة العمليات، والفضاء، getAge، الأقواس، الفراغ، الأقواس وثيق، منقوطة. أخيرا، أنا أريد منك أن طباعة سن من أقدم دلفين. ذلك مرة أخرى، قبل أن تبدأ الكتابة في رمز، لديهم ورقة أو لديك gedit مفتوحة إذا كنت تريد، وكتابة بعض شبة الكود لهذا الغرض. في ثلاث دقائق، ونحن في طريقنا ليذهب أكثر من شبة الكود. سيكون لديك آخر ثلاث دقائق ل رمز، ومن ثم سنذهب أكثر من الترميز معا. وإذا كان لديك أي أسئلة ل هذه ليست واضحة، ورفع يدك و سآتي حولها، وأنا سعيدة للإجابة على سؤالك. ولكن للبدء، وتأخذ ثلاث دقائق ل إرسال شبة الكود للتأكد من أنك فهم منطق هذه المشكلة. دعونا نلقي طعنة في شبة الكود كمجموعة. انا ذاهب الى كتابة هذا على متن الطائرة كما كنت تعطيني شبة الكود. والذين ترغب في اعطاء لي السطر الأول؟ الخط الأول ربما أسهل، حتى إذا كان لديك لا شارك حتى الآن، وتبدأ هنا. ما هو السطر الأول من شبة الكود. الطالب: الخط الأول هو للتحقق من و عدد من الحجج التي تحصل. JASON هيرشهورن: الحق بالضبط. التحقق من عدد من الحجج، الأولى شيء يتعين علينا القيام به. في المرة القادمة؟ الطالب: تحقق من هذا الأمر، و الوسيطة الأولى، هو أكبر من 0؟ JASON هيرشهورن: تحقق أن أول الحجة هي أكبر من 0، نعم. السطر التالي، والمضي قدما. الطالب: ثم كنت على الارجح تريد تخزين هذه الحجة سطر الأوامر في متغير، أو هل يمكن فقط انتقل إلى الخطوة التالية. JASON هيرشهورن: نعم، مرة أخرى، وسوف نقوم لديها سلسلة هنا، لكننا نريد ل صحيح لأنه عدد، لذلك نحن بحاجة لجعل سلسلة إلى عدد صحيح. الطالب: س، ص. JASON هيرشهورن: هذا صحيح. لذلك، فإننا سوف أكتب ذلك. سلسلة - قف، انظر إلى ذلك علامة. هذا هو الشيء الثاني أننا بحاجة للقيام، واتخاذ سلسلة و تحويلها إلى كثافة العمليات. ما هي الخطوة التالية؟ الطالب: إنشاء مجموعة من رجات مع حجم الخط الأمر الأول حجة أن ليست مبرمجة؟ JASON هيرشهورن: عذرا؟ الطالب: مجرد إنشاء مجموعة من رجات، وجعلها حجم الأمر وسيطة سطر التي حصلت. JASON هيرشهورن: إنشاء مجموعة من حجم - سنفعل سيطة، أيا كان كان ذلك حجة. موافق؟ ما هي الخطوة التالية؟ لذلك لدينا مجموعة، والسماح المدرب لإدخال العمر لكل دولفين. للحصول على العمر، استدعاء دالة مع النموذج التالي. لذلك لدينا مجموعة لدينا. ماذا علينا أن نفعل؟ الطالب: لن الدلافين؟ JASON هيرشهورن: OK. أنا أريد أن أكتب لكل منها. لكل دولفين، ما لا يتعين علينا القيام به؟ المضي قدما؟ الطالب: استدعاء دالة. JASON هيرشهورن: دعوة وظيفة، موافق. الطالب: في pseudocoding، يجب عليك تحديد وظائف مثل في منفصلة كتلة من شبة الكود؟ JASON هيرشهورن: لذا، نعم. دعونا نفعل مربع منفصلة من شبة الكود أكثر من هنا، شبة الكود لgetAge. حتى هذه الوظيفة، لكل دولفين ندعو getAge، و getAge يعود شيئا. فأين يجب أن نضع الشيء نحن عودته؟ تقوم بإرجاع مؤشر كثافة العمليات، أليس كذلك؟ هذا هو نوع الإرجاع، وفقا إلى أن وظيفة النموذج. فأين نحن وضع أن مؤشر كثافة العمليات. الطالب: في المصفوفة. JASON هيرشهورن: في المصفوفة. أن يبدو كبيرا. استدعاء getAge، وطرح العودة قيمة في الصفيف. دعونا نتوقف getAge لفترة ثانية. سوف نعود إلى ذلك. وسوف تتيح لك بدء لي على ذلك، ماركوس. ولكن حصلنا على كل سن. لقد وضعنا كل منهم في الصفيف. ماذا نفعل في نهاية المطاف؟ كيف ننتهي الرئيسية؟ ما هو آخر شيء يتعين علينا القيام به؟ ألدين؟ الطالب: نحن يمكن فرزها، و ثم طباعة أكبر الاكتشاف. JASON هيرشهورن: نحن يمكن فرزها، نعم. لذلك كيف يمكننا فرز؟ الطالب: نحن يمكن أن مجرد مثل - JASON هيرشهورن: هل نحن بحاجة إلى لفرز هنا، على الرغم من؟ الطالب: لا أفترض. JASON هيرشهورن: OK. فعلت هذا من قبل. ما هو السبيل الأول كتبته البحث عنه؟ الطالب: نحن فقط يمكن التحقق من كل واحد ضد كل واحد الآخر. JASON هيرشهورن: دعونا نفعل ذلك. دعونا من خلال بحث كل واحد وفقط تتبع من أقدم العمر. بحث عن أقدم، ثم ما يفعله يتعين علينا القيام به مع أقدم؟ الطالب: إعادته. طباعته، آسف. JASON هيرشهورن: هناك نذهب. صحيح تماما. طباعة أقدم. موافق. ماركوس؟ الطالب: تتبع لل كما كنت أقدم إضافتها؟ JASON هيرشهورن: OK، بحث عن أقدم. لذا فإننا يمكن أن تتبع من أقدم كما نضيف لهم هناك. استدعاء getAge، ووضع قيمة الإرجاع في مجموعة، ومن ثم معرفة ما إذا كان هذا هو الحالي أقدم واحد، وربما انقاذ في متغير مختلفة؟ التي من شأنها أن تعمل بشكل جيد. قد أن فعلا من إنقاذ لنا رحلة، ولكن هذا أمر رائع. أنا ذاهب إلى ترك هذا هنا في الوقت الراهن. ولكن إذا كنت تريد في حياتك تنفيذ أعتبر أن الخطوة أبعد من ذلك، من شأنها أن تكون كبيرة. ماركوس؟ يتيح القيام getAge أكثر من هنا. ماركوس: OK. يطلب من المستخدم لعصر. JASON هيرشهورن: اسأل المستخدم للعصر. موافق. يمكن أن نرى أن الجميع؟ أكثر من هنا؟ موافق، اطلب المستخدم للعصر. الاستمرار، وكنت حصلت على هذا. ماركوس: أعتقد أنني لا تحصل حقا لماذا فمن الأفضل أن يعود نجم كثافة من مجرد كثافة، مثل ثم إلى مجرد العودة سن لتخزينه. JASON هيرشهورن: انها ليست بالضرورة أفضل العودة. فإنه يعمل فقط، وكذلك في عودته، ولكن أريدك أن تعود نجمة كثافة العمليات. ماركوس: OK. أنا لا أعرف حقا ما - JASON هيرشهورن: OK. هل لدى أي شخص أي أفكار؟ نسأل المستخدم للعصر. نحن نحصل على عدد صحيح. موافق. فلماذا لا نتوقف هنا. ونحن في طريقنا للذهاب إلى الخطوة التالية في منطق، تعيين هذه الأشياء على أن نرى، ثم يا رفاق سوف رمز أن أول جزئيا، ورمز كل ذلك جيدا معا، ولكن getAge معينة. وسنقوم معرفة ما يحدث على هذا النجم مع كثافة العمليات. ولكن قبل ان نفعل ذلك، قبل أن تقفز إلى رمز C، يمكن أن نشير شخص خارج بعض الأشياء التي يرونها في شبة الكود لدينا التي من شأنها أن الخريطة على رمز العادية؟ في C؟ وحتى بعض الأشياء في شبة الكود، بعض الكلمات ترى، بعض المسافة البادئة لك ترى، بعض الأشياء التي تعطيك بعض تلميحات حول كيفية رمز هذا في C؟ الطالب: للحلقة. JASON هيرشهورن: أين؟ الطالب: ل"لكل" الدلفين " JASON هيرشهورن: OK. هناك نذهب. لدينا حلقة هناك. ماذا؟ موندو؟ الطالب: السلسلة إلى int أن يكون الشيء إلى i JASON هيرشهورن: OK. لذلك رأينا أن وظيفة من قبل. غيرها من الاشياء التي نراها؟ الطالب: Printf. JASON هيرشهورن: بالضبط. لا بالطبع، ولكن نأمل لدينا بعض الألفة مع printf الآن. ماذا؟ نعم؟ الطالب: قراءة صفيف مجرد إعلان مجموعة؟ JASON هيرشهورن: OK. لذلك، من حجم سيطة. هذا صحيح. أنا لا أعرف ماذا أكتب هذا كما، ولكن نعم، معلنا واحدة. كلمة أخرى لإنشائه. أي أمور أخرى نرى هنا؟ الهياكل لنا أن نعرف؟ ماذا عن هذا الخط "البحث لأقدم؟ "أي نوع من هيكل قد تستخدم؟ الدن، كنت اقترح عليه. الطالب: مجرد البحث. مثل ذلك مجرد حلقة. JASON هيرشهورن: حلقة. لذلك، فإنها بحث. ربما كنت تتحدث عن الخطية بحث هنا، لذلك فمن المحتمل فقط باستخدام حلقة القياسية يمر كل شيء، وهذا هو السبب اقترح كورتيس يمكننا أن نضع في الحلقة السابقة. أي أمور أخرى نرى؟ التحقق من عدد من وسائط. كيف يمكننا تحقق شيئا؟ الطالب: إذا البيانات. و JASON هيرشهورن: هذا وإذا كان الشرط. لذا، لماذا لا تبدأ الترميز هذا البرنامج. لديك شبة الكود هنا. بدء الكتابة وفي التعليمات البرمجية C. مرة أخرى، ونحن في طريقنا لمعرفة ما هو يحدث مع هذا النجم كثافة و كيف نستطيع كتابة هذا البرنامج في الواقع بحيث يتوافق مع مواصفات اعطيت لك. إذا كنت تريد، ومع ذلك، بدء مع مجرد الحصول على كثافة الفراغ. هو فقط بإرجاع عدد صحيح. التي تساعدك على الحصول على الذهاب. مجرد رمز ذلك. كود أنها مجرد نوع الإرجاع باعتبارها كثافة العمليات، وليس كما نجم كثافة العمليات. ولكن بعد ذلك نحن نذهب لتحويله الى نجمة الباحث مرة أخرى ولذا فإننا يمكن أن تتفق مع مواصفات. استكشاف أيضا كيف يمكن للمرء أن الواقع الحصول على ما كان جيف نتحدث عنه في وقت سابق. حتى تأخذ ثلاث إلى خمس دقائق إلى رمز هذا. نحن في سبيلنا للذهاب من خلال هذا الرمز معا. أعتذر إذا كان هناك نقص في الوضوح على بعض أجزاء من هذا. ولكن ما نحن ذاهبون للنظر في الحق الآن هو أنني قمت بكتابتها بالفعل جميع رمز لما سيبدو إذا نحن فقط إرجاع عدد صحيح مع getAge. وسنذهب من خلال هذا الرمز، و ثم سنقوم معرفة كيف يمكننا في الواقع الحصول عليها لتتماشى مع ما كان طلبت منا للعودة نجم كثافة العمليات. وهنا رمز. ومرة أخرى، وأنا نعتذر على أننا لا يمكن رمز هذا الخروج كمجموعة، ولكن أريد للتأكد من أن نحصل من خلال ذلك. لأعلى، لدينا وظيفة لدينا النموذج الأولي، getAge. شاهدنا ذلك من قبل. العودة النوع الأول، ثم اسم، ثم المعلمات. هنا، ونحن بما في ذلك ثلاث مكتبات. يمكن للشخص أن يقول لي ما هذا الخط 12 لا؟ حادة تشمل live.h المعيار؟ ماذا تفعل هذا الخط؟ إذا كان لي أن أطرح عليكم هذا على مسابقة، و طلبت منك أن تعطيني الجواب في جملتين، ماذا كنت أقول؟ الطالب: [غير مسموع] يتيح لك استخدام جميع وظائف المخزنة في هذا الملف. JASON هيرشهورن: هذا إجابة جيدة. انها وظيفة رأس يحتوي على نماذج لعدد من الوظائف، وإذا كنت تنوي استخدام تلك في مكتبتك، وهذا يقول هذه توجد وظائف. ماذا يمكنني القيام به إذا أنا بما في ذلك، على سبيل المثال، مكتبة CS50؟ ماذا يمكنني القيام به عندما أنا تجميع برنامجي؟ الطالب: [غير مسموع] تشمل باستخدام اندفاعة لتر. لذلك نحن بحاجة إلى ربط في تلك المكتبة CS50 مع اندفاعة ل الوقوف لالارتباط. روابط اندفاعة ل CS50 في تلك الفعلية و الأصفار، والتنفيذ الفعلي ، ويقول، الحصول على سلسلة أو الحصول على كثافة العمليات. حتى ذلك الحين نحن في الرئيسية. دخلت ضمان مستخدم واحد فقط و وسيطة سطر أوامر واحد. تماما مثل شبة الكود لدينا، لدينا أنه إذا شرط هنا. نأمل، يا رفاق هي مألوفة جدا مع هذا الخط، وقادرة على إرسال هذا الرمز بسرعة كبيرة، التحقق ARGC. المقبل، ونحن نفعل ذلك للط تبطن. مرة أخرى، كنت قد رأيت ذلك من قبل. وهذا ما يحول سلسلة إلى عدد صحيح. الشيء التالي أقوم به هو ولدي إذا شرط آخر. أنا التأكد من أنها دخلت إيجابية عدد الدلافين فقا ل مواصفات، والتحقق إذا الدلافين أقل من 1. ذلك مرة أخرى، وهذا الجزء الأول من رمز، هذه الأمور الثلاثة - التحقق من عدد من وسائط، ن إذا انها أكبر من الصفر - كنت قد كتبت هذا الرمز كثيرا، التحقق من صحة إدخال المستخدم. يجب أن تكون على دراية جدا مع كتابة هذا الرمز والقدرة على أكتبه بسرعة كبيرة. المقبل، ونحن تهيئة مجموعة جديدة. ما هو نوع من الأشياء نحن وضع في هذه المجموعة؟ أعداد صحيحة في هذا أولا ثلاثة أحرف. المقبل، ونحن نحصل على مر العصور، وطبيعية لحلقة بالتكرار عبر صفيف، ونحن استدعاء هذه الوظيفة getAge، تخزين قيمة الإرجاع getAge في الصفيف. مرة أخرى، وكنت قد مثل قانون مكتوب هذا كثيرا من قبل، أيضا. الشيء الوحيد الذي نأمل لكم استخلاص من يمر ماضيك مشاكل لهذا الاختبار هي أن الكثير من ما أنت ذاهب لمواصلة القيام أشياء كنت قد فعلت بالفعل. من المهم جدا أن نرى تلك أنماط بحيث أنك لن ل جعل عملكم عظمى من الصعب بالنسبة لك في المستقبل عن طريق التفكير لقد فعلت أبدا هذا من قبل. كنت قد فعلت كل هذه الاشياء من قبل. المقبل، وخطوط هدفنا النهائي من التعليمات البرمجية. نحن تتبع من أقدم العمر، يمر كل عصر، مثلك واقترح، الدن. وإذا كان سن الشيء الحالي نحن بالتكرار عبر أكبر من العدد أقدم المخزنة لدينا، نقوم بتحديث أقدم عدد. وأخيرا في نهاية، ونحن طباعة من أقدم عدد. مرة أخرى، كنت قد فعلت هذا من قبل. كنت قد كتبت فعلا البحث الخطي. كنت قد كتبت ذلك. كان هذا مختلفا قليلا. كنت تبحث عنه عدد معين، لا أعظم واحد، ولكن كنت قد كتبت هذا الرمز من قبل. وأخيرا، في كثافة getAge، كنت قد رأيت هذا من قبل. لدينا حلقة افعل حين يسأل لإدخال المستخدم حتى تحقق شرط معين. وأخيرا، نحن فقط العودة أن عدد صحيح. لذلك كل من هذا الرمز رأيتم قبل ومكتوبة من قبل. لا شيء جديد هنا. بطبيعة الحال، لقد تقديمه في بطريقة مختلفة، وأنا ربما كان أيضا الخلط مع توجيهاتي، ولكن كنت قد رأيت هذا من قبل. هذا المنطق كنت 100٪ قادرة على. وإذا كان لنا أن تشغيل هذا البرنامج بسرعة حقا - لقد قدمت بالفعل، لذلك سنقوم تشغيل. / المدرب. ماذا حدث؟ الطالب: [غير مسموع]. JASON هيرشهورن: لم أكن تعطي أي حجج. دعونا تدريب خمسة الدلافين. من شأنه أن يكون واحد اثنين، ثلاثة، أربع، خمس سنوات من العمر. وكما ترون هنا، فإنه طباعتها أقدم العمر. لذلك دعونا نعود الى gedit. ولكن بطبيعة الحال، لم يكن هذا ما كان يسأل عن مواصفات. كان يطلب من النموذج الأولي. لا يعود في عدد صحيح، ولكن العوائد في كثافة النجوم. حتى لو كنت ذاهب لتغييره الى هناك في النموذج الأول أفضل تغيير عليه هنا. والآن دعونا نعمل من خلال هذا، والحق هنا. دعونا نبدأ في الجزء السفلي. العمر ليس نجم كثافة العمليات. العمر هو ما نوع المتغير؟ الطالب: عدد صحيح. JASON هيرشهورن: حتى خط 63، والعمر لا ينبغي أن يكون عددا صحيحا. ينبغي أن يكون نجم كثافة العمليات. كيف يمكنني جعله نجما الباحث؟ الطالب: [غير مسموع]. JASON هيرشهورن: ضع نجمة هناك. والآن دعونا ننظر إلى أسفل هنا. 67، getInt بإرجاع عدد صحيح، ونحن تخزين صحيح أن في العمر. ولكن إذا كنا نتعامل مع سن بوصفه الماوس للالآن، كيف نحتاج لتحديث هذا الخط؟ الطالب: ضع نجمة. JASON هيرشهورن: ضع نجم قبل سن. هو أن ما قلته؟ الطالب: نعم. JASON هيرشهورن: الحق. لأن getInt بإرجاع عدد صحيح. نريد أن نذهب إلى مكان معين ل لنا في العمر ووضع عدد صحيح هناك. إذا فعلنا هذا الخط من التعليمات البرمجية، ونحن نذهب العودة إلى ما كان كورتيس نتحدث عن في وقت سابق، وتوفير عصر، بعض الجنون صحيح، ربما صحيح 5. في نهاية المطاف نحن نحاول أن يذهب إلى المكان 5 في الذاكرة، ونحصل في الكثير من مشكلة لذلك. لذلك نحن بحاجة أن نجم هناك، وخط 69؟ مرة أخرى، والعمر، وانها في الذاكرة معالجة الحق هنا. لذلك كيف أننا بحاجة إلى تحديث هذا الخط؟ شخص آخر؟ كيف يمكننا تحتاج إلى تحديث هذا الخط؟ الطالب: ضع علامة النجمة هناك. JASON هيرشهورن: الحق بالضبط. إضافة القليل من نجوم هناك حق. الآن نحن نحصل على قيمة أشار لحسب العمر وليس العمر. ذلك مرة أخرى، شاهدنا هذا الرمز تذهب من عدد صحيح إلى نقطة النهاية. جميلة مماثلة. نحن بحاجة الى ان ننظر لجميع تلك الأماكن التي كنا كان العمر، ونحن بحاجة لتغييرها قليلا لأننا لا نريد أن مربع سن التغيير وبقدر ما أي سن هو الإشارة إلى. وعمر العودة، فهل هذا صحيح؟ وهذا هو الصحيح، لأن العمر هو مؤشر كثافة العمليات. نعم، السؤال؟ الطالب: هل نستطيع أن يبقيه عمر الباحث طوال، ثم في النهاية، وضع العطف في الجبهة من العمر؟ JASON هيرشهورن: و العودة عنوانه؟ هذا سؤال ممتاز. هل يمكن أن تفعل ذلك، ولكن دعونا نصل الى أنه في الجواب الثاني والتي سؤال في الثانية. سؤال رائع. هنا، إذا نحن تحول عدد صحيح المؤشر، ما هو نوع من الأشياء هو الدلفين الأعمار تخزين في ذلك؟ إذا نحن إرجاع مؤشر كثافة الحق هنا، ما هو نوع من الشيء هو الدلفين الأعمار تخزين في ذلك؟ مؤشرات كثافة، لذلك خط 37 وينبغي أن تكون نجمة كثافة العمليات. هذا هو نوع من هذه المجموعة. انها ليست تخزين أعداد صحيحة بعد الآن. انها مؤشرات كثافة تخزين. وأخيرا إلى هنا، تتراوح أعمارهم بين الدلفين قوس ط، وهذا سيعطينا، مرة أخرى، وكثافة العمليات المؤشر. نحن لا نريد مؤشر كثافة العمليات. نريد وأشار قيمة عليها أن كثافة العمليات. لذلك حسن، وكيف يمكننا تغيير هذا الخط؟ الطالب: ضع نجمة؟ JASON هيرشهورن: الحق بالضبط، وضع نجم هناك حق. سوف تعطينا قيمة. ماذا عن خط 51؟ الطالب: نجمة أخرى. JASON هيرشهورن: نجمة أخرى. هذا صحيح تماما. لذلك نحن علاج، ومرة ​​أخرى الآن، وهذه أشياء مثل كثافة المؤشرات. الطالب: هل هي مشكلة في كل ذلك في getAge، وتعطى سن نجمة الباحث أبدا الموقع الإلكتروني؟ JASON هيرشهورن: إنها مشكلة أن أبدا نظرا سن نجمة الباحث أ الموقع، وانها ستكون مماثلة المشكلة على ما كانت مع الحديث عن مجرد العودة سن العطف و ابقائها باعتبارها كثافة العمليات. ولكن أريد أن تشغيل هذه التعليمات البرمجية الأولى ونرى ما سيحدث. موافق. وunitialized سن متغير بحيث عندما تستخدم هنا. لذلك يقول: "تهيئة متغير 'عمر' لإسكات هذا التحذير "، و وتشير يعطيها فارغة. دعونا تعطيه فارغة. لذلك يجب أن نتخلص من التحذير ثا. يجب أن نكون قادرين على ترجمة. كيف القديم هو الدلفين؟ دعنا نقول، 1. خطأ ثوانى. لذلك أود أن تذهب من خلال GDB الآن، وأنا تشجيع لك أن تذهب من خلال GDB على الخاصة بك لمعرفة لماذا هذا البرنامج فقط SEG معيبا. أنا لن أترك هذا بمثابة التشويق، رغم ذلك، وأنا ذاهب ل فتح هذه الوظيفة. ونحن في طريقنا لفهم لماذا هذا البرنامج ثوانى معيبا. وذلك لكم جميعا على المكدس، عندما يتم استدعاء الدالة، يتم إضافة علبة ل كومة المثل حيث المحلية يتم تخزين المتغيرات. عندما يعود وظيفة، أن علبة يذهب بعيدا. تلك المتغيرات المحلية تذهب بعيدا كذلك. سن نجمة الباحث يساوي فارغة هو المحلية متغير المحفوظة في هذا الإطار المكدس. عندما يذهب بعيدا هذه المهمة، وهذا متغير يذهب بعيدا كذلك. حتى مررنا على العنوان من أيا كان. مررنا على العمر. انها عنوان، ومررنا على أن. ولكن في نهاية المطاف، ونحن - آسف، أنا أسابق نفسي. لماذا هذا البرنامج SEG حقا معيبا في كان هذه الحالة بسبب سن كان لافتا إلى فارغة، وهو موقع محدد، وفارغة هي مكان كنت لا يسمح للمس. وحتى عندما حاولنا إرسال هذا السطر من التعليمات البرمجية، والذهاب إلى العمر والقيام شيء هناك، وصلنا في ورطة، وذلك حيث أننا SEG معيبا. لأن سن نجمة والعمر مرة أخرى هو الإشارة إلى قيمة خالية. نحن نريد أن فارغة، وهو منطقة سيئة. حاولنا getInt هناك، 1 في حالتنا، وذلك حيث أننا SEG معيبا. ولكن القول بأن حالة التقيد في، أقول إننا قد أعطى هذا عنوان المشروعة الحق هنا، مثل bf4ac، شيء رأينا من قبل. وحتى مع ذلك، عندما عاد هذا البرنامج، كنا واجهت مشكلة بسبب أن هذا العنوان قد ذهبت بعيدا. عنوان متغير محلي قد ذهب بعيدا. أيا كانت أعمارهم وأشير إلى أليس وقد وجدت بعد الآن. الطريق نصلح هذا هو شيء كنت قد رأيت من قبل، وظيفة malloc. وكنت قد أدخلت إلى أن وظيفة malloc من قبل. كنت قد رأيت هذا؟ Malloc يمنحك بعض الذاكرة التي لا يذهب بعيدا عندما إطار المكدس يذهب بعيدا. حتى كتابة هذا السطر من التعليمات البرمجية - وانا ذاهب لإعطاء إليك الآن - malloc. ومنذ نحن تخزين عدد صحيح، ونحن الذهاب الى malloc مساحة كافية. ونحن في طريقنا إلى القول العطاء لي علبة من حجم وكثافة العمليات. Malloc بإرجاع عنوان، ونحن إنقاذ هذا العنوان في العمر. الآن عندما نقوم بتشغيل هذا البرنامج - نحن لن SEG خطأ لأن تلك الكتل من الذاكرة وصلنا من خلال malloc لا تختفي عندما يختفي الإطار المكدس. يعيشون على حتى نريد للتخلص منهم. وهذا يعود الى سؤالك، جيف، من السابق. كيف يمكنني إنشاء الأشياء داخل بلدي الوظائف التي أريد استخدام في وقت لاحق في الرئيسي أو في وظائف مختلفة؟ يمكنني استخدام malloc، وأمرر عناوينهم حولها. كان ذلك كثيرا، باعتراف الجميع، لتغطية للتو. لذا يرجى، إذا كان لديك أي أسئلة، يطلب بعيدا. الطالب: إذن malloc ليس على على كومة بعد الآن، ثم؟ JASON هيرشهورن: هذا صحيح تماما. وmalloc مربع يعطيك ليس على المكدس. انها يعطيها لك في هذا الجزء أخرى من الذاكرة التي نحن في طريقنا لل الحديث عنها في محاضرة يوم الاربعاء. الاسم هو كومة، ولكن أنا لا أريد لنتكلم كثيرا عن ذلك بخلاف انها هذا المكان الأخرى التي لا تحصل على تمحى عندما يذهب بعيدا وظيفة. أي أسئلة أخرى؟ الطالب: اعتقد انه اذا كنت لم تستخدم وظيفة منفصلة وكنت وضعت كل هذا التعليمات البرمجية في الرئيسي، فإن كنت لا تزال تحتاج إلى استخدام malloc؟ JASON هيرشهورن: السؤال الكبير. هذا ربما لا يكون الأكثر كفاءة طريقة كتابة هذا البرنامج. كنت قد فعلت ذلك بسهولة حين افعل حلقة في الرئيسية وحفظها نفسك في مجموعها الكثير من المتاعب. السبب أردت أن تفعل ذلك مثل هذا هو لأنني أردت الجميع ل تكون قادرا على رؤية كيف في الرئيسي، يمكننا خلق مجموعة من مؤشرات، مؤشرات كثافة العمليات. يمكننا تهيئة تلك المؤشرات في مكان آخر، ووضعها في هذا الأخرى مجال الذاكرة التي يبقى لطالما نحن نريد أن يبقى، ومن ثم نستطيع الوصول إليها في وقت لاحق. على سبيل المثال، وهنا بحثنا من خلالهم. كان بإمكاننا القيام به أخرى الأشياء لهم. نحن قد حصلنا عليها وجدت المتوسط. ونحن قد فعلت الكثير من الأشياء. النقطة هو أن تتمكن من الحفاظ على المسار بعض الأشياء في طريق الرئيسي صفيف، خلق هذه الأشياء في مكان ما آخر، ومن ثم الاستمرار في استخدام منهم في وقت لاحق. وهذه الفكرة، ما نقوم به الآن، سوف يأتي الكثير في المستقبل ف مجموعات والمشاكل التي تريد حلها. هذا هو السبب في أننا فعلنا مثل هذا حتى على الرغم من المسلم هو الملتوية عليه بت في هذا السياق. الطالب: [غير مسموع] إذا كنت يمكن أن تبقي جميع الأعمار كثافة كما القيم الفعلية في مقابل مؤشرات، هل يمكن استخدام سن العطف الآن؟ JASON هيرشهورن: عذرا؟ الطالب: إذا كنت أخرج النجوم على جميع الأعمار، وفعلت العودة سن الضم، في نهاية المطاف، التي من شأنها أن تعمل؟ JASON هيرشهورن: malloc ذلك بإرجاع العنوان. الطالب: OK، والحق. JASON هيرشهورن: تقوم بإرجاع عنوان، حتى سن يجب أن يكون عدد صحيح المؤشر، لأنه سيكون ل خزنها في عنوان. لدينا ست دقائق غادر. انا ذاهب لتخطي يتحدث حول مكدس في الوقت الراهن. انا ذاهب للذهاب الى ثلاث دقائق لفترة وجيزة على SPL، وأهم أشياء أعتقد أنك بحاجة إلى أعرف لمجموعة المشكلة. ومع ذلك، قبل أن يحصل هنا، لأن هذا ما نحن ذاهبون لإنهاء على، اثنين تذكير النهائي. واحد، باعتراف الجميع ذهبنا من خلال الأشياء بسرعة كبيرة في هذا القسم. أعتذر عن هذه الوتيرة. إذا كان لديك أي أسئلة حول شيء ذهبنا أكثر، لماذا شيء عملت الطريقة التي فعلت ذلك، أو شيء من هذا أنا لا يفسر بوضوح بقدر ما استطعت و، يرجى اطلاق النار لي رسالة بالبريد الالكتروني أو التحدث لي بعد انتهاء اليوم الدراسي، وسأكون سعيدا لشرح ذلك لك أكثر في العمق. لذا يرجى التواصل إذا لديك أسئلة. مرة أخرى، موقع ردود الفعل كذلك. يستغرق بعض الوقت بعد انتهاء اليوم الدراسي إذا كان لديك ذلك وتعطيني بعض ردود الفعل. وأنا أقدر ذلك كثيرا. كما رأيتم في بداية الصف، قرأت من خلالها، والرد عليها إذا كنت ترغب في الاستجابة، وأنا هل تأخذ ذلك على محمل الجد. وهذا يعني الكثير بالنسبة لي. دعونا انتهاء الدراسة بالحديث عن المكتبة وأنت تسير ل يتم استخدام هذا الأسبوع. ربما كنت قد رأيت كود مثل ما أنا لديهم على الشاشة حتى قبل، GRect مجداف يساوي newGRect، (خ، ذ، العرض، الارتفاع). يا رفاق ربما يكون من خلال القراءة من خلال المواصفات شعرت جميلة مريحة مع هذا، ولكن بالنسبة لأولئك الذين كانوا أقل راحة، لأنك الرجال أيضا، أريد أن أعيد يذهب أكثر من هذا خط ونرى كيف انها مماثلة ل ما استخدمنا من قبل. تماما مثل مع أي متغير - هذا هو كائن، ولكن فقط كما هو الحال مع أي متغير، لدينا نوع الأول وقبل كل شيء الحق هنا، GRect. المقبل لدينا اسم الكائن، و أخيرا لدينا الدالة التي تهيئة ذلك، يعطينا مجداف نريد. أحيانا نكتب الباحث العاشر يساوي 5، و نحن تهيئة شيء مباشرة. أحيانا نكتب سلسلة اسم يساوي الحصول على السلسلة. ونحن نستخدم وظيفة للحصول على شيء، ونحن نأخذ قيمة عودتها، و هذا هو قيمة جديدة لدينا. لذلك رأيناه هذه الفكرة من قبل، حيث الوظائف التي قد تكون أو لا حاجة المدخلات في الواقع خلق الشيء بالنسبة لنا، بدلا من خلق لنا مباشرة. لذلك رأيناه هذا الرمز من قبل. نأمل، هذه الفكرة كائن، أو على الأقل خلق كائن، ليس كما إذا الساحقة يمكنك تصور أنها مجرد أشياء مشابهة جدا ل رأيناه من قبل. ومع ذلك، والشيء باردة حول الكائنات كما متميزة من المتغيرات هو أننا يمكن أن تفعل أشياء معها. لا يمكنك تغيير لون ل متغير، ولكن يمكنك تغيير الواقع لون كائن، أو على الأقل في SPL يمكنك تغيير لون الأشياء الخاصة بك. لا يمكنك نقل متغير في نافذة، ولكن يمكنك نقل كائن في إطار. يمكنك الحصول على موقع لكائن. لا يمكنك حقا الحصول على موقع متغير. هذا هو الشيء باردة حول الكائنات في هذه المكتبة. ومع ذلك، يمكن لهذه الوظائف أن يكون نوع من الخلط. نحن لم تستخدم حقا وظائف أو الكائنات قبل، لذلك شعرت أنه من مفيدة لفهم طريقة عامة ل صريحة أو تفعل أشياء مع الأشياء، أو فهم الأشياء. وكما ستلاحظ، لقد اثنين وظائف مكتوبة هنا، وظائف كنت قد رأيت من قبل - إضافة، نافذة فاصلة مجداف، وتحديد لون مجداف فاصلة سوداء. في كل هذه الحالات، لدينا وظيفة أن يأخذ اثنين من الحجج و لا شيء. الآن أكثر بشكل عام، كل هذه وظائف كنت أريد أن أكتب أن تضطر إلى التعامل مع الكائنات حيث تأخذ وما. وأين هو الكائن الذي تريد أن تفعل شيئا ل، في هذا الحالة، نافذة أو لوحة. وما هو ما تريد للقيام بذلك أو إعطاء إليها. عند الانتهاء من وضع اللون شيء، أين هي كنت وضع اللون؟ مع الكائن مجداف. وما لون أنت وضع؟ أسود. مع وظيفة الوظيفة، حيث تفعلون شيئا؟ مع الكائن النافذة. وماذا يعطي لذلك؟ كنت يعطيها مجداف. ستلاحظ أن الوظائف التي استخدام، تعيين اللون، تعيين الموقع، وآخرون إلى ذلك، وهلم جرا، كل تتبع هذا النمط. أنها تأخذ ما تريد القيام به شيء، والكائن الذي تريد لا شيء، وماذا تريد ل علاقة معها، أو ما كنت تريد أن يكون أو تغييرها، أو ما كنت تريد أن يكون وأضاف، أو لون معين كنت تريد أن تكون. أو إذا لم تكن ملأها، هل تريد جعله شغلها، وهلم جرا، وهلم جرا. باعتراف الجميع، ومناقشة وجيزة جدا من ستانفورد - ما هو؟ مكتبة البرمجة ستانفورد؟ المكتبة المحمولة، هذا صحيح! وشكرا لكم، والطبقة. ستانفورد المكتبة المحمولة. ولكن مرة أخرى، الكثير من المعلومات المعطى في مشكلة تعيين المواصفات، ولكن نأمل أن هذا يجعل من قليلا أسهل للفهم وجوه، خاصة وأنها قد تم المتعلقة الأشياء رأيناه ويفعل من قبل. حتى مع ذلك، وهذا هو الاسبوع الأربعة. تتمتع التعلم عن كومة غدا. حظا سعيدا على اختبارك الاسبوع المقبل، ولكن بطبيعة الحال، سوف أرى قبل ذلك، نأمل في القسم يوم الثلاثاء المقبل. ولكن أيضا إذا كان لديك أي أسئلة، تعليقات، إستفسارات، لا تتردد للوصول. وبعد انتهاء اليوم الدراسي، وأنا سوف خطوة خارج إذا كنت أريد التحدث عن مشكلتك تعيين أو لديك بعض الأسئلة.