[عزف الموسيقى] JASON هيرشهورن: OK، الجميع. مرحبا بكم في القسم. هذا هو CS50، جدا لدينا القسم الأول عظمى. كما تعلمون جميعا، الأسبوع المقبل ستبدأ الأقسام العادية، ولكن هذا الاسبوع نحن جميعا معا. هناك نفسي. اسمي جيسون. أنا محاضر في علوم الحاسب الآلي. لدينا اندى، من هو رئيس TA من CS50. وScaz، أستاذ بريان Scassellati، انه أستاذ في علوم الحاسب الآلي. نحن رؤساء CS50 في جامعة ييل. يمكنك الكتابة دائما لنا heads@cs50.yale.edu. وسنكون في المحاضرات. سنكون في ساعات العمل. إذا كان هناك أي شيء يمكننا القيام به بالنسبة لك، أي شيء تحتاجه، لا تتردد في الوصول إلينا. فما الذي سنفعله اليوم؟ أو قبل ذلك، ما هو الخروج من هذا الاسبوع؟ لذلك ساعات العمل من الاثنين، الثلاثاء، الأربعاء، والخميس، 8:00 حتي 11:00. هناك جدول زمني على الموقع. أقسام، مثل التي ذكرتها، وبدءا من الأسبوع المقبل. وسوف تجد هذا الأسبوع ما توقيت القسم الخاص بك هو، ما هو عليه اليوم، والذين TA الخاص بك هو. هو المشكلة مجموعة 1 المقرر في يوم الخميس في ظهر اليوم، الجمعة ظهرا مع الراحل اليوم. نعم، لديك تسعة أيام في وقت متأخر. وهناك تسع مجموعات المشكلة. ويمكن استخدام واحد فقط في وقت متأخر يوم لكل مجموعة المشكلة. نعم، في الواقع، كل مشكلة مجموعات ومن المقرر الجمعة ظهرا. هذا كل شيء. كل ذلك التفاصيل هي على المنهج. كل يوم جمعة، لدينا غداء. نود أن تجعل هذا الحجم بالطبع يشعر أصغر قليلا. لذلك فنحن نرحب بك لتأكيد الحجز. وجبة غداء مجانية مع زميل الزملاء والموظفين. cs50.yale.edu/rsvp. كل هذه الأشياء التي لدي على الشاشة، وأكثر من ذلك، يمكنك أن تجد cs50.yale.edu أو cs50.harvard.edu، وإذا ذهبت إلى جامعة هارفارد ويراقب هذا الخط. أيضا على تلك المواقع، هناك هي من نصف طن من الموارد بالنسبة لك. كل محاضرة ليس فقط لديها فيديو المحاضرة، ولكنها تلاحظ أيضا. سوف شخص مشاهدة محاضرة وتدوين الملاحظات بالنسبة لك. حتى تتمكن من دفع فقط الاهتمام خلال المحاضرات، أو يمكنك استخدام ملاحظاتهم / بنا تلاحظ لاستكمال الملاحظات الخاصة بك. هناك شرائح الانترنت. المصدر code-- كل شيء ديفيد يذهب أكثر في محاضرة، أو Scaz يذهب أكثر من محاضرة، أن شفرة المصدر على شبكة الإنترنت كذلك، ومثل الأول، ذكر أشرطة الفيديو. أقسام، وبالمثل، سوف تكون جميع تصويره. وجميع هذه الشرائح تكون متاحة. كل ذلك سوف كود تكون متاحة لك. هناك شورت على شبكة الانترنت حيث تنفق الموظفين CS50 خمسة إلى 10 دقيقة تمر الموضوعات بالنسبة لك. بعض من تلك التي قمت بالفعل ووجهت في مجموعات المشكلة. ساعات العمل، وكما ذكرت، يوم الإثنين وحتى الخميس، 8:00 حتي 11:00. CS50 الدراسة هو مورد رائعة. هناك مشاكل الممارسة، الشرائح عينة، والبق معروف أن الطلاب يحبون أن تصل الى، لفي الأساس كل موضوع نحن سوف تغطي في هذه الدورة. وأخيرا، على هذه الشريحة على الأقل، Reference50 والتي تعطيك معلومات على كل وظائف C هل يمكن أن نأمل من أي وقت مضى ربما الاستخدام وكثير، كثير أكثر. مرة أخرى، أن نقطة نقطة نقطة في الجزء السفلي من الشاشة هو للإشارة إلى أن هناك حتى المزيد من الموارد على تلك المواقع اثنين: cs50.yale.edu، cs50.harvard.edu. لذا، ماذا نفعل اليوم؟ حسنا، أولا أنا ذاهب لإعطاء نظرتم الى الموارد. فعلت بالفعل أن واحدا. أنظر إلينا. الآن، ونحن في طريقنا للذهاب أكثر أنواع البيانات والمشغلين في C. ثم سيأتي اندى هنا و يذهب أكثر من المكتبات في C، Printf ()، وظيفة التي كنت بالفعل مألوفة أو ستصبح بسرعة جدا مألوفة. وسوف تذهب أيضا على الشرطية والتكرار. ثم أخيرا، Scaz سوف يذهب أكثر من ID CS50. إذا لم تكن قد حمامة في بالفعل في مشكلة مجموعة 1، وكذلك كيفية استخدام محطة ومفيدة الأوامر ومن ثم تعطيك بعض العروض و ممارسات الترميز في ID CS50. قبل أن تقفز في هذه محتويات هذا الجانب، هل لدى أي شخص أي أسئلة حتى الآن؟ رائعة. حسنا. تغيير التروس. [تغيير التروس] كان لي أن التحول التروس في سيارة اليدوية. من أنواع البيانات في C، لا يمكن أن يكون فقط وx متغير، وأنها تكون على الخط 10، صحيح، وربما رقم 1، على خط 20، عدد عشري 10.5، وخطوط ثم زوجين في وقت لاحق سلسلة، وأنا أحب CS50. في C، يمكن أن يكون إلا المتغيرات شيء واحد، وشيء واحد فقط. ولذا عليك أن تعطيهم أنواع. وعلى هذا المجلس، ونحن لديك قائمة من أنواع. هناك حرف، والتي الوقوف للأحرف. لذلك هذا هو حرف واحد A، B، C، D. وهذا يمكن أيضا أن يكون الفضاء، أو أن يمكن أيضا أن تكون حرف سطر جديد. هناك الأعداد الصحيحة، التي ليست سوى أرقام، numbers-- كليا أو الأعداد الصحيحة rather-- لكن لا عشرية. لعشرية، لدينا أرقام الفاصلة العائمة. أرقام الفاصلة العائمة أرقام مع العشرية. ثم هناك صفقات الشراء، والتي هي الأعداد الصحيحة أطول أساسا. ستلاحظ أن فترة طويلة هو 8 في حين أن الباحث هو 4. سأحضر إلى أنه في الثانية. ذلك لأن يتوق يمكن تخزين حتى يمكن مزيد من الأعداد الصحيحة من عدد صحيح تخزين. المزدوج هو تعويم طويلة. وأخيرا، لدينا السلسلة، والذي هو نوع التي ربما كنت قد استخدمت من قبل. إذا قمت بتضمين الهاشتاج # includeCS50.h في الملف المصدر، ثم يمكنك استخدام نوع السلسلة. ليست مبنية فعلا إلى C. هناك بضعة أنواع أخرى كذلك. ولكن هذه هي الرئيسية منها مع التي ستستخدمها وتواجهها. C كما، ومرة ​​أخرى ذكرتها، كل ذلك variable-- يمكن أن يكون إلا نوع واحد ونوع واحد فقط. ذلك لأن C هو ثابت لغة مطبوعة، في مقابل لغات كتبته حيوي حيث إذا قمت بإنشاء متغير يمكنك تغيير ما يتم تخزينها في أنها تذهب في في البرنامج. هنا في اليد اليمنى الجانب، ولدي أحجام مختلفة هذه الأنواع من البيانات في بايت. لذلك الحرف هو 1 بايت. هذا هو 8 بت. وهذا يعني أنه 8 بت هناك ثمانية 0S و1S. شاهدنا تلك العروض في الأول الأسبوع مع أن المصابيح الثنائية. مع 8 بت أو 1 بايت، يمكننا تمثل الأرقام من 0 إلى 255. الصحيح. وإذا كان كل 8 بت هي 0 هذا 0. إذا بت الأول هو 1، وهذا العدد واحد، وهلم جرا، وصولا إلى 255. وهذا هو السبب لشخصيات يمكنك لدينا أساسا ما يصل الى 255 منهم، ولكن هذا الكثير لتغطية جميع الأحرف نحن بحاجة إلى استخدام. لالأعداد الصحيحة، يمكن أن يكون لديك 0 و ثم لديك 2 إلى 32 ناقص 1. تلك هي كيفية العديد من الخيارات لديك لأعداد صحيحة. لفترة طويلة، لديك 0 ل2 إلى 64 ناقص 1. بحيث يكون لديك الكثير والكثير، المزيد من الخيارات لصفقات الشراء. سلاسل، وهذا علامة استفهام لأن هذا هو مصدر إثارة في وقت لاحق. نعم. يمكنني أن أقول الجميع على حافة مقاعدهم، مثل ما هو هذا علامة استفهام؟ انها التشويق. نحن سوف تغطي في نهاية المطاف حجم سلاسل ونتحدث أكثر عن السلاسل. لأن سلسلة هي في الواقع واحدة من عجلات التدريب وضعنا على هذا بالطبع في بداية ثم خلع في وقت لاحق على، لأن السلاسل في C هي مؤشرات الواقع صفائف حرف. ولكن مرة أخرى، وهذا هو التشويق في وقت لاحق. قبل أن أنتقل أي أسئلة، التعليقات والمخاوف بشأن هذه الشريحة؟ حسنا. يجب أن يكون شارح رائعة. أيضا عندما كنت البرمجة، كنت تنوي استخدام هذه الشركات. علامات بسيطة جدا يمكن أن تفعل بسيطة العمليات، التي ربما كنت بالفعل مألوفة جدا. على سبيل المثال، على حق الجانب، ونحن نرى إضافتها. لإضافة، يمكنك القيام مجرد علامة زائد. وهكذا قد تكون لديكم متغيرين x و y. يمكنك أن تفعل س + ص في التعليمات البرمجية. ربما تريد to-- نقول لكم لدينا عدد 7 و 3، تريد تخزين أن في متغير يسمى المبلغ. يمكنك أن تفعل الباحث عن نوع والفضاء خلاصة القول، إن اسم المتغير، = 7 + 3؛ ما من شأنه أن مخزن في المبلغ؟ أي واحد؟ إذا كان لي في المبلغ = 7 + 3. ما الذي خزنها في المبلغ؟ يمكنك فقط يصرخون بها. الحضور: 10. JASON هيرشهورن: 10! هذا صحيح تماما. ماذا عن باختصار = 7-3، أنا فقط استخدام هذا علامة اندفاعة. ما يحدث ليتم تخزينها؟ الحضور: 4. JASON هيرشهورن: 4. المبلغ هو على الارجح اسم خاطئ ل هذا المتغير، ولكن 4 سيتم تخزينها. لمضاعفة في C، استخدم قليلا شخصية نجم، كنت لا تستخدم السينية. تقسيم، استخدم الأمام خفض يست رمزا الانقسام. وMODULO، استخدم رمز النسبة المئوية. لذلك دعونا نقول أريد أن أرى الباحث ض = 7٪ 3، ما من شأنه خزنها في ض؟ لذلك، وهذا هو الأساس يسأل ماذا مودولو تفعل؟ لا أحد يعرف ما يفعل مودولو؟ نعم. ص 4. رئيس 1: انها تبقى. JASON هيرشهورن: هو الباقي عند تقسيم. حتى 7 مقسوما على 3 هو 2 الباقي 1. لذلك سيتم تخزين 1. فعلت الطرح، ولكن هذه هي الطريقة التي يعمل بها. هذا ما يفعله المشغل مودولو. فإنه يأخذ عددا يقسم من قبل رقم آخر ويعود لك ما تبقى. ذلك مرة أخرى، 7٪ 3 تمنحك 1، ل 7 مقسوما على 3 هو 2 الباقي 1، وإرجاع الباقي. ماذا عن دعونا نعود يصل خطوة واحدة إلى أن علامة القسمة. إذا فعلت 7 / مقسوما على 3 يفعل أحد يعرف ما الذي سيعود؟ المتحدث 2: 2. JASON هيرشهورن: لماذا لا 2 و 2.333؟ المتحدث 2: أعتقد أنه يقطع بعد عدد كله. JASON هيرشهورن: حتى هذا صحيح تماما. في C، إذا كنت تفعل تقسيم عددين 7 مقسوما على 3، فإنه يحصل على الجواب الذي في هذه الحالة 2.3333 إلى الأبد ويرى أن العشرية و بتقطيع كل شيء من بعد العلامة العشرية وذلك يعود فقط لأنك 2. حتى إذا فعلت 8 مقسوما على 3. أن الواقع، ونحن نعلم ذلك لتعود 2.666، ولكنه بتقطيع كل من في العلامة العشرية، باقتطاع كل شيء، ويعود فقط لأنك 2. حتى 6 مقسوما على 3، 7 تقسيم بنسبة 3، 8 مقسوما على 3، ويذهب كل في العودة لكم 2. لا أحد يعرف، أو يكون تخمين، لكيف يمكن أن تحصل في الواقع الجواب الكامل إذا كنت تريد أن عشري؟ نعم. استمر. SPEAKER 3: استخدام تعويم؟ JASON هيرشهورن: ماذا تقصد؟ SPEAKER 3: لأنك قال تعويم للأرقام (غير مسموع) JASON هيرشهورن: الحق. لذلك، وهذا صحيح تماما. 7 هو عدد صحيح. ولكن إذا أردت أن تحويل هذا إلى رقم النقطة العائمة، وأود أن تخزين تلك كما 7،0 لأن الكمبيوتر وstupid-- حقا رأينا أن مع PB وJ example-- انها لن تفعل سوى بالضبط ما كنت أقول ذلك. لذلك إذا كنت أكتب 7، فإنه أعتقد أن هذا صحيح. إذا كنت أكتب 7.0، على الرغم من أننا تعرف تلك الأشياء هي ما يعادلها، فإنه يعامل أن مثل العائمة رقم النقطة. حتى لو كنت فعلت 7.0 تقسيم قبل 3 أو مقسوما على 3.0، ذلك أن أقول، حسنا، الآن نحن نتعامل مع عوامات. سأعود إليكم 2.333333 إلى الأبد. ولكن ليس حقا إلى الأبد، ل كما رأينا أيضا في المحاضرة، هذه الأرقام النقطة العائمة ليست دقيقة تماما. لذلك إذا كنت لا تريد أن العشرية، أو جزء من ذلك عشري، ثم لديك لuse-- واحد منهم يجب أن يكون عدد النقطة العائمة ويحتوي الكمبيوتر على فهم أن هذه النقطة العائمة كنت التعامل مع، وليس صحيحا. أي أسئلة على هذا الجدول على الجانب الأيمن، حتى الآن؟ أو يسارك، الخاص بك اليسار، يسارك. نعم. SPEAKER 4: الحق. لمجرد مثل العادية الأعداد الصحيحة، تفعل write-- سيكون لديك لكتابة تطفو؟ JASON هيرشهورن: نعم ذلك. حسنا، إذا كنت ترغب في إنشاء متغير هذا تعويم، أنت بحاجة إلى أن أقول تعويم ض يساوي شيئا. SPEAKER 4: OK. JASON هيرشهورن: ولكن إذا أردت أن قيام 7 مقسوما على 3 والحصول على هذا عشري، وأود أن تفعل تعويم ض = 7.0 / بنسبة 3.0. و التي من شأنها أن تعطيني النقطة العائمة العدد. SPEAKER 4: OK. JASON هيرشهورن: إذا فعلت شيء من هذا القبيل الباحث ض = 7 / بنسبة 3، التي من شأنها أن تعطيني صحيح، لأن تلك كلها صحيحة. هل هذا منطقي؟ SPEAKER 4: نعم. JASON هيرشهورن: OK. رائعة. أي أسئلة أخرى حول هذا الجدول؟ حقا؟ انا متحمس جدا. حسنا. وحتى بعض الأشياء الأخرى التي سوف تستخدم، في كثير من الأحيان في ظروف أو الحلقات، وهذه الأنواع من operators-- هذه الأنواع من التعبيرات المنطقية. وكما علمنا، == ما كنت استخدامها لمعرفة ما اذا كان هناك شيئان متساوية. حتى هنا أنا التحقق إذا كان x == ذ، دعنا مرة أخرى تفترض أن x هو 7 و y هو 3. حتى إذا كتبت 7 == 3، ما التي من شأنها أن تعود لي؟ فهل هذا صحيح أم خطأ؟ الحضور: الكاذبة. JASON هيرشهورن: OK. أشعر الجميع يمكن الحصول على هذه واحدة. لذلك الجميع، ما من شأنه أن يعود؟ الحضور: الكاذبة. JASON هيرشهورن: خطأ. رائعة. 7 لا يساوي 3. حتى 7 == 3 سيعود كاذبة. يجب عليك علامة لا يساوي، حتى لو كنت دققت 7! = 3، ما من شأنه أن يعود؟ الحضور: صحيح. JASON هيرشهورن: صحيح. ممتاز. وكان شخص مؤكد جدا في الظهر ونقدر ذلك. ثم لديك أقل من المشغل، أقل من أو يساوي المشغل، أكبر من المشغل، أكبر من أو يساوي المشغل. حتى واحد أكثر الاختيار التعقل. إذا كان لي 7 أكبر من أو يساوي 3. ما من شأنه أن يعود؟ الحضور: صحيح. JASON هيرشهورن: صحيح. نعم. تلك الغرفة الخلف والجانب الخلفي من الغرفة، ورائعة. يمكنك الجمع بين هذين التعبيرات إذا أردت، أيضا، مع منطقية والتي هي && أو منطقية أو التي هي || ||. وحتى الآن يمكنك اختبار اثنين أشياء together-- هل هذا مضحك؟ لماذا هذا مضحكا؟ لذلك إذا أردت، ما يمكنني قوله هو 7 أكثر من 3 و 2 هو أقل من 4؟ حسنا، إذا كان 7 أكبر من 3، وهذا صحيح. 2 هو أقل من 4، وهذا صحيح. لذلك هذا كل شيء سيعود صحيح. إذا اختبرت 7 أكبر من 3 and-- أنا مجرد اختيار أرقام عشوائية here-- 4 على بعد أقل من 2، حسنا، هذا هو زائف. ذلك صحيح وجعل كاذبة كاذبة. ويمكنك الذهاب على وقمت بضم كما العديد من الظروف معا بقدر ما تريد. هل لدى أي شخص أي أسئلة، تعليقات والمخاوف حتى الآن؟ وأرى البعض منكم التقاط الصور من لي في الشاشة، والتي أنا أقدر. نأمل، انها ليست سناب شات. نأمل، انها لملاحظاتك. ولكن كل هذه ذاهبون لتكون متاحة على شبكة الإنترنت. لذلك لم يكن لديك ل التقاط صور لهذا. كما ذكرت، كل شيء سوف تكون متاحة على الانترنت بالنسبة لك. حسنا. أنا على وشك أن تحصل في الكواليس، لذلك لا أحد أريد أن أقول أي شيء قبل أن يحدث ذلك؟ الأسئلة؟ [فاصلة VOICES] JASON هيرشهورن: أوه، ووقف. يا رفاق لطيفة جدا. حسنا. انا ذاهب الى علامة بها. دعنا نذهب. ANDI بنغ: نحن في طريقنا للقيام تغيير هيئة التصنيع العسكري حرج الآن. JASON هيرشهورن: أنا ذاهب الى اتخاذ هذا الخروج. ANDI بنغ: نقدر الدعم والرجال. أيمكنك سماعي؟ هل هذا جيد؟ الكمال. جميل. اسمحوا لي فقط أن دس في. حسنا. لذلك، أنا على وشك أن تفعل مثل عملاق تفريغ معلومات عن رفاق الآن. وعدم وجود مخاوف على الإطلاق إذا كنت ليس بعد كل سطر القليل من ما أنا على وشك أن تظهر لك. كما قال جيسون، كل شيء غير متواجد تماما. فقط نحن ذاهبون لمحاولة إدخال كل إنسان في المفاهيم غطى في بعض هذه الشرائح. حتى مجرد متابعة على طول. لا تقلق إذا كنت لا تفهم كل شيء؛ ومع ذلك، إذا في أي لحظة تشعر أنك فقدت، ورفع الخاص بك جهة، ونحن سوف تتوقف، لا تقلق. رائع. لذلك أعتقد أن شيئا ديفيد لديها سبق ذكرها نوع من في محاضرة وجيسون ونوع من لمح إلى اليوم ما هي مكتبة. حتى في مجال البرمجة، لدينا هذه الأمور تسمى المكتبات. حيث، أساسا، عن هم مجرد مجموعة وظائف، وهذا هو في الأساس مجرد رمز هذا سبق أن كتبت من قبل شخص آخر ما في وسعنا جميع استخدام ضمن برامجنا. فكيف يفعل عادي عمل المكتبة، أليس كذلك؟ كنت ادخل من الباب المكتبة. لديك كل هذه الكتب يمكنك سحب ويمكنك الوصول إلى المعلومات في تلك الكتب. نفس الشيء في البرمجة. لديك مكتبة التي لديها بالفعل كانت مكتوبة من قبل أشخاص آخرين. والطريقة التي تستطيع، كما مبرمج أو طالب، يمكن الوصول إلى تلك المكتبة من خلال هاشتاج # تشمل. على سبيل المثال، في C نحن لدينا ثلاثة C-- أكثر تستخدم عادة ثلاثة C القياسية libraries-- مكتبة الإدخال / الإخراج، المكتبة سلسلة، ومكتبة الرياضيات. هكذا في البداية الخاصة بك وتحدد المشكلة الزوجين، تلك ستكون ثلاثة أن كنت في المقام الأول باستخدام. وذلك ديفيد بالفعل وأوضح في محاضرة، وأنا معيار / O مكتبة، أو القياسية الإدخال / الإخراج مكتبة يفعل ذلك بالضبط. فإنه يسمح لك، في التعليمات البرمجية، لإدخال أي شيء من المستخدم وإخراج إلى الشاشة، أساسا الطباعة على الشاشة. وذلك في أي وقت يمكنك استخدام أية وظائف، على سبيل المثال وظيفة printf () الذي ونحن في طريقنا للذهاب على الشريحة التالية، تأكد من تضمين معيار I / O مكتبة وإلا كنت لن تكون قادرة على استخدام وظيفة printf (). لأنك، كما مبرمج لم يكتب في الواقع أن وظيفة، كنت مجرد استخدام شخص كود آخر ضمن التعليمات البرمجية الخاصة بك. هل هذا معقول الجميع؟ رائع. وبعد ذلك نحن أساسا الحصول على مكتبة string.h وmath.h مكتبة، .H يعني مجرد مكتبة، المكتبات الأخرى التي عليك في نهاية المطاف يكون استخدام ضمن التعليمات البرمجية الخاصة بك. ومع ذلك، لأغراض من هذه المكتبة، ونحن أيضا have-- هذا class-- لدينا أيضا ما يسمى مكتبة CS50، cs50.h، حيث نحن، ل خلقت اطلاعكم العديد من الوظائف الهامة والمفيدة. حتى يتسنى لك كمبرمج يمكن على الظهر قبالة ما كنا قد كتبت بالفعل بحيث هذه الدالة المتاحة لك للاستخدام الخاص. سأكون تغطي بضع وظائف يشيع استخدامها، ولكن نعرف أن هذه هي كل شيء على الانترنت googleable. لا تتردد، وسحب ما يصل المكتبة CS50 و ثم لديك جميع وظائف هناك. نعم. SPEAKER 5: حتى إذا كنتم لا استخدام البرامج التي وقدمتها إلينا الصف، يفعل ذلك يعني أن علينا أن تحميل والعثور هذا الرأس ملف أنفسنا ونقول الكمبيوتر حيث هو؟ ANDI بنغ: السؤال الكبير. بالضبط. لذلك فمن مثل إذا كنت لا موجود فعليا في المكتبة، ليس هناك طريقة ل فعلا الذهاب والوصول إليه. وبالتالي فإن نفس الشيء مع البرمجة في C، كنت لديك للتأكد من أن كنت تستخدم لدينا الأجهزة لأن المكتبة بالفعل أدرجت فيه. ثم عند الهاشتاج # تشمل، مكتبة هناك. نعم. سؤال جيد. الجميع جيدا؟ رائع. حسنا. لذلك نحن في طريقنا للضرب، أساسا، ما هو الوظيفة الأولى التي كما أننا المبرمجين ستكون باستخدام داخل نظامنا. وهذا ما يسمى وظيفة printf (). لذلك، printf () وظيفة، ولقد وقال بالفعل في الشريحة الأخيرة، يتم تضمينها في مستوى I / O، القياسية الإدخال / الإخراج، ومكتبة. لذا تأكد من كل ما كنت using-- أوه، اسمحوا لي أن الاستيلاء على الليزر pointer-- كلما كنت تستخدم وprintf () وظيفة، لديك لتشمل معيار I / O مكتبة أو آخر، وعند ترجمة، كنت ذاهب للحصول خطأ لأن الكمبيوتر يكون مثل، يا أنا لا أعرف من أين printf () هو، كنت لا تقول لي أين printf () هو. كذلك يتم تضمين printf () في معيار I / O، وذلك عندما تستخدم printf ()، تأكد من أن يكون هذا خط فوق الرمز الخاص بك. هكذا على سبيل المثال، printf () هنا هي وظيفة. كل ما يفعله هو طباعة من شيء داخل الأقواس للمستخدم. أن أحدا يرغب في اتخاذ طعنة في هذا ما سطر من التعليمات البرمجية الحق هنا سوف تطبع؟ وبالتالي، فإن الجواب على الشاشة. أي واحد؟ VERDI: الجزء السفلي. ANDI بنغ: فيردي، لماذا لا تذهب قدما ويقول البيان كله؟ VERDI: مرحبا، اسمي اندى، وعمري 20 سنة. ANDI بنغ: آه، جميل. حتى في هذا الخط نحن في طريقنا لل طباعة، مرحبا، اسمي اندى، وعمري 20 سنة، والتي هو في الواقع بيان صحيح. بناء الجملة. لذلك قليل من المسائل النحوية التي يا رفاق نريد أن نتأكد من أنك تعرف. العملات. التنصيص تروي الكمبيوتر أن كل شيء داخل سوف يتم طباعتها. كل شيء داخل العلبة يكون مجرد بالضبط كيف كنت اكتبه، باستثناء عادة في النهاية، ونحن في طريقنا لترغب في تضمين وhash-- يا sorry-- شرطة ن. لذلك اندفاعة ن. هل يريد أي شخص أن يأخذ تخمين في ما أن يفعل إلى رمز لدينا؟ نعم. SPEAKER 6: يضع على سطر جديد. ANDI بنغ: بالضبط. لذلك كل هذا يفعله هو تسمح مهما حدث بعد ذلك، بعد هذا البيان، التي سيتم طباعتها إلى سطر جديد. حتى عندما كنت أكتب بك كود لم يكن لديك عشوائيا الأشياء علق على نهاية ان كنت لا تريد. أن كل شيء يحصل المطبوعة بدقة سطر واحد ثم نبدأ في السطر التالي. هل يتذكر أحد ما أن منقوطة تفعل عندما نقوم الترميز؟ نعم. SPEAKER 7: بيان. ANDI بنغ: آسف؟ SPEAKER 7: هل ينتهي البيان؟ ANDI بنغ: نعم. وذلك في C، أو أي برمجة اللغة، والفاصلة المنقوطة يدل على نهاية خط البرمجة. هكذا على سبيل المثال، في اللغة الإنجليزية نستخدم الفترة أن أقول، يا هذا هو نهاية الجملة. في البرمجة، والشيء نفسه، لدينا منقوطة للدلالة على نهاية السطر. في كثير من الأحيان، عندما كنت البدء في البرنامج، عليك أن تدرك أنك تنس أن تضيف فاصلة منقوطة ثم حاولت تشغيل الخاص بك رمز وأنها لا تعمل. وكنت مثل، آه، وأنا لا أعرف لماذا، وينبغي أن يكون العمل. وهناك احتمالات ربما كنت نسيت منقوطة أو قوس أو شيء في مكان ما. لذلك، أن من المهم أن نتذكر. رائع. كل الحق، برفع الأيدي، كيف كثير من الناس هنا لديهم من أي وقت مضى اتخذت AP علوم الحاسب الآلي أو المبرمجة في جاوة قبل، من أي وقت مضى؟ حسنا. جميل. ذلك لن تكون قابلة للتطبيق ثم، ولكن في جاوة، كنت لدينا ما يسمى System.out.println التي لا وجود لها في C. وذلك في C، كلما تريد إضافته في المتغيرات إلى أي شيء تريده لطباعة، هناك بناء جملة معينة ونحن في طريقنا للاستخدام. وهذا ما يسمى placeholding-- أساسا نضيف النائبة في مكان عدد صحيح أو متغير أننا نريد للطباعة. ذلك يا رفاق يمكن أن يرى أننا أدرجنا رأس مكتبة ملف جديد هنا. مكتبة CS50. والواردة في تلك المكتبة CS50 هي وظيفة المشتركة التي سوف تستخدم في مسارنا دعا GetInt (). هل يريد أي شخص أن يأخذ طعنة في ما GetInt () قد ربما أن تفعله. الحضور: (غير مسموع) ANDI بنغ: عذرا. لا يمكن أن نسمع منك. مادلين، أي شخص. مادلين: أوه، فإنه يطالبك لكم لعدد صحيح. ANDI بنغ: بالضبط. حتى هذه الوظيفة، وآخر وظيفة هذا بالفعل كانت مكتوبة من قبل شخص آخر التي يمكن أن نطلق عليها الآن. كل ما هو غير مطالبة لك، المستخدم، لإدخال كل ما تريد كرمز يشغل وتخزنها whatever-- في هذه الحالة نحن GetInt () - جي، وهذا يعني أننا الحصول على عدد صحيح. ونحن في طريقنا للتخزين أنه في عدد صحيح آخر بعد أن قمنا للتو دعا العمر. هذا معقول للجميع؟ رائع. حتى الآن أن لدينا تخزين هذا صحيح، بعد أن قمنا دفعت من قبل المستخدم، في هذا المتغير، لدينا خلقت من نوع int يسمى عمر، يمكننا المضي قدما ومكان أن وظيفة في printf لدينا (). حتى بناء الجملة عادة لprintf () هو أن في أي مكان في المادية الفعلية الخاصة بك الخط الذي تريد إدراج ذلك صحيحا، يمكنك أن تفعل ذلك رمزا هناك حق، الرمز في المئة، مع نوع المتغير الذي تريده. حتى في هذا العصر الحالة هو عدد صحيح. حتى وأنت تسير لتشمل ٪ ط لأنه عدد صحيح. ثم بعد الخاص بك بيان، وأنت تسير للقيام فاصلة و اسم المتغير. حتى هنا، نحن في طريقنا للطباعة بها، مرحبا، اسمي اندى، وأنا عمري سنوات فارغة. Hashta-- أو sorry--، العمر مع كل ما أقوم الإدخال. حتى إذا كان لي أن المدخلات 20 لبلدي GetInt () هنا، انها تطبع نفس الشيء بالضبط. ولكن، إذا أردت أن إدخال شيء آخر، مثل ربما 40 أو 45، ثم كنت أرى أن تنعكس وفقا لذلك في التعليمات البرمجية. لذلك هذا هو مثال شيء فيه فإنه يطبع خارجا وينظر إلى لك كما لو انها نفس الشيء، ولكن تحت غطاء محرك السيارة من الكمبيوتر هناك في الواقع أشياء مختلفة جدا يحدث. رائع. حسنا. وذلك ما إذا كنا نريد متغيرات متعددة؟ من السهل جدا. نفس الشيء. لدينا أيضا وظيفة جديدة هنا دعا GetString ()، وشملت أيضا داخل المكتبة CS50، أن كل ما يفعله هو مطالبة المستخدم عن سلسلة، وهو مجرد مجموعة من الشخصيات، مثل ذلك جملة أو مثل الاسم. حتى في هذه الحالة، سيكون لدينا اثنين لسلسلة و٪ ط النائبة٪ الصورة للصحيح. ونحن في طريقنا للمتابعة أن من المتغيرين نحن تريد تضمينها في النظام الذي تظهر به في الجملة. هكذا على سبيل المثال، اسمي فارغا، أريد اسما هناك، لذلك أنا ذاهب ليكون الاسم الأول. ثم بعد ذلك، أريد العمر، وتريد أن يكون ثاني العمر. وهكذا إذا أردت أن المدخلات، مرحبا، اسمي اندى، وعمري 20 سنة. إذا كنت إدخالها اندى و 20، و سيكون بالضبط نفس الشيء طباعة. ومع ذلك، والآن لدينا اثنين من المخزن متغيرات اسم وكذلك كثافة العمليات. نعم. المتحدث 8: هل من قادرة على تشغيل إذا قمت بالتبديل الاسم والعمر في نهاية ذلك؟ ANDI بنغ: نعم. هذا سؤال جيد حقا. حتى قصة قصيرة طويلة، لا. لأن اسم وage-- ما نوع المتغير هو الاسم؟ المتحدث 8: سلسلة. ANDI بنغ: وماذا نوع المتغير هو العمر؟ المتحدث 8: صحيح. ANDI بنغ: حتى هنا لدينا نائبا لسلسلة وصحيحا، أليس كذلك؟ حتى لو كنت لتبديل هذه، الكمبيوتر لن تعرف. انها تسير للتحقق من سلسلة، وإذا حاولت أن تقدم له عدد صحيح، انها سوف تكون مثل انتظر أنا مرتبك، ل قال لي يجب أن يكون بتخصيص ذاكرة لكثافة العمليات. وهنا، عندما انها تتوقع صحيح وتعطيه اسما وسلسلة بدلا من ذلك، انها تسير أيضا أن يكون مربكا للغاية، فإنه لن يتم تشغيل بالضبط الطريقة التي كنت في حاجة إليها. حتى هنا، تسمية وبناء الجملة من المهم جدا لتشغيل التعليمات البرمجية. الجميع جيدا؟ نعم. مادلين. مادلين: هنا، وأنا أعلم أننا قد نظرت في الأمثلة في الصف، حيث يسألون ما هو عمرك، ما هو اسمك. هنا، من شأنه أن يكون ذلك doesn't-- إذا كان لنا أن تشغيل هذا الرمز، لن نسأل عن ذلك؟ ولكن لو كنت فقط المدخلات رقمين وبعد ذلك تشغيله من هذا القبيل؟ ANDI بنغ: نعم، بالضبط. حتى إذا كنت تريد لل العرض، ويرجى إدخال عمرك، يمكنك فقط إضافة دالة printf () أن يقول، الرجاء إدخال عمرك، فوقها. هذا سؤال جيد. نعم. المتحدث 9: لذا، سيكون بالفعل المدرجة في GetInt () (غير مسموع). ANDI بنغ: لا، انها ليست في الواقع. لذلك كل هذا يفعله هو فقط يطالب شاشة فارغة للمستخدم لإدخال شيء. إذا كنت تريد ذلك، إذا كنت تريد ذلك لطباعة إلى شيء أن يقول للمستخدم مثل، يرجى تعطيني عمرك، فإنك يجب أن printf () أن نفسك. لأن الجميع يستخدم هذا وظيفة لأشياء مختلفة، هل يمكن أن يكون تخزين العمر، هل يمكن أن يكون تخزين عنوان، هل يمكن أن يكون تخزين أرقام الهاتف. وحتى انها حقا ل استخدامات الفردية الرجال الخاص بك لماذا تريد أن تقوله. نعم. SPEAKER 10: لذلك، فقط لتوضيح، حيث هل إدخال الاسم والعمر بحيث يظهر في مكان٪ ق؟ ANDI بنغ: كما في المستخدم؟ SPEAKER 10: نعم، مثل كيف يمكنني جعل it-- أين أضع اندى، وأين أضع 20؟ ANDI بنغ: نعم. حتى لو كنت ل في الواقع تشغيل هذا الرمز، أنا لا تعمل في الواقع رمز، وهذا هو فقط هنا الآن. إذا كان لي أن تشغيل التعليمات البرمجية، وأود أن ترجمة التعليمات البرمجية، وجعل الملف، تشغيل التعليمات البرمجية، ومن ثم سيكون هناك يكون مجرد مسافتين بالنسبة لي لإدخال ذلك. نعم. سوف نرى الرجال عند قراءة حول برمز نفسك. كل الحق ونحن في طريقنا للتحرك في المقطع التالي من ما نحن سوف تغطي اليوم. ونحن في طريقنا للذهاب أكثر ما البيانات المشروطة. حتى إذا كنت تذكر الرجال ونذكر من المحاضرة، عبارات شرطية، كل هم هي مجموعة تعليمات لجهاز الكمبيوتر في وإذا كان شرط معين غير صحيح، يمكنك تنفيذ التعليمات البرمجية داخل هذا الشرط. حتى في Scratch-- أساسا موضوع كبير من اليوم غير أن رفاق بالفعل جميع ينظر إلى المنطق وراء كل شيء اننا تغطية. وكل ما نقوم به هو ترجمة شيئا التي كانت بديهية جدا في الصفر، ويصعب عليه الترميز في جملة سنكون باستخدام بالنسبة للطبقة التي هي C. لذلك منطقيا، كان كل هذه الكتلة غير أن قطعة من التعليمات البرمجية هناك حق. نعم. حسنا. علينا أيضا أن ندخل في لو ... آخر بيان الذي هو مجرد طبقة إضافية من التعقيد إلى إن البيان حيث يأخذ الكمبيوتر نظرة على هذا ويرى، إذا كان هذا الشرط صحيحا، هل كل ما في داخل هذه الأقواس اثنين، else-- ذلك النوع من مثل الافتراضي إذا انها لا تفي condition-- قيام بذلك. انها مثل شوكة في الطريق. إذا انها تمطر في الخارج، أضع على سترة المطر، أي شيء آخر آخر أنا لا تضع على سترة المطر. لا تجعل هذا المنطق المعقول أن الجميع؟ رائع. حسنا. مثل ذلك مثال من الصعب هذا الذي كنا نرى في C هو إذا أردت أن تخلق ل متغير يسمى ساعات المنزلية. وإذا ساعات المنزلية أقل من خمسة، وأنا أقول الحياة عظيمة. إنه لأمر رائع. ومع ذلك، ويقول إن الصراع هو real-- وهو ما نحن جميعا على هذا الاثنين بعد الظهر حتى العلوم هيل هي ربما يفعل الحق now-- الحضور: [يضحك] ANDI بنغ: وهي الطريقة التي سوف، شكرا لكم على ذلك. الطريق كنا hardcode هذا في C هو if-- دعونا نفترض لدينا بالفعل متغير من نوع ودعا الباحث ساعات المنزلية هنا. إذا ساعات المنزلية أقل من خمسة printf ()، الحياة عظيمة. تذكر الحفاظ / ن ل كنت ترغب في سطر جديد بعد. طباعة آخر، والنضال الحقيقي. هل يفهم الجميع كيف أنا انتقلت من هذه الكتلة في هذه الكتلة من التعليمات البرمجية؟ رائع. حسنا. وحتى الآن ونحن في طريقنا لنلقي نظرة على البيانات إذا متعددة تماما. لذلك دعونا نفترض الغرض من هذا البرنامج كان علينا مطالبة المستخدم الصف. نحن فوري باستخدام GetInt () ل الصف، وأنها إدخال قيمة، وتريد عرضها ما هو نوع من درجة أنهم وصلوا. حتى إذا كان لي أن تصميم البرنامج، وأنا يعني عادة في كل من أعيننا، 90-100 هو A، 80-90 هو B، وهكذا دواليك وهلم جرا. ما هو الخطأ في هذا قطعة من التعليمات البرمجية التي ليس تفعل ما أريد القيام به. نعم. SPEAKER 11: لديهم الحدود الدنيا، ولكن لم يكن لديهم الحدود العليا. ANDI بنغ: بالضبط. لم يسمع الجميع ما قالت؟ هناك سيكون العلوي حدود، ولكن لا الحدود الدنيا. عذرا، العكس، الحدود الدنيا، لا حدود العليا. لذلك تريد أن اتخاذ طعنة في قوله ما يمكن أن تكون مطبوعة على هذا الشاشة إذا كان لي أن تشغيل هذا الرمز. SPEAKER 11: خطأ؟ ANDI بنغ: خطأ؟ تخمين كبير، ليس صحيحا تماما. هل لدى أي شخص آخر طعنة؟ نعم، هارون. هارون: إذا وضعت في شيء أكبر من 90، انها تظهر جميع الدرجات التي حصلت. فإنه تظهر لك حصلت على A، كنت حصلت على B، كنت حصلت على C. ANDI بنغ: نعم. هذا صحيح تماما. لذلك، سيكون ذلك رائعا. ومع ذلك، فهي متبادلة حصري، على ما أعتقد. إذا كان لي أن تشغيل هذه القطعة من التعليمات البرمجية. ثم دعنا نقول فقط، وأنا إدخالها الصف 95. لذلك يتم تخزين 95 الآن في كثافة العمليات يسمى الصف. وهكذا C هي لغة الذي يمتد حتى أعلى إلى أسفل، لذلك سيكون لدائما تشغيل ما يصل إلى أسفل. لذلك سوف يأتي هنا، وقراءة إذا درجة أكبر من أو يساوي 90، printf () التي حصلت على A. العظمى، I لديها 95، وهذا أكبر من 90. انها تسير للطباعة، حصلت على A. انه ذاهب لنلقي نظرة على هذا إذا، انه سيكون نقول، حسنا 95 هو أيضا أكبر من 80، انه سيكون لطباعة أنت أيضا حصلت على حصلت علامة تعجب B، وهلم جرا وهكذا إيابا. بحيث يمكننا أن نرى كل شيء، هذا هو علة مشتركة التي قد تحدث عندما نكون كتابة التعليمات البرمجية للبحث عنها. أي شخص، على أية أسئلة على لماذا الذي يحدث؟ رائعة. حسنا. لذلك كيف نصلح هذا، من الواضح السؤال التالي منطقي. حسنا، لدينا هذه جميلة أشياء دعا عدا ذلك إذا آخر إذا كانت تصريحات شيء آخر. حتى تستطيع أن ترى، إذا أردت لتغيير هذه المشكلة، أردت أن تجعل كل من شروط يستبعد بعضها بعضا، كنت إضافة آخر ... إذا البيان. وهذه من course-- نفكر بها سلالم، أو ما شابه درجات على ladder-- يمكنك إضافة العديد من هذه كما كنت نريد لأكبر عدد ممكن من الشروط على النحو الذي تريد. حتى هنا، إذا كنت إدخالها الصف لتكون 95. إذا درجة أكبر من 95، printf ()، حصلت على A. العظمى. انها سوف نرى آخر ... إذا وانها سوف تعرف، أوه لا، أنا بالفعل تنفيذ أول آخر. I know-- أو if-- أولا أنا أعلم أن أنا لا بد من النظر في أي من هذه لأن واحدا منهم وقد سبق صحيح. لذلك سيكون لتشغيلها من أعلى إلى أسفل. بمجرد أن الأول هو الصحيح، ثم انها سوف تخطي كل ما تبقى من آخر ... المحاذير. هل هذا منطقي؟ لذلك، وبهذه الطريقة يكون لديك مستويات مختلفة من التحقق وحالما واحد منهم هو كاذب، و الباقي أيضا، فإنها لن تحقق حتى. رائع. حسنا. لذلك هذا هو مثال مختلفة نوع من عبارة شرطية نرى كثير من الأحيان أقل، ولكن سنرى منها واستخدامها. وانهم في كثير من الأحيان أكثر كفاءة في حالات معينة. لذلك لدينا ما يسمى بيان التبديل. حتى قبل غطينا ما هو لآخر بيان، وإذا ... بيان آخر. هنا، لدينا ما هي دعا البيانات التبديل. حتى متى نستخدم التبديل البيانات هي المفتاح؟ وذلك في بيان التبديل، كنت عادة، عادة، في الواقع كنت لا يمكن إلا أن الأعداد الصحيحة المدخلات الخاصة بك المتغير الذي كنت التدقيق. لذلك إذا أردت أن تحقق لمعرفة إذا كان number-- معينة على سبيل المثال الصف، إذا حصلت على 90. أريد أن أرى إذا كان هذا هو وA، B، C. أو كان يمكن أن يكون الحال هنا. ومع ذلك، فإن القضية لديه أن تكون ثابتة أخرى. حتى في هذا المعنى، فإن بيان التبديل يمكن فقط تحقق من وجود المساواة بين رقمين. فإنه لا يتم التحقق من أي شيء آخر. لذلك هذا شيء أن يكون جدا الحذر من عند استخدامك هذا. حتى هنا، إذا أردت أن تحقق لمعرفة لو كانت لغتي الصف 90 يساوي 90 أو 80 أو 70 أو 60، ومن ثم طباعة الصف المقابل، سأكون قادرا على كتابة ذلك في بيان التبديل. لذلك سوف يأتي هنا، هو الاختيار هذا صحيح يساوي هذا الثابت؟ إن لم يكن، فإنه سيكون لتخطي. هل يساوي ثابت اثنين، وهلم جرا وهكذا دواليك، حتى تصل إلى الافتراضي، إذا كان أيا منهم متساوون. في أقرب وقت واحد منهم ومن المقرر أن تكون على قدم المساواة، انها تسير للقيام بذلك سطر من التعليمات البرمجية وكسر. وهو ما يعني انه سيكون لضرب هذا تشغيل، وكسر، ومجرد تخطي تماما في الجزء السفلي من التعليمات البرمجية. حتى في هذا المعنى وهذا النوع من الوظائف مثل عدا ذلك إذا آخر إذا البيان. حتى هنا ملموسة مثال ليا رفاق. لذلك دعونا نفترض أنني أريد أن إنشاء متغير يسمى سنة التأسيس. وأريد أن مطالبة المستخدم لإدخال السنة التي مدرستهم تأسست. لذلك أنا يمكن أن تخلق بيان التبديل هنا. ودعنا نقول فقط، ومدخلات 1636. هذا الرمز هنا هو الذهاب لرؤية التبديل سنة التأسيس أي ما يعادل 1636. انها سوف نرى حالة 1636، يا هؤلاء الناس سواسية، printf () لا ينبغي أن تكون في تلك المدرسة في الشمال؟ لأننا نفترض أنهم لا تذهب هنا إذا ذهبوا إلى جامعة هارفارد، كسر والقفز الى النهاية. إذا كان لي أن المدخلات 1701، والتي أفترض كل واحد منا سوف المدخلات، سيكون تخطي هذه الحالة، وتأتي وصولا الى حالة اثنين وهو 1701، والطباعة مرحبا بكم في جامعة ييل! كسر، القفز الى النهاية. آخر وربما كنت تأخذ هذه الدورة على الانترنت التي case-- ترحيب رائع لYale-- انه سيكون للذهاب إلى الطباعة الافتراضية، مرحبا الإنترنت! وكسر. نعم. SPEAKER 12: يمكنك استخدام آخر بدلا من الافتراضي هناك؟ ANDI بنغ: لا، لأن طريقة أن هذه الوظيفة كاملة التبديل بنيت بناء الجملة لك تحتاج إلى استخدام هو الحال الحالة الافتراضية. انها مثل إذا آخر إذا، هذا واحد انها حالة الحالة الافتراضية. نعم. SPEAKER 13: أنت ربما سبق أن قلت هذا، ولكن هل يمكن أن يكون أكثر من حالتين؟ ANDI بنغ: نعم، هل يمكن لدينا العديد من الحالات على النحو الذي تريد. أعتقد أنها ترغب فقط مضيفا بلا حدود على. SPEAKER 14: إذا كنت تحولت 1701 مع 1636، لا يجعل حقا حق الاختلاف؟ انها مجرد الذهاب الى أن التحقق من ذلك. ANDI بنغ: هذا هو سؤال جيد حقا. ونحن سوف أتطرق هذا في وقت لاحق، ولكن فقط أعلم أن هذا التحول بيان وinfinitely-- انها أكثر كفاءة من ذلك، وإذا آخر إذا كان لأنه يعمل استخدام نوع مختلف من الوظيفة التي يسمح لك لفي الأساس، لمجرد القفز مباشرة إلى الحالة عليك أن تكون في. نعم. SPEAKER 14: بارد. شكر. ANDI بنغ: نعم SPEAKER 14: وأنت لا تستطيع قيام الحالات مثل وأكبر من. ANDI بنغ: رقم لذلك، هذا ما يحد عن بيان التبديل هو أن لديك لديه ثوابت فقط، الأعداد الصحيحة فقط. نعم. حسنا. لذلك هذا هو ما كنت سوف اللاعبين تواجه كثير من الأحيان أقل من، ولكن أردت فقط أن ندخله في القضية. لدينا هنا ما دعا مشغل الثلاثي. حيث الأساس، انها مجرد مثل ل بيان إذا جمعت إلى سطر واحد. هنا، سأذهب إلى السطر التالي، و الصفحة التالية، لأنه من السهل أن نرى. لذلك رأينا كل هذا أليس كذلك؟ هذا من السهل جدا أن يتبع. إذا أردت أن تجعل متغير يسمى سلسلة المسماة الصورة، إذا كان عدد معين أعطي هو أقل من 100، I تريد تعيين الأقل إلى السلسلة، آخر أريد أن تعيين عالية. هذا هنا هو فعل نفس الشيء بالضبط هذه الخطوط ثمانية من التعليمات البرمجية يفعلون. حتى هنا أريد إنشاء سلسلة متغيرة. وهذا هو الشرط أنا فحص، إذا كان الرقم أقل من 100، ثم قمت بتعيين قيمة منخفضة، آخر تعيين قيمة عالية. وهذه الشرائح تكون على الانترنت، لا تقلق إذا يا رفاق لا تحصل على هذا لأسفل. هذا هو مجرد وسيلة أبسط وأكثر طريقة فعالة لكتابة التعليمات البرمجية. حسنا. وحتى الآن ونحن في طريقنا ل إدخال ما، بالنسبة لمعظم الناس هي مثل جدا، مربكة جدا شيء للتفكير في البداية. القسم الحلقة. حتى اليوم، ونحن في طريقنا للحديث حوالي ثلاثة أنواع من الحلقات. ونحن في طريقنا لتبدأ فترة من الوقت حلقة، ثم الحديث عن تأليف حين حلقة، ثم نتحدث عن لالحلقات. ذلك أساسا، لأكثر المتعلمين البصرية هناك، لدينا، في الأساس، والرسوم البيانية تصوير ما تفعله حلقة في حين. حتى في البرمجة، تبدئين وأدخل حلقة عند نقطة معينة. يمكنك التحقق من حالة. وإذا كان الشرط صحيحا، يمكنك تنفيذ التعليمات البرمجية في الداخل. وكنت أعود حولك والاختيار. اذا كان لا يزال صحيحا عليك أن تبقي تشغيل هذا الرمز حولها وحول في حلقة. ومع ذلك، والثاني أن الشرط يصبح كاذبة، وأنت تسير لكسر وإنهاء الحلقة. وهذا هو الأساس بناء جملة كنت تنوي استخدام. في حين أن حالة معينة هي صحيح قيام بذلك، إذا لم يكن صحيحا، وأنت تسير على القفز الى النهاية والمضي قدما في البرنامج. حسنا. هل لديها مثال على ما يحتمل أن يحدث إذا حاولت تشغيل هذه القطعة من التعليمات البرمجية؟ بالمناسبة، SAJ-- هذا Scaz، اندى، Jason-- سنقوم يوقع رسائل البريد الإلكتروني، الحب، SAJ. هذا نحن. حسنا. أي شخص لديه على سبيل المثال، أو لديك فكرة عن ما هذا من شأنه أن الطباعة؟ نوع من السؤال خدعة. حتى هنا، تذكر حالة نحن التحقق من هو بينما صحيح. وذلك في حين أن هذا صحيح، انها الذهاب إلى طباعة، وأنا أحب SAJ! هل هناك أي النقطة التي نرغب تغيير هذا إلى أي شيء خلاف ذلك؟ لا يحق؟ حتى هنا، لدينا واجه ما هو على الارجح ستكون التنصت الكثير من البرامج الخاصة بك، وحلقة لا نهائية. ستجد أنه إذا كنت تشغيل هذه القطعة من التعليمات البرمجية، انها مجرد الذهاب للحفاظ على الطباعة، وأنا أحب SAJ! بينما نحن نقدر الدعم، نحن لا نريد أجهزة الكمبيوتر إلى تعطل لأنك الحفاظ على الطباعة أحب SAJ! لذا يرجى، من فضلك، تجنب حلقة لا نهائية لأنه يحدث أبدا لتقييم إلى false وأنت تسير أبدا لمغادرة الحلقة. وأنت تسير ل أن امتص في الأبد. رائع. حسنا. أما النوع الثاني من حلقة سنتحدث عنه اليوم هو القيام به أثناء الحلقة، القيام به أثناء الحلقة. وانه دعا افعل حين حلقة لأن لديك دو وحين. لذلك هذا هو مماثل جدا لبعض الوقت حلقة، ولكنها مختلفة قليلا. هنا، كنت تنوي القيام به كل ما في داخل هذا في حين أن حالة معينة هو الصحيح. حتى لو كنت C والكمبيوتر أنا يهرول هذه القطعة من التعليمات البرمجية، أنا نلقي نظرة على القمة. أذهب إلى C، وأنا أقول تفعل هذا الشيء. وبعد ذلك تحقق، في حين أن هذا صحيح، لا بد لي من تكرار ذلك. ولكن في حين أن هذا غير صحيح، ثم أنتقل إلى الأمام وأنا أعود أبدا إلى أن الحلقة مرة أخرى. أي شخص يمكن أن يأخذ طعنة في ما الفرق بين هذه الحلقة ونحن واحدة فقط اطلعت على أمر من الناحية العملية. نعم. SPEAKER 15: الشرط يأتي بعد بدلا من قبل؟ ANDI بنغ: بالضبط. فقالت حالة يأتي بعد، وليس قبل. في نهاية المطاف، والفرق بين هذا وحلقة في حين هو أن كنت مجرد الذهاب للقيام كل ما في داخل هذا بغض النظر عن أم لا حالتك صحيح، ومن ثم تحقق الشرط. حتى في هذه الحالة، كنت always-- في هذا السبيل، كنت دائما التأكد من كل ما هو يعمل داخل على الأقل مرة واحدة قبل التحقق لمعرفة إذا كنت تريد ذلك لتشغيل مرة أخرى. وهنا مثال من عندما كنا استخدامها. هكذا على سبيل المثال، إذا أردت أن يكون متغير من نوع int اسمه عمر، وأريد أن يدفع المستخدم بالنسبة لأعمارهم، انا ذاهب الى القيام printf () ما هو عمرك؟ العمر = GetInt ()، التي ومطالبة المستخدم. وبعض الناس سوف تكون مزعجة حقا. وكنت لا تريد الخلل في الخاص برنامج إدخال شخص ما مثل، يا أنا السالبة 4 سنوات من العمر أو أيا كان. وفي هذه الحالة إذا كانت تفعل ذلك، وهذا تقييم إلى true، مما يعني أنني ذاهب ل يجب أن تبقى العودة والقيام بذلك. لذلك هذا هو ذاهب للحفاظ على على المستخدم دفع إعادة لتعطيك مثل الحقيقي عدد السن وانها ذاهب للحفاظ على العودة والإعادة حتى أنها تعطيك العمر الحقيقي أكبر من واحد، أو ليس صفرا. حتى التلميح، تلميحا. وسيكون هذا جدا ومفيدة جدا واحدة من المشاكل PSET الخاص بك. نعم. SPEAKER 16: يصيح، آسف. ANDI بنغ: نعم. SPEAKER 16: هل هناك، وليس أن يكون الأحمق، but-- ANDI بنغ: لا تقلق. SPEAKER 16: --are هناك قواعد مختلفة هنا، أو هل ننسى فقط لوضع الاقتباس؟ ANDI بنغ: أوه نعم. آسف، وهذا تماما بلدي سيئة. كان ذلك بالتأكيد من المفترض أن يكون الاقتباس. مسكة جيدة. التي من شأنها أن يتم تشغيل. حسنا. وبالتالي فإن نوع آخر من الحلقة سنتحدث حول و، في نهاية المطاف، ونوع من أكثر مجمع هو للحلقة. لا تقلق إذا كنت لا تعرف ماذا يعني ذلك. انها مربكة جدا في البداية. سنذهب على سبيل المثال. كل ما يحدث في لحلقة هو أن لديك ثلاثة بيانات ان كنت تريد الذهاب لتشمل. ذلك لشيء معين، وكنت الذهاب إلى تهيئة متغير. وأنت تسير لإضافة شرط ل وهذه الحلقة سوف تبقى قيد التشغيل. وبعد ذلك، في نهاية حلقة، وأنت تسير لتحديثه. يمكنك تحديث متغير التي تريد تتبع. لذلك نستخدم عادة لحلقات لأننا عندما تحتاج إلى تشغيل حلقة ل مبلغ معين من المرات ونحن نعرف بالفعل، يا أريد هذه الحلقة لتنفيذ مثل 10 مرات، فإنك do-- سأذهب أكثر مثال على الصفحة التالية. حتى هنا على سبيل المثال، في خدش، إذا كنت أراد شيئا أن يكرر 10 مرات، كل ما عليك أن أقول كان، كرر 10 مرات أحب SAJ! وهو أكثر قبولا عرض الدعم للولايات المتحدة بدلا من حلقة لا نهائية. هنا، كيف تفعل الانتقال إلى C والكتابة هذا هو لint-- انا ذاهب لإنشاء أو تعريف متغير من نوع int يدعى ط. انا ذاهب الى تهيئة إلى 0، لذلك أنا = 0؛ وهذا سيكون وضعي. لذلك أنا أقل من 10. ثم في end-- البيان الأخير كنت ستكون لدينا هو التحديث لل ما يحدث للط متغير في نهاية الخاص بك للحلقة. لذلك نوع من الخلط، لأن أجزاء مختلفة من هذا الخط ويحدث في مختلف أنواع من الحلقة. ولكن سأذهب على مثال شبة الكود من ذلك وربما يفسر هذا فقط قليلا أفضل. حتى هنا. هذا هو حلقة رأينا فقط. أساسا في شبة الكود، ما يحدث في هذا البرنامج، هو أولا أنا خلق ط، تهيئة إلى 0. أنا فحص لمعرفة ما اذا كنت غير أقل من 10، في هذه الحالة أول مرة هو لأن 0 أقل من 10. وهكذا في حلقة سيصطدم. ثم انا ذاهب الى طباعة هذا الخط. ثم في نهاية هذا الخط، الحق هنا، وانا ذاهب للقيام الزيادة ط، ط ++، كل ما يعنيه ذلك هو تزايد من قبل واحدة. لذلك أنا الآن 1. لأنه كان مرة واحدة 0، إذا أنا زيادة انها، انها الآن 1. ثم انا ذاهب الى العودة إلى بداية الحلقة ويمكنني التحقق من حالة. هو الشرط لا يزال صحيحا؟ نعم، 1 لا يزال أقل من 10. لذلك سيكون لطباعة هذا مرة أخرى، الذهاب ومن ثم زيادة ط، وتحقق الحالة بشكل مستمر، مستمر، حتى تحصل في نهاية المطاف إلى النقطة حيث ط 10. وأنت تسير لطباعة هذا 10 مرات وبعد ذلك يتم الانتقال إلى تساوي 10. وأنت تسير للتحقق من حالة. 10 أقل من 10؟ لا، هذا غير صحيح. وهكذا، هذه الحلقة لن لتشغيل، انها تسير لكسر، وأنت تسير ل مع الاستمرار في التعليمات البرمجية. بحيث يمكنك رؤية الرجال، وهذا هو مثال عظيم حقا من حلقة يمكنك البرنامج في ذلك يمتد لفترة محددة من الأوقات. كل واحد واضح؟ نعم. SPEAKER 17: ماذا عن الزيادة أضعافا مضاعفة، هل هو ترميز مختلفة؟ ANDI بنغ: أنت can-- سنذهب أكثر من هذا في الشريحة التالية. سؤال جيد. غير anyone-- قبل أن أنتقل on-- أي شخص على الإطلاق الخلط، لأن هذا هو مفهوم صعب حقا. لا تقلق، إذا you're-- OK. رائع. حسنا. مجرد شريحة العامة. هذه الحلقة في حين يقوم به وكان نفس الشيء بالضبط وللحلقة. هو مكتوب فقط بشكل مختلف. يمكنك الإطلاع الرجال الشرائح على راحتك في وقت لاحق. ولكن أعرف فقط أن هناك عدة طرق كتابة نفس الشيء أن يحدث مع حلقات مختلفة. حسنا. لذلك، ونحن الآن في الحصول على مسألة ما اذا كان لدينا حلقة داخل حلقة. نحن نخوض الحقيقي نوع الاشياء إنشائها هنا. عندما تريد أن تفعل أشياء متعددة مرات داخل أشياء أخرى أن تفعل أشياء عدة مرات، وكنت تريد ما يسمى متداخلة للحلقة. لأولئك منكم الذين يرون للمرة الأولى هذا و خلط جدا، كل ما تفعلونه هنا هو وجود للحلقة حيث لدينا متغير الصف. ولكن في الداخل من ذلك، لدينا أيضا آخر لحلقة من عمود متغير يسمى. وأقترح تقديرا عاليا كل واحد منكم الذين يتم الخلط للحفاظ أولا track-- رسم من ذلك، ورسم ذلك. لا تحاول أن السبب عادل من خلال ذلك، رسم بها. في رأسك، على هذه القطعة من ورقة، أو أيا كان، صف الكتابة، تتبع ما هو صف مساويا ل. إرسال العمود، والحفاظ على المسار ما العمود يساوي. وتتبع ما هو طبع مع كل التكرار. كل التكرار من هذه الحلقة، كل التكرار من أن حلقة أكبر، تبقي فقط وفقا لمنطق. وأنا أضمن لكم، عليك الحب ما تراه، لأنه أيضا جدا ينطبق على مجموعات مشكلتك. رائع. حسنا. وبالتالي فإن أهم شيء أن يا رفاق وربما كل التفكير في الوقت الراهن، هي مشكلتك تعيين 1S، والتي من المقرر الخميس / الجمعة. في برنامج water.c الخاص بك، التلميح كنت ستكون لدينا مطالبة المستخدم للحصول على مدخلات. ضمن برنامج mario.c بك كنت ستكون لدينا لاستخدام متداخلة لحلقة، وهو لحلقة داخل حلقة for، لطباعة كتلة من الهرم، أساسا مثل ما ماريو لديها من خلال القفز. ثم داخل بك greedy-- أو ربما صنع التغيير، إذا كان أي منكم الرجال وقد سمعت من هكذا- يضرب وأنت تسير إلى أن تكون جدا الحذر من القيم النقطة العائمة الأولى. تذكر عشرية عائمة و الأعداد الصحيحة ليست هي الشيء نفسه. تتبع أي واحد هو الذي. وأنت تسير إلى استخدام عبارات شرطية، كذلك. كل الحق، آخر شيء. أنا عندي بضع دقائق غادر. الاسلوب. لذلك هذا هو الشيء الذي لا في الواقع يؤثر على الكفاءة، أو تشغيل الفعلي من التعليمات البرمجية. ومع ذلك، فإنه يؤثر بنا و طلاب الصف الخاص بك، كما القراء. أنها آثار نفسك، إذا كنت محاولة للعثور على المشكلة. أنها آثار من قراءة التعليمات البرمجية. لذلك الاسلوب، مثل عندما كنت في محاولة ل أسلوب مقال للغة الإنكليزية، إذا كنت لم يكن لديك الفقرات، لديك كل شيء لطفاء من مختلطة معا على خط واحد، يجعل من الصعب حقا لأحد لقراءة مقالك، حتى لو نقاطك سليمة منطقيا. نفس الشيء في البرمجة. هل يمكن أن يكون غامضا فظيعة كود الذي سيغطي Scaz، ويمكن أن لا تزال تعمل وظيفة. ولكن بالنسبة لنا، والمشرفون الدوليون جميل بك، فمن سيفعل ذلك تكون قراءة وتقييم PSets الخاص بك، هذا ليس لطيفا جدا. لذا يرجى، من أجل منا ونفسك، عندما كنت في محاولة لإصلاح مشكلة في التعليمات البرمجية الخاصة بك، وكنت في محاولة ل قراءة التعليمات البرمجية الخاصة بك، وجعل تأكد من أنك تتبع بعض الاتفاقيات أننا في طريقنا للذهاب أكثر. أولا حتى. إعطاء المتغيرات الخاصة بك أسماء ذات مغزى. إذا كنت ترغب في تخزين عدد صحيح ودعا عمر، يرجى تسميته العمر. لا تسميته الارتفاع. عندما كنت في محاولة ل تخزين عصر في الارتفاع، يجعل كل شيء مربكا جدا بالنسبة لنا. نحن لا نحب أن يكون أربكت. كنت لا أحب أن يتم الخلط. لا أحد يحب أن يكون الخلط. إذا كنت تريد الذهاب لخلق شيء، تسميته شيء مفيد. ومع ذلك، في لحلقة، واحد المتغيرات الشخصية وعادة ما تكون غرامة. وللحلقة، إذا كنت ترغب فقط ط، وي، ك، لا تتردد في مجرد فعل ذلك. التهيئة ثابتة. فماذا يعني ذلك؟ وهذا يعني من الناحية الفنية، من الناحية النظرية، يمكنك بدء وإنشاء متغيرات متعددة على نفس الخط. هكذا على سبيل المثال، وأنا يمكن أن تخلق عدد صحيح يسمى scaz_age، وصحيح يسمى andi_age = 20، وصحيح يسمى jason_age على نفس الخط. ويمكنني أيضا تعيين واحد فقط من لهم وليس لغيرهم القيم. نحن أسألك من فضلك لا تفعل ذلك. لأن هنا قمت بإنشائها في الأساس ثلاثة متغيرات، ولكن واحدا منها فقط في الواقع قيمة. وبعد ذلك عندما نحن محاولة لقراءة التعليمات البرمجية الخاصة بك، أو إذا كنت تحاول إصلاح مشكلة في التعليمات البرمجية الخاصة بك، انها مربكة جدا أن يتبع. وذلك فقط من أجل قراءة الخاص بك، ل قراءة لدينا، لا تفعل ذلك. الأقواس المعقوفة متسقة. بعض الناس يحبون أن يضع لها الأقواس المعقوفة في أماكن مختلفة. لا يهم حقا. فقط تأكد من أنك ثابت في حياتك كود الخاص على المكان الذي ترغب في وضعها. تباعد ثابت. إذا وضعت مسافة بعد للحلقة، تفعل دائما ذلك. لا تماما مثل نوع من يفعل ذلك في بعض الأماكن، لا تفعل ذلك في مناطق أخرى. مجرد أن تكون متسقة. ثانيا، إذا كان أي شخص يود للاطلاع على دليل نمط CS50، لدينا رسميا دليل النمط الذي يخبرك كل هذه الاتفاقيات، بالإضافة إلى أكثر من ذلك. انها على الانترنت. انها مثل cs50.net/style أو شيء من هذا القبيل. يمكنك جوجل ذلك. الاتساق هو مفتاح الحل. لذلك لا تقلق ما يقوم به الآخرون، فقط للتأكد من أنك يتفق ضمن التعليمات البرمجية الخاصة بك. أي شخص لديه أي أسئلة حول هذا الموضوع؟ نعم. SPEAKER 18: ذلك الشيء الصحيح للقيام مع التهيئة فقط يكون كل منهم في منفصلة الخط، هو أن ما تقوله؟ ANDI بنغ: لذلك أنا نادرا ما يحدث ذلك. ولكن إذا كنت تريد، إذا أردت أن يكون مثل توفير مساحة في التعليمات البرمجية الخاصة بك، أو أيا كان، يمكنك القيام بذلك. نطلب منك فقط لا تهيئة شيء واحد وليس غيرها. حتى إذا كنت تريد أن تفعل الباحث scaz_age، الباحث andi_age، الباحث jason_age، وهذا على ما يرام. فقط لا تهيئة واحدة وليس غيرها هو كل شيء. الأسئلة؟ حسنا. انا ذاهب الى تمرير ل الميكروفون، ومؤشر ليزر، والعصا لScaz في هذه المرحلة. هذا هو حرج. ها هو. BRIAN SCASSELLATI: شكرا لك. كيف أن للصوت؟ الصوت هو جيد؟ . ممتاز. حسنا. لذلك، مرحبا الجميع. انا ذاهب الى محاولة العمل من خلال مثال عملي معك. ونحن في طريقنا للاستخدام في CS50 بيئة التطوير، ما يسمى بيئة تطوير متكاملة. وكنت قد رأيت هذا أظهر في المحاضرة. والمشكلة مجموعة 1، كنت ستكون لدينا فرصة لاستخدامها، ولعب مع حولها ذلك، والتعود على ذلك، لأننا ذاهبون الى استخدامها من خلال ما تبقى من الفصل الدراسي. حتى في هذا IDE، لديك ما يبدو مثل مستعرض الملفات التقليدية جدا على أكثر من جانب واحد. كنت قد حصلت على جزء تصل أعلى أين أنت ذاهب لمعرفة شفرة المصدر الخاصة بك، الخاصة بك Cfile، التعليمات البرمجية التي تكتب. وأسفل القاع، عليك لدينا نافذة الصالة والتي سوف تستخدم ل كلا تجميع البرنامج ولتشغيل أو تنفيذ البرنامج. حسنا. وذلك فقط ليقدم لنا قليلا من الأساس، في هذا الإطار المحطة، وأنت تسير أن يكون باستخدام مجموعة من الأوامر التي هي الأوامر القياسية في جميع أنحاء معظم أنظمة يونكس أو لينكس. وحتى إذا كنت قد استخدمت من أي وقت مضى أي شكل من أشكال يونكس، أوبونتو، أو أي من النكهات الأخرى، هذه ذاهبون لتبدو مألوفة. إذا كان لديك لا، لا تقلق. لا يوجد شيء معقد عنهم. انهم فقط باستخدام مختلفة بناء الجملة، وتسمية مختلفة اتفاقية مما كنت قد رأيت من قبل. حتى لخارج قائمة الملفات ضمن دليل معين، انهم ذاهبون الى استخدام دعا الأمر ls، أو قائمة. إذا كنت تريد أن ترى كل شيء مع كل التفاصيل، عليك استخدام أمر وسيطة سطر مع -l ليرة سورية. والتي سوف تظهر لك كل شيء في مزيد من التفاصيل، بما في ذلك أذونات ملف. لتغيير الدليل، عليك استخدام الأمر cd. وعليك أن تكون قادرا على تغيير الدليل على حد سواء للذهاب إلى دليل منزلك. هذا السلاح عادل وقبل كل شيء نفسها، مؤتمر نزع السلاح مع اثنين والنقاط يعود لك واحد المستوى إلى الدليل السابق. ويمكنك أيضا مؤتمر نزع السلاح ل دليل فرعي عن طريق كتابة في مؤتمر نزع السلاح واسم هذا الدليل. يمكنك أيضا إنشاء الدلائل الجديدة. ونحن في طريقنا إلى السير من خلال هذا في دقيقة واحدة فقط. ولكن فقط لوضع كل شيء على الشاشة. بحيث يمكنك رؤيتها. سيكون لديك أيضا القدرة لمعالجة الملفات مباشرة من سطر الأوامر. عليك أن تكون قادرا على نسخ منها، ل نقلها، أو لإزالتها، وهذا هو، على نحو فعال، لحذفها. وIDE CS50 يمنحك كامل قوة وسائط سطر الأوامر. وهذا يعني يمكنك أيضا تفعل أشياء خطيرة للغاية. حسنا. على سبيل المثال، يمكنك إزالة، أو أي حذف، ملف دون أن يطلب للتأكيد. ويمكنك إزالة حتى recursively-- هذا ص اندفاعة flag-- بأكمله الدليل وجميع محتوياته. حسنا. كنت سردها في أحمر لأنك يجب أن نفكر "خطر" في كل مرة ترى تلك الأشياء. حسنا. حسنا. الآن وأخيرا، والأشياء التي هي ستكون قيمة حقا لكم، هناك عدد قليل من الحيل جيدة لمعرفة كما كنت التنقل من خلال هذه النافذة المحطة. أولا، يمكنك مسح الشاشة في أي وقت عن طريق كتابة فقط في واضحة. وأنت تسير لرؤية لي أن تفعل ذلك في كثير من الأحيان. يمكنك أيضا عرض فقط نص ملف عن طريق كتابة أكثر ثم اسم الملف. عليك أن تكون بعد ذلك قادرة على تمرير ذهابا و إيابا مع ذلك تماما مع المسافة ومفاتيح الأسهم. إذا كان لديك، كما فعلنا اليوم في محاضرة، برنامج يقوم بتشغيل مستمر في حلقة لا نهائية، ل يمكن وقف هذا البرنامج من تنفيذ عن طريق كتابة في السيطرة، أن يتم الضغط باستمرار مراقبة-C. وكنت قد تضطر إلى القيام هذا عدة مرات. يحصل على جهاز الكمبيوتر متقدما بفارق كبير لك. وتحتاج في بعض الأحيان إلى إعطائها بضع محاولات قبل أن تأتي في الواقع من خلال. عليك أيضا أن تكون قادرة على من خلال فرز الأوامر الذي كتبته فقط باستخدام مفتاح فوق، مفتاح السهم، ومن ثم مفتاح السهم إلى الأسفل. وما هو الأكثر فائدة هو بدلا من ذلك من كتابة من أسماء الملفات الطويلة، عليك أن تكون قادرا على استخدام Tab لل الإكمال التلقائي تعليمات قليلة. الآن ونحن في طريقنا لإثبات كل تلك في ثانية واحدة. لذلك إذا كنت لا أتذكر لهم، لا تقلق. هذه هي الأشياء التي عليك التقاط واستخدام ونحن نمضي على طول. حسنا. حتى في C-- خلافا في Scratch-- C هي لغة المترجمة. هذا يعني أننا ذاهبون إلى اتخاذ المصدر الملف-- هذا هو النص الذي تكتبه، الأوامر التي تكتبها، و printf () البيانات، الحلقات، كل شيء else-- ونحن في طريقنا أن تأخذ هذا الملف وتسليم تشغيله إلى برنامج يسمى مترجم. سوف المترجم تتخذ ثم أن النص الذي كتبته وترجمتها إلى تعليمات الثنائية أن جهاز الكمبيوتر الخاص بك فعلا الذهاب الاستخدام. وهذا يسمى الكائن أو الملف القابل للتنفيذ. اذا نظرتم الى هذا الملف، وأنت تسير لمعرفة الرمز الذي كنت قد كتبت. اذا نظرتم الى هذا الملف، وأنت تسير لمعرفة تسلسل عشوائي من الأحرف التي لا معنى له على الإطلاق. ذلك لأن هذا هو ثنائي. ليس من المفترض لك أن تكون القراءة. ومع ذلك، في أي وقت تريد تشغيل شيء، ما كنت تريد الذهاب إلى أن يتم تشغيل هذا الملف الكائن. لذلك عندما نعمل مع هذه الملفات، فإننا سوف إرسال ملف في C. سنقوم ثم ترجمة عليه، وذلك باستخدام أمر مثل جعل التي سوف تحتج على رنة مترجم للغة C. والتي من شأنها أن تنتج كائن ملف، مثل الخروج، أو في هذه الحالة، الاسم، ملفي، وأنني قد وضعت في. حسنا. لذلك دعونا نحاول هذا الواقع. لذلك خطرت لي مثالا ما كنت أريد أن أحاول. واحدة من الأشياء التي يذهلني هو الرسوم المتحركة. لذلك نحن ذاهبون لمحاولة القيام قليلا من الرسوم المتحركة استخدام أحرف ASCII فقط. الشخصيات التي يمكن بطباعة بسهولة الآن. حتى هنا هو أفضل محاولتي في خلق لك الرسوم المتحركة من الأرنب من خلال تشغيل الحشائش الطويلة. ها هو. حسنا. حتى انه لا يعمل حتى الآن، لكنه واقفا في الحشائش الطويلة. الآن لو كنت الرسوم المتحركة، في المدرسة القديمة نسخة من الرسوم المتحركة، ما سيفعل هو أنني ستنتج صورة لهذا الارنب في العشب. ثم أود أن إنتاج picture-- أخرى آخر ما وصفوه cell-- أن قد الارنب تحركت قليلا فقط. ثم ثالثة التي لديها انتقل الأرنب أبعد قليلا. وأود أن إنتاج كامل تسلسل هذه الخلايا. بعض حيث الارنب هو أكثر على الجانب الأيسر. ثم يتحرك ببطء، واحدة من جانب واحد نحو الوسط. ثم من الوسط إلى اليمين. وإذا كان لي ذلك الحين، حقا محظوظ، أنا يمكن وضعها معا ويمكنني أن يديروا لها. وهناك بلدي الارنب يمر عبر العشب. هذا هو بلدي باور بوينت رائع خدعة لهذا اليوم. حسنا. لذلك هذا هو جيدة كما يحصل. حسنا. لذلك، وهنا واحد مزيد من الوقت، وهنا لدينا الأرنب الذي يمر عبر العشب. SPEAKER 19: مرة أخرى. BRIAN SCASSELLATI: واحد المزيد من الوقت، كل الحق. هناك الارنب الخاص. حسنا. فما اليوم ونحن في طريقنا القيام به هو نحن ذاهبون في محاولة لأتمتة عملية من إنتاج هذه الخلايا. لن ندخل جدا لدرجة أن تكون قادرة على وضع كل منهم معا. ولكن، نحن ذاهبون لمحاولة أتمتة عملية توليد هذا التسلسل. وهذا كثير ما الرسوم المتحركة اليوم هو مثل. وهذا هو، أنت لا تفعل أشياء بالضرورة عن طريق رسم كل شيء باليد. ونحن نستخدم الكمبيوتر لأتمتة أجزاء من تلك العملية. حسنا. لذلك اسمحوا لي تبديل أكثر الآن لدينا IDE CS50. ولقد خلق لus-- والسماح لي تكبير هنا قليلا bit-- لدي خلق لنا نقطة انطلاق. في كل مرة أن نطلب منك الجلوس إلى أسفل وكتابة قطعة من التعليمات البرمجية، ما نطلبه حقا لك أن تفعل ونحن نطلب من أجل حل المشكلة. والطريقة التي يجب عليك التفكير في القيام بذلك هو من خلال البدء مع بعض جزء بسيط من هذا الحل. ومن ثم بناء الخروج من هذا الجزء. وهذا ما نحن بصدد القيام به اليوم. وذلك بدلا من محاولة في كل مرة ل إرسال باقة كاملة من التعليمات البرمجية التي ل الذهاب لإنتاج تلك 10 خلايا الرسوم المتحركة، ونحن في طريقنا لبدء بدلا من ذلك مع قطعة واحدة تعمل. وبعد ذلك سنقوم بناء قليلا حول ذلك وأكثر من ذلك بقليل وأكثر من ذلك بقليل. الآن الشيء الجيد حول حل المشاكل بهذه الطريقة هو أنها لن تسمح لك لبدء دائما مع شيء أن تعرف يعمل وإحداث التغيير التدريجي واحد. وهذا هو وسيلة رائعة لمعرفة كيفية رمز، لأن كل مرة تقوم فيها التغيير، ترى ما تأثير يفعل ذلك. حسنا. حتى هنا نقطة البداية بالنسبة لنا. حسنا. حتى في بداية ملفي، لقد قمت تجزئة #included stdio.h. هذا بحيث أستطيع الحصول على printf () وظيفة للعمل. وبعد ذلك لدي وظيفة الرئيسية. وهذا لا تزال تبدو قليلا غامضة أو مبهمة لبعض منكم. وهذا موافق. كل ما يقوله هو أن يأخذ الوظيفة الرئيسية يعني عدم وجود باطل arguments-- لا شيء في C. وذلك العائدات من اتفاقية صحيح. الرئيسية دوما بإرجاع عدد صحيح، عادة رمز يقولون أشياء سارت بشكل جيد أو لا تسير على ما يرام. حسنا. ولكن الرئيسية لا بد أن يكون ذلك تشكل بالنسبة لنا في الوقت الحالي. لقد ثم وضعها في ثلاثة أسطر من التعليمات البرمجية. وجنبا إلى جنب مع كل سطر من رمز، لقد وضعت تعليق. الآن واحدة من الأشياء التي سنصر على أن تفعل، وانها مثل هذا مهم ممارسة البرمجة، غير أن يعلق دائما التعليمات البرمجية. إرسال دائما إلى أسفل في الإنجليزية تعليق شيء ان كنت تعتقد أن يفترض رمز للقيام. بهذه الطريقة، في وقت لاحق عندما كنت أعود إلى ذلك، يمكنك إلقاء نظرة على ذلك، ويمكنك القول، أوه، أتذكر ما كنت تحاول أن تفعل مع هذا. أو عندما يجلس TA أسفل معكم ل محاولة لمساعدتك في ساعات العمل، أنها يمكن أن ننظر إلى هذا وتذهب، وأنا ترى ما كنت تحاول القيام به، ولكن بدلا من ذلك ما يحدث حقا. حسنا. حتى أنا عندي ثلاثة أجزاء لقانون بلدي، انا ذاهب الى بادئ ذي بدء الطباعة بعض النقاط في البداية. أنا ثم طباعة خارج بلدي الأرنب يتوهم للغاية. وبعد ذلك بعض الشيء من النقاط في نهاية المطاف. وينبغي لهذه البيانات المطبوعة ثلاثة تبدو مألوفة لك في هذه النقطة. كل ما أفعله في كل واحد منهم هو أنا طبع سلسلة من الأحرف. ليس هناك متغيرات المعنية. كل شيء هو مجرد مسطحة. حسنا. حتى لو كنت النزول الآن إلى بلدي terminal-- دعونا نرى ما اذا كان يمكنني الحصول على هذه العودة out-- وانا ذاهب الى كتابة واضحة مرة أخرى. SPEAKER 20: هل نستخدم مائل مزدوج للتعليق؟ BRIAN SCASSELLATI: هل يمكن استخدام نعم double--. هناك عدة طرق ل ترك تعليق في C. واحدة طريقة هي استخدام الخط المائل المزدوج. والآخر هو لاستخدام القطع ونجم ثم قم بإغلاق مع النجم ومائل. حسنا. أولا وقبل كل شيء، أنا ذاهب ل بدء التنقل هنا. حتى اذا ذهبت الى بلدي الدليل الرئيسي، لقد تغيرت الدلائل هناك، أنا ذاهب لننظر ونرى ما هو في هذا الدليل، ليرة سورية، وقائمة بها. أنا ذاهب لرؤية أن لدي حصلت على اثنين من الدلائل. دعونا نجعل أكبر هذا قليلا هنا بحيث يمكننا أن نرى كل ذلك. أستطيع أن أرى أن لدي حصلت على اثنين من الدلائل. سوف أقوم بتغيير الدليل للذهاب إلى مساحة العمل. وانا ذاهب لكتابة الوحيد للخروج جزء منه، وبعد ذلك فقط ضرب تبويب. وسوف أكمل بقية بالنسبة لي. يتوهم. سوف ننظر ونرى في مساحة العمل. والآن، أنا أعمل على SuperSection اننا تدريس الآن. لذلك سأذهب إلى هذا الدليل. وأخيرا، ننظر ونرى. ولقد حصلت على هذا الملف bunny.c. كل الحق في ذلك دعوني أوضح مرة أخرى. وانا ذاهب الى now-- مرة أخرى أنا لا يزال يقيم في هذا الدليل وانها تقول لي أنا في هذا الدليل SuperSection. انا ذاهب الى المضي قدما و جعل برنامجي الأرنب. وهذا الأمر، وجعل الأرنب، بينما السبر غريبة قليلا، أيضا استدعاء مترجم رنة. وانها تنتج ل لي الإخراج الذي هو وfunny-- قابل للتنفيذ دعا الملف القابل للتنفيذ الأرنب. حسنا. يمكنني ذلك الحين، وهذا يبدو أسوأ من ذلك، تنفيذ الأرنب. حسنا. ودعونا نرى ما تفعله. حسنا. هذا قليلا من ما كنت أتوقع. لقد حصلت على صورة أرنب هناك، ولكن النوع الأول من يريد كل شيء في حد ذاته. ماذا افتقد؟ SPEAKER 21: القطع لتر أو خفض ن. BRIAN SCASSELLATI: القطع ن. حسنا. لذلك دعونا نعود هنا. وسوف نخرج من ذلك. وسوف أعود إلى هذا واحد. ودعونا نلقي نظرة الآن من وجهة نظري تتمثل المهمة الرئيسية هنا. اذا ماذا يجب أن أفعل؟ أريد أن نهاية الخط. لذلك أنا وضعت في تعليق. وسوف أضع في printf (). وماذا يجب أن أضع في؟ / ن. حسنا. ماذا لدي لوضع حد لها مع؟ منقوطة. حسنا. الآن، واحدة من الواقع أشياء مهمة هي التأكد من في كل مرة تقوم فيها بإجراء تغيير في التعليمات البرمجية، التي قمت بحفظها. إذا كنت لم تقم بحفظ التعليمات البرمجية الخاصة بك، وكنت الذهاب لاحظت وجود النجوم قليلا حتى هناك. وهذا النجم تقول لك لم تقم بحفظ هذا الرمز. إذا كنت ترجمة عليه الآن، انها ليست الذهاب إلى تعكس أي من تلك التغييرات، لأن المترجم يبحث في ملف هذا على القرص، وليس ملف هذا فتح في المحرر. حسنا. لذلك دعونا حفظه ومن ثم سنذهب نزولا هنا، أعود بها. ينزل إلى محطة بلدي. ودعونا مسح الفضاء مرة أخرى. ويمكننا المضي قدما واحدة أكثر الوقت جعل برنامج الأرنب لدينا. وتنفيذ الارنب. ان لم ينجح أيضا. مائل الخطأ. حتى إذا نظرتم الى ما عندي، أنا وضعت / ن في هناك، ولكن كان لي مائل الخطأ. كل ما جهاز الكمبيوتر الخاص بك هل هو واضح جدا. موافق؟ خطأ واحد القليل من علامات الترقيم، و فجأة كنت لا تحصل على ما تريد. حسنا. لذلك دعونا إعادة تكبير من جديد. سوف نعود. كذلك جعل ذلك إصلاح سريع جدا. سنقوم بوضع مائل الصحيح في. سنقوم حفظه. سنقوم إعادة تكبير الخريطة. لسبب ما، وهذا ليس يجري سعيدة، ولكن دعونا نمضي قدما وسوف نعود إلى محطة هنا. مسح عنه. سنقوم تكبير. واحد مزيد من الوقت، ونحن سوف تجعل الأرنب. والآن المؤكد، وأنها تعمل. الصيحة. حسنا. لذلك دعونا نحاول أن نجعل هذا أكثر من ذلك بقليل عام. دعونا نرى ما اذا كان بدلا من مجرد طباعة إطار واحد معين، دعونا نرى ما اذا كنا نستطيع جعل هذا حتى نتمكن من الحصول على جميع 10 من تلك الأطر الرسوم المتحركة أن أردنا أن يكون. ذلك مرة أخرى، دعونا نلقي هذه خطوة في وقت واحد. دعونا أولا تعميمها، لا بحيث أن أفعل كل الأطر، ولكن حتى أفعل أي واحد الإطار الذي أنا قد ترغب. فما هو الفرق بين الإطارات؟ هو الأرنب نفسه؟ الجمهور: نعم. BRIAN SCASSELLATI: نعم. ماهو الفرق؟ الحضور: الوظيفة. BRIAN SCASSELLATI: موقفه، أليس كذلك؟ وكيف أتحكم موقفها؟ كم عدد النقاط أنا وضع في بداية وعدد النقاط أنا وضع في نهاية المطاف. لذلك اضطررت خمسة في تبدأ وخمسة في نهاية المطاف. دعونا استبدال ان خمسة مع لحلقة. حسنا. وانا ذاهب الى إنشاء ل حلقة الآن وهذا ما سأقوله، أنا ذاهب لطباعة بعض رقم من النقاط في البداية. انا ذاهب الى استخدام متغير. دعنا نقول، وكيف حول ط ك العداد في حلقة بلدي. وانا ذاهب الى نعلن ذلك حتى أعلى. ثم في لحلقة ولست بحاجة إلى القيام بثلاثة أشياء. أول شيء يجب أن أفعل هو أنني بحاجة إلى تهيئة ط. ما الذي يجب أن تهيئة لبدء أن تكون؟ 0. حسنا. ثم أريد أن أقول، ما هو في حالة إنهاء؟ متى يجب أن يتوقف؟ حسنا كم عدد النقاط هل تريد طباعتها على هذا واحد؟ الحضور: خمسة. BRIAN SCASSELLATI: خمس مرة أخرى؟ ماذا عن دعونا نفعل شيئا مختلفة، ونحن لم الخمسة. دعونا تبين أن الأمر مختلف. SPEAKER 22: اثنان. BRIAN SCASSELLATI: اثنان. حسنا. لذلك إذا أريد اثنين من النقاط، ما يجب أن أضع هنا؟ الجمهور: ثلاثة. BRIAN SCASSELLATI: ثلاثة. حسنا. كم مرة هو أن من خلال الذهاب الى؟ ما يجري من خلال الذهاب الى ثلاث مرات، 0، 1، و 2، أليس كذلك؟ كل الحق، دعونا نعود إلى اثنين. الآن سنقوم الحصول على اثنين من النقاط. وماذا أريد أن أفعل كل مرة أذهب خلال الحلقة؟ ما يجب أن يتغير في كل مرة أذهب من خلال؟ SPEAKER 23: إضافة نقطة. BRIAN SCASSELLATI: لا بد لي من الاستمرار. انا ذاهب لإضافة نقطة. انا ذاهب الى طباعة نقطة، في كل مرة خلال الحلقة. ولكن كيف أنا تتبع كيف مرات عديدة لقد كنت خلال الحلقة؟ أنا باستخدام ط، أن المتغير، هذا العداد. هكذا في كل مرة من خلال، وانا ذاهب لزيادة العداد بمقدار واحد. الآن، وهذا هو نفسه بالنسبة ل لي قوله ط = ط + 1. وهذا موافق. أنا يمكن أن يفعل ذلك هكذا- يضرب أحب الاختزال، لذلك أنا ذاهب لأقول ++. حسنا. دعونا نفعل نفس الشيء إلى هنا في الأسفل. فقط أنا نوع من فعل ذلك واحد. انا ذاهب لتمكنك من الرجال تفعل هذا واحد تماما. حسنا. لذلك ماذا أكتب هنا؟ وهنا قال لي للحلقة. انا ذاهب الى القيام printf () وانا ذاهب لتجعل من ذلك أنني فقط طباعة نقطة واحدة على أن القاع. ماذا أكتب داخل هذه لحلقة الآن؟ حسنا، أولا وقبل كل ما المتغيرات التي يمكنني استخدامها؟ SPEAKER 24: ي. BRIAN SCASSELLATI: I يمكن استخدام ي. يمكنني استخدام نفس واحدة؟ هل يمكنني استخدام ط مرة أخرى؟ نعم. وهذا موافق، لأن هل أنني أستخدم هنا، أنا لا حاجة إليها مرة أخرى عندما أنا ننكب على هذه النقطة. فما ينبغي لي أن تهيئة لي ل؟ SPEAKER 25: 10. BRIAN SCASSELLATI: 0. ماذا يجب أن تحقق؟ كم عدد النقاط التي أحتاجها الآن في نهاية إذا كنت قد حصلت على اثنين من النقاط في البداية؟ أحتاج ثمانية في النهاية، فما يجب أن تحقق، أنا أقل than-- الحضور: سبعة، ثمانية، تسعة. BRIAN SCASSELLATI: سمعت سبعة. سمعت ثمانية. وسمعت تسعة. حسنا. لذلك نحن جميعا في الحق ball-- يقول جيسون 10. حسنا. إذا كنت بحاجة اثنين من النقاط ل أول واحد، وكم تفعل I-- وانا بحاجة الى ثمانية نقاط ل آخر احدا-- أضع اثنين حتى أعلاه، ما يجب أن أضع الأسفل؟ الحضور: ثمانية. BRIAN SCASSELLATI: ثمانية. لأن ذلك سيكون ل العد من صفر إلى سبعة. وهذا هو ثماني مرات خلال الحلقة. حسنا. وماذا علي أن أفعل في نهاية المطاف؟ الحضور: أنا ++. BRIAN SCASSELLATI: أنا ++. حسنا. بحيث انها تبدو جيدة جدا هناك. دعونا نحاول ودعونا نرى ما تفعله. حسنا. لذلك نحن ذاهبون لحفظه. لطيفة وحفظها. سنقوم إعادة تكبير بها. سنحاول هنا في المحطة. سنقوم تكبير. عفوا. وسوف نقوم، واحد مزيد من الوقت، جعل برنامج الأرنب لدينا. والمضي قدما وتنفيذ الأرنب. وهناك هو عليه. ولذلك لا يوجد لدينا الأرنب. حيث فقد اثنين من النقاط في بداية وثمانية نقاط للخروج في نهاية المطاف. الجميع لا يزال معي؟ حسنا. لذلك قمنا ببناء عنه. بنينا أرنب واحد، إطار واحد معين. الآن كنا قادرين على التعميم أنه من أجل بناء أكثر من ذلك، أنواع مختلفة من الإطارات. الآن دعونا نمضي قدما، ويكون أن تولد ليس فقط إطار واحد، ولكن دعونا توليد 10 الإطارات، حيث أننا ببطء جعل الارنب نقل كافة على طول الطريق عبر المجال. حسنا. دعونا نعود. وسنحاول الآن. فماذا أنا فعلا بحاجة لتغيير هنا؟ ما الذي أحتاجه لتغيير؟ SPEAKER 26: أنت بحاجة أولا ل تغيير عدد أقصى النقاط في البداية. لأنه إذا نفعله 10 نقطة، انها بحاجة الى الذهاب الى ما يصل الى نطاق واسع. BRIAN SCASSELLATI: نعم. حتى الآن لدي نوع من ماثلة لتفعل دائما اثنين من النقاط في بداية وتفعل دائما ثماني نقاط في نهاية المطاف. اريد بناء حلقة أخرى، أليس كذلك؟ لأنني لا أريد بناء مجرد صورة أرنب واحد، اريد بناء 10 صور الأرنب. لذلك أنا بحاجة لبناء حلقة أخرى، وعند خضوعي أن حلقة، أريد أن تغيير عدد النقاط I طباعة في بداية وعدد النقاط يمكنني طباعة في النهاية، وعلى هذا الأساس دورة خلال الحلقة لقد دخلت. حسنا. لذلك دعونا الحصول على أخرى مضادة. قبل قال شخص ي، ولذا فإننا سوف تجعل ي آخر. والآن، نحن في طريقنا لل بناء آخر للحلقة. ما يدور داخل تلك الحلقة؟ هذه الاشياء لديه للذهاب داخل الحلقة، أليس كذلك؟ هل لدى الارنب للذهاب داخل الحلقة؟ هل أحتاج إلى الأرنب في كل من هذه الإطارات 10؟ الحضور: هاه. BRIAN SCASSELLATI: نعم. أريد أرنب في كل من إطارات 10، أليس كذلك؟ ماذا عن النقاط في في النهاية، لا أحتاج ذلك؟ حسنا. لذلك أنا ذاهب بمحاذاة أطراف كل منهم. انا ذاهب الى تسليط الضوء على كل هذا، وانا ذاهب الى ضرب تبويب. وهذا ما يحدث لدفعهم على كل قليلا، بحيث من السهل بالنسبة لي لمعرفة ما هو في الحلقة. وبعد ذلك سوف إنهائه. على افتراض. موافق؟ الآن، في هذه الحلقة أن أنا building-- يصيح، جعل هذا حتى تتمكن من see-- لقد حصلت على مكافحة ي. سوف بدأ في 0. كم مرة لا أريد للذهاب من خلال هذه الحلقة؟ الحضور: 10 مرة. BRIAN SCASSELLATI: 10 مرة. فما عدد ينبغي أن أضع هنا؟ الحضور: 9، 10. BRIAN SCASSELLATI: 9، 10، لقد حصلت على شخص ما ليقول 11، أليس كذلك؟ أردت اثنين من النقاط قبل ووضع ط أقل من 2. أردت ثمانية نقاط، أضع أنا أقل من 8. الآن أريد أن أذهب إلى 10 مرات، لذلك أضع ي أقل than-- الحضور: 10. BRIAN SCASSELLATI: 10. هناك نذهب. وماذا أفعل في النهاية إلى ي؟ ++، زيادة عليه. حسنا. الآن، وهنا الجزء صعبة، ما هو يحدث الآن إذا كنت تفعل هذا؟ أنا ذاهب لطباعة 10 لقطة؟ SPEAKER 27: أعتقد أنها سوف تكون كل نفس. BRIAN SCASSELLATI: أنها سوف جميع تكون هي نفسها، أليس كذلك؟ لأن كل منهم ما زالت مستمرة لوضع اثنين من النقاط في البداية. ولكن أنا لا أريد لهم جميعا ل لدينا اثنين من النقاط في البداية. كم عدد النقاط يمكنني أريد في البداية؟ الحضور: تغيير. BRIAN SCASSELLATI: I تريد أن تتغير، أليس كذلك؟ وذلك ما لا بد لي هنا أن يتغير في كل مرة حلقة يمر؟ الحضور: عدد من النقاط، ي. BRIAN SCASSELLATI: ي، عدد من النقاط. حتى أتمكن من تغيير هذا ي. للمرة الأولى من خلال حلقة، ما الذي سيكون؟ ما أقوم بإعداد ي لفي البداية؟ الجمهور: 0. BRIAN SCASSELLATI: فكيف العديد من الأوقات أنا ذاهب للقيام بذلك؟ 0. للمرة الثانية خلال الحلقة، ي ل سيكون 1 لأنني زيادة عليه. كم عدد النقاط أنا ذاهب لطباعة؟ 1. للمرة الثالثة خلال الحلقة، كم عدد النقاط أنا ذاهب لطباعة؟ الجمهور: ثلاثة. BRIAN SCASSELLATI: ي ستكون 3. كم عدد النقاط أنا ذاهب لطباعة؟ أوه، آسف، ي ستكون 2. كم عدد النقاط أنا ذاهب لطباعة؟ الحضور: 2. BRIAN SCASSELLATI: 2. OK، لذلك أنا ذاهب للحفاظ على تزايد هذا ونحن نمضي على طول. كيف حول الأسفل؟ ما يذهب إلى هنا؟ أنا لا أريد دائما 8 في نهاية بعد الآن؟ SPEAKER 28: 10. BRIAN SCASSELLATI: أريد 10 النقاط؟ أريد أن تغيير أيضا. فكيف أريد أن تتغير؟ الحضور: (غير مسموع). BRIAN SCASSELLATI: حسنا، إذا أنا لديك خمس نقاط في البداية، وكم نقطة ويمكنني الحصول في نهاية؟ الحضور: خمسة. BRIAN SCASSELLATI: إذا كان لدي ست نقاط في البداية، وكم يمكنني الحصول في نهاية؟ الحضور: أربعة. BRIAN SCASSELLATI: إذا حصلت سبع نقاط في البداية، وكم يمكنني الحصول في نهاية؟ الجمهور: ثلاثة. BRIAN SCASSELLATI: إذا كان لدي حصلت النقاط ي في البداية، وكم يمكنني الحصول في نهاية؟ 10-ي. حسنا. لذلك دعونا نحاول أن الخروج. لذلك أنا ذاهب لإنقاذ برنامج الأرنب لدينا. مرة أخرى سنقوم تصغير. سنذهب الى محطة لدينا. سنقوم مسحها. وتكبير. ونحن سوف تجعل البرنامج الأرنب لدينا، مرة أخرى. وسنقوم تنفيذه. اه اوه. عقد، دعونا التصغير. لم أحصل على 10 لقطة؟ حسنا، كم من الأرانب أرى هناك؟ 1، 2، 3، 4، 5، 6، 7، 8، 9، 10. حصلت على 10 لقطة. هم جميعا نفس الشيء؟ الجمهور: نعم. لا. BRIAN SCASSELLATI: رقم ان اول واحد، الأرنب أبعد ما يكون عن اليسار. وهنا، الارنب هو أبعد ما يكون عن SPEAKER 29: الحق. BRIAN SCASSELLATI: وهكذا، ما لم أنسى أن تفعل؟ SPEAKER 30: بدء سطر جديد. BRIAN SCASSELLATI: لقد نسيت لبدء سطر جديد، مرة أخرى. نفس الخطأ الذي أدليت به من قبل. كل الحق، دعنا نذهب إصلاح ذلك. الآن، ما زال أمامي رمز في وجود لجعل خط جديد. لماذا لا يعمل؟ SPEAKER 31: انها ليست داخل الحلقة. BRIAN SCASSELLATI: أوه، انها ليست داخل الحلقة. هذا صحيح. انه يجلس خارج هنا. وللحلقة هو كل شيء وهذا داخل هذا النص. لذلك أنا ذاهب للتحرك هذا داخل لحلقة. وسوف أكون تبويب أمامه ل تبين أنه في المكان المناسب. والآن، ونحن سوف حفظه مرة أخرى. سنقوم تصغير. سنقوم التحول إلى محطة لدينا. تقريب. سنقوم إعادة صياغة برنامج الأرنب لدينا. والآن، والآن لدينا لدينا 10 لقطة. [تصفيق] BRIAN SCASSELLATI: OK. هكذا. هنا متداخلة من أجل الحلقات. كنا قادرين على توليد في الحلقة الداخلية كم عدد النقاط أردت لطباعة في البداية، في نهاية المطاف. وتسيطر على حلقة الخارجي كم عدد الإطارات كنت بناء. بدأنا مع قليل احدة نواة لهذه المشكلة، وبنينا من هذه النقطة. حسنا. دعونا نفعل خطوة أخرى. هل انت مستعد؟ هناك شيء واحد هنا حيث لقد حصلت في الواقع نوع من المزيد من التعقيد مما نحتاج. لنلقي نظرة. وذلك في برنامج الأرنب لدينا، إذا كنت التصغير هنا، أنا فعلا بعض من نفسه الشيء مرارا وتكرارا. ماذا أفعل هذا النوع من نفس الشيء يتكرر مرتين؟ SPEAKER 32: طباعة النقاط. BRIAN SCASSELLATI: نعم I طباعة تلك النقاط مرتين. حقا، يجب أن لدي هذا التعليق هنا. I طباعة بعض النقاط في بداية، وصولا هنا. وبعد ذلك طباعة بعض النقاط في نهاية المطاف. وأنا لا نوع من بالضبط نفس الشيء. ما نحن في طريقنا للبدء العمل على في الأسابيع القليلة القادمة هو التمكن من اتخاذ تلك الكتل من التعليمات البرمجية التي نستخدمها مرارا وتكرارا، وخلال عملية دعا التجريد، ونحن في طريقنا إلى سحبهم و اكتبها مرة واحدة حتى ما في وسعنا ثم إعادة استخدامها مرارا وتكرارا. لذلك دعونا نحاول ذلك. مستعد؟ ونحن في طريقنا إلى اتخاذ هذه الكتلة من التعليمات البرمجية. وانا ذاهب لإخراجها من هناك. وانا ذاهب الى define-- في أسفل، أنا أريد أن أكتب وظيفة جديدة. انها لن يعود أي شيء. وانا ذاهب الى نسميها printDots. انها سوف تأخذ واحدة حجة، عدد صحيح يقول howManyDots أود أن طباعة. والآن بدلا من طباعة النقاط ي، وسوف أكون طباعة أقول howManyDots أود أن طباعة. وهناك مشكلة صغيرة واحدة هنا. أحد يعرف ما هو؟ ماذا لدي هذا المدرجة هنا وهذا ما لا يعرف؟ الحضور: (غير مسموع) BRIAN SCASSELLATI: حسنا كيف يتم تعريف العديد من النقاط وصولا هنا، ولكن أنا باستخدام هذا المتغير ط. لذلك أنا ذاهب الى اتخاذ هذا المتغير ط وانا ذاهب لتحديد عليه هنا بدلا من ذلك. وحتى الآن انه سيكون لstay-- عفوا، حصلت على قبعات قفل على somehow-- أنا ذاهب للحفاظ على ط أسفل هنا. وحتى الآن وهنا قال لي وظيفة صغيرة أو الروتين الفرعي، ويقول: كم عدد النقاط أنا ذاهب لطباعة؟ وأنها سوف تذهب من خلال هذه الحلقة و طباعتها مرارا وتكرارا. أنا يمكن بعد ذلك تعديل برنامجي هنا. وماذا أدعو أن وظيفة؟ printDots. لذلك سأتصل printDots. كم عدد النقاط أريد أن طباعة أول مرة قبل الارنب؟ الحضور: ي. BRIAN SCASSELLATI: ي. كم عدد النقاط أريد أن طباعة في النهاية، بعد الارنب؟ 10-ي. وهناك شيء واحد أنا في عداد المفقودين. كما رأيتم في محاضرة اليوم، ونحن في طريقنا لاعلان printDots حتى أعلاه لإعطاء النموذج. حسنا. ذلك ما فعلته هو أنني حاولت أن عزل هذا الجزء استخدامها من التعليمات البرمجية أن فعلت مرارا وتكرارا. ولقد حاولت أن تخلعها بحيث كل ذلك يرد في مكان واحد. وبهذه الطريقة، إذا كان لدي خطأ في مكان ما، وليس لدي سوى لاصلاحها في بقعة واحدة. حسنا. لذلك دعونا حفظه. ودعونا نتأكد من أنه يعمل. لذلك دعونا الخروج. سنذهب مرة أخرى إلى محطة لدينا. سنقوم تكبير. ونحن سوف تجعل هذه العملية الأرنب. اه. ولقد أعطيت لي تحذيرا. ما هو عليه تقول لي؟ جيد في أي من هذه مرات، وتريد دائما للتمرير حتى error-- أولا جدا الآن على هذا واحد، لقد حصلت على واحد فقط. يقول لي في bunny.c، على الخط 8، 9 العمود، هناك مشكلة. تقول، وكنت قد أعلنت هذا ط متغير وأنت لم تستخدم. الآن بشكل طبيعي، وهذا لا أسوأ خطأ. هذا هو واحد من السهل لإصلاح. في واقع الأمر، يمكننا أن نذهب مرة أخرى. يمكننا أن نعود إلى الأرنب. وفي هذه الحالة، كل ما عليك القيام به هو التخلص من ط، لأننا لا تستخدم أنا داخل الرئيسي بعد الآن. نحن فقط استخدامه ضمن روتين حياتنا الفرعي. لذلك دعونا حفظ ذلك. سوف نعود. وتكبير. سنقوم احد مزيد من الوقت تجعل الأرنب. وهناك لدينا 10 لقطة مرة أخرى. حسنا. أي وقت نظرا لأنك وprocedure-- نعم. SPEAKER 33: لدي a-- أنا مرتبك. يمكنك العودة إلى رمز؟ BRIAN SCASSELLATI: نعم. SPEAKER 33: لذا، عندما كتب النموذج الخاص بك، وحجة لك قد أسمته كان يسمى howMany؟ ولكن، below-- BRIAN SCASSELLATI: أوه نعم. SPEAKER 33: --called لهم شيئا مختلفة، وأنا لا أفهم. BRIAN SCASSELLATI: لماذا هم مختلفة. لذلك هذا هو السؤال الكبير. لذا فإن السؤال هو، ما يصل هنا، كتبت howMany، والأسفل، كتبت howManyDots. والسبب هو أن تصل في النموذج الخاص بك، انها في الواقع لا تولي اهتماما إلى الأسماء التي أنك تضع في. كل ما يهتم حقا هو أنه صحيح. أنه يريد أن يعرف شكل ما أنك تضع في. الآن stylistically-- oops-- ما ينبغي لي لا، وأود أن جعل هذه المباراة. حسنا. لأن ذلك سوف يبقيه السهل بالنسبة لي أن تذكر. ولكن هذا كان خطأي نعم. المتكلمين (34): وهكذا ل نموذج للعمل، فقط كتابة هذا الخط، كتابة النموذج، يسمح أن وظيفة التي تأتي الحق دون أن يذهب إلى نهاية واسترداد ما يعني ذلك؟ BRIAN SCASSELLATI: ماذا يعني عندما يذهب مترجم، من خلال وغني من أعلى التعليمات البرمجية الخاصة بك إلى أسفل. وما هو هذا النموذج، هو في الأساس الوعد. تقول، هناك سيكون وظيفة محددة في مكان ما. انها سوف تكون دعا printDots. وانها سوف تأخذ وسيطة واحدة هذا سوف يكون عدد صحيح وانها سوف تعود لا شيء، نوع باطلة. حسنا. أعدكم أنه سيكون يعرف مكان ما على الطريق. لكن في أي وقت ترى ذلك، كما تذهب إلى أسفل من خلال ما تبقى من بلدي الوظيفة الرئيسية، أريد لك لعلاج ذلك بوصفها وظيفة التي تأخذ المدخلات صحيح واحد. وحتى عندما يذهب مترجم أسفل من خلال هذا، فإنه يرى أن الوعد. وعندما يحصل إلى أسفل، استمر على هذه الحال، وتبقي على الذهاب، يجدها أول مرة يذكر printDots. ويقول: أوه، كنت تعطي لي هذا ي. من ي عدد صحيح. كذلك كنت وعدت لي من شأنه أن ان يكون عدد صحيح وهذا صحيح. وهذا موافق. ثم أخيرا، بانخفاض في الجزء السفلي جدا، قبل أن نصل الى نهاية من بلدي ملف، وأنا جعل جيدة على بوعدي ويمكنني تحديد ذلك. موافق؟ SPEAKER 35: لذا، فإنه saves-- لل البرنامج سوف يوفر مساحات فارغة أنه يعود ويملأ في نهاية المطاف؟ BRIAN SCASSELLATI: انها ليست حول تخصيص الذاكرة. انها في الواقع مجرد حول ما نوع أنك تتوقع أن ترى. يجب أن هذا الشيء يكون واحد حجة، أو خمسة الحجج؟ يجب أن يكون ذلك الأعداد الصحيحة تكون نظرا لذلك، أو السلاسل؟ هذا هو كل ما يتطلع القيام به هو للتحقق، أنت إعطائي الحق في نوع من الجدل. موافق؟ حسنا. اسمحوا لي أن أترككم مع الشيء الآخر للنظر في. الفن ASCII ليس هو نموذج رائع الرسوم المتحركة كما هو اليوم. ولكن بعض الناس بالطبع تأخذ الأمور وهم دفعها إلى أقصى أبعادها. هذا هو، كما أثبتت ديفيد في محاضرة، وقطعة من التعليمات البرمجية ما يجب عليك تحت أي ظرف من الظروف محاولة لتكرار أنفسكم. لأنه أمر فظيع أسلوبيا. في الواقع، وأنها مصممة لتكون من الصعب ممكن للقراءة. حسنا. لذلك، على أن تفعل مرة أخرى، دعونا تكبير هنا. انا ذاهب للذهاب الآن، والدليل التغيير. انا ذاهب لترتفع واحدة مستوى، والعودة إلى بلدي مساحة العمل. أنا ثم تغيير الدليل إلى هذا الدليل الآخر الذي قمت بإنشائه. وهذا هو الدولية غموض C برمجة المسابقة. وسائل التعتيم صعبة ممكن أن نفهم. لذا يرجى، لا يكون خائفا إذا نظرتم في هذه وتذهب، وأنا لا يمكن قراءة ذلك. هذا هو بيت القصيد من ذلك. موافق؟ ولكن، لدينا هذا البرنامج الرائع الذي أنا سوف ننظر في فقط عن طريق كتابة أكثر من ذلك. ودعونا نرى ما اذا كان يمكنني تصغير فقط قليلا، حتى تتمكن من رؤيته وهذا هو البرنامج. الكشف عن اسمه ان endo.c. ويبدو أن هذا دلو مع النوع من الرسائل F-L-U-I-D في ذلك. هذا هو في الواقع برنامج. الذي كتبت عليه في أكثر غموضا الطريقة التي يمكن للمؤلفين ربما أكتبه. ولكن هذا جزء صغير رائع أن يولد نموذجا للديناميكا الموائع. وحتى ونحن في طريقنا لإعطاء هذا النموذج مدخلا أن يبدو مثل هذا، ل staired مجموعة من حاويات مع بعض السوائل، وبعض السائل، في أعلى. ونحن سوف يكون ذلك محاكاة ما يحدث له. لذلك سأتصل تلك الوظيفة، إندو. وسأعطيك أن ملف الإدخال أنني دينا. وهناك لدينا مثال من الفن ASCII. A محاكاة ديناميكية السوائل الكاملة تشغيل في غضون بضعة أسطر من التعليمات البرمجية. الآن ما هو الواقع حقا مذهلة حول هذا البرنامج الصغير هو أنني أريد أن يتوقف ذلك الآن، لذلك أنا ذاهب إلى استخدام ما الأمر؟ الحضور: مراقبة-C. BRIAN SCASSELLATI: مراقبة-C. حسنا. ولذا فإنني سوف تستخدم تحكم-C. C وهذا سوف وقفه. سوف مسح مرة أخرى. والآن انا ذاهب الى استدعاء البرنامج، تنفيذ البرنامج، باستخدام نفسها كإدخال. وسنرى ديناميكية السوائل محاكاة لذوبانها. حسنا. من فضلك لا تدع هذا البرنامج أن يكون الشيء الذي يخلط بين لك. انها مجرد حتى نتمكن من وضع حد ل شيء رائع ومثير للاهتمام. حسنا. حظا سعيدا مع مجموعات مشكلتك. سنكون سعداء للرد الأسئلة بعد انتهاء اليوم الدراسي. شكرا جزيلا، والرجال.