[عزف الموسيقى] ANDI بنغ: هذا هو CS50، و مرحبا بكم في أسبوعين من القسم. هذا هو في الواقع بينما أسبوع اثنين من class-- لدينا في الواقع، الأسبوع الأول كان لدينا القسم. برفع الأيدي، كم منكم جميعا جاء إلى قسم سوبر الاسبوع الماضي؟ OK، وهذا موافق. وهذا موافق. كم منكم شاهد القسم سوبر الاسبوع الماضي؟ حسنا. ويا رفاق لم غرامة على مشكلة مجموعة واحدة؟ لذلك انا ذاهب الى أن أعتبر أن لدينا حفنة من الاطفال ذكي حقا في هذه الفئة، والأمور سوف يكون على ما يرام. حسنا. first-- ذلك أولا، نحن ذاهبون لمجرد فترة وجيزة يذهب أكثر من جدول الأعمال لهذا اليوم. سوف نتحدث عن الخدمات اللوجستية بالطبع. وهناك الكثير منكم ربما لديك أسئلة بخصوص كيف تسير الامور تشغيل في هذه الدورة. وسوف نقوم بالرد عليها. ونحن في طريقنا لفترة وجيزة يذهب أكثر الحلقات في حالة أي من رفاق غاب قسم عظمى. سوف نتحدث عن رسم الخرائط ASCII. سوف نتحدث عن المصفوفات، وظائف، وسائط سطر الأوامر. وأخيرا، ما يا رفاق ربما كل تريد حقا أن أكون هنا لمعرفة، غير pset2 الخاص بك. سيكون لدينا بعض الحيل لطيف ونصائح لكيفية القيام بذلك. حسنا. أيضا، وثانيا، لدينا الكثير من الحلوى هنا. أي شخص الذي يحب الحلوى، فقط تأتي إلى هنا. الاستيلاء على بعض. لدي مجموعة. لدينا طن في المكتب. أنا لا أريد حقا لتناول الحلوى كل يوم. يجب أن الرجال تأكل كل الحلوى، لأنني أحضر هنا ليا رفاق. مجرد أكل الحلوى. سوف يكون هناك حلوى كل قسم. لذلك أولا، من أنا؟ اسمي اندى بنغ. أنا رئيس TA من CS50 هنا في جامعة ييل. وبالإضافة إلى هذا، وسوف be-- أيضا إذا كان أي شخص أن like-- الجري الأصدقاء، كتفك البكاء على. إذا في الليلة السابقة بسبب PSET الخاص بك، لا يوجد لديك فكرة عما يجري، ضربنى. سنقوم مواساة معا، وهلم جرا. فقط أعلم أنني هنا ل الموارد بالنسبة لك في الخط الأمامي في مساعدة يا رفاق معرفة كيف لحل المشاكل في CS50 وخارجها. البريد الإلكتروني الخاص بي هو andi.peng@yale.edu. سوف نرسل أيضا إلى الفرد البريد الالكتروني مع رقم هاتفي في ذلك بحيث لم يكن الجميع على الإنترنت يمكن أن يرى رقم هاتفي. لا تتردد في الاتصال بي في أي وقت. على محمل الجد، هاتفي يعلق عادة على يدي. أنا قد لا تستجيب في غضون بضع دقائق. أنا قد لا تستجيب في غضون بضع ساعات. ولكن استطيع ان اؤكد لك، إذا يمكنك مراسلتي عبر البريد الإلكتروني، إذا كنت الاتصال بي، نص لي، وسوف الرد في غضون 24 ساعة. في كثير من الأحيان، وأنا سوف الرد قبل ذلك، لأنني أفهم أن الجميع حصلت بعض المشاكل، وتريد إجاباتك ليتم الرد عليها بسرعة كبيرة. ومع ذلك، إذا كنت الاتصال قبلي 30 دقيقة أن القطعة التي تصدر اليوم الخميس night-- يكون مثل، اندى، مساعدتي، أنا لم started-- أنا قد يعطي لكم أن كتف تبكي عليه. ولكن قد يكون الوقت قد حان للتفكير كيفية لا تفعل ذلك في المرة القادمة. حسنا. عذرا. كيف أعود؟ هناك نذهب. حتى في هذه الحال، لدينا طن من دعم للجميع. بالإضافة إلى مجرد أقسام هنا، والتي كل أسبوع يحصل لقضاء 90 دقيقة رائعة معي، لدينا أيضا ساعات العمل. كم منكم اللاعبين لديهم بالفعل كان لساعات العمل للمساعدة؟ رائعة. هذا أمر جيد حقا أن نرى، لأننا دينا طاقم من أكثر من 45 المشرفون الدوليون والمصدقة تدريب لهذه الدورة التي هي هنا لمساعدتك الرجال مع psets الخاص بك. الاثنين انهم عقدت في TEAL الفصول الدراسية في 17 هيل هاوس هنا في جامعة ييل. الثلاثاء والخميس، انهم عقد في المشاعات. 8:00 حتي 11:00 الى حد كبير كل يوم من أيام الأسبوع. تأتي في، يخرج. أي مشكلة، لا problem-- فقط هيا في، وبعد ذلك سوف تساعدك على الخروج مع ذلك. ثانيا، بالإضافة إلى ساعات العمل والأقسام، لدينا أيضا السراويل. وقد أي شخص على الاطلاق زوجين من السراويل أو تجول في أشرطة الفيديو على الموقع؟ حسنا. حتى انهم حقا، حقا مفيدة. إنتاجنا هارفارد جميل فريق هناك في تلك المدرسة في الشمال، فقد صورت وأنتجت أشرطة الفيديو هذه تجول لا يصدق. أنها سوف يأخذك خطوة خطوة من خلال كيفية التوجه نحو حل المشكلة. في كثير من الأحيان، إذا كنت الخلط حول مفهوم بسيط، وهو مفهوم المفرد، نلقي نظرة، لأننا ربما يكون قصيرة في مكان ما على موقعنا. وانها عادة ما تكون كبيرة من الموارد للبحث عن عندما كنت لأول مرة فقد حول كيفية التعامل مع المشكلة. ثالثا، لدينا أيضا study50 وreference50. لذلك دراسة 50 على الموقع هو مجرد ارتباط. انها، كما أعتقد، study.cs50.net أو شيء من هذا القبيل. جوجل فقط ذلك. لدينا الكثير من الشرائح أعد. لدينا الكثير من السراويل و أشياء walkthroughs-- جميع جمعتها لطيفة جدا وأنيق لك جميع اللاعبين من خلال تصفح، نرى أي المفاهيم أن كنت أشكل عليك شيء. فغالبا يتم تناول هذا الموضوع هناك في study50. Reference50-- ما شابه ذلك. لدينا الكثير من الملاحظات المختلفة متاحة للتصرفكم. وأخيرا، لدينا ما هو دعا CS50 مناقشة، منتدى فيه، إذا كان ليلة قبل تفعلونه مشاكلك، ويقول، لديك سؤال. تسجيل الدخول إلى CS50 مناقشة. الرد على سؤالك. وبعد ذلك واحدة من hundreds-- ربما، thousands-- من أقرانهم سوف أخذ هذه الفئة على الانترنت تسجيل الدخول. وربما شخص يمكن الحصول على إجابتك قبل علبة TA. انها في الأساس فقط منتدى على شبكة الإنترنت ما في وسعنا جميع استخدام لمناقشة مشاكلنا. هذا بارد. حسنا. حتى تحدد المشكلة. نحن عن الحق في سميكة من مشكلة تعيين اثنين. وهناك الكثير منا لديها بالفعل كافح من خلال مشكلة مجموعة واحدة. نحن نعلم بالفعل أن تنتظر ربما الليلة الماضية للقيام PSET بك ليس اذكى شيء نفعله في CS50. نصائح ونصائح أساسا ل تتم قراءة النجاح المواصفات كاملة. كم لديك بالفعل قراءة المواصفات لPSET 2؟ حسنا. وهذا المبلغ الصلبة. وأنا أعلم يا رفاق وربما الاعتراف الآن المواصفات طويلة حقا. انهم حقا، حقا طويل. من الصعب حقا لقراءة كل سطر من تلك الكلمة بعناية من قبل الكلمة. تريد الخالي من الدسم فقط إلى حيث فإنه يقول لك أن تفعل شيئا. استطيع ان اؤكد لكم، لا تفعل ذلك. إذا كنت تفعل ذلك، وربما كنت الذهاب الى مكان ما تفوت حيث يخبرك كيفية بدء المشكلة أو يقول لك ما اسم مشكلتك أو يقول لك، وربما هذا هو أفضل وسيلة لتبدأ في فعل مشكلتك. ثم عليك أن تضيع. عند محاولة قراءة الخاص بك المواصفات في منتصف الطريق من خلال، الكثير من الأهمية information-- في أنك لا سوف تكون قادرة على الوصول حقا. حتى قراءة المواصفات الكاملة. محاولة لقراءة المواصفات الكاملة قبل أن تأتي إلى القسم، لأنه بعد ذلك، عندما كنا الحديث عن PSET، نحن يمكن أن يكون كل فكرة ما يجري. ثانيا، وهذا هو مفهوم أنني سوف ترغب في الرجوع الكثير طوال الفصل الدراسي. ولكن في الأساس، قائنا في منتصف الطريق، أليس كذلك؟ لي، كما TA الخاص وجايسون كمسار مدير وScaz كما أستاذك وداود أستاذك وجميع والمشرفون الدوليون جميل آخرين في هذه الدورة، مساعدين في هذا course-- سوف نفعل افضل ما لدينا للتأكد من أن يتم تعيين لك حتى ينجح في هذه الدورة. سنعقد القسم. سنعقد ساعات العمل. وسوف نقوم بالرد الهاتف المكالمات، بالرد على رسائل البريد الإلكتروني الخاص بك، نفعل كل ما بوسعنا لجعل التأكد من الإجابة على أسئلتك. ومع ذلك، يساعدنا أيضا. قائنا في منتصف الطريق. إذا كنت تأتي إلى ساعات العمل لا بعد أن ذهب إلى الباب، وليس بعد أن شهدت المحاضرات، عدم وجود فكرة عما يحدث، يكون مثل، مساعدتي. أنا ذاهب ليكون مثل، حسنا، أنا آسف. قد يكون الوقت قد حان لتقديم أن كتف تبكي عليه، لأنني لست متأكدا ما يمكنني القيام به لمساعدتك إذا كنت لا تحاول مساعدة على الأقل نفسك قليلا في البداية. قائنا في منتصف الطريق. كما تعلمون، يرجى تأتي على استعداد للإجابة والحصول على على استعداد للانخراط في هذه المادة. فإنه يجعل الأمور كثيرا أسهل لجميع المعنيين. نعم، هذا الى حد كبير ذلك. وضع العلامات. لذلك على المنهج، انها جميلة متعمقة بشأن كيف يمكننا الصف. ولكن في الأساس، وانهيار في هذا 50٪ من الدرجة الخاصة بك سيكون psets، التي هو جميل، لأن هذا هو حيث كنت تنفق الشاسعة معظم وقتك بالطبع جرا. مسابقات 40٪، والخاص والمشروع النهائي سيكون 10٪. سيكون هناك نوعان من الاختبارات في جميع أنحاء خلال الفصل الدراسي. أعتقد أن الأوقات والتواريخ المدرجة أيضا على المنهج. الطريقة التي سنقوم أن الدرجات psets بك هو أن لدينا أساسا أربعة القيم التي نخصصها لكل درجة. لدينا قيمة النطاق، دقة والتصميم، والأناقة. هكذا كما ترون، وهذا النوع من موقعنا صيغة لحساب psets. ثلاثة نعطي أكثر الوزن لصحة، لأن من الواضح أن لديك مدرب يجب اختبار للحالات أننا نريد لاختبار ل. يا رفاق جميعا check50 تحت تصرفكم. انها وظيفة مفيدة جدا أن يا رفاق يمكن للجميع تحميل الشفرة الخاصة بك لخدمتنا، أين نحن سوف تحقق من ذلك بالنسبة لك. وكنت قد رأيت تلك وجوه frowny، الوجوه المبتسمة. انهم حقا، حقا مفيدة. من فضلك لا يكون طالب يحاول أن تحب إلى hardcode في جميع الإجابات لهم. رأيت بالتأكيد PSET حيث رأى شخص ما عن قيم check50 وكانت مشفرة فقط من الصعب in-- إذا هذا العدد، بطباعة هذا العدد. إذا كان هذا العدد، وطباعة هذا العدد. لا تفعل ذلك. على الرغم من الناحية الفنية check50 هو الصحيح، طريقك حل المشكلة ليست صحيحة. حتى مجرد استخدام check50 لماما. ولكن أيضا التأكد من أن لك فهم كيف انها تعمل، البرنامج يعمل بالإضافة إلى check50، لأننا لا يمكن اختبار كل حالة محتملة من check50. ونحن سوف يكون اختبار بعض منها. التصميم هو أساسا، كيف مصممة بشكل جيد هو التعليمات البرمجية الخاصة بك؟ إذا كنت نسخ لصق متعددة الأسطر من التعليمات البرمجية مرات عديدة. ربما لم يكن لديك تماما أفضل تصميم في التعليمات البرمجية. ربما حان الوقت لإضافة تلك الحلقة. في الأساس، وهنا انها مجرد جميع حول تحاول أن تفعل التعليمات البرمجية الخاصة بك، محاولة لكتابة التعليمات البرمجية بكفاءة ممكن بحيث يتم تشغيل البرنامج باسرع ما يمكن. وأخيرا، لدينا أسلوب. لذلك الاسلوب هو نوع من التعسفي، على المدى شخصي. أنا نعرف أن لدينا رسميا دليل نمط 50 لCS50، حيث يقول لك، أوه، كنت ينبغي أن يكون الفضاء هنا. يجب عليك نوع من التنسيق التعليمات البرمجية الخاصة بك بهذه الطريقة. يجب تسمية الأمور على هذا النحو. لا يهمني حقا، في حد ذاته، كيف اخترت أسلوب التعليمات البرمجية الخاصة بك، فقط طالما كنت البقاء متسقة. على سبيل المثال، إذا كنت ترغب في ترك مسافة بعد أربعة بك قبل أربعة حلقة الخاص بك، فعل ذلك في كل مرة. لا نوع من يفعل ذلك. لا تفعل ذلك مرة أخرى. إذا كنت ترغب في الاحتفاظ مجعد الأقواس الفضاء بطريقة معينة، فقط القيام دائما على هذا النحو. لا نوع من القيام بذلك في مكان ما هنا وهناك في مكان ما لا. عندما نقوم الدرجات، من الصعب حقا إذا كان لدي أي فكرة عن كيفية كنت تنسيق التعليمات البرمجية الخاصة بك، الأمور أحمق وخارج المكان. إذا كنت مجرد يبقيه متناسقة، انها أسهل بكثير بالنسبة لي كلما لتكون قادرة على قراءة التعليمات البرمجية. انه من الاسهل بكثير بالنسبة لك كطالب لتكون قادرة على النظر من خلال التعليمات البرمجية ونرى ما هو الخطأ في ذلك خفض لماذا هناك قضايا. الاسلوب هو واحد من أسهل الأمور يمكنك الرجال القيام للحصول على علامات كاملة. في الأساس، إذا كنت تهتم فقط، إذا تدفعه خمس دقائق من الاهتمام إلى التعليمات البرمجية الخاصة بك كل أسبوع، يجب عليك يكون الحصول على نقاط النمط الكاملة. وأخيرا، لدينا ما يسمى مضاعف النطاق. Scope-- وأنا أعلم أنها كبيرة كلمة، وخاصة في هذه الفئة. لكن نطاق، كل ذلك يعني غير أنك تحاول وpsets إلى أفضل من قدرتك. إذا قمت بتشغيل في ثلاثة من أصل من المشاكل الأربع الخاصة بك وحتى لا محاولة ل آخر واحد، وربما كنت سيخسر بعض النقاط على نطاق. حتى لو كنت مجرد بداية المشكلة، بذل قصارى جهدكم لالمشي من خلال ذلك. حتى لو كان لا يعمل، وتحويلها في، لأن ذلك يظهر ويوضح لنا أن كنت تحاول أن حاولت مشكلة تعيين إلى أفضل من قدرتك. وبعد ذلك يمكن أن نقدم لك نقاط كاملة عن نطاق. نطاق هو أيضا مهم جدا لأننا عندما الحديث عن أدنى انخفاض درجة PSET. لذلك على مسار الفصل الدراسي، يا رفاق يكون تسعة psets. ونحن سوف يكون في الواقع إسقاط أدنى درجة من تلك التسعة، ولكن فقط إذا كان لديك نقاط نطاق كامل. حتى إذا قمت بتشغيل في PSET غير مكتمل، للأسف، لا يمكننا إسقاط ذلك واحد، لأن النطاق الخاص بك لم تكتمل نقطة. لذلك حتى لو كان لديك الأسبوع فظيعة أين أنت الموت وكنت مريضة أو الكلب يموت، يموت القط، وكنت أنت مثقلة الواجبات المنزلية، مجرد محاولة للPSET. نفعل ذلك بكل ما أوتيت من قدرتك. إذا كان لا يعمل، لا يهم. مجرد تحويلها في. على الأقل نحن يمكن أن تعطي المزيد من النقاط للجهد. A للجهد في هذه الفئة. على الأقل أدنى انخفاض درجة للجهد. إذن أجل. هذا الى حد كبير ذلك. هل لديها تساؤلات ذلك الآن على كيفية الصف في الصف؟ أو أي من هذه؟ أي من هذه حتى far-- أقسام ساعات العمل؟ رائع. حسنا. لذلك هذا هو الموضوع الذي لا أحد يحب حقا للحديث عنها. أنا لا أحب التحدث عن ذلك. يا رفاق لا تريد حقا للاستماع لي الحديث عن ذلك. ولكن للأسف، ونحن جميعا يجب أن نتحدث عن ذلك. أمضى ديفيد 20 دقيقة محاضرة تتحدث عن ذلك. وهذا هو الموضوع الصدق الأكاديمي. لذلك نحن جميعا هنا وربما كتب ووقت ما في مقال لدينا ييل المهنية. ربما حصلنا على حديث حيث قمنا قيل أن لا تسرق مقال لدينا، لأن هذا العمل هو ليس في مصلحتنا. في علوم الكمبيوتر، لدينا نفس النوع من المفهوم. جميع الأعمال التي ترسلها، كل رمز التي تكتبها يجب أن تكون التعليمات البرمجية التي قمت بكتابتها. لا ينبغي أن يكون التعليمات البرمجية التي قمت نسخ من مكان آخر. لا ينبغي أن يكون الرمز الذي كنت قد غوغليد وساقط في وكنت لا أعرف حقا ما اذا كان يعمل. أنت نوع من لديهم شعور ما تقوم به ولكن ليس حقا. عندما تكون في شك، أساسا، انها تكون مجرد معقول. على المنهج، لدينا قائمة كاملة من الأشياء ونحن نرى بأنه معقول مقابل غير معقولة. على سبيل المثال، معقولة هو أنت وصديقك مناقشة ما هي أفضل طريقة للذهاب حول منطقيا حل المشكلة. هذا معقول إلى حد ما. ما لن يكون من المعقول هو اذا كنت حصل الرجال معا، وكتابة نفس الرمز، وتحولت في نفس الرمز. هذا غير معقول. نفس الشيء، نوع من مقال. إذا كنت ترغب في مناقشة مع صديقك، مهلا، هذا هو ما أريد أن أكتب عنه. هذه هي الخطوات أريد أن تتخذ لكتابة حول هذا الموضوع، عظيم. ذلك رائع. يرجى التعاون مع بعضها البعض. إذا يا رفاق تبدأ كتابة نفس الشيء، تحويل في نفس المقال، وهذا أقل موافق. حتى عندما تكون في شك، فقط لا تفعل ذلك. هنا، نحن في CS50، لدينا مخطوطات التي تعمل على أتمتة لاختبار ليس فقط من صحة التعليمات البرمجية الخاصة بك، ولكن أيضا تفرد التعليمات البرمجية. لذا يرجى لا تضعنا في موقف من الحاجة إلى الرجوع قضيتك إلى EXCOMM. يرجى فقط عن الجميع، دعونا فقط جعل هذا تجربة رائعة. الجميع يتعلم أفضل، نحن جميعا أكثر سعادة، ويتم تعيين كل ما يصل إلى النجاح في هذه الدورة. شيء أن يكون جدا فريدة من نوعها حول هذه الفئة أعتقد أنه ينبغي على كل شخص إيلاء الاهتمام لهو أن لدينا ما يسمى الأسف بند في المنهج لدينا. ذلك أساسا، في غضون 72 ساعة، إذا كنت تعتقد أنك قد فعلت شيئا لم تكن متأكدا حقا كان الاقتضاء، يرجى يأتون إلينا. نعدكم أنه في غضون 72 ساعة وسوف نتعامل مع هذه القضية أنفسنا دون الرجوع إلى أعلى السلطة في الإدارة. لذلك إذا كنت تأتي لي ويقول: اندى، مهلا، أنا آسف حقا، ولكن أعتقد أن هناك بضعة خطوط في بلدي كود الليلة الماضية أن النوع الأول من غوغليد، ترجل من المكدس تجاوز ونسخ ولصق، وأنا حقا، آسف حقا حول ذلك، اسمحوا لي أن أعرف. من فضلك لا مجرد السماح لها بالتفاقم وفقط آمل أن أكون قبض عليه. سنقوم قبض عليه. فقط تأتي لي. اسمحوا لي أن أعرف في غضون 72 ساعة. سنقوم معرفة الحل. ونحن نعد بأننا لن أشير إلى سلطات الجامعة أساسا. لذلك هو في مصلحة الخاصة بك أن يكون مجرد صادقين مع الجميع يشارك في هذه الدورة. حسنا. حسنا. وحتى الآن، وبسرعة قبل أنا على هذه الخطوة، لا أحد لديك أسئلة بخصوص الخدمات اللوجستية على مدى الدورات ونحن في طريقنا لتشغيل، كيف أقسام تسير لتشغيل، أي من ذلك؟ حسنا. نعم. الحضور: (غير مسموع)؟ ANDI بنغ: نعم. حتى quizzes-- كم كنت في قسم الاثنين / الأربعاء؟ كم كنت في الثلاثاء / الخميس؟ OK، لذلك هو انقسام الصلبة هنا. وبالتالي فإن الطريقة التي ندير كان في جامعة ييل هو أننا ستكون لدينا منفصلين quizzes-- واحد لكل section-- أن سيتم اتخاذها خلال الطبقة. اعتقد انه من أكتوبر، في نهاية أكتوبر، شيء من هذا القبيل، وأسبوع واحد من هذه المسابقة. نعم، حتى يأتي فقط لفئة. على أن الاثنين أو الأربعاء، عليك أن تأخذ هذه المسابقة. على أن يوم الثلاثاء أو الخميس، عليك أن تأخذ مسابقة مختلفة. ولكن سيتم تغطية نفس المادة. نعم. سؤال جيد. نعم. الحضور: أين نحن تذهب للتحقق درجاتنا؟ ANDI بنغ: نعم. ولذا فإنني سوف يتم ارسال ل البريد الإلكتروني مهما كل أسبوع عندما مسابقات هي graded-- أو، آسف، عندما تصنف psets. وعادة ما تحولت Psets في قبل ظهر اليوم أو الجمعة. لذلك أعدكم بأنني سوف في محاولة للحصول عليها مرة أخرى لك من قبل ظهر يوم الجمعة التالية. كلما الصف PSET، سأرسل خارج الإعلام على كتاب الصف تخبرك درجاتك ويمكن الاطلاع على الانترنت. الحق في ذلك هذا الأسبوع، بعد أن الانتهاء من الدرجات psets الأسبوع الماضي، سوف يا رفاق الحصول على البريد الإلكتروني إعلام أقول لك، يا هذا هو المكان الذي انتقل إلى عرض الدرجات الخاصة بك. ويمكنك ان ترى كل انهيار الدرجات الخاصة بك. يمكنك ان ترى التعليقات. أوه، شيء سريع أيضا. قسم التعليق في العظيم الكتاب هو حيث وسوف أكون على الأرجح يقضون معظم وقتي الدرجات. ذلك الشيء الوحيد الذي هو المهم حقا عندما يا رفاق عرض الدرجات الخاصة بك على psets بك لا تبحث فقط في النتيجة المادية ولكن أيضا أخذ الوقت ل قراءة حقا تعليقاتي. في كثير من الأحيان والتي تمنحك ردود الفعل على كيف كنت حل المشكلة. إذا ما عليك القيام به شيء أفضل قليلا، النقد البناء عادة ما يكون أفضل بالنظر في تلك قسم التعليقات. لذا رجاء، رجاء، انا ذاهب لقضاء بعض الوقت كتابة التعليقات. من فضلك، وأود أن نقدر ذلك حقا إذا يا رفاق أن قراءة هذه التعليقات. حسنا. رائع. حسنا. لذلك نحن ذاهبون لبدء الحديث ومجرد مراجعة بسرعة بعض المواد من الأسبوع الصفر فقط لذلك نحن على الصفحة اليمنى لل تبدأ المشاكل هذا الأسبوع. لذلك حلقة في حين هي واحدة من ثلاثة أنواع من الحلقات ناقشنا في هذه الفئة في وقت سابق. حلقة في حين أساسا هو مكتوب في بناء الجملة حيث، في حين أن حالة معينة، تفعل ذلك مرارا وتكرارا، أليس كذلك؟ التفكير في الأمر في هذا الرسم هنا. وأنت تسير أن تبدأ في نقطة معينة في التعليمات البرمجية. وأنت تسير لدخول شرط حلقة if-- أنا لا know-- x هو أقل من واحد. إذا كان ذلك صحيحا، وأنت تسير لتنفيذ جسم الحلقة. وأنت تسير أن نواصل القيام ذلك مرة أخرى، ومرة ​​أخرى، ومرة ​​أخرى، مرارا وover-- الذي هو السبب في انها loop-- حتى تصبح حالتك خاطئة. حتى في هذه الطريقة، حلقة while هي واحدة من أبسط الطرق لكتابة أي نوع من شرط يحتاج إلى تكرار مرارا ومرارا وتكرارا. فقط كن حذرا كلما كنت أكتب أي نوع من حلقة أن يكون لديك حالة الخروج، كذلك تحديثا على كل ما غير أن ذلك حلقة الخاص بك لا فقط تشغيل مرارا وتكرارا بلا حدود. في أي حال، وأنت تسير تريد للتأكد من ان كنت تغيير بعض جوانب التعليمات البرمجية أو في نهاية الحلقة فقط للتأكد من أن لديك وسيلة من المضي قدما نحو حالة الذي تريد تلبية لهذه الغاية. هل هذا يعقل أن الجميع؟ نحن لا نريد أن نكون المحاصرين في هذه الدوامة حيث نذهب حولها وحول و ليس هناك طريقة لكسر حلقة. وكل حلقة أساسا لديه طريقة للقيام بذلك. حسنا. ثانيا، الكثير منكم في psets ماريو الخاص بك ربما كان لتوظيف هذا النوع من الحلقة. ومن دعا إلى القيام به أثناء الحلقة. أولا وقبل كل شيء، يمكن لأحد أن يقول لي ما الفرق بين دو في حين حلقة وحلقة بينما هو؟ نعم. الحضور: افعل حين حلقة يعمل في البداية (غير مسموع). ANDI بنغ: نعم، بالضبط. لذلك افعل حين حلقة دائما يفعل كل ما هو داخل افعل، داخل الأقواس هناك ويفعل هذا الشرط قبل التحقق من the-- آسف، يفعل ذلك التعليمات البرمجية قبل التحقق من وجود الشرط. وهذا هو ذات الصلة خاصة بالنسبة لنا هنا في هذه الفئة، لأن معظم الأوقات ونحن في طريقنا تريد أن تدفع المستخدم نوعا من المدخلات. وبعد ذلك، اعتمادا على المدخلات أنها تعطينا، وبعد ذلك يمكننا تقييم، أوه، لا نحن بحاجة إلى تدفعهم مرة أخرى؟ حتى في ماريو، إذا أعطى المستخدم الذي ارتفاع السلبي، على سبيل المثال، وأنت تسير لأول موجه والقيام بكل ما هو في الداخل. ثم كنت تريد الذهاب للتحقق من الوقت. كما تعلمون، هو سلبي 1، غير أن عددا إيجابية؟ إذا لم تكن كذلك، انا ذاهب للذهاب مرة أخرى وكرر دو وتكرار وكرر وكرر حتى تعطيك أخيرا الرقم الذي تريد، يمكننا أن نوظف كل ما في نظامنا. من المهم جدا ل أساسا أي إدخال المستخدم. استطيع ان اؤكد لكم أي الوقت في PSET حيث نطلب منك إدخال أي نوع من التعليمات البرمجية، ونحن ربما ذاهب الى ان نعطيكم حالة اختبار فيه نحن ذاهب الى ان نعطيكم شيئا سيئا هذا ذاهب الى محاولة لكسر التعليمات البرمجية. إذا حاولنا أن أسألك لإدخال ل صحيح، ونحن قد أعطيكم سلسلة ونرى كيف سيكون التعامل مع ذلك. إذا كنا نطلب منك أن توظف عصر، يمكن أن نعطيك رقما سالبا لنرى كيف سيكون التعامل مع ذلك. فقط تأكد من الرجال تختبر ل في الحالات التي لا تحصل على أفضل المدخلات، دعونا نقول فقط. وافعل حين حلقة هو في كثير من الأحيان أفضل طريقة لتصميم التعليمات البرمجية بحيث أن يفي هذا النطاق. حسنا. حسنا. لذلك هذا هو على الارجح الاكثر حلقة معقدة من ثلاثة بعد أن قمنا نظرت حتى الآن. ويبدو مخيف جدا في البداية. ولكن أنا أضمن لكم، مرة واحدة يا رفاق الحصول على تعليق من كيفية استخدام للحلقة، انها واحدة من أكثر الأشياء المفيدة، معظم الأدوات المفيدة في ترسانة الخاص بك للمضي قدما في هذه الفئة. هكذا على سبيل المثال، في خدش، كان لدينا هذه الكتلة بسيط جدا ان مجرد ذكر تكرار هذا مؤكد العبارات عدد معين من المرات. بالمناسبة، SAJ-- هذا Scaz اندى جيسون. وقعنا في كثير من الأحيان رسائل البريد الإلكتروني SAJ لدينا. إذا قلنا SAJ، لا يكون الخلط. هذا مجرد لنا. حتى في خدش، كنا قادرين على أن يكون كتلة أن قال، يعيد أحب SAJ! 10 مرات. بسيط جدا. المنطق وراء ذلك هو جدا وبسيطة جدا، أليس كذلك؟ أريد أن أذهب أولا من خلال أول الوقت ونرى أنه، للمرة الثانية ونرى أنه، مرة الثالثة، وما إلى ذلك وهلم جرا، حتى تصل إلى 10. والطريقة التي ستمثل أنه في متاحة فقط من خلال بسيطة للحلقة. وذلك ل، وأنت تسير لاعلان متغير هنا، في هذه الحالة، مع الباحث. ونحن في طريقنا لتسميته ط. ونحن في طريقنا إلى تهيئة إلى 0. والطبعة التوقف هي سيكون أنا أقل من 10. والتحديث سيكون ط ++. وخلال الحلقة، وانها تسير لتنفيذ ذلك حتى النهاية يضرب نهاية condition-- فيها الحالة، فإنه يذهب لكسر حلقة. ينبغي أن يكون هناك الاشياء التي كنت وكل نوع من ينظر الرجال قبل وكان علي القيام به لمشكلتك مجموعة واحدة. هل لديها أي أسئلة فيما لحلقات الآن أليس كذلك؟ حسنا. رائعة. حسنا. حتى بالنسبة لأولئك منكم الذين لديهم قراءة المواصفات PSET لهذا الأسبوع نعلم أننا ذاهبون إلى أن توظيف ما يسمى ASCII وجدول ASCII. وكان داود في محاضرة ذهبت أكثر من فترة وجيزة كيف أن كل شيء أجهزة الكمبيوتر essentially-- يتم ترميز في جهاز كمبيوتر في ثنائي، في الآحاد والأصفار و. والطريقة أن أجهزة الكمبيوتر قادرة لتخزين قيم مختلفة بالإضافة إلى أصفار وتلك التي هي من خلال رسم الخرائط هذه الأرقام لتمثيل الأرقام الأخرى أو الشخصيات الأخرى أساسا. حتى في هذه الحالة، ASCII table-- كل ما يفعله غير الأحرف الخريطة، أو حرف، إلى أرقام. حتى ملف التعليمات البرمجية المصدر في لديك computer-- ترى، مهلا، مجموعة من الأصفار ومنها، الآحاد والأصفار و، الأصفار ومنها. هذا ما المخزنة في الذاكرة الفعلية لجهاز الكمبيوتر الخاص بك. ولكن عندما نريد نحن البشر ل التواصل مع جهاز الكمبيوتر، نحن want-- القول، على سبيل المثال، إذا كنت ترغب في الأحرف الكبيرة A، انا ذاهب الى حاجة بعض الطريق من إخبار الكمبيوتر، أوه، عندما كنت اكتب الأحرف الكبيرة A، أعني هذا التمثيل في ثنائي. وهكذا يتم ألقى الطريقة التي نؤدي بها أن الشيء التعسفي يسمى جدول ASCII، أين نحن، كبشر، كما المبرمجين، منذ بعض الوقت، قررنا أننا تعسفا كانوا في طريقهم لتعيين عدد هؤلاء قيم هذه الأحرف. لذلك يا رفاق يمكن أن Google لهذا الخط. أعتقد أن هناك وصلة إليها في حياتك pset-- مجرد طاولة خريطة ASCII، ASCII الطاولة. انها مجرد يترجم ثنائي أرقام إلى أحرف. وانها ستكون جدا مفيدة لمجموعة مشكلتك كلما أردت حساب أي شيء أو إذا كنت ترغب في عرض بعض الأحرف أو الأعداد الصحيحة أو تلاعب بعض الأحرف. انها سوف تكون جدا المهم أن كل تعرف كيفية التنقل جدول ASCII. هكذا على سبيل المثال، والأحرف الكبيرة A ويمثلها عدد 65. وصغيرة ل يمثلها 97. لذلك فمن المهم أن نعرف أن الفرق بين القيمتين هو 32. في كثير من الأحيان، إذا كنت بحاجة إلى تحويل من واحدة إلى أخرى، والفرق هو 32. ولا تقلق إذا كنت نوع من الخلط حول هذا في البداية. سنذهب حول كيفية كنا توظيف ذلك في الرمز الفعلي. حسنا. حتى لأولئك منكم مع أجهزة الكمبيوتر المحمولة بها، لا تتردد في سحب ما يصل جدول ASCII، لأن هذه سوف ربما تتطلب يا رفاق مرجع ما هي الشخصيات. حسنا. ذلك مع العلم أن بعض الأحرف الخريطة لأرقام معينة، إذا كان لي أن تشغيل فقط أول خط من تلك code-- وprintf لذلك، أحرف صغيرة لذلك، ناقص الأحرف الكبيرة A. لا أحد يملك تخمين على ما يمكن أن يكون الطباعة من الشاشة الآن؟ أولا حتى من كل شيء، ما يفعل صغيرة على تمثيل؟ ما الرقم الذي المشفرة في الجدول ASCII. آسف؟ الحضور: 97؟ ANDI بنغ: 97، عظيم. وما هو الأحرف الكبيرة A؟ الحضور: 65. ANDI بنغ: فما هو 97 ناقص 65؟ الحضور: 32. ANDI بنغ: OK. فماذا يا رفاق التفكير هو الذهاب الى يحدث عندما المدخلات التي سطر من التعليمات البرمجية إلى جهاز الكمبيوتر الخاص بي؟ الحضور: (غير مسموع). ANDI بنغ: عذرا، الكلام. لا تقلق. هذا هو آمن جدا بيئة، ناقص الكاميرا. أننا جميعا سوف to-- لا تقلق. فقط نحن جميعا الذهاب الى التظاهر مثل انها مجرد لنا تقشعر لها الأبدان في هذه الغرفة. لا تقلق. لا شك هو غبي جدا. لا الجواب هو الجواب غبية. أنا على الارجح الى جعل الأخطاء في سياق تعليمي. على محمل الجد، والرجال، مجرد القول المفاجئ بها. كن على ثقة في نفسك، هل تعلم؟ وذلك ما كان ذلك؟ الذي قال إن الجواب الماضية؟ حسنا. يصرخ أن لطيفة وواضحة. الحضور: 32؟ ANDI بنغ: 32. حسنا، دعنا تشغيل هذا الرمز و معرفة ما إذا كان هذا هو ما يحدث. حسنا. بحيث يمكن يا رفاق نوع من ترى، التدوين نموذجي لدي انشاء هنا لكيف لنا أن توظيف أي نوع من البرنامج في جهاز الكمبيوتر الخاص بنا. لدينا وظيفة الرئيسية لدينا داخل الدالة الرئيسية لدينا. أنا ذاهب لمجرد نسخ و لصق هذا سطر من التعليمات البرمجية. تكون أيضا حذرا عند الرجال يتم نسخ ولصق التعليمات البرمجية. أحيانا بعض مشغلي لا لصق أكثر بشكل صحيح. في هذه الحالة، ناقص كان علامة في الواقع اندفاعة. وهكذا فإن الكمبيوتر لا يستلم. لذلك اضطررت للعودة و أعد كتابة جسديا ذلك. فقط كن حذرا عندما يفعلون يا رفاق ذلك. حسنا. ونحن في طريقنا لتشغيل هذا هنا. لذلك نحن ذاهبون إلى مؤتمر نزع السلاح في section2 لدينا. لقد دعا هذا asciimath البرنامج. تذكر ذلك، عندما نقوم بتشغيل أي برنامج، نريد تجميع لأول مرة عن طريق تشغيل من خلال جعل لدينا. ثم نريد لتشغيل فعلا برنامج عن طريق القيام دوت مائل. لذلك نحن ذاهبون الى ./asciimath. الحق، هناك نذهب. ونحن نرى 32. أحسنت. أنت تستحق قطعة من الحلوى. الحلوى بالنسبة لك. آسف. حسنا. حسنا. حتى نتمكن من العودة إلى مثالنا هنا. آآآه، لا. آآآه. حسنا. أنا ذاهب لمجرد الحفاظ عليه من هذا القبيل. حسنا. حسنا. ذلك يا رفاق يمكن أن يرى، يمكننا أن نفعل الكثير من الأشياء المثيرة للاهتمام للغاية، الكثير من الأشياء باردة جدا، والكثير من أشياء معقدة للغاية تنطوي أحرف ASCII والأرقام. وبمجرد الحصول على وصولا الى خط الخمسة، هذا هو الكثير لمتابعة على طول. نحن لن يذهب من خلال هذا الباب. لا تتردد في ذلك، إذا كنت تستطيع، العقل بها على الورق لأول مرة على ما ينبغي أن يحدث عندما يمكنك إدخال مثل هذه السلسلة من القيم. على سبيل المثال، في هذا السطر الأخير، لدينا z-- الذي يمثل number-- معينة a-- الذي يمثل أيضا بعض number-- زائد 1 modulos 26 بالإضافة إلى أحرف صغيرة أ. إذا يا رفاق الحفاظ على القراءة من خلال هذه، كنت قد ترى نمط يأتي في كيف نقوم التلاعب في التعليمات البرمجية. أنا جدا، اقترح جدا بعد القسم لكم جميعا الرجال والمضي قدما في إدخال تلك كلها في جهاز الكمبيوتر الخاص بك ومعرفة أي نوع من أرقام يخرجون والتفكير من خلال لماذا تلك هي يحدث، لأنه بالنسبة psets بك سوف يكون من المهم حقا عليك أن تفهم لماذا بعض الامور تحدث. وجميع هذه الشرائح تكون على الانترنت. لذلك لا تقلق حول محاولة نسخ جسديا أسفل الملاحظات. كل شيء على الإنترنت. هذا القسم سوف تكون هي نفسها على الانترنت. كل ما عندي من شفرة المصدر أن أنا على التوالي سيكون على الانترنت. نعم. هل لا يزال لديك سؤال؟ الحضور: ما هو modulos؟ ANDI بنغ: OK. حتى مودولو هو المشغل الذي يحدث ل من المهم جدا أن PSET الرجال الخاص بك هنا. وبالتالي فإن الطريقة التي مشغلي في C وأعمال البرمجة هو أن لديك ما يسمى ب رمز الانقسام ورمز معامل، وهو تماما مثل علامة النسبة المئوية. وذلك في C، عند القيام صحيح مقسوما على عدد صحيح بخط مائل، C لديه ميل لتريد قطع من جميع النقاط العشرية، لأن عددا صحيحا يريد تحويل إلى عدد صحيح. انها لن تريد أن تكون مزدوجة مع مجموعة من الكسور العشرية عن بعد. لذلك إذا كنت تفعل 3 مقسوما على 2، انه سيكون لقطع 0.5 و فقط تعطيك 1. لذلك هذا شيء ليكون حذرين جدا من عندما كنت القيام بأي نوع من الرياضيات في البرمجة، غير أن الأرقام التي تحصل قد لا تكون الأرقام الذي كنت أفكر، وهذا هو السبب في التقريب بك PSET الماضي وهذا مهم جدا. مودولو يعطيك الباقي. هكذا على سبيل المثال، إذا فعلت 3 مودولو 2-- حتى 3 في المئة علامة 2-- انها تعطيك ما تبقى من ذلك. حتى 3 مقسوما على 2 هو 1.5. انها تبقى من 1 1. فإنه تعطيك 1، التي هو ما تبقى من ذلك. وذلك عند الرجال يتحركون من خلال الجدول ASCII، سوف مودولو في نهاية الأمر شيء مهم جدا، وسنناقش ذلك في وقت لاحق. حسنا. لذلك ما هو جميل، جميلة جديدة وفريدة من نوعها جميلة أن ناقشناه هذا الاسبوع هو مفهوم ما هو صفيف. لذلك مجموعة هي الاولى نوع من بنية البيانات أننا في طريقنا لل تصادف في هذه الفئة. كل بنية البيانات وغير نوعا من التعسف، أشياء حرفيا مثل هيكل كما أننا المبرمجين خلقت، أننا قد وضعت في التعليمات البرمجية في أن يمكن أن تحتوي على أجزاء أخرى من التعليمات البرمجية. حتى في هذا المعنى، وهو array-- كما أنها تفكر في ملف تشكيل الحكومة، حيث إذا قمت بفتح مختلفة رفوف مجلس الوزراء الملف الخاص بك، يمكنك الوصول إلى أشياء مختلفة. في الذاكرة، ومجموعة تقوم فقط نفس الشيء على جهاز الكمبيوتر الخاص بك. هل يمكن أن يكون مختلفا وblocks-- ندعو لهم indices-- من صفيف. انها مجرد مثل كتلة، رف الذاكرة بعد أن قمنا تم إنشاؤها ضمن بك كمبيوتر يمكنك إدخال أشياء معينة في أماكن مختلفة. حتى مع صفيف، كنت عليك دائما أن specify-- لديك لتحديد معلنا ل مجموعة في الشكل التالي. وأنت تسير لأول مرة تحديد نوع البيانات ان كنت تريد إنشاء المصفوفة. إذا كنت تريد مجموعة من الأعداد الصحيحة، أنا ذاهب لوضع كثافة العمليات هناك. إذا كنت تريد مجموعة من السلاسل، انا ذاهب الى وضع سلاسل هناك، اسم مجموعة الخاص بك، ومن ثم وأنت تسير أن يكون بين قوسين معقوفين. وداخل الأقواس المربعة، وكنت ستكون لدينا حجم مجموعة الخاصة بك. شيء مهم حقا ل نأخذ في الاعتبار عند إنشاء المصفوفات هو أنه بمجرد إنشاء مجموعة، لا يمكن تغيير هذا الحجم. لذلك إذا كنت تعرف أن الآن لديك مجموعة من حجم 10، كنت أعرف أنني ذاهب لديها 10 خلايا داخل أو 10 المؤشرات ضمن هذه المجموعة، وانها تسير أبدا لتوسيع أو تقليص مهما، وأن هناك حاليا فقط 10 كتل من الفضاء تخصص في الذاكرة التي يمكن تخزين ما يصل الى 10 أشياء من كل ما كنت قد وضعت. حتى في هذه الطريقة، نوع بيانات المصفوفة، بنية البيانات التي صفيف يختلف كثيرا عن البعض الآخر وسوف نقوم أن تغطي في وقت لاحق في هذه الدورة. نعم. على سبيل المثال، إذا أردت ل إنشاء مجموعة من حجم 3 أن المتغيرات الواردة من integer-- أوه، آسف، لtemperature-- ودرجة الحرارة، ل بطبيعة الحال، هو عدد صحيح. لذلك نحن من شأنه أن يخلق كثافة العمليات، وهو نوع بيانات ما نريد لتخزين. ونحن في طريقنا لهذه الكلمة درجات الحرارة من أجل تسمية تسمية شيء أن نفهم جميعا. ونحن في طريقنا لديك أقواس معقوفة. ونريد ثلاثة أرقام. لذلك نحن ذاهبون إلى وضع ثلاثة داخل منه. شيء حقا من المهم أن نأخذ في الاعتبار غير أن صفائف صفر فهرستها. كل ذلك يعني أن لك نبدأ مع مؤشر 0، وتقوم بتشغيل ما يصل من خلال حجم المصفوفة ناقص 1. هكذا على سبيل المثال هنا، ونحن لدينا مجموعة من حجم 3. انها سوف تكون قادرة عقد ثلاث قيم. لكن الأرقام التي themselves-- عدد، مجموعة، أن مؤشر، مجموعة، هي من 0 إلى 2. حتى الرجال، أن يكون حقا، حقا عندما دقيق وأنت تسير من خلال مشاكلك مجموعة وخلق أي نوع من مجموعة، لأن الكثير من الأوقات أنها حقا، حقا من السهل نسيان ذلك. أنا في الواقع لم يكن لديك مؤشر 3، أن أرى في الوقت الحاضر فقط يكون مؤشر 2. وإذا حاولت الوصول إلى الرقم القياسي الثالث، انها سوف تكون ما دعا فاصل فارغة. انها ليست الذهاب الى الواقع موجودة في المصفوفة. والكمبيوتر لن أحب ذلك. لذا كن حذرا كلما كنت وصول إلى الأشياء فقط لضمان أن تتذكر أن صفائف صفر المفهرسة. حسنا. لذلك المثال الأول هو فقط طريقة واحدة لإنشاء صفيف. المثال الثاني لدي أدناه هي مجرد وسيلة مستقلة من خلق ما هو نفس البيانات الهيكل الذي قمنا إدخالها فقط. وذلك بدلا من جسديا تشغيل من خلال ووضع في درجة حرارة 0 يساوي أيا كان، درجة الحرارة 1 يساوي أيا كان، ودرجة الحرارة 2 متساوين أيا كان، أنا يمكن في الواقع مجرد خلق كل شيء مباشرة في سطر واحد في درجة الحرارة بين قوسين معقوفين قدم المساواة. وإشعار في هذه الحالة، لا تحتاج لتحديد مدى اتساع مجموعة الخاصة بك، لأن يسير على الكمبيوتر ل تذهب من خلال ونرى أن هناك ثلاثة عناصر في تلك الأقواس المعقوفة. وانها سوف تعرف، OK، أحتاج إلى مجموعة من حجم 3. كنت لا بحاجة الى الذهاب الى إدخال ذلك بالطريقة التالية. وأيضا، نعم، وبهذه الطريقة. هل لديها أسئلة بشأن كيف نجعل صفائف أو كيف يعمل هيكل مجموعة؟ نعم. الحضور: (غير مسموع)؟ ANDI بنغ: نعم، بالضبط. حتى لو كنت لإعلان وتهيئة مجموعة الأسلوب التالي، وهي الطريقة الثانية، يمكنك مجرد ترك تلك. والكمبيوتر يعرف تلقائيا أنه يجب أن نحصي العديد من العناصر يتم في تلك الأقواس المعقوفة، وفصلها بفواصل. حتى هنا يرونه 65، 87، 30. وبالتالي فإن الكمبيوتر يعرف، أوه، هناك ثلاثة أعداد صحيحة. وأنا أعلم أن إنشاء اسم مجموعة درجة الحرارة مع ثلاثة عناصر في ذلك. سؤال جيد. نعم. الحضور: أليس من الممكن لخلق صفيف مع أنواع مختلفة من البيانات التي يمكن إدخالها في ذلك؟ على سبيل المثال، مع الأعداد الصحيحة (غير مسموع)؟ ANDI بنغ: لأغراض من هذه الفئة، لا، في الوقت الحالي. عند إنشاء البيانات هيكلة مثل صفيف، كنت أقول ل كمبيوتر، مهلا، أنا بحاجة لكم لتخصيص هذا بكثير ذاكرة في القرص الصلب، مع كل خلية كونها عدد معين من البتات. تذكر تعلمنا في الأسبوع صفر أن بيانات مختلفة أنواع وأحجام مختلفة؟ هكذا على سبيل المثال، سلسلة هو كمية مختلفة الفضاء من شار، التي هو كمية مختلفة من الفضاء من عدد صحيح. وحتى إذا لم تقم بتحديد ولك مزيج المباراة وما هي أنواع من المتغيرات لديك، والكمبيوتر ستكون مشوشة جدا. وانها لن تعرف مقدار الذاكرة لتعطيك. حتى لأغراض الحق الآن، يمكن لأجهزة الكمبيوتر فقط التعرف على نوع واحد من صفيف. سؤال جيد. حسنا. وذلك بطبيعة الحال، و السؤال الثاني لدينا هو، أيضا، والآن بعد أن قمنا بإنشاء مجموعة، ونحن قد وضعت كل هذه الأمور في مجموعة، كيف لنا سوف تكون قادرة على الوصول إليه؟ وبالتالي فإن هيكل نموذجي أننا دائما الوصول إلى مجموعة هو جميل لدينا حلقة. أعدك يا ​​رفاق أن نكون رؤية الكثير من هذا الرجل هنا. أساسا، في أي وقت تريد لإدخال القيم في صفيف أو تريد الوصول إليها، و أفضل طريقة للقيام بذلك هي للحلقة، لأنه في لحلقة، كنت أعرف كم مرة كنت تريد الذهاب الى تشغيل من خلال مجموعة، لأن لديك طبعة توقف، أليس كذلك؟ وفي كل مرة تقوم بتشغيل من خلال، يمكنك الوصول عنصر آخر من مجموعة. وأيضا، وهذا هو السبب عادة نبدأ من أجل الحلقات في القيمة 0، لأن عند الوصول المصفوفات، يمكنك الوصول إلى مؤشر الصفر. وذلك يوازي متقن. ربما أراد يا رفاق ل الكتابة لكثافة العمليات ط يساوي 1. أنا أقل من أو يساوي 3. ولكنها لن تنجح تماما كما هنا أيضا، لأنك فقط لها عناصر من 0، 1، و 2. وحتى لو كنت لبدء أنا بك في العنصر 1 و 2 و 3، وأنت تسير في نهاية المطاف تشغيل للخروج من حدود الصفيف الخاص بك، وأشياء سيئة ستحدث. لذلك آمل يا رفاق رؤية سغ] لماذا في فصول سابقة كنا تدريس يا رفاق كيفية تشغيل و تنسيق لحلقة الطريقة التي كنا. انها ل، والآن قمنا انتقلت إلى المصفوفات، يمكنك ان ترى لماذا 0 يقرض نفسه بشكل جيد للغاية الوصول. وبالتالي فإن الطريقة التي نؤدي بها ذلك هو هكذا- يضرب أنا فقط طباعته هنا من أجل طباعة بها. ولكن لدي نائبا، فاصلة. والوصول إلى الفعلي جزء يحدث. اسم مجموعة كانت تسمى درجة الحرارة. لذلك فمن درجة الحرارة و ط-ال عنصر من عناصر المصفوفة. وذلك من أجل حلقة يخترق، انها سوف تبدأ عند 0. انه سيكون لطباعة مؤشر 0TH من هذه المجموعة. ثم انه سيكون لطباعة من العنصر الأول. ثم انه سيكون لطباعة من ثانية واحدة. ثم نحن في طريقنا للكسر. غير واضحة على الجميع كيف أن يحدث؟ رائعة. حسنا. حتى هنا لدينا وسيلة ل وقال: إذا لم نكن نريد لالصعب رمز in-- لي ومبرمج. لم أكن أريد فعلا ماديا وضع كل عنصر على حدة من هذه المجموعة. إذا أردت أن بدلا من ذلك تحتوي على قيم مدخلات المستخدمين، ما هي أفضل طريقة للقيام بذلك؟ حسنا، أنا هنا خلقت هذه وظيفة جميلة، التي يمكنني أن تعلن مجموعة. الباحث ذلك دعونا scores-- نقول فقط نحن نريد أن نجعل صفيف عقد درجات كل 18 من الطلاب هنا في هذا القسم. أعتقد أننا قد حصلت قليلا أكثر من 18 أطفال اليوم. ولكن لأجل سبيل المثال، و دعونا نفترض فقط كان لدينا 18. وأود أن إنشاء اسم مجموعة حسابات مع نوع int، لأن عشرات، بطبيعة الحال، أرقام. وانا ذاهب ل 18 بين قوسين معقوفين، لأن ذلك هو عدد الطلاب I تريد أن تكون قادرة على تخزين عشرات. والطريقة فما استقاموا لكم فاستقيموا تعبئة مجموعة هي ان كنت تشغيله من خلال لحلقة، من بطبيعة الحال، مع 0 كونها مؤشر بلدي 0TH. وبعد ذلك مع 18 يجري بلدي وقف طبعة، لأنه لا يوجد 18 العناصر في المصفوفة. ثم انا ذاهب الى القيام printf، أدخل يسجل لstudent-- يادا يادا يادا. يمكن لأحد أن يقول لي لماذا هنا أنا طباعة ط زائد 1 وليس أنا؟ انها نوع من خدعة السؤال، وليس حقا. لم يحدث ذلك فعلا ماديا تؤثر على التوالي من التعليمات البرمجية. نعم. الحضور: (غير مسموع) 0؟ ANDI بنغ: نعم، بالضبط. انها محرجا بعض الشيء عن القول، مهلا، كنت الطالب 0TH في هذه الفئة. انها غريبة بعض الشيء. لذلك علينا، كبشر، لا أحب التفكير في كيف يفكر أجهزة الكمبيوتر. وذلك حتى وإن كان في كمبيوتر، انها تخزين القيم في مؤشر 0، عشر، عندما نحن البشر، ونحن لا حقا نود أن نشير إلى أنفسنا كما الصفر. حتى عندما كنت مجرد طباعة ذلك، انا ذاهب الى طباعة وإضافة 1 فقط من أجل الوضوح. حتى عند طباعة، وانا ذاهب ليكون قادرة على طباعة الطلاب من 1 إلى 18. أنها لا تؤثر في الواقع على التوالي من قانون بأي شكل من الأشكال، والطريقة I الطباعة. ولكن كن حذرا عندما كنت الوصول فعلا المصفوفة. عندما ترى عشرات ط، نلاحظ هنا أنا فعلا الوصول إلى مؤشر 0TH و لا زائد 0-- 1 أو 1 زائد 1، في هذه الحالة، ومؤشر ذلك أنه من الواضح فعلا. هو نوع من الجميع موافق على كيف يعمل من خلال ومع كل مؤشر أنا وضع قيمة في المصفوفة وخلق مجموعة مع 18 أرقام أن المستخدم هو الذهاب الى الإدخال؟ حسنا. رائع. حسنا. ننتقل الآن إلى شيء من جميلة صلة لهذه القطعة النحو أيضا. وأنا أعلم في المحاضرة، David-- آسف، كان لديك سؤال؟ الحضور: هل يمكنك تكبير ذلك؟ ANDI بنغ: نعم، لذلك حاولت. ولكني لا أعرف. لسبب ما، هذا إصدار PowerPoint هو في الحقيقة لا تعمل بشكل جيد مع العرض. لذلك نحن ذاهبون فقط للحفاظ على مثل هذا. وسيتم تحميلها كل هذه على الانترنت. آسف شباب. نعم. حسنا. ولذا فإننا يمكن أن يكون أيضا السلاسل. إذا كان الأمر كذلك يا رفاق فعلا notice-- I تعرف ذهب روب على هذا في ذلك محاضرة انه did-- سلسلة هو في الواقع مجرد مجموعة من الشخصيات، إذا كنت تفكر في ذلك، أليس كذلك؟ A السلسلة عبارة عن اسم أو جملة أو كلمة واحدة، أليس كذلك؟ إذا كان لي أن إنشاء سلسلة المسماة Andi-- اسمي فقط، A-N-D-I. كنت أفكر في أنه متغير واحد فقط. ولكن في الواقع، انها تقسيمها إلى مجرد مجموعة من حرف. حتى انها حصلت على صفة وتخزينها في قيمة مجموعة. انها حصلت على طابع ن المخزنة في المؤشر الثاني وهلم جرا وهكذا دواليك. حتى في مثل هذه الطريقة، ونحن فعلا هذا النوع هيكل المنصوص عليها في وضع سلاسل لدينا. حتى هنا، إذا كان لي أن إدخال كلمة "أكل" - حتى كلمة سلسلة يساوي الحصول على السلسلة. إذا كان لي أن إدخال كلمة "أكل"، أن هو جسديا الطريقة التي جهاز الكمبيوتر الخاص بي تم تخزين هذه السلسلة في ذاكرتي. وإذا أردت أن تعمل من خلال ذلك والطباعة التي out-- ذلك لفي ط يساوي الصفر، ونتذكر، في محاضرة، ونحن شيء مغطى وهذا يسمى strlen، أو طول السلسلة. لأنني لا فعلا تعرف مدى ضخامة الصفيف أيا كان inputting-- المستخدم على سبيل المثال، وأنا المدخلة كلمة "أكل"، وأنا أعلم هذا هو ثلاثة أحرف، أليس كذلك؟ حتى أتمكن من وضعها في ثلاثة هناك وكل شيء سيكون على ما يرام. ولكن إذا كان لديك شيء إدخال المستخدم هذا عدد مختلف من القيم، وأنت تسير أن لا يكون قادرا على الحقيقة أعرف أنه عند برمجة التعليمات البرمجية. وبالتالي فإن الطريقة التي يمكننا التعامل مع حالات الاختبار من هذا القبيل هو أن لدينا شيئا دعا strlen، الذي هو مجرد وظيفة أن يخبرك كيف لفترة طويلة السلسلة. لذلك strlen من كلمة واحدة. كلامي هو تناول الطعام. ن يساوي strlen من كلمة واحدة. يمكن لأي شخص أن يقول لي ما أن قيمة في الواقع هناك حق؟ ماذا ن يمثل الحق الآن، في هذا المثال، إذا كان يأكل؟ الحضور: 3. ANDI بنغ: 3، بالضبط. لذلك لدينا لكثافة العمليات ط يساوي صفر، ن يساوي 3، أساسا. وأنا ذاهب لتشغيل حتى انها أقل من 3I ++. وانها سوف تذهب أساسا من خلال وتفعل الشيء نفسه. انها سوف طباعة كل قيمة وتعطيك E-A-T. انها مجرد تدل على طريقة مختلفة في كتابة هذا التقرير. التي ستكون مفيدة للغاية. نعم. الحضور: ما هي فوائد وضع ن يساوي كلمة strlen داخل هذا لحلقة (غير مسموع)؟ ANDI بنغ: نعم. حتى لو كنت to-- القول، على سبيل المثال، إذا كان لي أن تفعل ذلك وبعد ذلك do-- oop-- ذلك، في قانون بلدي، فإنه يكون في الواقع تفعل مثل الشيء نفسه. ومع ذلك، فإن الطريقة التي ديفيد شرح أثناء المحاضرة، إن وجدت يا رفاق تذكر، وكان ذلك، كما البشر، والمبرمجين، ونحن نحاول حقا أن برنامجنا التعليمات البرمجية بحيث الكمبيوتر لديه العمل الحد الأدنى قدر الإمكان، وذلك أن لدينا قانون فعال جدا. حتى إذا كان لي أن هناك ما يمكن أن يحدث من خلال بلدي للحلقة غير ان كنت تعلن لأول مرة متغير اسمه ط سيكون 0. وانا ذاهب للتحقق، أوه، ما هو strlen من كلمة؟ أوه، strlen هو 3. ذلك هو أنني أقل من ثلاثة؟ نعم إنه كذلك. انا ذاهب لتشغيل. ثم للمرة الثانية حول العودة الحلقة، انا ذاهب الى زيادة ط. أنا ذاهب ليكون واحدا. وأنا ذاهب للتحقق، أوه، ولكن ما هي strlen من كلمة؟ أوه، أنها ثلاثة. ويفعل ذلك يبدو نوع من الإسراف، في كل مرة تقوم بتشغيل خلال الحلقة، ليتم التحقق من وظيفة، على الرغم من أن strlen من كلمة لا يغير في الواقع؟ حتى انها قوة إضافية لجهاز كمبيوتر. عند بدء الحديث عن أشياء التي هي المليارات والمليارات والمليارات من الأماكن منذ فترة طويلة، تخيل جهاز الكمبيوتر الخاص بك الحاجة إلى الذهاب من خلال وجسديا تحقق كل ذلك في كل مرة. هذا هو السبب، لجعل فقط من أجل الكفاءة، ونحن نميل لفعل هذا، لأن هذه الطريقة نحن فقط استدعاء الدالة مرة واحدة في البداية، وأنه في كل مرة كان يمر انها تسير لتخزين قيمة 3 هناك، ان كنت لا لديك للتحقق باستمرار في كل مرة. نعم. الحضور: آسف. فقط (غير مسموع). هل يمكن أن تفعل كثافة العمليات ن يساوي strlen و وضع أن فوق خارج عن حلقة كذلك؟ ANDI بنغ: نعم. هل يمكن أن تفعل ذلك، على الاطلاق. السبب لدينا في هنا بسبب الطريقة التي لللأعمال حلقة هو أنه دعا ل متغير محلي بمعنى أن كل ما كنت خلق داخل لحلقة موجود فقط داخل لحلقة. لذلك المتغير أنا فقط موجود في تلك الأقواس. وهنا متغيرات ن أيضا لا توجد إلا في تلك الأقواس. حتى لو كنت لاستخدام strlen من كلمة عدة مرات الأسفل، تماما أفضل طريقة للقيام بذلك سيكون لتعلن أنها تصل أعلى لذلك لم يكن لديك للقيام بذلك مرة واحدة. نعم. الحضور: لماذا لديك سطر جديد بعد المئة معرفة ما إذا كنت ترغب في وضع كل الرسائل بجانبه فصل؟ ANDI بنغ: أوه، كنت أريد أن طباعة كل منهم في كل سطر. لا يهم. نعم، انها التنسيق. هذا سؤال جيد، وإن كان. نعم، إذا أردت أن طباعة كل شيء على سطر واحد فقط، أنا لن يكون اندفاعة في. حسنا. الجميع جيدا؟ حسنا. رائع. لذلك أعتقد أنني قد تحدثت بما فيه الكفاية. بدوره يا رفاق لتشغيل من خلال رمز وتقول لي ما هو الخطأ هنا. أين الخلل؟ هكذا كما ترون، لقد أعلن مجموعة جديدة من نوع السلسلة المسماة الطبقة. ولقد إدخالها سام، جيس، وكيم إلى ذلك. وأنا محاولة طباعة جميع عناصر المصفوفة. يمكن لأي شخص أن يقول لي لماذا هذا سوف تعطيني المشاكل؟ سأعطيك الرجال 10 ثواني للتفكير في ذلك. حسنا. نعم؟ الحضور: هل يسار الوسط يساوي 3 أو (غير مسموع)؟ ANDI بنغ: الحق. لذلك كم مرة هذا الواقع الذهاب لتشغيل من خلال هذه الحلقة؟ الحضور: أربعة. ANDI بنغ: بالضبط. انه سيكون لمن خلال أربع مرات. انها سوف تعمل من خلال في 0، 1، 2، و 3، لعنصرها هو أنني أقل من أو يساوي 3. انها لن توقف عندما حان 2. انها تسير للحفاظ على الذهاب حتى يضرب 3. وكما نعلم، هناك ثلاثة فقط عناصر في مجموعة الفعلية لدينا. لو كنا في محاولة للوصول إلى المركز الرابع العنصر أو مؤشر 3، وأنت تسير لتصل إلى مكان ما في الذاكرة التي لا وجود لها. انه دعا فاصل فارغة. لا شيء سيكون هناك. جهاز الكمبيوتر الخاص بك لن لنكون سعداء جدا معكم. نعم. هل لديها أسئلة لماذا الذي يحدث؟ هذا هو منطقة مشتركة لتجنب. نعم. الحضور: هل ليست الأولى الشريحة أيضا لديها سلسلة من 2؟ ANDI بنغ: رقم ذلك أساسا، عندما كنت صنع صفيف، هذا الحق قوس هناك، أن number-- جميع انها تخبرك هي الطريقة العديد من العناصر لدي. انها لا تقول الحقيقة لي المؤشرات من أي شيء. حتى في هذه الحالة، وأنا أعلم أريد لكتابة مع ثلاثة أماكن، مع ثلاثة أماكن المادية ل عقد كل ما أريد لعقد. ولهذا السبب العدد ثلاثة هناك. ومع ذلك، إذا أردت للوصول إليه فعلا، إذا أردت أن أقوله، printf الطبقة عدد قوس، ثم وأنت تسير لوضع الواقع المؤشر البدني هناك. نعم، سؤال جيد. الجمهور: ذلك هو البدنية مؤشر المفترض أن يكون (غير مسموع)؟ ANDI بنغ: أنا آسف. يمكنك التحدث قليلا؟ الجمهور: ذلك هو المؤشر المادي (غير مسموع) كل من مربعات؟ [غير مسموع]؟ ANDI بنغ: نعم. لذلك أنا ذاهب لأعود إلى هنا. أعتقد أن من حق هنا. لدينا مجموعة من حجم 3. هناك ثلاثة أماكن، مثل، النائبة المادية هنا. لكنهم اسمه 0، 1، و 2. لذلك إذا أردت أن الوصول إليها، الطريقة التي أستطيع الوصول لهم غير printf من كل ما كنت أريد هنا. سيكون لديك لطباعة من اسم منه، ثم لأن الكمبيوتر يعرف، يا، ولست بحاجة للبحث في هذه المجموعة لمؤشر 0TH. نعم. ولكن حجم أنه لا يتغير. حجم هو 3، بغض النظر كيف يمكنك تسمية لهم. حسنا. الجميع جيدا؟ الحضور: وهكذا في كل مرة كنت (غير مسموع)؟ ANDI بنغ: OK. حتى في هذه الحالة، ونحن لا حقا ندخل الآن في الدورة. ولكن نعرف أن string-- كأنني ذكرت من قبل، سلسلة هي في الأساس مجموعة من الأحرف. حتى لو كنت إنشاء صفيف سلاسل، النوع الأول من لدينا مجموعة واسعة من مجموعة من الشخصيات، أليس كذلك؟ حتى في هذه الحالة، لأنني لدينا مجموعة من السلاسل، لو كنت لإدخال كلمة طويلة حقا، التي لا تزال تحتل مساحة واحدة فقط، لأن هذا هو واحد من سلسلة. ولكن إذا كنت لأفكر في شخصيات من أن مجموعة، ثم ان تناول الكثير من شخصيات من أي من الكلمات الأخرى هي. ليس من المهم حقا لفي الوقت الحالي. ولكن هذا مجرد عموما كيف انها تعمل. حسنا. لذلك هذا هو شيء سوف تسمح لك أن تفعل الكثير على مدار الفصل الدراسي. ولست بحاجة للراحة صوتي. يا رفاق بحاجة إلى تحفيز أنفسكم. وهناك الكثير منكم ربما يجب أن تنام الآن. أنا إدخال مشاكل عشوائية أين نحن كطبقة أو لك مع شريك بجانب أنت ذاهب لقضاء بضع دقائق مناقشة على كيف لنا أن تذهب نحو حل أو إنشاء برنامج مثل هذا. حتى الآن، نريد لإنشاء program-- ونحن في طريقنا إلى نسميها upper.c-- أن المتحولين كلمة صغيرة إلى الطبقة العليا الأحرف الكبيرة string--، آسف. كلمة في سلاسل، آسف، هو مرادف. انا ذاهب الى تغييرها لتعني الشيء نفسه. نعم. خذ بضع دقائق. فإنه ليس من الضروري أن يكون مكتوب في أي لغة. فقط في التعليمات البرمجية شبة الكود أو منطقيا كيف كنا حتى التوجه نحو القيام مثل هذه المشكلة. نعم. [SIDE حوار] كما أنني لاحظت أن رفاق can-- النوع الأول من نرى بالفعل البرنامج. أعتقد أن لي عدم وجود وضع مقدم مشكلة. ولكن لا بأس. [SIDE حوار] نعم، من فضلك، الرجال. يأتي الحصول على الحلوى. يأتي الحصول على الحلوى. الجمهور: نعم! [SIDE حوار] ANDI بنغ: أيضا، نعم، سأبدأ رمي الحلوى في الناس الذين لا إجابة على الأسئلة. لذلك يجب عليك فقط الإجابة على الأسئلة. أو افترض الناس الذين لا إجابة على الأسئلة. نعم، العكس. [SIDE حوار] الحضور: (غير مسموع) ANDI بنغ: نعم. نعم. [SIDE حوار] كل الحق، والرجال. تأخذ، مثل، 10 المزيد من الثواني. [SIDE حوار] OK، والرجال. حتى قبل أن تبدأ في محاولة ل في الواقع إرسال جسديا رمز، عادة جيدة لتطوير هي أن نريد أن النوع الأول من السبب من منطقيا كيف لنا أن نفعل ذلك. كنت ترغب في التأكد من، قبل جسديا تبدأ بمحاولة رمز في ماريو، التي تقوم بها تأكد من أن لديك شبة الكود الخاص بك. أن تتخذ لكم من خلال ما تحتاج إلى إنشاء ذلك أنه عند جسديا كتابة برنامجك في وقت لاحق، كنت أكثر قدرة على التقاط الأخطاء في التعليمات البرمجية وأشياء من هذا القبيل. لذلك نحن في طريقنا للبدء فقط by-- باللغة الإنجليزية في شبة الكود، لا أحد يريد ان يعطي لي شرحا عام من كيف نذهب عن القيام بذلك؟ نعم. الحضور: (غير مسموع). ANDI بنغ: بالتأكيد، فلا تقلق. الحضور: هل يمكن أن نسأل لأو اطلب شخص ما للحصول على سلسلة 1-- نعم، سلسلة، وثم-- ANDI بنغ: نعم، لذلك هذا هو بداية جيدة. سأبدأ الكتابة، آسف، كما كنت أتكلم. هكذا-- الحضور: --the صغيرة الأرقام هي أعلى، أليس كذلك؟ أو الأحرف الصغيرة لدينا أعداد كبيرة؟ ANDI بنغ: بالضبط. الحضور: حتى ذلك الحين طرحنا 32 من أيا كان (غير مسموع). ANDI بنغ: العظمى. لذلك لدينا نوع من الشعور العام كيفية العمل حول هذه المشكلة. مع العلم أن لدينا نوع من علم الطريقة الفعلية التي سلاسل يتم تخزينها في الذاكرة، ماذا كنت بالفعل أعرف أن كنت تريد الذهاب لربما أن تكتب في التعليمات البرمجية من أجل التحرك من خلال سلسلة؟ الحضور: للحلقة. ANDI بنغ: A للحلقة، بالضبط. رائعة. لذلك نحن نوع من يملك عام شبة الكود شطبت هذا النوع من يعطي أنت تلاحظ على كيفية سيتحرك نحو حل المشكلة. الآن أن لديك هذا، كنت يمكن الرجوع إليها في وقت لاحق على عندما كنت في محاولة ل في الواقع كتابة التعليمات البرمجية. ولذا فإننا يمكن أن تذهب في الواقع هنا. ولقد حصلت على وظيفة تسمى upper.c-- هناك كان is-- من مجرد قالب فارغ الآن أن رفاق ذاهبون لل مساعدتي معرفة عن كيفية كتابة هذا الخط من code-- لا سطر من التعليمات البرمجية. انها سوف تكون عدة أسطر من التعليمات البرمجية. عند بدء أي نوع من PSET فارغ، ما هو أول شيء أنا بحاجة لنتذكر أن تفعل؟ الحضور: (غير مسموع). ANDI بنغ: نعم العظمى. تتضمن. stdio.h. في كثير من الأحيان هذا هو واحد من أخطاء الناس أكثر سهولة سيجعل عندما يكونون الكتابة، هو أنها سوف تنسى أن تشمل مكتبة الهامة التي تحتاج إليها. حتى لو كان الدوام الرسمي، وكنت مثل، أنا لا أعرف لماذا لا يعمل قانون بلدي. يمكنك أن تقول لي لماذا لا يعمل؟ ونحن في طريقنا إلى القول هل # تضمين؟ يجب أن تتضمن # ذلك. حسنا. لذلك نحن قد حصلت على مستوى I / O هنا. غير أن المكتبة الوحيدة ونحن في طريقنا إلى حاجة هنا؟ ماذا نحن فاعلون؟ آسف. مجرد شخص يصرخ بها؟ الحضور: (غير مسموع). ANDI بنغ: هناك تذهب. حسنا. وكيف يمكنني التوجه نحو البدء في أي نوع من وظيفة، أي نوع من الوظيفة الرئيسية ضمن برنامجنا؟ الباحث الرئيسي. حسنا. ماذا أضع داخل هنا؟ ما هو أول شيء تريد القيام به؟ إذا كنا نريد للحصول على سلسلة من المستخدم، ما نحن ذاهبون ل القيام به على هذا السطر الأول؟ آسف، يا رفاق يشعر فقط تتردد في التحدث وبصوت عال. فقط تصرخ أيا كان. الحضور: اسأل المستخدم؟ ANDI بنغ: كيف لنا أن نفعل ذلك؟ Ask-- أنا ذاهب إلى كتابة "يطلب من المستخدم"؟ الحضور: Printf. ANDI بنغ: OK. Printf. ماذا أريد أن printf؟ الحضور: نوع في شيء. ANDI بنغ: مثل ذلك؟ الرجال، والتظاهر وكأنني كمبيوتر. قل لي جسديا في كل خطوة أنني بحاجة لكتابة هنا؟ أفعل شيئا خاطئا؟ يجب أن يكون كتابة شيء؟ الجمهور: تحتاج العملات. ANDI بنغ: أنا بحاجة يقتبس؟ حسنا. حسنا. الحضور: وخط ثم الجديد. منقوطة. ANDI بنغ: منقوطة؟ حسنا. جيد. الحضور: وتحديد ربما التي تريدها في صغيرة؟ ANDI بنغ: العظمى. يا رفاق تضحك في وجهي النسيان لوضع فاصلة منقوطة. أنا أضمن لكم مكان ما في سياق هذه الفئة، سوف تنسى أن تضع فاصلة منقوطة، وذلك سوف يأخذك ثلاث ساعات لمعرفة لماذا التعليمات البرمجية الخاصة بك لا يعمل. حدث ذلك لنا جميعا. فإنه من المحتمل أن يحدث لك. الحصول على عادة جيدة لاستخدام الفاصلة المنقوطة. حسنا. الحضور: هل تريد للقيام مائل في؟ ANDI بنغ: بالتأكيد. هل تريد أن تفعل مائل في؟ الجمهور: نعم. ANDI بنغ: العظمى. حسنا. ماذا أفعل بعد ذلك؟ الجمهور: الحصول السلسلة. ANDI بنغ: احصل على السلسلة. وذلك ما أقوم اكتب؟ شخص ما؟ الحضور: سلسلة ق. ANDI بنغ: سلسلة ق. الحضور: GetString. ANDI بنغ: شخص ما، يمكنك أن تقول لي أين هذه الوظيفة GetString يأتي من؟ الحضور: String.h. ANDI بنغ: String.h؟ كنت اعتقد انها من string.h؟ الحضور: (غير مسموع). ANDI بنغ: هناك تذهب. انها من CS50.h. إذا كنت الخلط دائما على حيث ملف المكتبة أو ملف الرأس، جوجل string.h حرفيا، وانا اقول لكم ما هي جميع الوظائف التي هي في string.h. حسنا. حتى الآن التي خلقت سلسلة ولقد قمت مطالبة المستخدم لذلك، لقد تخزينها في متغير الصورة اسمه، ماذا يجب أن أفعل الآن؟ الحضور: التحقق ما اذا كان في صغيرة. ANDI بنغ: آسف؟ الحضور: التحقق ما اذا كان في صغيرة. ANDI بنغ: حسنا، دعونا نفعل ذلك. كيف يمكنني فعل ذلك؟ في الواقع، لأغراض الطبقة الآن، نحن ذاهبون لمجرد نفترض أن كل شيء أننا الإدخال بالفعل في صغيرة. إذا أردت أن تحقق، تفعل فقط إضافة عبارة شرطية ان فحص، التي تتخلل كل عنصر صفيف مفرد وفحص ما اذا كان بين قيم معينة. أنسى ما عدد من قيم صغيرة هي. يمكنك البحث عنه على جدول ASCII. ولكن نعم، وهذا هو نقطة جيدة حقا. ولكن الآن، ونحن ذاهبون لمجرد نفترض أن كل السلاسل نحن المدخلات هي في صغيرة. حسنا. فكيف أود أن تذهب نحو هذه المشكلة بعد ذلك؟ الحضور: للحلقة. ANDI بنغ: للحلقة؟ حسنا. قل لي ماذا اكتب. الحضور: لكثافة العمليات ط يساوي 0. ANDI بنغ: OK. الحضور: أوه، في الواقع، فإنك قيام فاصلة والقيام ن يساوي strlen. ANDI بنغ: شيء مهم جدا التي اعتقد انها لاحظت هنا هو أننا لم يكن لديك ليقول الباحث ن مرة الثانية فعلنا هذا. أعرف فقط أنه في ل حلقة عندما كنت معلنا، كنت في الواقع لا تحتاج إلى كثافة من المرة الثانية كنت تفعل متغير. يمكنك أن تقول ن strlen. الجمهور: من الصورة. ANDI بنغ: ق. حسنا. الحضور: ثم فاصلة منقوطة. ANDI بنغ: بالتأكيد. الحضور: وبعد ذلك (غير مسموع) ن. بعد ذلك ++. ANDI بنغ: العظمى. حسنا. ماذا نريد الداخل هذه لحلقة الآن؟ تذكر، إذا نحن في طريقنا للتشغيل من خلال سلسلة وتعمل من خلال مجموعة، نريد أن تحقق أشياء في ذلك. ما نحن بحاجة الى الذهاب؟ هذا هو نوع من الجزء صعبة الآن. أي شخص لديه تخمين؟ حسنا. لذلك أولا، كيف يمكننا الوصول حتى؟ كيف يمكننا حتى الاختيار الأول أو الوصول إلى عنصر في المصفوفة؟ كيف لنا أن نفعل ذلك؟ ما هو التدوين التي نستخدمها للقيام بذلك؟ ما هو اسم هذه المجموعة تسمى؟ انه دعا الصورة، أليس كذلك؟ تذكر، أي سلسلة دائما صفيف. لذا هي قوس ط، أليس كذلك؟ لأن ذلك هو القيمة الحالية أو قيمة المؤشر نحن فحص. ونحن في طريقنا لتعيين هذا يساوي to-- نريد قيمة صغيرة، أليس كذلك؟ نحن نريد لتحويل هذه lower-- آسف، نحن نريد الأحرف الكبيرة. نريد أن تتحول صغيرة قيمة إلى أحرف كبيرة. وهكذا like-- أنا آسف، ما اسمك؟ الحضور: هايدي. ANDI بنغ: آسف؟ الحضور: هايدي. ANDI بنغ: هايدي. كما قال هايدي في البداية، ونحن على الأرجح سنحتاج الى the-- نحن ربما ستكون لدينا لطرح 32 من كل ما charc هذا هو، أليس كذلك؟ لانه في ASCII الجدول، والفرق بين حرف صغير وحرف كبير هو 32. لذلك عندما نقوم بذلك، ونحن على الأرجح تريد الذهاب الى طرح 32، أليس كذلك؟ لذلك نحن في طريقنا للقيام ق ط. هل يفهم الجميع ماذا فعلت ذلك؟ لأن الآن، في مجموعة لدينا، نحن فحص مؤشر 0TH، أليس كذلك؟ وفي مؤشر 0TH لل سلسلة، وهذا هو الحرف الأول. وهذا الطابع ونحن في طريقنا لنفترض انها صغيرة. إذا كنا نريد أن تجعل من الأحرف الكبيرة، ونحن أن طرح 32 من قيمته، لأنه في ASCII لدينا الجدول، وهذا هو كيف نحصل عليه في اليوم التالي الموافق القيمة التي تجعل من الأحرف الكبيرة. هل الجميع يفهم ذلك؟ نعم. الحضور: هل يمكن أيضا لا أحرف صغيرة على minus-- ANDI بنغ: نعم، حتى أن في الواقع جيدة حقا. أنا ذاهب لأعود إلى ذلك سؤال بعد نفعل ذلك. نعم. ثم إذا كنت تريد أن ترى ما يحدث، أنا الارجح الى تريد طباعتها، أليس كذلك؟ شخص يقول لي ما أريد أن طباعة هنا. الحضور: printf في المئة ج مائل (غير مسموع). هذا هو قيمة (غير مسموع) ق ط. ANDI بنغ: ق ط، آسف؟ الحضور: (غير مسموع). ANDI بنغ: أنا لا أعرف. ما رأيك؟ الحضور: حسنا، أنا wouldn't-- أعتقد أنني لن bring-- وأود أن أعتبر خارج في الداخل، لأنه (غير مسموع). ANDI بنغ: أوه، كنت قد فعلت ذلك؟ الجمهور: نعم. ANDI بنغ: دعونا نترك الأمر الطريق هو، وساوضح لماذا في وقت لاحق. تذكر، حتى عندما كنت يملك صاحب المكان، تريد وضع أقواس حول ذلك. حسنا. هذا ما ينبغي أن يكون وظيفة الصلبة هنا. دعونا تشغيله ومعرفة ما اذا كان يجمع. جعل العلوي. اه اوه. لا تبدو جيدة جدا. لماذا يحدث هذا؟ كما هو الحال مع أي خطأ أو كنت ترغب في الذهاب بدء ذهابا ومع أول واحد، لأن عادة أسباب الخطأ واحد الكثير من الأخطاء الأخرى بعد ذلك. وهنا نرى upper.c: 18: 25، الذي يحكي لي في هذا البرنامج اسمه upper.c، على خط 18، خطأ يعلن ضمنيا مكتبة التوابع strlen مع نوع بلاه unassigned--، وأنا لا أعرف ما يحدث بعد ذلك. جميع انها تقول لي الآن هو أن شيئا ما يحدث على strlen. والمشوشة الكمبيوتر، ل انها مثل، أنا لا أعرف ما هو strlen؟ ماذا يفعل ذلك على الأرجح أقول لكم كنت في عداد المفقودين؟ الحضور: كنت في عداد المفقودين (غير مسموع). ANDI بنغ: أنت على حق. بالضبط. لذلك هذا هو حيث انها من المهم للتأكد من أن كل وظيفة تستخدمها في الخاص كود هو وجود رأس الصحيح ملف للمكتبة، وإلا وأنت تسير في الحصول على الكثير من الأخطاء والشفرة لن لمعرفة ما يجري. لذلك نحن ذاهبون لتشمل string.h هنا. الآن عندما نحاول تجميع العلوي. تجميع بشكل صحيح. دعونا تشغيل هذا البرنامج. لذلك اكتب شيء في صغيرة. ماذا تريد يا رفاق لكتابة؟ تصرخ شيء. كل الحق، شارلي فقط مشى في. ونحن سوف اكتب اسم شارلي و. شارلي في صغيرة. ونأمل، ونأمل، وهذا هو الذهاب إلى تصرخ وبصق شارلي في الأحرف الكبيرة. ياي! لا نفهم كيف الجميع ذهبت عن حل ذلك؟ الطريقة التي يمكنني التلاعب باستخدام الأعداد الصحيحة لحل شيئا أريد القيام به في سلاسل، لأن الحروف والأعداد الصحيحة يمكن يتم الرجوع إليها في نفس الطريقة ل رسم الخرائط ASCII. حتى أن أعود إلى وجهة نظرك، إذا أنا أردنا أن نضع هنا بدلا من 32 الأحرف الكبيرة A ناقص أحرف صغيرة واحدة فقط مثل أن، من شأنه أن يعمل على قدم المساواة، وكذلك، لأن هذا هو ببساطة مجرد الفرق بين تلك القيمتين. إذا كنت تريد أن تجعل هذا شارلي again--. اوه لا. أعتقد ذهبنا بطريقة خاطئة، نعم؟ الحضور: (غير مسموع) أحرف صغيرة أ. ANDI بنغ: هناك تذهب. نعم. وخارج يبصق شارلي. لذا كن حذرا عندما كنت طرح القيم لنتذكر واحد الذي هو أكبر من الآخر. على سبيل المثال، هنا أنا نسيت هذا هو في الواقع صغيرة ل أكبر من الأحرف الكبيرة A. حتى عندما حاولت طرح لهم وسيلة أخرى حولها، وحصلت على 32 سلبي. وكان جهاز الكمبيوتر الخاص بي مثل، أنا لا أعرف ما هو. انها مجرد احتمال بعض عشوائي القيمة التي ليست جيدة جدا. وذلك للتأكد من أنك طرح في طول الصحيح العثور على الحرف الذي تريده. حسنا. وأي شخص الخلط على كيفية ذهب حول كتابة هذه الوظيفة؟ حسنا. لذلك فعلا، وهي وظيفة بالفعل موجود في مكتبة دعا ctype.h. دعا ctype.h المكتبة. هذه الوظيفة هو في الواقع سبق أن كتبت لك. انه دعا إلى الأعلى. وذلك لأغراض هذا PSET، وأنت تسير لتجد أن كنت تريد حقا أن استخدام الكثير من الوظائف الواردة داخل المكتبة الأساسية CType. إلى الأعلى، لخفض، والعلوي، هو lower-- تلك هي جميع وظائف أنك لن تكون قادرا على استخدام جدا، بسرعة جدا في التعليمات البرمجية الخاصة بك أن يفعل بالضبط ما يفعله هذا. كتبنا على كيفية تحويل سلسلة إلى أحرف كبيرة. ولكن هذا هو في الواقع رمز أن شخصا آخر قد كتب والتي يمكنك الوصول عبر وظيفة مختلفة. نعم؟ الحضور: إذن أنت مجرد نسخ A في هناك ونفعل ذلك بكل حرف واحد؟ ANDI بنغ: نعم، لأنني لا نهتم قيم أ. أنا فقط أهتم أن الفرق بينهما هو 32، أليس كذلك؟ الفرق بين الصغيرة ب والأحرف الكبيرة B هي أيضا 32. والفرق بين ج والأحرف الكبيرة C هو دائما 32. أنا فقط يجب أن نهتم الفرق بين الاثنين، لأن كل من الحروف تتبع نفس النمط، أليس كذلك؟ إذا كان لدي الفرق بين أحد منهم، أنا أعرف ما الفرق بين كل منهم. سؤال جيد. نعم. الجميع جيدا؟ حسنا. OOP. حسنا. حتى مفهوم آخر هذا سيكون من المفيد جدا كما كنت الاستمرار في تطوير كود الخاص بك هو هذه الفكرة من خلق وظائف أو التجريد. حتى الآن، لقد اتخذنا كل الجبر. في الجبر، يتم تدريس لك أن هناك هذا شيء رائع يسمى وظيفة الجهاز، حيث إذا كنت إدخال نوع واحد من عدد، يتم تشغيله من خلال هذه الوظيفة الرائعة والملوثات العضوية الثابتة انتاج مختلف، أليس كذلك؟ في التعليمات البرمجية، يحدث نفس الشيء في أي نوع من ظيفة. حتى أتمكن من جسديا الكتابة في بلدي من التعليمات البرمجية جسدي بيان الرئيسي الذي يفعل فعلا مهما كانت جثة رمز يقوم به. ولكن خارج ذلك، يمكنني أيضا إرسال العديد من الوظائف المختلفة أن تفعل أشياء كثيرة مختلفة. على سبيل المثال، لدينا بالفعل بدأت باستخدام بعض منهم. Printf-- هذا هو وظيفة على أن شخص آخر وقد كتب بالفعل أن يمكن أن نطلق في نظامنا. لupper-- في هذه الحالة، upper-- هي وظيفة أخرى لدينا كتب أننا يمكن استدعاء في نظامنا. ولذا أعتقد لماذا لدينا حتى ظائف؟ لماذا لا يتم فقط صوت نزول المطر عليها جميع في نفس سطر من التعليمات البرمجية؟ فإنه يجعل من السهل على الجميع. حسنا، والسبب وراء ذلك هو، أولا وقبل كل شيء، المنظمة. إنه أمر مزعج حقا الذهاب خلال التعليمات البرمجية شخص ما وظيفة واحدة مثل printf. إذا كنت الرجال يعرفون فعلا ما وظيفة printf ينطوي على الكتابة، انها، مثل، 1000 الأسطر من التعليمات البرمجية. اذا في كل مره كنت أريد لprintf شيء، كان لي أن أكتب 1000 خطوط للقانون، التي من شأنها أن تكون مزعجة حقا أن يقرأ، الصحيح؟ وهذا هو السبب في أننا قمت فقط أنشئت هذه الوظيفة المجردة أن لدينا بالفعل شخص آخر قد كتب في مكان آخر. وفي كل مرة كنا في حاجة لاستخدامها في رمز لنا، لدينا فقط أن أقول printf. والتي هي قادرة على استخدام وظيفة شخص آخر قد كتب في نظامنا. فإنه يجعل من الاسهل تنظيميا لقراءة التعليمات البرمجية. ثانيا، انها التبسيط. فإنه يبسط الخطوات لدينا لاتخاذها لحل مشكلتنا. Printf، وظائف مثل printf، وظائف مثل لالعلوي هي كل الأشياء التي تسمح لنا ل تبسيط رمز لدينا باستمرار لذلك فمن الأسهل. والشيء الأخير هو إعادة استخدام. وبالتالي فإن حقيقة أن لدينا وظيفة تسمى printf التي يمكن أن نطلق كثيرة مختلفة مرات، ويسمح لها أن تكون قابلة لإعادة الاستخدام. إذا كان لي أن أكتب printf، أنا أكتب فقط لمرة واحدة. كان موجودا فقط في مكان واحد. إذا أردت أن تفعل ذلك مرة أخرى، وأود أن يجب أن نسخ ولصق كل ذلك في بلدي السطر الثاني من التعليمات البرمجية. لهذا السبب إذا كنا خلق وظيفة موجود خارج هدفنا الرئيسي، يمكننا فقط ندعو انها وإعادة استخدامها كلما نحتاج لذلك أنه من الأسهل كثيرا بالنسبة لنا وبرامج للكتابة. وبالتالي فإن الطريقة التي كنا نكتب في الواقع وظيفة مشابهة جدا، أليس كذلك؟ هذا هو نوع من أول المثال الذي سنقوم رؤية تأخذ الدالة على غرار مختلفة من أعمالنا خاليا الرئيسي كثافة العمليات. في هذه الحالة، إذا أردت أن كتابة دالة تسمى ف، أليس كذلك؟ وقيمة الباحث هنا هو كل شيء يقول لي، ماذا أريد هذا يعمل للعودة إلى لي؟ إذا كنت تريد أن مكعبات صحيح، انا ذاهب الى تريد إدخال. هذه هي المعلمات. انا ذاهب الى مدخلات قيمة من نوع int. وانا ذاهب الى العودة قيمة أخرى نوع من كثافة العمليات. وهنا، كما كنت يمكن أن نرى، كل ما أفعله والتكعيب مهما مدخلات بلدي كإخراج بلدي وإعادته. لذلك كل هذا يفعله هو وظيفة يأخذ نوعا من عدد صحيح. تتكاثر في حد ذاته مرتين بحيث المرق سارية المفعول. وبعد ذلك يعود أيا كان الإخراج هو. حتى في هذه الحالة، فإنه من سطرين من التعليمات البرمجية التي كان علينا أن إرسال اضافية. ولكن إذا أردنا أن الدعوة على هذا عدة مرات، أنه من الأسهل كثيرا أن اكتب هذا واحد خط هنا في هذا المكعب من يجب أن تمر عبر عدة مرات. وبالتالي فإن الطريقة أن أي أساسا تنسيق لأي نوع من ظيفة هو الذهاب الى وجود مثل هنا. لذلك لدينا اسم الدالة. في هذه الحالة، فإنه يسمى مكعب. ونحن تسميته مكعب ل فإنه من السهل أن نتذكر. يمكنك تسميته مربع و فإنه يمكن بالفعل مكعبة. لا يهم. مجرد الاسم الذي كنت تعيين وظيفة الخاص بك. هذا الحق هنا، الباحث، هو نوع المعلمة التي تحتاج إليها. فماذا يعني هذا وظيفة تحتاج لكي تعمل؟ كذلك، فإنه يحتاج إلى الإدخال. أنا أطلق عليها اسم الإدخال. يمكنك تسميته ما تريد. ولكن أنا بحاجة إلى شيء من نوع int. انها تسير لتنفيذ فعلا كل ما هو داخل هنا، الجسم من وظيفة. ثم نوع الإرجاع هنا، هذا int-- جميع انها تقول لي هو أن هذه هي وظيفة سوف تعود لي في الباحث. لذلك سيستغرق في عدد صحيح، و انها سوف تعطيك الخلف الباحث. هل الجميع على فهم كيف يمكن لل تنسيق هذا النوع يعمل؟ رائع. حسنا. حتى لا تكون قلقة إذا كان هذا يبدو قليلا مجردة الآن. هذا هو الشيء الذي سوف نتحدث عنه. سنقوم الغوص في أعمق في وقت لاحق في الدورة. الطريقة التي أي نوع من مستوى أعلى التجريد من هذه الأمور العمل غير أنه، في الذاكرة، في جهاز الكمبيوتر الخاص بك، كل شيء يتم تخزينها في هذا النوع من المكدس، يجب أن أقول. حتى تصل هناك في الأعلى. أنا لا أعرف ما إذا كنت يمكن أن الرجال يرون ذلك جيدا. سأحاول أن التكبير. هنا في الجزء العلوي، ونحن يكون النص المادي ما هو الكمبيوتر interpreting-- كل الأصفار وتلك التي توجد داخل جهاز الكمبيوتر الخاص بنا. ثم قمنا لتهيئة البيانات والبيانات غير مهيأ، ما نسميه المتغيرات العالمية. من المتغيرات التي توجد جميع البرامج وعبر كامل الخاص بك، أساسا، رمز. لا تقلق إذا كنت الرجال نوع واضح في هذا الشأن. لا يهم حقا في الوقت الحالي. ومن ثم لدينا ما هو دعا كومة في كومة. التفكير في كومة حرفيا تماما مثل كومة من الأشياء، كومة من مختلف الأشياء التي دفعت على رأس من بعضها البعض التي تقوم بتخزين مختلف المتغيرات وبناء الجملة ضمن التعليمات البرمجية الخاصة بك. ثم هنا في أسفل جدا، لدينا متغيرات البيئة ما كنت المنفذة داخل فقط خطك قليلا من التعليمات البرمجية. ونحن مجرد الذهاب للتكبير في من جانب كومة الفعلي. حتى هنا، إذا كنا لتكبير في فقط على هذه المنطقة من المكدس، هذا ما يبدو. وهذا هو في الواقع مهم جدا عند الرجال الحديث عن وظائف، لاحظ أن ل ذاكرة جهاز الكمبيوتر الخاص بك تم تخزين المتغيرات وظائف والمعلمات الخاص على حد سواء وظيفة والمتغيرات الرئيسية الخاصة بك في أماكن مختلفة. حتى الآن، الرئيسي هو وظيفة الفعلية ان كنت المنفذة في التعليمات البرمجية. لقد معالمها المخزنة هنا والمتغيرات المحلية الخاصة بها المخزنة هنا. متغير محلي يعني فقط أي متغير التي لا توجد إلا داخل تلك الوظيفة. وعلاوة على ذلك، لديك هذا وظيفة منفصلة تسمى مكعب. لديك هذا المعلمات وكذلك السكان المحليين. والسبب الذي يمكن نرى هنا هو أن ما يحدث عندما يأخذ مكعب في القيمة من المهمة الرئيسية الخاصة بك غير أن الواقع انها نسخ أن أكثر. لذلك إذا أردت أن المكعب 2 والعودة 8، أن 2 وإدخالها في الواقع كمعلمة وانها نسخ أكثر من ذلك أن لديك القائمة في مكانين مختلفين في الذاكرة. وعليك أن تكون حذرا جدا على التذكر واحد من تلك كنت التلاعب في الواقع. ومثال على ما حدث التي من شأنها أن تكون في غاية السوء موجود هنا. حتى هنا، لقد حصلت، من الناحية النظرية، برنامج هنا، وهي وظيفة الرئيسية أنني إعلان عدد صحيح x تساوي 1. أنا اعلان ذ الباحث آخر يساوي 2. ثم أنا على التوالي من خلال هذه الوظيفة دعا المبادلة، حيث افترض أن انها مبادلة القيمتين. ثم انا ذاهب الى طباعتها، أليس كذلك؟ هذا ما أريد هذا البرنامج للقيام به. لذلك دعونا النزول وإلقاء نظرة. حتى لو كنت فعلا إرسال بريد مختلفة وظيفة، كما ترون، لدينا وظيفة الرئيسية لدينا هنا. ثم لدينا الوظيفة الثانية هنا. تبادل باطلة. الفراغ يعني فقط أنه لن يعود أي شيء. اسم الدالة دعا مبادلة، وانها الذهاب إلى المدخول متغيرين، الباحث في و كثافة العمليات ب، من الخاص (غير مسموع) وظيفة. ذلك أساسا في هنا، ونحن يمر x و y في هذه الوظيفة. وإذا كان لنا أن إنشاء this-- لذلك نحن نريد لخلق قيمة مؤقتة، أليس كذلك؟ ونحن في طريقنا إلى تعيين هذا إلى. وبعد ذلك يتم الانتقال إلى تساوي الآن ب. وب ستكون العودة حيث بلغت قيمة درجة الحرارة، وهو، لأنه عندما تريد مبادلة الأشياء، لا يمكنك تماما مثل مقايضتهم. لديك للحفاظ على واحد من هنا بحيث يتذكر ما هذا هو، لأنه بمجرد لك مبادلة واحدة، كنت قد نسيت ما أن القيمة الأصلية كان، أليس كذلك؟ حتى من الناحية النظرية، وهذا البرنامج يجب أن تعمل، أليس كذلك؟ إذا أردت أن مبادلة اثنين، يجب أن مبادلة. لذلك دعونا تشغيله ونرى ما اذا كان يعمل. بحيث يمكنك رؤية الرجال، س كان مرة واحدة (1) وكان ذ مرة واحدة 2. وإذا كنت طباعته، ما زال x 1 و y هو 2. هم، لا يبدو هذا البرنامج ليكون العمل بالطريقة التي أريد لها أن تنجح. هل يريد أحد أن أخذ لقطة في التخمين لماذا هذا يحدث؟ عليها أن تفعل مع الطريقة أن الأمور المختلفة تخزينها في أماكن مختلفة في الذاكرة. حسنا. لذلك يا رفاق لا داعي للقلق الكثير عن هذا الآن. ولكن نعرف ان المكعب المحلية وكانت المتغيرات أ و ب، لأنه هنا في وظيفة لدينا، لقد أعلن وب والمتغيرات التي توجد داخل المكعب، أن وظيفة. ولكن كما ترون، المعلمات التي انه أخذ في كانت مخزونة هنا. ولكن لم نكن في الواقع العودة أي شيء. لم نكن تغيير الواقع x و y. كنا مجرد تغيير أ و ب. كنا قد نسخ x و y في ما يسمى أ و ب. لكننا في الواقع أبدا التلاعب x و y أنفسهم. هل يا رفاق رؤية كيف أن يحدث؟ غير أن لدينا نسخ ببساطة أكثر، لكننا لم تحفظوا الواقع المسار من حيث كانوا في الذاكرة. وحتى الآن الكمبيوتر يبحث، أوه، لقد تشغيل هذا الشيء من خلال هذه وظيفة جميلة. لكن x و y لا تزال x و y. حدث شيء ل لهم بسبب حقيقة أن تلك المعايير والمتغيرات المحلية يتم تخزينها في مختلف ضع في الذاكرة. وهذا هو أعلى مستوى مفهوم أننا سوف تبدأ في رؤية في وقت لاحق في الدورة. ولكن مجرد معرفة أن هذا هو المشكلة التي يمكن أن يحدث وأننا سوف معرفة سبل بشأن كيفية التعامل مع هذا في وقت لاحق في الدورة. حسنا. حسنا. وبالتالي فإن مفهوم الماضي نحن يحدث في الواقع لتغطية التي ستكون مفيدة لPSET هذا الأسبوع وما يسمى وسائط سطر الأوامر. حتى روب في محاضرته مرت نوع من لفترة وجيزة على كيفية عمل هذه. تعرف أساسا أن عندما كنت تكتب مثل الوظيفة الرئيسية، ونحن عندما كتب الوظائف من قبل في الماضي، كان لدينا الفراغ الرئيسي كثافة العمليات. والسبب كان لدينا الفراغ هناك ولأن برامجنا لم يفعل ذلك تحتاج إلى قيم الإدخال لتشغيل، أليس كذلك؟ عندما ركضت ماريو، لم أكن بحاجة في الواقع أن اكتب فقط في شيء عندما ركضت ماريو. أنا قد يدفع المستخدم في وقت لاحق. ولكن ذلك لن يكون الحال دائما. على سبيل المثال، في هذا وتحدد المشكلة الأسبوع، وأنت تسير أن يطلب ذلك، في بالإضافة إلى تشغيل البرنامج، كنت تريد الذهاب الى المدخلات أشياء معينة في مباشرة كما كنت تشغيل البرنامج. لذلك يسمى الطريق نفعل ذلك وسيطة سطر الأوامر، التي هو مثل حجة يمكنك إدخال مباشرة كما كنت في محاولة لتشغيل البرنامج. لذلك التدوين لهذا، انها جميلة معقدة المظهر، لكنها في الحقيقة لا أن صعب. لذلك الباحث main-- هذا مجرد المهمة الرئيسية الخاصة بك. في ARGC فاصلة بين قوسين سلسلة ARGV. لذلك كل ما نقوله هو أن هذا الباحث argc-- كل ما أقول لك غير أن تلك هي عدد الحجج يجب أن نتوقع الكمبيوتر. ذلك الشيء الوحيد الذي حقا من المهم أن تتبع هو الاسم الفعلي للبرنامج الخاص بك التهم باعتبارها واحدة من تلك الحجج. لذلك إذا أردت أن يكون برنامجي تشغيل بالإضافة إلى سطر واحد أمر إضافي حجة، وأنا فعلا ستكون لدينا اثنين. ARGC يحدث فعلا أن يكون اثنين. ثم ARGV سلسلة bracket-- كل ما يقوم به، انها إعطائي مجموعة من السلاسل التي ل الذهاب لعرض فقط وتخزين ما كل تلك الحجج سطر الأوامر هي. هكذا على سبيل المثال، إذا أردت أن يكون هذا برنامج، ./copy INFILE OUTFILE، أليس كذلك؟ هذا مجرد أمر لينكس نموذجية. ما هو في الواقع ARGC؟ كم عدد وسائط سطر الأوامر هناك في الواقع في هذا؟ كل هذا يفعله هو تقديم نسخة من وINFILE من اسم ملف واحد ونسخه إلى ملف آخر، أليس كذلك؟ هذا كل هذا يقوم به. كما ترون، أنا أفعل ذلك على سطر واحد دون الحاجة فعلا البرنامج. ما هو ARGC لدينا في هذه الحالة؟ كم من الحجج لدينا؟ الجمهور: ثلاثة؟ ANDI بنغ: لدينا ثلاثة، بالضبط. لذلك فمن البديهي جدا ل مجرد التفكير انها مجرد وINFILE وOUTFILE. ولكن نعرف أن الاسم الفعلي لل البرنامج الذي تقوم بتشغيل التهم واحد. حتى في هذه الحالة، ARGC هو في الواقع ثلاثة. ماذا عن، ما هو ARGV 0؟ تذكر، كل من وسائط سطر الأوامر تم تخزينها في مجموعة من السلاسل. حتى لو كنت تحاول الوصول إليه، ما سوف ARGV قوس 0 تعطيني؟ الحضور: (غير مسموع). ANDI بنغ: بالضبط. فإنه تعطيني نقطة خفض نسخة، لأن هذا هو العنصر 0TH، و العنصر الأول من مجموعة بي. ماذا عن ARGV 1؟ الحضور: INFILE. ANDI بنغ: INFILE، بالضبط. ماذا عن ARGV 2؟ الحضور: OUTFILE. ANDI بنغ: OUTFILE. هذا هو صعبة بعض الشيء الآن. ماذا يعتقد الرجال ARGV 3 سوف يتم إعطائي إذا حاولت طباعة هذا الخروج؟ الحضور: (غير مسموع)؟ ANDI بنغ: هل لديك ما يصل اليد؟ نعم. الحضور: بديل. ANDI بنغ: بالضبط. تذكر ذلك في المحاضرة التي نحن لدينا في نهاية شيئا سباق دعا فاصل باطل؟ أننا سنصل إلى هذا أيضا بشكل أوسع في الصف. ولكن أعلم أن في التدوين، طريقة جهاز الكمبيوتر الخاص بك يعلم أنه هو نهاية المصفوفة هو أنه يضع ما يسمى فارغة فاصل أو شرطة الصفر. حتى إذا كنت في محاولة للوصول إلى ARGV 3، وأنت تسير لضرب هذا اندفاعة 0. وهذا هو أكثر حتى من سؤال خدعة. ماذا عن ARGV 4؟ لذلك هذا هو المنهي باطل الماضي، الماضي حدود مجموعة لدينا. ما رأيك هو الذهاب الى يحدث عندما نحاول أن نفعل ذلك؟ الحضور: (غير مسموع)؟ ANDI بنغ: آسف؟ يقولون أن قليلا بصوت أعلى؟ الحضور: (غير مسموع). ANDI بنغ: نعم. هذا هو اسم المنطقة على الأرجح سوف تحصل عليها. ولكن نعرف أن ARGV 4-- الذي يسمح لك بالوصول الأماكن في جهاز الكمبيوتر الخاص بك الذاكرة التي كنت حقا لا ينبغي أن يكون لمس، ل الحق الآن تعلمون ما هو ARGV. كنت أعرف أنه مجموعة من حجم 3 الذي لديه نقطة نسخة، INFILE وOUTFILE. إذا حاولت الذهاب أبعد من ذلك حتى الآن ان كنت في الماضي الصفري، كان جهاز الكمبيوتر الخاص بك على الأرجح شيء المخزنة في ARGV 4. وكنت حقا لا ينبغي أن يكون السماح بالوصول إلى ARGV 4، لأن لديك ملف مجلس الوزراء وأنت فقط يسمح الوصول إلى تلك الرفوف الثلاثة. ولكن إذا كنت في محاولة للوصول إلى ما هو أبعد بكثير الجرف من حيث يسمح لك، وأنت تسير لبدء العبث أشياء أخرى في ذاكرة الكمبيوتر الخاص بك. التي ستكون حقا، سيئة حقا. حتى نعرف ذلك بالضبط. كن حذرا جدا أن لا مجرد بداية عشوائيا الوصول إلى عناصر في صفيف لم تكن في ما أردت إنشاء. نعم. حسنا. لذلك نحن في طريقنا للقيام أخرى مثال المحطة هنا. حسنا. حتى روب بسرعة في محاضرة ذهب في اليوم الآخر من خلال هذا المثال، حيث كان كثافة العمليات الرئيسي كثافة العمليات ARGV سلسلة ARGC بين قوسين، والتي تقول لي أنا ستكون لدينا وسائط سطر الأوامر. لديه، إذا يساوي ARGC يساوي 2-- تذكر، يساوي يساوي تعني المقارنة. إذا كان يساوي 2، ثم أنا الذهاب لطباعة مرحبا، مهما كانت أولا عنصر من المصفوفة هو. طباعة آخر، مرحبا العالم. ما يحدث هذا ل يحدث أساسا؟ يمكن للشخص أن يفسر فقط في الإنجليزية ما هذا البرنامج يقوم به؟ نعم. الحضور: اذا كان شخص ما كتبته في أمر وقال اسمهم الأول والأخير، فإنه ليس مجرد طباعة أول واحد ويقول: مرحبا، أيا كان اسمكم الاول. ANDI بنغ: حسنا، دعنا تشغيله. هكذا على سبيل المثال، إذا كان لي أن تجعل هذا الملف تجعل مرحبا مرحبا to-- to-- ماذا تريد مني أن الإدخال؟ الحضور: الاسم الأول والأخير. ANDI بنغ: الاسم الأول والأخير؟ المساحات؟ الجمهور: نعم. ANDI بنغ: يمكن لأي شخص أن يقول لي الآن، ما هو ARGC؟ فقط هناك حق؟ عفوا، عفوا. واسمحوا لي أن أعود. كم عدد وسائط سطر الأوامر are-- يا رفاق لا يمكن أن نرى حقا. ولكن سأحاول لتكبير. أحاول. نعم، هناك ثلاث، أليس كذلك؟ انها مائل دوت مرحبا، انها اندى، وانها بنغ. فماذا يا رفاق أعتقد أن هذا البرنامج سوف يتم طبع؟ اه. أوه، آسف. اسم خاطئ. انها طبع، مرحبا العالم. هل يريد أي شخص أن يشرح لماذا هذا يحدث؟ نعم؟ الحضور: (غير مسموع). ANDI بنغ: بالضبط. حتى هنا، هي مشروطة هو، إذا ARGC يساوي يساوي 2. وذلك فقط في حالة أن هناك اثنين من وسائط سطر الأوامر. ثم انا ذاهب للطباعة، مرحبا، أيا كانت. ولكن آخر، وأنا ذاهب ل طباعة فقط، مرحبا العالم. فهل هناك من يريد أن تعطيني مثالا من كيف سأكون قادرا على الواقع الحصول عليها لطباعة قيمة ARGV 1؟ ما الذي لدي لإدخال هنا؟ شيء واحد فقط، أليس كذلك؟ لأن مرحبا نقطة إلى بالفعل تعول على النحو الوسيطة الأولى. ليس لدي سوى واحد أكثر من ذلك. حتى دوت مرحبا لو كنت مجرد القيام اندى. مرحبا، اندى. هل يفهم الجميع لماذا هذا يحدث؟ نعم. الحضور: حتى الفراغ بين line-- الأمر هو (غير مسموع)؟ ANDI بنغ: رقم وبالتالي فإن مساحة في سطر الأوامر حجة، العاشر، ليقول جهاز الكمبيوتر الخاص بك أن هذا هو بداية لسلسلة جديدة. لذلك سلسلة ARGV here-- تخزنها كل من لديك وسائط سطر الأوامر في السلاسل. وهكذا المساحة في سطر الأوامر argument-- كل ما يفعله هو أن أقول لكم، هذا هو في نهاية سلسلة واحدة وحان الوقت للانتقال إلى آخر. نعم. هذا مهم جدا ل PSET الخاص بك، لأنك على وشك أن اختبار هذه. لذلك هل لديها أي أسئلة حول هذا؟ OK، بارد. نعم؟ الحضور: لذلك السبب تفضلتم وضع عدد صحيح حجة احسب بدلا من [غير مسموع] سيكون عندما تريد لكتابة معلومات إضافية ل [غير مسموع]؟ ANDI بنغ: نعم، بالضبط. وبعض البرامج تتطلب منك لإدخال وسيطة سطر الأوامر أنه يمر في ويستخدم ذلك. نعم. الحضور: حتى إذا ما (غير مسموع)؟ ANDI بنغ: حسنا، ماذا لدي لتغيير ثم في برنامجي؟ الحضور: فقط 3. ANDI بنغ: لماذا هو أن يحدث، هل تعتقد؟ الحضور: لأن (غير مسموع). الحضور: كنت قد ل تغييره إلى 2 (غير مسموع). الحضور: 1 و 2. ANDI بنغ: 1 و 2، بالضبط. حتى في هذه الحالة، هل من المحتمل تريد أن يكون اثنين printf statements-- واحد المطبوعة ARGV 1 و تلك التي طبعت ARGV 2. هنا. لا يمكنني فعلا أن سريعة الحقيقية. ها أنت ذا. اه. ليس تماما ما تريد. ولكن إذا كنت رفاق تسكع مع التنسيق، وسوف يخرج. نعم. رائع. وأنا أعلم أننا قصير قليلا في الوقت المحدد. ولكن أنا مجرد الذهاب لقضاء بسرعة دقائق زوجين يمر helpful-- الحضور: لديك دقيقتين. ANDI بنغ: لدي دقيقتين؟ شكرا. بعض النصائح PSET سريعة. لذلك لهذا PSET، وأنا أوصي، كما قلت، والجميع لقراءة المواصفات. عليك أن تكون الكتابة ثلاث احدة programs-- دعا initials.c، واحدة تسمى caesar.c، واحد يسمى vigenere.c. بعض النصائح الهامة التي يا رفاق تريد حقا أن نأخذ في mind-- ذلك هناك هذه الوظيفة دعا atoi-- كما أحب أن أقول، وتروا. غير واضح اذا كان هذا في الواقع كيف تقول ذلك. ولكن كل ما يفعل، انها إدخال. كان تحويل سلسلة إلى int. لذلك يمثل ASCII إلى i صحيح. انها مجرد تحويل ASCII القيم إلى عدد صحيح القيم. لذلك تذكر ARGV، وصفيف مخازن كل وصاياك خط arguments-- لأنه يخزن كل منهم كسلاسل. وحتى إذا كنت تريد أن تكون قادرة على لديك واحد منهم يصبح صحيحا، كنت ستكون لدينا لاستخدام هذه القيمة هنا. مودولو، مثل غطينا في الصف في وقت سابق اليوم، يسمح لك أن يكون ما تبقى من كل ما لديك. حتى إذا كان لدينا حقا، حقا أعداد كبيرة في قيصر، ما إذا كانت لدينا نهاية من سلسلة Vigenere؟ كيف أنت ذاهب لتكون قادرة للحصول على هذا التفاف حولها؟ لو ضرب Z وأريد أن أعود إلى ذلك، كيف أنا ذاهب للحصول على أن يلتف حول؟ ربما تريد استخدام مودولو في مكان ما هناك. ثانيا، تصفح حول مكتبتك. ctype.h. هذا هو مكتبة جديدة لدينا. ستجد الكثير من حقا، حقا isupper functions-- مفيدة، islower، toupper، tolower، isalpha، وهلم جرا. جميع وظائف من شأنها أن تكون مفيدة جدا عندما كنت في محاولة لمعرفة، هو هذا الحرف حرف صغير؟ كيف يمكنني تحويل هذا سلسلة إلى الأحرف الكبيرة؟ كل هذه الأمور ستكون جدا، مفيدة جدا لPSET الخاص بك. حسنا. ساعات العمل هذه الليلة هي ل08:00 11:00 في الفصول الدراسية TEAL غدا فضلا الاربعاء والخميس ليلة. ساعات العمل هي في العموم. اقترح جدا يا رفاق كل تبدأ على الفور، لأنك لا تريد أن يكون ذلك الطفل الذي يلة الخميس لديها مشاكل تقديم PSET بك و مثل، أنا لا أعرف ما يجب القيام به. بدأت، انتهيت، قدمت. حاول أن تعطي لنفسك بعض الغرف لأنه في مشاكل كود يحدث دائما. كنت ترغب في التأكد من أن تعطي لنفسك الكثير من الوقت لتكون قادرة لاستكمال psets. رائع. سوف تسكع هنا. الحضور: هل هذا بالفعل على الانترنت؟ ANDI بنغ: أنا لا أعرف ما اذا كان على الانترنت بالفعل، لكنه لن يكون. سوف تسكع هنا إذا كان أي شخص لديه أي أسئلة بالفعل. شكرا لقدومك.