[Powered by Google Translate] DAVID J. مالان: كل الحق، وهذا هو CS50، وهذا هو
بدء من الأسبوع الثاني.
شكرا لك.
دعونا نبدأ هنا مع مكالمة هاتفية.
أنا على وشك أن طلب 617-CS50-BUG.
CS50: هذا هو CS50.
في حياة طفل المكوك، اضغط 1.
للبدء من جديد، اضغط 9.
DAVID J. مالان: حتى أنه قال في حياة طفل المكوك، اضغط 1.
لذلك نحن في طريقنا للضغط 1.
CS50: ما هو أصلك؟
لرباعية، اضغط 1.
ماثر، اضغط 2.
بويلستون، اضغط 3.
لامونت، اضغط 4.
م قاعة، اضغط 5.
للبدء من جديد، اضغط 0.
DAVID J. مالان: سنقوم اضغط 1 لرباعية.
CS50: المكوك التالي يترك في هذه اللحظة بالذات PM 1:10، و
ثم في الساعة 1:20، 1:30 PM، 1:40.
هذا هو CS50.
>> DAVID J. مالان: ولهذا فإن صوت CS50 ل.
وانها مثال على أنواع المشاريع النهائية، ل
سبيل المثال، يمكنك قضم نحو
نهاية الفصل الدراسي.
على سبيل المثال، أن shuttleboy.cs50.net موجود -
في الواقع مشروع التي كتبت الأولى بعد أخذ CS51
مرة عندما كنت في المرحلة الجامعية.
وهنا كان الإلهام في ذلك الوقت، كان كل ما كان
كان حافلات مكوكية طباعة الجداول الزمنية، وهناك لا
فكرة تبحث الامور على الانترنت.
ولذا فإنني نوع من حمامة في واحدة نهاية الأسبوع، من خلال سكب
طباعة الجدول الزمني، واستدار إلى برنامج كمبيوتر.
في ذلك الوقت، حدث في برنامج كمبيوتر لتكون مكتوبة
في C. وفعلا قمت بتشغيل من قبل فتى المكوك في كتابة
مطالبة امض مثل كنا نقوم به حتى الآن.
لكن على مر السنين، انها تطورت في لحظة
الرسائل بوت.
انها تطورت في الآونة الأخيرة إلى هذا الموقع، إلى
SMS المستندة إلى أداة، وكذلك في هذه الأداة صوت مقرا لها.
وهذا هو التلميح في أنواع الأشياء التي يمكنك
القيام به لنفسك في نهاية الفصل الدراسي لل.
>> على سبيل المثال، هناك، من إصدار SMS بوي المكوك يحدث
للعمل على النحو التالي.
إذا، على الهاتف الخليوي الخاص بك، يمكنك إرسال رسالة نصية إلى 41411 و
ثم أرسل sboy رمز خاص، خدمة نقل مكوكية من حياة طفل،
A B تليها، وعند A هو الأصل وB هو
الوجهة -
على سبيل المثال، بويلستون الفضاء رباعي -
ما يجب أن نعود في غضون ثوان قليلة هو نص
رسالة من فتى المكوك عندما أقول لك بالضبط
المكوكات القليلة المقبلة هي، من تلك النقطة A التي سوف
نقطة B.
وهذا هو مثال أكثر من عام ما يعرف
باستخدام API.
>> هكذا على سبيل المثال، وهذا هو shuttleboy.cs50.net هنا فقط، في
الفعلية على شبكة الإنترنت تجسد هذا.
ولكن البيانات التي تؤكد هذه وغيرها من التطبيقات التي CS50
ويتعرض كل وضعت للجميع هنا في شكل
واجهات برمجة التطبيقات واجهات برمجة التطبيقات.
وهذا هو مجرد وسيلة أخرى للقول أن الناس تحب ونحن على
وقد قضى شبكة الإنترنت وغيرها خلق بعض الوقت
البرامج التي يمكنك استخدامها من أجل انتزاع البيانات من ولنا
ثم بناء التطبيقات الخاصة بك على رأس
لذلك مجموعة البيانات.
هكذا على سبيل المثال، هذا API بوي الصفحة المكوك هنا، والتي
يحدث أن تكون في دليل CS50، أساسا وثائق
كيف يمكنك أن تذهب نحو طرح CS50 خوادم للبيانات.
على سبيل المثال، إذا كنت على دراية ملفات CSV، فاصلة
فصل القيم، وهذه هي مجرد نوع من سريعة وقذرة
التفوق مثل ملفات.
لذلك يمكنك أن تطلب بوي المكوك لكافة البيانات على كل من
المنازل وإحداثيات GPS الخاصة بهم، وسوف تحصل على
مرة أخرى، أساسا، جدول من هذا القبيل أن
يمكنك أن تقرأ بعد ذلك في برنامج خاص بك ومن ثم
توليد النتائج، مثل المكوك نفسه بوي
يحدث أن تفعل.
بالنسبة لأولئك أكثر دراية، تمثيل البيانات أكثر حداثة
وتشمل JSON، وجافا سكريبت تدوين كائن.
سوف شيء يعود لكم نحو
نهاية الفصل الدراسي.
>> ولكن مرة أخرى، وهذا هو مجرد واحدة من العديد من واجهات برمجة التطبيقات الخاصة CS50.
والشيء المثير هو الآن، في هذه الأيام، والفيسبوك
تويتر وغوغل والى حد كبير كل موقع من شعبية
هناك نوعا من API، وهو ما يعني إذا كنت تقرأ
الوثائق على موقعه على الانترنت، قمت بالتسجيل للحصول على
حساب، يمكنك البدء ثم كتابة البرمجيات على رأس
كل الوسائل أو البيانات التي توفر الشركة هناك.
واحد حتى من الزملاء لدينا التدريس الخاصة بضع سنوات إلى الوراء
كتب نسخة ماك من هذا.
لذلك على الرابط بعنوان ماك هنا في أعلى اليسار، يمكنك فعلا
تحميل عنصر واجهة مستخدم نظام التشغيل Mac OS الذي يعمل على ماك الخاص بك أن تفعل
نفس أنواع الأشياء.
لذلك فمن كل شيء عن بناء على أعلى من مجموعات البيانات مثل هذه.
ولكن أكثر على ذلك في نهاية الفصل الدراسي.
>> لذلك دعونا الغوص في سريعة حقيقية لخلل، لمجرد الحصول على نوع من
تحسنت الامور اليوم، وأعتقد مرة أخرى على بعض
بحثنا في الامور الاسبوع الماضي.
على وجه الخصوص، اسمحوا لي أن تمضي قدما وسحب ما يصل، ويقول،
هذا المثال هنا.
Buggy1.c، وهذا متاح على الموقع الإلكتروني للدورة وإذا كنت
ترغب في تحميل البرنامج وكزة حول نفسك.
ولكن دعونا هنا في تكبير هذا البرنامج القصير إلى حد ما، وفقط
خلاصة بسرعة فائقة بعض اللبنات الأساسية التي
نحن حقا سوف نبدأ اتخاذ أمرا مفروغا منه.
>> حتى الاشياء الزرقاء، في خطوط من 1 إلى 9، ليست سوى
الكرة اللينة الأسئلة.
لذلك فان هذه التعليقات فقط.
ليس لديهم معنى وظيفية.
ولكنهم التعليقات بمعنى انهم يلاحظ أن
قدم لي، والإنسان، بحيث لنفسي في محاضرة وبعد
محاضرة، أستطيع أن أتذكر فعلا ما هذا البرنامج
لا دون الحاجة إلى قراءة من خلال ذلك سطرا سطرا و
إعادة التاريخ في ذهني.
وعلاوة على ذلك، إذا كنت تسليم هذا البرنامج إلى شخص آخر مثل
لك، انها أكثر وضوحا بالنسبة لك، لأن من مثل هذه التعليقات،
ما البرنامج يفعل فعلا، أو على الأقل ما
من المفترض أن تقوم به لبرنامج.
أم لا فإنه من الصحيح هو مسألة أخرى تماما.
الآن، في C، مع متعدد الخطوط التعليقات، أذكر أنه في خط
واحد هو هنا رمز السحر، / *.
فهذا يعني هنا يأتي بداية لتعليق.
وشيء آخر يهم حتى تصل إلى نهاية فاصل،
وهو * /، عكس ذلك.
وبالتالي فإن حقيقة أن لدي بعض النجوم 80-الغريب هنا من
من اليسار إلى اليمين هو في الحقيقة مجرد التفاصيل الجمالية.
هذا لا معنى له وظيفية.
>> الآن ماذا عن خط 11؟
ماذا تفعل في هذه شروط للشخص العادي؟
ما هذا؟
AUDIENCE: يتضمن هذا المعيار.
DAVID J. مالان: OK، وحسن.
لذلك يتضمن مكتبة stdio.h.
فماذا يعني ذلك؟
حسنا، داخل هذا الملف، stdio.h، هي مجموعة كاملة من
وظيفة الإعلانات -
وهذا هو، التعليمات البرمجية التي كتب شخص آخر.
وخير مثال على وظيفة هذا ما أعلن في
stdio.h هو -
الذي مفضلة من قبل الآن؟
printf ذلك، واحدة من أكثرها شيوعا لاستخدام، وبالتأكيد
في وقت مبكر، من أن المكتبة هي هناك.
إذا أستبعد أن سطر من التعليمات البرمجية، ضجيج سوف يصيح
في وجهي شيئا حول استخدام رمز غير معلنة.
شيء غير معلنة وربما كان الكلمة، وذلك لأن
نحن لم أبلغ ما يبدو المترجم printf
تحب ما لم ندرج هذا الخط.
وأكثر من ذلك وصولا الى الأرض، حقا، ما هذا الخط هو يقول
فتح هذا الملف، stdio.h، أينما كان على الخادم في
القرص الصلب، أو الأقراص الجهاز الثابت، ولصق نسخة-IT
هناك حق في ملفي، ولا اكون
الحاجة إلى القيام بذلك يدويا.
>> الآن، بمجرد ان نحصل عليها هنا الى الأصل، قبل وقت طويل سنبدأ
وبصرف النظر عما إغاظة الباحث وما هو باطل.
لكن في الوقت الراهن، دعونا ننظر في الخطوط الثلاثة
في غضون 15 إلى 17.
هذا أنا هنا كما يدعي عربات التي تجرها الدواب.
السطر 7 في تعليقاتي يقول "يجب طباعة 10
العلامات النجمية ولكن لا. "لماذا لا تتم طباعة هذا، في الواقع،
10 نجوم من هذا القبيل؟
AUDIENCE: [غير مسموع].
DAVID J. مالان: بالضبط.
تلاحظ بحيث بدأنا العد من 0.
وهذا هو في الواقع الاتفاقية في البرمجة و
علوم الحاسب الآلي بشكل عام، بدءا من الاعتماد
من 0 بدلا من 1.
وهذا حقا تستمد فقط من حقيقة أنه، ل
المثال، عندما كان لدينا ثمانية أشخاص حتى على المسرح، عندما
كانوا لا أحد كان رفع أيديهم،
جميع الأصفار على نحو فعال.
ولذا من مجرد نوع من اتفاقية الكمبيوتر بحيث،
لذلك، لتبدأ العد من 0.
إذا كان هذا هو أقل عدد يمكن أن تمثل في ثنائي.
>> حتى هنا لقد بدأنا أنا تهيئة إلى 0.
لقد وضعنا أنا تساوي 0.
ولكن بعد ذلك أنا جعلت هذا الخطأ هنا، قائلا أنا أقل من أو
تساوي 10.
ولكن إذا كنت تعتقد أنه من خلال ذلك، إذا كنت تبدأ عند 0 ثم أذهب
يصل إلى 1، 2، 3، 4، 5، 6، 7، 8، 9، 10، أنا ذاهب إلى الواقع
طباعة من أصل 11 نجوم على الشاشة، لأنني قد ارتفعت
لوتساوي 10.
وبالتالي فإن حل سهل هنا هو ماذا بعد ذلك؟
AUDIENCE: [غير مسموع].
DAVID J. مالان: مجرد تغيير إلى أقل من.
إذا كنت تريد حقا، هل يمكن أن تفعل ذلك.
ولكن بصفة عامة، انها عبس التي عليها.
وابتداء ذلك لحساب من 0 هو مجرد شيء يجب أن
التعود على عادة.
الآن، ماذا عن هذا كله بناء في حد ذاته؟
هذا السطر 15 demarks حلقة For.
لذلك ليست وظيفة.
انها مجرد بيان.
انها حلقات بناء، كما رأينا في سكراتش.
ولها ثلاثة أجزاء.
تلاحظ أن هناك جزء أول من
يسار الفاصلة المنقوطة.
هناك في الجزء الأوسط بين الفواصل المنقوطة اثنين.
وبعد ذلك هناك الجزء الأيمن إلى اليمين
من الفاصلة المنقوطة الثانية.
الآن، وأول هذه يفعل ما؟
AUDIENCE: [غير مسموع].
DAVID J. مالان: هناك عودة؟
نعم؟
AUDIENCE: تهيئة.
>> DAVID J. مالان: تهيئة.
فماذا يعني هذا؟
لقد أعلنا متغير يسمى ط.
فإنه من نوع int، لأنني أنا الباحث المحدد.
وأنا تهيئة الأول للقيمة 0.
ذلك ما هذا القول حقا؟
قائلا انها فعالة لجهاز الكمبيوتر يا، أعطني ما يكفي
الذاكرة، ذاكرة الوصول العشوائي بما فيه الكفاية، لتناسب عددا، ومن ثم وضع
عدد 0 في أن قطعة من RAM.
وبوصفها جانبا، وكيف كبيرة هو الباحث عادة، على الأقل داخل
من الجهاز؟
AUDIENCE: 32 بت.
DAVID J. مالان: 32 بت.
بحيث يعني تعطيني 32 بت، والمعروف باسم 4 بايت،
ووضع القيمة 0 في ذلك، والتي من السهل جدا ل
هذا يعني فقط تعيين كافة البتات إلى 0.
>> حتى الآن، والجزء الثاني هنا هو الشرط.
والشرط، وكما يوحي اسمها، هو ما يتم فحص
مرة أخرى ومرة ​​أخرى ومرة ​​أخرى حول ما إذا كان هذا صحيح أو خطأ.
لذلك هذا هو فقط أقول القيام الأسطر التالية من التعليمات البرمجية -
أي 16 خط، لأن هذا هو واحد فقط بادئة
تحت -
طالما أنا أقل من 10.
وبعد كل التكرار من خلال هذه الحلقة، قم بما
incrementation، وهو في هذه الحالة هو أنني + +.
الآن، فإنه لا يجب أن تكون ط + +.
يمكن أن يكون الأول -.
ولكن إذا فعلت ذلك، ما هو السلوك يحدث
أن يكون لهذا البرنامج؟
AUDIENCE: انها ستكون حلقة لا نهائية.
DAVID J. مالان: إنه سيكون نوعا من حلقة لا نهائية،
الا اذا حصلنا على الحظ بعد 2 مليار سلبية أو نحو ذلك.
ربما سوف يلتف حول الأشياء، فقط من خلال طبيعة محدودة
عدد البتات أننا خصصت لكثافة العمليات.
ولكن ومن المؤكد انه سيؤدي إلى تكرار أكثر بكثير من 10 و
بالتأكيد أكثر من 11 مرات هنا.
>> والآن، تماما كما جانبا، أدرك أنني + + وأنا -
هي في الواقع مجرد السكر النحوية.
انها مجرد اختصار لتدوين ما هو أكثر من ذلك بقليل
مكتوب بشكل واضح على النحو التالي:
ط = ط + 1.
هذا هو مطابق لط + +.
أنها مجرد نوع من أجمل يبدو أن أقول إنني + +.
انها أكثر اقتضابا، أكثر قابلية للقراءة.
ولذا فإن معظم الناس أن بدلا من ذلك.
ولكن هذا هو عمليا مطابقة لل
ما رأيناه فقط.
لذلك وباختصار، فإن حل سريع هنا هو فقط أن أقول إنني تكرار
من 0 كل وسيلة تصل إلى أقل من 10.
وبعد ذلك سوف نحصل على 10 نجوم الواقع.
>> لذلك دعونا نحاول ذلك.
اسمحوا لي أن فتح المعبر في الأسفل.
اسمحوا لي أن انتقل إلى الدليل أن هذا هو فيه.
وانا ذاهب لتجميع يدويا مع ضجيج في الوقت الراهن.
وانا ذاهب الى ترجمة هذا كما buggy1.c، أدخل.
والآن buggy1، لماذا لا يوجد مثل هذا الملف أو الدليل
دعا buggy1؟
AUDIENCE: [غير مسموع].
DAVID J. مالان: نعم.
حتى انه دعا فعلا a.out.
أذكر ذلك فقط إذا قمت بتشغيل ضجيج، حيث هو ضجيج
مترجم، وأنت لم تحدد الاسم الذي تريد
تعطي لبرنامجك، انها سوف الافتراضي إلى a.out.
حتى إذا كنت تفعل في الواقع ليرة سورية -
عفوا.
وأنا didn't - قضية الأسود والأبيض بعض
واجهت تم إصلاح.
ولكن اسمحوا لي أن تفعل هذا.
يوجد لدينا a.out على الجانب الأيسر هناك.
لذلك لدينا لتشغيل a.out بدلا من buggy1.
>> لذلك اسمحوا لي نمضي قدما ونفعل ذلك.
/ a.out، أدخل.
وعلى ما يبدو لي لم يفعل ماذا؟
AUDIENCE: حفظ.
DAVID J. مالان: حفظ الملف الخاص بي.
بحيث يتم حلها بسهولة عن طريق ضرب S التحكم، أو الذهاب إلى
ملف، حفظ، كما هو الحال في معظم البرامج.
اسمحوا لي هنا تنخفض، مسح الشاشة، تشغيله مرة أخرى.
ومازال هناك خلل.
ذلك ما يحدث -
AUDIENCE: لم يتم ترجمة.
DAVID J. مالان: آه، جيد.
لم أكن ترجمة عليه.
مثل احمق، أنا أبحث في رمز لمعرفة ما هو الخطأ.
buggy1.c حتى رنة، a.out الآن.
وتفو، المحفوظة.
>> بحيث يبدو قليلا القبيح لأنه ليس هناك خط جديد
في أي مكان في البرنامج.
ولكن مرة أخرى، وهذا مجرد التفاصيل الجمالية.
وعلى الأقل إذا نحن نعول تلك خارج، يجب علينا
نرى الآن 10 نجوم من هذا القبيل.
حسنا، ماذا عن هذا المثال الاحماء الثانية؟
حتى في buggy2، أزعم أن هذا الإصدار أيضا، سيتم طباعة
10 نجوم، واحد في كل سطر.
حتى هذا الوقت، ولدي حرف السطر، فقط لجعل
أجمل الأشياء قليلا.
ولكن بدلا من ذلك ما يمكنني الحصول على هذا.
لذلك اسمحوا لي أن تفعل buggy2.c رنة، أدخل.
الآن انه دعا مرة أخرى a.out.
دخول.
أرى سطر واحد فقط جديد، فقط السطر الأخير جدا جديدة
يتحرك موجه بلدي إلى السطر التالي.
وحتى الآن بوضوح لقد تم طباعة *، ثم سطر جديد،
*، ثم سطر جديد.
ولكن ما هو الخطأ هنا؟
نعم؟
AUDIENCE: [غير مسموع].
>> DAVID J. مالان: بالضبط.
على عكس ذلك بعض اللغات، مثل بيثون، حيث المسافة البادئة
في الواقع معنى وظيفية، في
اللغة مثل C -
كما سنرى، PHP، جافا سكريبت -
المسافة البادئة هو في الحقيقة مجرد لفائدة البشر.
وبالتالي فإن حقيقة أن كنت بادئة السطر 16 و 17 يبدو رائعا،
ولكن هذا لا معنى له هنا الوظيفية.
إذا كنت أريد كلا الخطين لتنفيذ كجزء من ل
حلقة، ثم يجب أن أرفق لهم في الأقواس المتعرجة من قبل ذلك.
يمكنك قص الزاوية الوحيدة التي وحذفت الأقواس المتعرجة إذا
ما هي القضية؟
AUDIENCE: سطر واحد فقط.
DAVID J. مالان: سطر واحد فقط.
ذلك أن مجرد نوع من لطيفة نوعا من التفصيل بناء الجملة بحيث
لا تضيعوا الوقت في كتابة ثلاثة خطوط، اثنان منها
الأقواس المتعرجة، لمجرد كتابة سطر واحد من التعليمات البرمجية.
ولكن إذا كان لديك اثنين أو أكثر من خطوط، ونحن
تحتاج بالفعل للقيام بذلك.
>> لذلك اسمحوا لي الآن حفظ هذا.
اسمحوا لي أن تمضي قدما وضجيج إعادة تشغيل.
ثم اسمحوا لي أن أعد تشغيل a.out، والآن يمكنني الحصول على واحد منهم في كل سطر.
الآن، a.out مرة أخرى نوع من اسم البكم للبرنامج.
كيف يمكنني معرفة ضجيج في الواقع لإعطاء اسم ملف البيانات
وهذا أكثر سهولة، مثل buggy2 نفسها؟
قليلا أكثر وضوحا؟
AUDIENCE: [غير مسموع].
DAVID J. مالان: OK، حتى أتمكن من اتخاذ فعلا جدا
سهل الاستعمال واختصار جعل مجرد كتابة buggy2.
أنا لا تحدده. ج في هذه الحالة، وضرب أدخل.
وجعل ما يفعله هو أنه يجمع buggy2.c بالنسبة لي من قبل
طرح ضجيج للقيام بذلك.
على وجه التحديد، فإنه يدعو ضجيج، ضجيج تشغيله باستخدام طريقة أكثر
وسائط سطر الأوامر أو التبديل مما كنت تحتاج بالفعل.
في الوقت المناسب، سوف نعود إلى ما كل هذه مختلف
التعبير يعني الواصلة خفي.
لكن في الوقت الراهن، وهذا مجرد توفير البيانات عناء
الحاجة إلى تذكر والحاجة إلى كتابة من كل تلك
الواصلة التعبيرات المختلفة.
وعقب منه هو في نهاية المطاف
والآن بعد أن لدي buggy2.
إذا كنت ترغب في القيام بذلك يدويا، على الرغم من أنني
يمكن القيام بذلك بدلا -
رنة-O buggy2 ثم buggy2.c.
وسوف تعطي لي وبالمثل ملف يسمى buggy2.
>> لذلك باختصار، ضجيج هو مترجم.
جعل هو مجرد أداة سهلة الاستخدام التي سنكون باستخدام أكثر
وأكثر من ذلك، لأنه يبدأ لمجرد
تبسيط الأمور بالنسبة لنا.
ونعود 0، أخيرا.
في الوقت الحالي، لمجرد، ولكن سنبدأ هذا الجزء إغاظة
واليوم يوم الاربعاء.
أي أسئلة على أي من هذه؟
نعم؟
AUDIENCE: [غير مسموع]
LS تهمك هناك؟
DAVID J. مالان: OK.
عندما كنت ليرة سورية المكتوبة تهمك، التي كان لي القيام ببعض السحر
وراء الكواليس لإصلاح الخلل.
لقد نسيت، مثل كنا نقول الكثير منكم على
ولوحات المناقشات، القيام -
سوف نفعل ذلك الآن - سودو يم ص التحديث appliance50.
يصيح، ان هذا الحق المنصوص.
وبالتالي فإن الأجهزة مثل نظام التشغيل.
انها تعمل نظام التشغيل هذا يسمى فيدورا.
والآن بسبب بطء الاتصال بإنترنت، لقد
مسقي حقا.
تشغيل التحديث سودو حتى يم، ونحن نقول لك أن تفعل في
مجموعة مشكلة، هو مثل أساسا تشغيل التحديثات التلقائية
في Mac OS أو Windows.
والسبب في تشغيل هذا في بداية جدا من
المشكلة هي مجموعة لأنه عندما أنشأنا الأجهزة، I
عابث، وأنا قدمت عرضا عن برامج البحث الخاصة بك
أسود على شاشة سوداء، وهذا هو السبب كنت لا ترى لهم
بشكل افتراضي.
ولكن أحدث إصدار من حل هذه الأجهزة.
وسوف أقوم بإصلاح أنه خلال فترة انقطاع مرة واحدة لدي الإنترنت
الاتصال.
>> وبالتالي فإن الاسعار يخفي فقط خطأي، تكتم جدا،
على ما يبدو.
أسئلة أخرى؟
نعم؟
AUDIENCE: أين جعل تأتي من؟
[غير مسموع]
DAVID J. مالان: سؤال جيد.
أين جعل تأتي من؟
وهو عبارة عن برنامج لينكس التي كانت موجودة لسنوات عديدة وطويلة
قبل CS50.
وأنه يأتي مع نظام التشغيل مثل فيدورا.
لا يأتي ذلك من مكتبة CS50.
في الواقع، فإن الشيء الوحيد الذي يأتي من مكتبة CS50
حتى الآن، التي شاهدناها، هي GetString، GetInt، وكلها
احصل على وظائف تلك، وسلسلة كلمة واحدة، وبعض
ما، كلمة BOOL.
ولكن سنقوم ندف أنه بغض النظر أننا عندما يغوص في CS50
الأجهزة نفسها.
>> لذلك نعم، سؤال واحد هنا.
AUDIENCE: عند تقديم وثم قال عربات التي تجرها الدواب، كيف
تعرف الكمبيوتر [غير مسموع]؟
DAVID J. مالان: سؤال جيد.
لذلك عندما قمت بتشغيل فقط جعل buggy1 أو جعل buggy2، كيف
لا تجعل تعلم؟
حتى افتراضيا، إذا قمت بكتابة جعل buggy1، وجعل بالبحث عن
دعا buggy1.c الملف.
وبعد ذلك ينفذ الأوامر المناسبة ضجيج،
وبالتالي تجاوز ملف الإخراج الافتراضي دعا a.out.
في الواقع، إذا نظرنا إلى ما تقدم، ما -
دعونا إنهاء هذا.
إذا نظرنا إلى ما كان يقوم به في الواقع جعل، وجعل buggy2،
انها بالفعل حتى الآن.
لذلك اسمحوا لي إزالة الأمر RM، على
برنامج كتبت من قبل.
كتابة Y-E-S لتأكيد أن أريد لإزالته.
إذا كنت تفعل الآن جعل، لاحظ أن في هذا الخط طويل جدا،
هناك هذا آخر شيء هنا، buggy2-O.
كل ذلك يجعل تفعل تمر هذه الحجة، إذا جاز التعبير، ل
رنة، لدرجة أنني لا يجب أن اكتبه بنفسي.
>> كل الحق، لذلك بضع السريع الإدارية
الإعلانات.
حتى لأقسام، والتي بدأت رسميا هذا المقبلة
الأحد، فأنت تريد دائما لتحقيق ذلك، إذا
لديك واحدة، جهاز كمبيوتر محمول.
إذا لم يكن لديك جهاز كمبيوتر محمول، لا يمد يده لي من قبل
إسقاط لي رسالة بالبريد الالكتروني.
وسنقوم معرفة سير العمل.
ما عموما ستجد في القسم هو انهم جزء
المفاهيمي، كجزء التدريب العملي على.
سنستخدم تحديدا قسم من الأسئلة، وهي جزء من
هذا الأسبوع مجموعة المشكلة، على المشي من خلال بعض
المفاهيمي المواد من المحاضرة.
وهذا كل ما في المجموعة المشكلة الحالية.
وسنقوم أيضا الغوص في بعض التدريب العملي على الأنشطة، وأحيانا
سوف تكون هناك حاجة منها لتقديمها، وأحيانا من
والتي سوف لا.
على سبيل المثال، هذا الأسبوع الأول، وكنت يعني انهم فقط باعتبارها
الاحماء ممارسة الرياضة.
وسوف تجد أن هذه المشاكل هي في الواقع تماما.
كنت من المفترض أن تكون صغيرة إلى حد ما، ولكن ليس بالضرورة
برامج تافهة في الكتابة، التي ليست بالضرورة
جيد الفرص المثيرة في حد ذاتها ولكنها ل
ممارسة مع بناء الجملة، مع وظائف جديدة، في راحة من
القسم حيث لديك عدد قليل من زملائك وتقديم
كذلك TF الخاص بك.
>> وماذا سنفعل مع مرور الوقت هو استخدام أداة تسمى CS50 المسافات،
حيث بدلا من مجرد استخدام الأجهزة CS50، فسوف
بدلا من الذهاب إلى صفحة ويب في مستعرض، حيث عليك أن تكون قادرا
لكتابة التعليمات البرمجية في إطار مستعرض خلال الباب.
ثم إذا كنت تختار في، يمكن زملائك التدريس ثم عرض
كل ما هو كنت تكتب على الشاشة في المتصفح
نافذة حتى في وسط الصف، سواء مجهول أو
علنا، بحيث أنه غير قادر على المشي بعد ذلك من خلال مع
زملائك ما فعلتم حسنا، ماذا يمكنك أن تفعل جيدا.
ومرة أخرى، يمكن أن تطمئن كل هذا لطيف مجهولة المصدر.
ولكن سوف يكون فرصة لطيفة لأكثر من ذلك بكثير
التفاعل من شيء من هذا القبيل يسمح محاضرة.
>> في غضون ذلك، سيكون لدينا هذه الأمور تسمى سوبر
أقسام، والتي هي اختيارية ولكنها مفتوحة للجميع في
الطبقة، بحيث يمكنك القيام بذلك بشكل جماعي أكثر لل
تعيين مشكلة واحدة.
وهنا الجدول الزمني.
تم نشر هذا أيضا على الصفحة الرئيسية في cs50.net.
لاحظت أن هناك سوف يكون القراصنة محددة
1 غدا بعد الظهر.
وسوف نقوم الفيلم واحدا اليوم وغدا واحدة وبنشر هذه
على الانترنت في غضون 24 ساعة.
حتى إذا كنت لا يمكن أن تجعل أي من هذه الأوقات، لا داعي للقلق.
ومرة أخرى، والجدول الزمني غير متواجد حاليا في cs50.net.
>> من حيث تقطيع نفسه، كان ينبغي أن حصلت لك
إرسال تعليمات لك أن تذهب إلى الصفحة الرئيسية للدورة لإيجاد
من القسم الخاص بك.
إذا كانت الحياة قد تغيرت وتحتاج إلى تغيير القسم الخاص بك،
لا مشكلة.
العودة إلى هذا العنوان نفسه، cs50.net/section، المفرد،
وعليك ملء النموذج مماثلة بحيث يمكنك
ثم يقدم لنا تفضيلاتك.
وسنتابع مع نهاية الأسبوع، كما أن ما في وسعنا
استيعاب.
في الأسبوع الماضي، أن أذكر اقترحنا استخدام CS50 ناقش،
في سياق أداة المناقشة، في المحاضرة.
لذلك كان علينا أن 40 سؤالا وطلب و
أجاب خلال المحاضرة.
هكذا بدا الأمر للعمل بشكل جيد، لذلك سوف نواصل
محاولة للقيام بذلك.
إذا، خلال المحاضرة، كنت لا تشعر بالراحة فقط تربية
يدك، لا مشكلة.
انتقل إلى cs50.net/discuss، بعد هناك، واحدة من تعليمنا
سوف الزملاء إما إلكترونيا أو الإجابة عليه من رفع
ومن ناحية نيابة عنك مجهول أن يطلب، تبعا
على طبيعة المسألة.
ومن حيث ردود الفعل، وسوف تكون عادة psets
عاد في غضون أسبوع.
لأنه يأخذ بعض الوقت لأقسام لتحقيق
التوازن، فإن pset الأولى، 0 و 1، يكون قليلا
كما تأخر تهدأ الأمور.
ولكن لا تنزعج لذلك في الأسابيع المقبلة.
>> كل الحق، لذلك اسمحوا لي أن أطرح على بلدي خطيرة
صوت لمجرد لحظة.
لذلك هذا هو الواقع للاهتمام أن يكون المناخ
بعد هذه المناقشة، مع ما كل الأشياء الأخرى
يجري على الحرم الجامعي بها ذات الصلة.
ولكن بالتأكيد CS50 تمت زيارتها تاريخها من هذا خاصة
الموضوع، بقدر ما في كل عام، وهذا بالطبع، بالنسبة للعديد من
سنوات، لوحات الإعلان ما يقرب من 3٪ من الدرجة.
هذه آخر سنة 2011، CS50 الإعلان، واستقل 35 طالبا.
هذه ليست، كما أعتقد، بسبب عدم وضوح.
ندرك أن المنهج في الدورة، وهناك صفحة من
بيان يشرح فيها الخطوط.
ويتكرر ذلك البيان نفسه على كل واحد من
المشكلة يضع على صفحة واحدة.
>> لذلك أنا أذكر هذا اليوم فقط حقا لجعل
وإذ تضع في اعتبارها هذا الناس.
ولقد حاولنا أشياء مختلفة.
وعلى ما اعتقد اننا سنفعل اليوم تأخذ فقط لحظة ل
ننظر في الواقع في بعض الحالات السابقة التي ظهرت.
بدلا من إبقاء هذه الأسرار القذرة اقل، في الواقع
نشير إلى ما قد قمت به و الطلاب كيف أننا الكشف عن
وذلك حقا ما هو الدافع الشامل لل
حتى بعد هذه المحادثة.
حتى مع ذلك، فإن الخط هو أساسا هذا -
في المنهج، فنحن نرحب بك، وتشجع لكم، ل
الحديث مع زملاء الدراسة.
هذا هو الغرض الأساسي من وجود هذه التعاونية
ساعات العمل في أننبرغ وتشجيع الناس لل
المشروع النهائي للعمل معا.
ولكن ويوجه السطر عند يحين وقت الكتابة فعلا
لديك الحل النهائي.
يتحدث باللغة الإنجليزية، ودفع غرامة تماما، متحدثا في رمز زائف،
غرامة تماما.
البريد الإلكتروني الخاص بك زميل pset، والسماح لهم نظرة على
الشاشة كما أيدي تواصل الكتابة،
على الخط أيضا.
لا ننظر إلى المنهج لخطوط خاصة.
>> ولكن فقط لرسم صورة لكيفية هذا هو للأسف
الواقع، ندرك أن هناك العديد من المواقع الى ان هناك
لها حلول من هذه الفئة وفئات أخرى كثيرة.
حقيقة أن كنت أو نحو 3٪ من تعلم أن هذا موجود
يعني أننا نعلم أن هذا موجود.
حقيقة أن هناك العديد من المواقع مثل هذا المكان الذي
يمكن دفع مبلغ من المال للقيام بالفعل مجموعات مشكلتك - وهذا كان
حالة الفعلية التي خرجت العام الماضي.
هذا هو موقع على الانترنت يسمى odesk.com.
وكان تيم اسم الشخص الذي كان هنا نشرها على
طلب هذا الموقع وشخص للقيام pset له 7 في
هذه الحالة بالذات.
حسنا، odesk.com جدا، وقادر على جوجل، ونحن أيضا
جيدة جدا في غوغلينغ.
هنا، أيضا، هناك مواقع - وهذا واحد من بدلا
الفظيعة، بصراحة.
[ضحك]
DAVID J. مالان: الطريف عن هذا الموقع هو إذا
تقرأ عن الصفحة، يتحدثون عن الشركات الخاصة
الثقافة وكيف هو خدمة العملاء على رقم واحد
الأولوية، للتأكد من أن المهام الخاصة بك الحصول على
تحولت في الوقت المحدد.
>> ولكن بكل جدية، ومرة ​​أخرى، فإن حقيقة أن هذه المواقع
موجودة، ندرك أننا أيضا ندرك
هذه الأنواع من المواقع.
واعطيكم فكرة عما يشكل هذا عموما
يأخذ، ونحن عموما لم يكن لديك فضائح كبيرة حيث الناس
وتتعاون على أي نوع من نطاق واسع، وإنما
انها هذه اللحظات وقت متأخر من الليل من الضعف، حيث لديك حتى
الكثير لتفعله، انها 4:00، كنت منهكة لك، وأنت
اعتقد لنفسك، حسنا، اسمحوا لي أن مجرد إلقاء نظرة على بلدي
الحجرة أو رمز صديقي أو ما شابه ذلك.
وتشمل مظاهر هذا للأسف طالب
A شيء من هذا القبيل وتقديم الطالب تقديم B
شيء من هذا القبيل، والتي بالتأكيد، في كمبيوتر
علوم الصف، هو ملحوظ من السهل للعلماء الكمبيوتر
للكشف عن البرمجيات مع.
هذا هو آخر نموذج المشتركة، حيث كنت نوع من
تعمل جنبا إلى جنب مع شخص ما، ربما في الحديث
الإنجليزية، على ما يرام، شبة الكود.
ولكن بعد ذلك يأتي الوقت لتقديم الواقع، وعلى psets
مجرد الحصول على تبادل عبر البريد الإلكتروني أو دروببوإكس أو ما شابه ذلك.
ولكن في محاولة لجعله أقل وضوحا أن هذا هو
ما حدث، ثم وهذا هو ما تقدم.
وهذا أيضا لا يصل رحلة مكتوبة جيدا قطعة من
البرمجيات مثل لدينا للكشف عن الحقيقة
هذه الأنواع من الأشياء.
وبالفعل ما نقوم به هو برنامج التشغيل الذي يقارن كل من
هذا العام المقدمة ضد كل من في العام الماضي
التقارير، ضد كل شيء وجدنا على
الإنترنت، ضد كل موقع العمل هناك.
كل شيء الآلي للغاية.
وهكذا نفعل ذلك حقا في الإنصاف كبيرة على 97٪ من
تعمل حقا حميرهم قبالة في هذا وأخرى في
الطبقات، ووضع في كل ذلك الجهد حتى أن العمل
في نهاية المطاف هو ما تقدمه بنفسها.
ويمكنني أن تستمر لالأعمار.
>> هذه ليست سوى عدد قليل من الحالات في العام الماضي.
قدم عدد قليل من الطلاب لهذه الملفات مماثل pset 2،
pset 3، pset 4، pset 5، pset 6، pset 9.
في هذه الحالة، كان هذا الاختبار 0 و في العام الماضي، حيث اثنين
قدم الطلاب مطابق هذه الجملة من بين العديد من
الآخرين "، وطلب من نوع -" نقطة، نقطة، نقطة.
وحتى مع ذلك في فئة (600) لم نكتشف هذا
على قدم مسابقات.
لذلك باختصار، هذا - بصراحة، أنا أكره وجود هذا النوع من
المحادثة - ولكن هذا هو حقا جهد متعمد
هذا العام في محاولة لخفض هذا العدد.
لأنه حتى وإن نقول هذه الأنواع من الأشياء كل
العام، وأعتقد أن واقع بعد أن سكن عليه لعدد قليل
المزيد من الثواني من المعتاد والواقع مشيرا للتو
أن ما قد يبدو مثل إيه، وليس مثل هذه الصفقة الكبيرة، على الأقل
بذاكرتي إلى هذه اللحظة بالذات، سواء في الإنصاف لل
لنفسك وزملائك هنا.
إذا كان الأمر كذلك لديك أي أسئلة من أي وقت مضى إلى حيث خط
هو، يرجى التوصل للتو بالنسبة لي شخصيا.
ولكن كان الجواب دائما، وشدد تماما على
آخر دقيقة، نقدا في يوم واحد في وقت متأخر.
أو إذا انها مسألة عدم وجود أي يوما في وقت متأخر،
بصراحة، البريد الالكتروني لي شخصيا.
سنقوم معرفة شيء ما.
من فضلك لا تضع وقتك هنا في جامعة هارفارد للخطر.
>> الآن، أعتقد أننا يجب التخفيف من الحالة المزاجية، لذلك أنا
كما شملت هذه الشريحة التالية.
[ضحك]
DAVID J. مالان: هذا الموقع كان كبيرا.
أنا فعلا حصلت قليلا يصرف.
هناك هذا واحد.
وكان هذا واحد ثم مدهشة.
حسنا، أعتقد ذلك لأنه في ساعة متأخرة من ليلة هريرة عند اتخاذ
تلك القرارات.
كل الحق، لذا فإن العودة إلى الأشياء أكثر متعة وأقل خطورة، مثل
الظروف.
>> كل الحق، وتحدث بإيجاز عن ذلك نحن هذه.
هذا هو الشيء الذي ربما مألوفة تماما عن
عالم الصفر.
وفي العالم من الصفر، لدينا هذه الحاجة في بعض الأحيان إلى
الذهاب جعل الشوك في الطريق.
القيام إما هذا أو ذاك أو هذا الشيء الآخر هنا.
وعندما نريد القيام بذلك، يمكننا استخدام، في C الآن، هذا إذا
بناء آخر.
ثم لدينا هنا التعبيرات المنطقية.
على سبيل المثال، التعبيرات المنطقية هنا، يمكننا OR
بعضهم البعض، بمعنى أن لدينا هذا الشرط OR
هذا الشرط.
ويمكننا معا، بمعنى أننا نريد أن
تحقق هذا الشرط والشرط الذي.
وهنا لدينا الآن بيان التبديل، وهو ليس كذلك
بناء جملة مماثلة لتلك الأنواع من الظروف، ولكنه
يتيح لنا أن نفعل ما يعادل إذا، الا اذا، الا اذا، آخر
إذا، وما شابه ذلك من تعداد ببساطة كل حالة على حدة
كل حالة على حدة من قبل.
حتى رأينا تلك آخر مرة.
وبدأت بعد ذلك نحن تمس أشياء مثل الحلقات.
رأينا واحد من هذه فقط قبل لحظة.
ولكن هناك حلقات أخرى هذه التركيبات.
>> على سبيل المثال، هذا واحد هنا.
ذلك في حين أن (شرط)، هل هذا الشيء مرارا وتكرارا.
بشكل أساسي، ما يبدو أن يكون مختلفا بين هذه
لحلقة وهذه الحلقة بينما هنا؟
هذه لحلقة وحلقة هذا الوقت.
نعم؟
ما هذا؟
AUDIENCE: [غير مسموع].
DAVID J. مالان: جيد.
ذلك في حين أنه في حالة لحلقة، وهناك بوضوح
أكثر بناء الجملة.
هناك هذا التهيئة، وهناك هذا التحديث.
في حلقة من الوقت، هناك فقط هذا الشرط.
لذلك يبدو أنه من انخفاضها قليلا مقابل ل
حلقة، وهو ما يعني إذا كنا نريد أن يكون المتغيرات ونحن نريد
أن يكون incrementation، لدينا فعلا
القيام بذلك الشيء أنفسنا.
>> لذلك اسمحوا لي المضي قدما وفتح gedit.
اسمحوا لي أن التحول إلى الجهاز.
ودعونا نفعل مجرد مثال سريع القليل الذي
يميز واحدة من هذه من جهة أخرى.
وفي الجزء الخلفي من ذهني هنا، أود أن أقول شيئا واحدا.
ذكرت على وجه التحديد اسم تيم.
كان تيم فعلا شخص أن الطالب حاولت أن تجد للقيام
من الواجبات المنزلية بالنسبة لهم.
لم يكن لدينا في هذا القسم تيم معين.
كان يدرك ذلك، خشية أن يكشف الطالب، وليس الطلاب.
كان شخص عشوائي على شبكة الإنترنت القيام بأشياء
من العام الماضي وكيل.
لذا نجد ذلك أيضا.
حتى في هذه الحالة هنا، اسمحوا لي أن المضي قدما في
فتح ملف جديد.
ملف، جديد.
هذا يعطيني علامة التبويب هنا.
اسمحوا لي أن تمضي قدما واحفظ loop.c.
اسمحوا لي ان اذهب وانقر فوق حفظ.
ثم إلى هنا، دعونا نمضي قدما والبدء في الكتابة
# تشمل .
اسمحوا لي تكبير.
الآن سوف نقوم به الباحث الرئيسي (الفراغ).
والآن اسمحوا لي نمضي قدما ونفعل ل (كثافة العمليات ط = 0، وأنا <
أوه، 10؛ أنا + +).
والآن انا ذاهب للذهاب قدما ونفعل طباعة النجم الذي أنا
فعلوا ذلك.
ثم في نهاية هذا البرنامج، ونحن في طريقنا لمجرد
طباعة سطر جديد، فقط حتى أن بلدي موجه
لا تبدو جميع فوضوي.
العودة 0.
يبدو صحيحة من حيث التركيب؟
حتى الآن.
لذلك دعونا نرى.
>> لذلك اسمحوا لي التصغير، انتقل إلى إطار المحطة الطرفية بلدي.
واسمحوا لي أن تمضي قدما وتشغيل حلقة، لأنني يسمى هذا
الشيء loop.c.
لذلك حلقة.
يبدو أن تجمع OK.
اسمحوا لي أن تشغيل حلقة، وأدخل الآن.
ويبدو أنها قد طبعت 10 نجوم.
لذلك دعونا تحويل هذا فقط لحلقة حين ونرى ما
أنواع من الأمور التي يتعثر.
وذلك بدلا من هذا، اسمحوا لي ان اذهب من هنا ويقول بينما أنا هو
أقل من 10 -
اسمحوا لي أن يتخلص من لحلقة.
OK، لذلك لدينا بضع مشاكل بالفعل.
وبالتالي فإن الشرط هو نفسه، ولكن أنا في عداد المفقودين من الواضح أن
التهيئة.
أنا في عداد المفقودين في incrementation.
ذلك ما ينبغي أن المترجم المرجح ان اقول لي عندما أحاول أن
ترجمة هذا البرنامج؟
نعم؟
AUDIENCE: [غير مسموع].
>> DAVID J. مالان: جيد.
لذلك يحدث أن أقول شيئا مثل غير معلنة - في هذا
الحالة، متغير ط.
وبالفعل، واستخدام معرف غير معروفة ط.
وحتى هذا هو على النقيض مع لغات مثل PHP و
بيثون وروبي، والتي قد تكون بعض مألوفة،
حيث يمكنك مجرد نوع من البدء في استخدام المتغيرات
طوعا أو كرها وليس لديها ما يدعو للقلق معلنا لهم
دائما صراحة.
في C وبلغات مثل جافا و C + +، عليك أن تكون
سوبر صريحة.
وإذا كنت ترغب في متغير يسمى الأول، عليك أن تخبرني
أي نوع من متغير هو عليه.
لذلك نحن ستكون لدينا لإصلاح هذه على النحو التالي.
أنا ذاهب لدينا للذهاب هنا واكتب كثافة العمليات ط، وبالتالي،
لقد أعلنت متغير يسمى ط.
الآن، لقد تخطي خطوة واحدة.
لقد الواضح أنه لم يتم تهيئة، ولكن انظر دعونا إذا كان ذلك في
توقف ضجيج الأقل يجعل الشكوى.
لذلك اسمحوا لي إعادة صنع هذا البرنامج.
>> حسنا، الآن انها تشكو فقط
لسبب مختلف.
"متغير غير مهيأة" أنا "عند استخدامها هنا." كل الحق، لذلك
وهذا صريح جدا.
تهيئة يعني فقط تعيينها إلى قيمة متساوية.
ولقد فعلت ذلك لا، لذلك اسمحوا لي أن أحاول يساوي 0.
الآن دعونا نحاول مرة أخرى وهذا ضجيج إعادة تشغيل.
جمعت هذه المرة.
وأنا على وشك لتشغيله.
لكن كبير حلقة لا نهائية من العمر، وذلك لأن لقد فعلت
التهيئة، لقد فعلت الشرط، ولكن لقد فعلت أبدا
أي نوع من incrementation.
فكيف أفعل incrementation؟
حسنا، في حلقة من الوقت، بدا الامر وكأننا أنا ستكون لدينا
للقيام بذلك داخل الحلقة، لأن الكثير مثل أول
الأسبوع أمثلة للقيام بنيات حلقات، مثل مع
الجوارب ومع العد الذاتي، كان علينا أن نفعل
شيء في النهاية، أود العودة إلى السطر التالي.
ماذا لو أنا نمضي قدما ونفعل هذا أنا هنا + +؟
دعونا لا ترجمة حتى هذا.
التقاط لي بالفعل.
ما هو الخطأ هنا؟
AUDIENCE: [غير مسموع].
>> DAVID J. مالان: لذلك بالتأكيد ليست الباحث.
انها ط.
والأقواس المتعرجة، مثل قبل،
المسافة البادئة ليست كافية.
حتى الآن لدي هذا بناء.
حتى وأنا أقل من 10، وطباعة نجم،
زيادة بعد ذلك.
والطريقة التي يعمل حلقة بينما هو أن تصل في أقرب وقت لك
السفلي من الحلقة، وهو في هذه الحالة يبدو وكأنه خط 10،
انها سوف نعود إلى السطر 6، وعند هذه النقطة
وسيتم فحص حالة مرة أخرى.
وإذا كنت لا تزال أقل من 10، وسنفعل 8 و خطوط
ثم 9، ثم سنقوم تصل إلى 10، والعودة إلى 6، ومرة ​​أخرى
مرة أخرى، ومرة ​​أخرى ومرة ​​أخرى، طالما أنا أقل من 10.
لذلك دعونا إعادة تشغيل جعل هنا.
>> حسنا، قمنا بتجميع بخير.
اسمحوا لي أن أعد تشغيل الحلقة.
والآن يبدو فعلا للعمل.
حتى هنا إيجابيات وسلبيات؟
حسنا، حتى الآن هناك في الواقع ليست كاملة من منظمة التحرير الفلسطينية -
لطيف جدا.
حسنا، ذلك كان - آه، ذلك كان مجرد حادث.
كل الحق، لذلك دعونا نعود الى لحلقة.
حتى لحلقات لطيفة لأنهم صريحة فائقة.
وعلى الرغم من انهم عالي الكعب قليلا في الكتابة، فإنه من
قوية جدا، وأنه يسمح لك أن تفعل
أشياء متعددة في وقت واحد.
بينما الحلقات لا يبدو أن لديها كمية كبيرة من القيمة فقط
حتى الآن، لأنه يشعر وكأنه لدينا فقط لبذل المزيد من العمل.
لدينا لوضع التهيئة هنا، في
تحديث إلى هنا، وعلينا أن نتذكر أن تفعل كل ذلك.
لذلك سنرى في الوقت الذي تقدم الحلقات بينما في الواقع
أنفسهم لسياقات مختلفة فقط، بيانات مختلفة
هياكل مثل القوائم والجداول التجزئة، أشياء نصل الى
منتصف الفصل الدراسي.
لكن في الوقت الراهن، ونعرف أن هناك هذا النوع الثالث يعرف باسم افعل
بينما الحلقة.
ولقد رأينا هذا لفترة وجيزة.
وهذا قد يكون من المفيد السوبر مع pset 1.
أي وقت تريد أن تفعل شيئا ثم تحقق مما إذا
تعاونت المستخدم، وإذا لم يفعلوا، أن تفعل ذلك مرة أخرى، وتأليف
في حين يفسح المجال لحلقة هذا النوع من المنطق.
لأنه كما طلب من الأعلى إلى الأسفل يشير إلى هنا،
لا يعني ذلك حرفيا.
والقيام بذلك مرارا وتكرارا، ما قد يمكن أن يكون؟
ربما يعني GetInt الاتصال أو GetString ثم
التحقق من قيمة GetInt أو GetString ثم الصراخ
في المستخدم إن لم تكن قد تعاونت من قبل ندعوه
مرارا وتكرارا وتكرارا.
حيث كنت تريد أن تفعل شيئا مرة واحدة،
ثم تحقق بعض شرط.
>> لذلك دعونا نحاول ذلك.
اسمحوا لي أن تغيير هذا الواقع الآن وحلقة افعل الوقت.
وانا ذاهب الى المضي قدما والقيام بما يلي.
تفعل ذلك ما يلي.
دعونا نفعل كثافة العمليات ط = GetInt ()، ولكن دعونا نقول أولا المستخدم
ما يجب القيام به.
ذلك قليلا مختلفا هذه المرة.
"اعطني كثافة العمليات".
ولذا فإنني سوف تستخدم printf لذلك.
والآن انا ذاهب للذهاب إلى هنا، وأنا ذاهب للقيام بذلك
بينما أنا هو، دعنا نقول، أكبر من -
دعونا نرى، وأنا هو، دعنا نقول، أي أقل من 0، أو هو أنا
أكبر من 10.
وبعبارة أخرى، أريد رقم من 1 إلى 9، فقط
تعسفية.
حتى أنا باستخدام تعبير منطقي مجتمعة هنا ل
تأكد من أنني أقل من 0 أو أكبر من 10، والتي
الحالة سوف أفعل هذه الحلقة هنا مرة أخرى.
ذلك مرة أخرى، القيام بذلك -
بينما كنت أقل من 0 أو أنا أكبر من 10.
>> حتى الآن دعونا نمضي قدما ونفعل ذلك مرة واحدة لقد فعلت ذلك.
دعونا نفعل مجرد الاختيار التعقل سريعة.
printf ("شكرا، أنا هو د٪"، ط).
لذلك هذا برنامج بسيط يطلب من المستخدم لكثافة العمليات،
يجعل متأكد من أنها في بعض مجموعة من 1 إلى 9 شاملة،
ثم يشكر المستخدم من خلال تذكير لهم ما فقط
كتبته في، تماما كما شيك التعقل قليلا.
ولكن دعونا نرى ما اذا كان هذا يعمل على النحو المنشود.
اسمحوا لي ان اذهب والرأس إلى أسفل هنا إعادة تشغيل جعل حلقة.
هم.
"استخدام معرف غير معروفة 'ط'". هذا غريب.
اعتقد اننا حل ذلك.
نفس الأعراض ولكن شفرة مختلفة.
نعم؟
AUDIENCE: [غير مسموع] داخل اثنان، علينا أن
[غير مسموع].
>> DAVID J. مالان: بالضبط.
ولذلك فإن هذا يؤدي بنا إلى الواقع المعروف باسم نطاق الموضوع.
تبين أن C، مرة أخرى، فإنه يأخذ حقا لكم حرفيا.
وإذا كنت تفعل شيئا من هذا القبيل حيث تقوم بتعريفه الباحث
وبعد ذلك تعيين بعض القيمة، ولكن يمكنك أن تفعل ذلك من داخل
زوج من الأقواس المتعرجة، ما يفعله هو أنه C تفترض
نريد فقط تلك المعروفة باسم 32 بت أنا في الوجود داخل
سياق هذه الأقواس المتعرجة، في سياق خطوط
من 6 إلى 9. حتى يتم تعريف الأول، ويتم تعيينه من
القيمة في السطر 8، ولكن بمجرد الحصول على خارج
خط 9 تحت متعرج، وأنا لم يعد في
النطاق، إذا جاز التعبير.
S-C-O-P-E. انها لم تعد في السياق الصحيح.
الآن لذلك ليس هناك ط، لذلك فمن كما لو كان لدينا ولا حتى
أعلن ذلك على الإطلاق.
>> حتى ما هو الإصلاح ثم عن شيء مثل هذا، إذا كان
السبب هو أن يتم تعريف أنا داخل الأقواس المتعرجة، والتي
سيئة على ما يبدو؟
هنا؟
AUDIENCE: [غير مسموع].
DAVID J. مالان: نعم.
حتى نتمكن من تهيئة خارج.
لذلك اسمحوا لي المضي قدما وحذف الأجزاء إعلان بموجبه
I تحديد نوع، واسمحوا لي أن نفعل ذلك هنا.
حتى في السطر 5، تقول الآن "اعطني الباحث". يطلق عليه ط.
تلاحظ في السطر 9، وأنا لا أريد أن أفعل هذا، لأنني
لديك 32 بت.
أنا لا أريد أن أسأل عن جهاز الكمبيوتر
32 بت مختلفة.
أريد أن استخدام هذه نفس 32 بت.
والآن أنا لأنه أعلن في السطر 5، انها لا تزال شرعي
لاستخدامه في السطر 11 والسطر 12.
>> لذلك اسمحوا لي أن أحاول إعادة ترجمة هذا ونرى
إذا توقف عن الصراخ ضجيج.
جعل حلقة.
حتى الآن هو "إعلان ضمني من وظيفة
'GetInt' غير صالح في C99. "ما هذا؟
نعم؟
AUDIENCE: [غير مسموع].
DAVID J. مالان: نعم.
حتى الآن بعد أن أنا باستخدام GetInt الواقع، وهذا ليس شيئا
الذي يأتي فقط مع C. وهذا يأتي من CS50.
لذلك نحن في حاجة الى ذلك هنا.
واسمحوا لي أن أعود إلى أسفل موجه
وهنا إعادة تشغيل بها.
حسنا، في نهاية المطاف.
الآن لقد عقدنا العزم أن الخطأ وغيرها.
اسمحوا لي الآن تشغيل حلقة ونرى ما سيحدث.
"اعطني الباحث". سوف أعطيها 11.
سوف أعطيها -1.
سوف أعطيها فو.
سوف أعطيها 5.
والآن يعمل في الواقع.
ولكن موجه لسبب تغير هنا.
لماذا تقول محاولة واحدة من هذه الأوقات ولكن تعطيني
الباحث الآخر ثلاث مرات؟
لماذا هو أن سلوك مختلفة؟
أعطاه سلسلة: الجمهور.
DAVID J. مالان: آسف؟
AUDIENCE: أنت أعطاه سلسلة.
DAVID J. مالان: نعم.
وقدم لذلك نحن من سلسلة في هذه المحاولة الثالثة،
عندما كتبت فو.
فو سلسلة.
من الواضح انها ليست الباحث.
والطريقة التي نفذت CS50 هو أننا GetInt
لا شيء من معرفة ما اذا كان أقل من 0 أو أكبر من 10
بالنسبة لك، لأننا نعرف كيف مقدما أي نوع من
الباحث تريد؟
ولكن يمكننا التحقق الحد الأدنى بالنسبة لك، فإن المستخدم لا يقل عن
اكتب عددا صحيحا؟
واذا لم يفعلوا، ونحن يصيح في المستخدم بكتابة "إعادة المحاولة" على
الشاشة.
>> حتى الآن لدينا برنامج هذا ما حلقات. حسنا.
الآن، أي من هذه هو نوع من أفضل بناء؟
لذلك هذا هو المكان الذي تبدأ الأمور للحصول على القليل من الفوضى، في
حقيقة أن عليك أن تتذكر لتعريف متغير هنا
إذا كنت ترغب في استخدامه داخل بعض
مجعد الأقواس وخارجها.
ولكن حتى لو كان هذا يبدو قليلا خفي في البداية
وهلة، مرة أخرى فقط، تذكر منطق بسيط.
من اجل استخدام أي شيء في C، سواء كان ذلك في وظيفة أو
انها متغير، لديك لإدراجه إذا كان وظيفة
في بعض المكتبات، أو تحتاج أن تعلن ذلك.
ولكن الآن تحتاج إلى أن تضع في اعتبارها إضافية من حقيقة أن
كنت معلنا في نطاق الحق.
كنت لا ضعه بإحكام جدا داخل قوسين.
>> لذلك اسمحوا لي لفة في الواقع مرة أخرى.
إذا رجعنا لدينا على سبيل المثال من قبل، وتذهب I
عودة إلى الباحث عن، وكثافة العمليات ط = 0، وأنا <10، وأنا + +، وأنا
القيام نجوم printf، مثل هذا، ومن ثم إغلاق PAREN، والآن
printf أنا الآن -
وفقا لنفس المنطق، ماذا سيحدث عندما أحاول
ترجمة هذا البرنامج؟
AUDIENCE: معرف غير صالح.
DAVID J. مالان: لذلك فمن غير صالح معرف آخر،
غير معلنة معرف.
الآن، والسبب هو مختلفة قليلا.
هناك بالطبع لا الأقواس المتعرجة هنا، ولكن في نفس
الفكرة، نفس القصة من نطاق تطبيق.
إذا كنت قد أعلنت متغير وكأنني داخل من
لحلقة، حتى لو كنت لم تكتب صراحة مجعد
الأقواس، يفكر فيها عقليا بأنه لا يزال هناك، والتي
الحالة أنا داخل صالحة فقط للللحلقة.
ولا يصح تحصل مرة واحدة إلى السطر التالي، والذي في
هذه الحالة الآن 10.
فقط حتى عدد قليل من القضايا ذات النطاق وما شابه ذلك.
كل الحق، أي سؤال؟
>> حسنا، لذلك هذا هو النوع من البرامج قليلا تافهة،
الطباعة نجوم فقط قليلا.
ولكن دعونا نرى إذا كنت تتذكر هذه الأغنية هنا.
هذه هي أغنية مزعج بشكل لا يصدق الاطفال والغناء على
الحافلة المدرسية وما شابه ذلك.
ولكن ما هو لطيفة عن ذلك هو أن لديها هذه دوروية،
حيث انها "99 زجاجات من البيرة على الحائط،
99 زجاجة من البيرة.
تأخذ واحدة لأسفل، تمرير حولها، 98 زجاجات من البيرة على
الجدار ". وبعد ذلك أغنية يكرر 97، ثم 96، ثم
95، ثم 94، على طول الطريق إلى 0 إذا كنت حصلت فعلا أن
حتى في الحافلة.
لذلك هذا هو برنامج لطيف لفرز من تنفيذ، لأن بلدي
والله لو قد قمت بتطبيق هذا فقط مع عدد قليل
الأسطر من التعليمات البرمجية، هل يمكن أن بصق كلمات كامل لهذه
أغنية بسرعة.
ولكن على طول الطريق، يمكننا أن نبدأ الآن لندف بصرف النظر بعض
من بنيات أساسية وحلقات هذه أيضا الآن
أعرض الوظائف التي نكتب أنفسنا، إرجاع القيم
أننا تمرير حولها.
ولكن أولا، لماذا لا نذهب إلى الأمام وتأخذ لدينا خمس دقائق
كسر هنا؟
وعندما نعود، ونحن سوف يغني هذه الأغنية.
>> كل الحق، لذلك نحن مرة أخرى.
وعندما أقول نحن سوف يغني هذه الأغنية الآن، يعني
برمجيا، وليس لفظيا.
حتى هنا لدينا beer1.c، التي تعد واحدة تنفيذ هذا
أغنية معينة.
ومجرد أن يكون واضحا، بالنسبة لأولئك غير مألوف مع ما
هذا يبدو وكأنه شيء، اسمحوا لي أن المضي قدما
وجعل beer1، أدخل.
والآن اسمحوا لي تشغيل beer1، وما نراه سوف - كم عدد زجاجات
وسوف يكون هناك من البيرة؟
أنا اكتب في 99، مثل تقول الأغنية.
دخول.
والآن إذا كنا من خلال التمرير -
عفوا - إذا كنا التمرير خلال كل هذا، سنرى أن
لم هذه الأغنية الغناء الواقع كله.
انتظر لحظة.
شريط التمرير بلدي قليلا عابث.
دعونا استخدام أكبر النافذة.
حتى 99، beer1، هناك نذهب.
حتى هنا لدينا أغنية كاملة، سونغ أسرع بكثير من قبل
الكمبيوتر مما كان يمكن أن يكون من قبلنا.
لاحظت ذلك، على الرغم من الطبيعة الدورية هنا.
تقول 99، ثم 99، ثم "تأخذ واحدة لأسفل، نقله
حول "، ثم 98.
والآن يكرر مرة أخرى ومرة ​​أخرى.
>> لذلك هذا هو في الواقع فرصة مثالية لنوع من
حلقات بناء.
لاحظت أن أنا نوع من قطع زاوية هنا.
تلاحظ أن أقوله "98 زجاجات من البيرة على الحائط،
بلغت 97 زجاجات من البيرة على الحائط "، وأن ذلك مجرد
أنه عندما نحصل على واحدة من زجاجات البيرة، وأنا لم يكن لديك
ما يدعو للقلق حول قواعد اللغة الإنجليزية.
ولكن يمكننا أيضا إصلاح هذا مع القليل من إذا
الشرط، ربما.
إذا كان هذا الرقم المفرد، والمضي قدما ويقول "زجاجة"،
إذا وإلا فإنه من الجمع، ويقول "زجاجات".
لكن في الوقت الراهن، وأنا قطع تماما تلك الزاوية.
لذلك دعونا نرى ما لدينا هنا.
لذلك نحن قد حصلت على بعض التعليقات في الأعلى.
أنا بما هاتين المكتبتين، كما
كنا عادة.
واسمحوا لي الآن انتقل لأسفل إلى أول
الفعلية الأسطر من التعليمات البرمجية.
السطر 17 ينطلق الرئيسية.
خط 21 و 20 وعدد زجاجات من البيرة سيكون هناك؟
ثم أعطي الكلمة GetInt.
والآن لدي قليلا من التعقل الاختيار.
>> لذلك هذا هو الاتفاقية التي سنبدأ الآن اعتماد ل
أكثر صرامة تحقق مدخلات المستخدم.
في بعض الأحيان كنت لا تريد أن تدفع لهم مرة أخرى
ومرة أخرى ومرة ​​أخرى.
إذا كان المستخدم مسامير وعدم التعاون، ودفع غرامة.
إنهاء وفقط لا تتعامل معها.
وهكذا وهذا ما أفعله هنا.
إذا كان n أقل من 1، وانا ذاهب لمجرد الصراخ للمستخدم،
"عذرا، هذا لا معنى له". ومن ثم أنا ذاهب إلى
العودة تعسفا 1.
ذلك مرة أخرى، وهذا هو مجرد اتفاقية لتعتاد على.
في الوقت الراهن، واعتبر على الإيمان.
ولكن حتى الآن، ونحن كنت دائما العودة 0، لأن
لقد قلنا العائدين 0 يدل على ماذا؟
AUDIENCE: النجاح.
DAVID J. مالان: نجاح، هذا كل شيء.
حتى الآن بعد أن بدأنا أخيرا للتفكير
غير النجاحات -
وبعبارة أخرى، وحالات الزاوية، حالات الخطأ -
الآن لدي إمدادات لا حصر له، أو على الأقل 4000000000
ممكن الأشياء التي يمكن ان تتعرض له في برامج بلدي.
وأستطيع أن أبدأ تكليفهم الأرقام الفردية.
الآن، عموما يكفي فقط للعودة
شيء غير 0.
لذلك نحن في طريقنا للعودة ببساطة الآن 1 ل.
ولكن السبب يعود ل1 هو أنه بمجرد عودتك
1، تخمين ما يحدث لبقية البرنامج؟
تتوقف.
هذا هو.
وبالتالي فإن حقيقة أن أنا العودة 1 هو فعال
إن تلامس تنفيذ هذا البرنامج بحيث
فلا شيء تحت خط 27 متابعة تنفيذ.
حالما يعود الرئيسية، هذا هو عليه.
>> كل الحق، لذلك إذا كان المستخدم لا نصل إلى التعاون وخط 30
لأنها كتبت في عدد المشروعة، وهنا بلدي
تنفيذ هذه الأغنية.
لذلك أنا لأول مرة طباعة حرف السطر الجديد، لمجرد
الجماليات.
لدي الآن للحلقة.
وتلاحظ أنني أفعل أشياء في بت
من اتجاه مختلف.
ليس لدي للقيام أقل من، وأنا لم يكن لديك للقيام + +.
أستطيع أن أقول بدلا من ذلك تهيئة متغير الأول، تعيين يساوي
ن، وعدد المستعمل في طباعة، ثم القيام بما يلي، لذلك
دمت أكبر من 0، ثم أنا -
الانتهاء مرة واحدة أنت واحد من هذه الحلقة التكرار.
حتى نتمكن من العد التنازلي للحلقة باستخدام كذلك.
الآن، وهذا هو الى حد كبير الاسبوع 1 الاشياء الآن، مع printf.
حتى الطباعة "د٪ زجاجات من البيرة على الحائط". طباعة "٪ د
زجاجات من البيرة. "" خذ واحدة إلى أسفل، تمرير حولها ". طباعة
"٪ زجاجات من البيرة د على الجدار." لذلك لا يزال د٪، ولكن
تلاحظ أن حجة إلى printf يتغير.
بعد الفاصلة، ولدي أنا، لأنني أريد أن أقول 99.
بعد هذا فاصلة، ولدي أنا، لأنني أريد أن أقول 99.
بعد هذا فاصلة، ولدي أنا - 1، لأنني أريد أن أقول 98 في
هذا التكرار الأول، وهكذا دواليك.
والآن إلى هنا، ولدي فقط بعض تصريحات غبية قليلا.
ثم خط 42، I بإرجاع 0 من الاتفاقية، مما يدل على أن
كل شيء على ما يرام.
>> ماذا لو أخطأ ذلك I؟
قد ما خطأ شائع هنا يكون؟
حسنا، ماذا لو قلت عن طريق الخطأ حسنا، أنا لا أريد أن نعول
وصولا الى 0، 0 أريد زجاجات من البيرة على الحائط؟
لذلك أنا أقول، وأنا أكبر من أو تساوي 0.
ما يحدث أن تكون الأعراض التي أرى الآن إذا كنت إعادة ترجمة
beer1 وتشغيله؟
AUDIENCE: السلبية.
DAVID J. مالان: نعم، انها ستعمل تذهب سلبية.
هذا خطأ خارج عن طريق واحد، وهو لا يصدق
خطأ شائع لجعل.
دعونا نذهب بالفعل إلى إطار المحطة الطرفية ونفعل ذلك
هنا، لذلك يمكننا أن نرى أكثر في المرة الواحدة.
أدخل و 99 زجاجة من البيرة.
إغلاق، ولكن ذهبنا من أي وقت مضى حتى قليلا بعيدا جدا.
غنى أغنية ونحن بعيد جدا أسفل، بحيث ضربنا الآن
عدد السلبية.
لذلك لا يعمل تماما.
>> كل الحق، حتى نتمكن من إصلاح بسهولة أن من خلال العودة إلى
ما كان عليه مرة واحدة.
ولكن ما هي بعض الفرص الآن لل
تحسين؟
حسنا، اسمحوا لي أن فتح beer2.c وانزل هنا ونلقي
ننظر في هذا الإصدار.
ما هو أول شيء يقفز في لكم ومختلفة
في هذا الإصدار هنا؟
AUDIENCE: [غير مسموع].
DAVID J. مالان: نعم، لذلك لا مزيد من الأول، أنها وقعت بسبب
لي انك تعرف ما هي، أنا أسأل المستخدم N، ثم أنا
وضع ط ن تساوي، ثم أنا أنا المتغيرة، ولكن أنا أبدا
ن لمس مرة أخرى.
ذلك ما كان هيك وجهة لك تخصيص آخر 32
دعا بت أنا فقط حتى أستطيع أن لديك متغير مختلفة؟
حتى في هذه الحالة، وأنا نوع من الاعتراف بأن لا لزوم لها
تصميم الميزة.
وأنا ذاهب الآن أن أقول حين n هو أكبر من 0، انتقل
قبل وطباعة نفس الأغنية، تمرير ن إلى printf كما
2 الحجة، ون - 1 كوسيطة ثانية هنا إلى أسفل.
ومن ثم على كل التكرار من هذه الحلقة، والمضي قدما فقط
إنقاص ن نفسه.
الآن، وظيفيا، وهذا البرنامج
ستكون متطابقة.
إذا كنت اكتب في 99، N يبدأ في 99.
I إنقاص، إنقاص، إنقاص، إنقاص.
أنا ذاهب للحصول على كل الطريق وصولا الى "واحد زجاجة من البيرة على
الجدار، زجاجة واحدة من البيرة.
تأخذ واحدة لأسفل، تمرير حولها.
0 زجاجات من البيرة على الحائط ". النهاية، لأن فعلت
الحصول على حالة الصحيح.
انها أكبر من 0.
لم أكن جعل هذا الخطأ.
>> ذلك الذي هو أفضل، إصدار واحد أو إصدار اثنين؟
لذلك أنا سمعت حفنة من تذمر لمدة سنتين.
لماذا اثنين؟
ما هذا؟
AUDIENCE: [غير مسموع].
DAVID J. مالان: أوه، حسنا.
لذلك لن تذهب أقل من 0، ولكن تذكر، في نسخة واحدة، في
لم الإصدار الصحيح الأصلي لا يذهب أقل من 0 أيضا.
تذكر ذلك أن هذا هو الإصدار الصحيح.
لذلك دعونا على الأقل مقارنة إصدارين الصحيح.
ما هو حجة لصالح إصدار
2 الحالي، MMM، أفضل؟
نعم؟
AUDIENCE: ويستخدم مساحة أقل.
DAVID J. مالان: حسنا، لذلك فإنه يستخدم مساحة أقل، أليس كذلك؟
في حين تستخدم 32 بت إصدار واحد لN، ثم آخر
32 بت لأني.
الإصدار الثاني يستخدم فقط 32 بت لN، بحيث
ويبدو أن زائد.
أفكار أخرى؟
لا أحد يجادل تريد لصالح واحد؟
نعم؟
AUDIENCE: لديك لاستخدام سطر إضافي من التعليمات البرمجية ل n -.
>> DAVID J. مالان: حسنا، بالتأكيد.
بحيث من العدل.
لذلك هذا فقط، على الأقل بالنسبة لي -
أعني، هذا الواقع يشعر ميسييه قليلا، وحقيقة أن
لا أستطيع نوع من تغليف كل منطق بلدي في واحد
جميل الخط، لحلقة، كما يمكن للحلقة.
هنا، النوع الأول من أن تك على هذا N -
في نهاية الحلقة، وذلك لأن
من الضروري منطقيا.
ولكنه نوع من التدليك لي بطريقة خاطئة، فقط لأنها
يبدو منفصلا عن منطق هنا، على الرغم من،
مرة أخرى، فإنه من الضروري.
أفكار أخرى؟
نعم؟
AUDIENCE: [غير مسموع].
>> DAVID J. مالان: نعم.
حتى ما إذا كنت بدلا من ذلك، في نهاية الأغنية، أردت أن
طباعة مرة أخرى اسم الأغنية؟
مثل "شكرا للعب 99 زجاجات من البيرة"، أو شيء
سخيفة من هذا القبيل؟
ولكن، نقطة أردت الوصول إلى القيمة الأصلية.
حقيقة أن كنت قد تحور أو تغير ن على كل
دمرت التكرار، وبالتالي قيمته الأصلية
يعني انك لا يمكن ان تفعل ذلك في نهاية المطاف.
الآن، يمكن القول، من الواضح أننا لا نريد أن نفعل
أن في هذا البرنامج.
لذلك من يهتم؟
ولكن هذا نقطة صحيحة جدا.
وإلى أن نكون صادقين، وهناك حقا لا أحد
الجواب الصحيح هنا.
انهم على حد سواء صحيحة.
يمكن مقتنع في اي من الاتجاهين.
أقول ذلك، بصفة عامة، انها جيدة اذا كنت المبدأ
سؤال المستخدم عن بعض القيمة وكنت المخزنة في متغير
مثل N، فقط نوع من حيث المبدأ، هو على الأرجح جيدة
للحفاظ على هذه حولها.
وأي البيانات التي تريد يتحور مرة أخرى ومرة ​​أخرى، فقط
تعطي لنفسك نسخة من هذا المتغير، لذلك فقط ان كنت
الحصول على النسخة الأصلية.
كنت تنفق 32 المزيد بت، ولكن الواقع هو هذا
الكمبيوتر و، مثل، اثنين غيغا بايت من ذاكرة الوصول العشوائي في هذه الأيام،
ونحن مراوغة أكثر من 32 بت؟
الحقيقة ليست مثل هذه الصفقة الكبيرة.
وحتى على هذا الجهاز هنا، مع نصف أزعج أو
غيغا بايت من ذاكرة الوصول العشوائي، 32 بت مقابل 64 بت،
لا مثل هذه الصفقة الكبيرة.
بالتأكيد اليوم، فإنه سيكون وسيلة تطغى عليها حجم
من البرنامج نفسه، والتي ستكون عدة مئات من
كيلو بايت، إن لم يكن ميغابايت قليلة، في هذه الأيام.
>> معقولة حتى المخاوف، لا أحد الإجابة الصحيحة.
ولكن على الأقل هذه هي الأفكار التي ينبغي أن تبدأ في
تذهب من خلال عقلك؟
لأنه في pset 0، على الرغم من أننا حقا المتوقع فقط
صحة، أو على الأقل التنازل البق المختلفة التي
كنت قد واجهت، ونحن نمضي قدما، والتصميم هو
سيكون جانبا رئيسيا آخر، وكلاهما من كتابة التعليمات البرمجية
وأيضا لدينا تقييم التعليمات البرمجية.
وذلك على الأقل التفكير في مثل هذه الامور.
ويعمل شيئا لمجرد لا يعني انها جيدة،
لا يعني انها مصممة تصميما جيدا.
وهذا واحد من الأشياء التدريس والزملاء
سوف تساعدنا مجموعات مشكلة ندف جزء مع مرور الوقت.
>> حسنا، ماذا عن، دعنا نقول، هذا الإصدار هنا؟
اسمحوا لي أن تفعل شيئا قليلا مثير هنا في لحظة.
أولا اسمحوا لي التخلص من هذا.
والآن دعونا إصلاح هذه المشكلة النحوية.
حتى في هذا الإصدار، أريد أن إصلاح النحو بحيث،
بدلا من أن أقول ليالي قوسين، مثل "زجاجة"
أو "زجاجات" -
أنا لا أريد لخفض تلك الزاوية -
وأود أيضا أن طباعة حيوي من كلمة "زجاجات"
أو "زجاجة"، وذلك باستخدام العناصر النائبة بالتالي هذه٪ S اليوم.
لذلك أنا بحاجة للتحقق ما هو مشروط قيمة ط.
واذا كان 1، أريد أن أقول "زجاجة"، وإذا كان أي شيء قد حان
آخر، أريد أن أقول "زجاجات". لذلك دعونا نحاول أن نفعل هذا.
حتى لو كنت == 1، ثم اسمحوا لي أن تمضي قدما وتعلن -
أحتاج إلى سلسلة، لذلك اسمحوا لي أن تفعل S1 السلسلة، لأنها
السلسلة الأولى يهمني في الوقت الحالي.
انا ذاهب الى القول "زجاجة". ومن ثم، دعونا نرى، سلسلة
S2 - وساوضح حيث أنا ذاهب في لحظة -
"زجاجات". أذكر ذلك أنه في هذه الأغنية، ونحن بحاجة إلى أن تكون قادرة
لطباعة الأشياء، واثنين من كلمات مختلفة محتملة.
إذا كان الأمر كذلك فإننا نتطلع إلى هنا، لاحظ أنه عندما نصل إلى
هذا المثال هنا "زجاجتين من البيرة على الحائط،
زجاجتين من البيرة، أسفل تأخذ واحدة، تمرير حولها "، أريد
هذا السطر الرابع أن أقول الآن "واحد زجاجة من البيرة على
الجدار "، لذلك أنا بحاجة لاتخاذ قرار، لا أريد أن أقول" زجاجات "أو
"زجاجة"؟ لذلك أنا ذاهب الى القول بشكل تعسفي، كل الحق،
أنا ذاهب لإعلان متغير يسمى الآن S1، سلسلة
واحد، أن يحدث للحصول على توصيله هنا وهنا أيضا،
لأن هذه الكلمات هي دائما متطابقة، فقط بسبب
طبيعة الأغنية.
وانا ذاهب لاستدعاء أي كلمة S2 أريد أن
تظهر في نهاية المطاف هنا.
الآن، حرفيا، 99 مرات من أصل 100، انها ستكون
نفسه في كل من تلك الحالات، وذلك لأن الجمع 3 هو (2)،
الجمع، 4 هو الجمع.
لكن في هذه الحالة الزاوية، حيث نصل ​​إلى 2 ثم 1، أو
حتى 1 ثم 0، انا بحاجة الى هذا المنطق.
لذلك لا بد لي من قضاء بعض الوقت في قانون بلدي الحصول على هذا الحق.
حتى لو كنت تفعل هذا، إذا كنت == 1، ثم S1 تعيين يساوي "زجاجة"
وS2 تساوي "زجاجات"، لأن هذا سيكون لمدة 1
وزجاجة، ويكون هذا ل 0 زجاجات.
وهذا هنا، ماذا تمثل هذه؟
لمجرد أن يكون واضحا.
هذا هو مجرد تعليق.
وبالتالي فإن حقيقة أنه يمكن أن يكون مفرد الأسطر تعليقات يعني أنك
يمكن التعليق التعليمات البرمجية مثل هذا، لكنها شائعة أخرى
نموذج، أيضا، هو أنه إذا كان لديك عبارة فائقة القصيرة التي
تريد أن تضع نفسك وانها مجرد لوضع أكثر قابلية للقراءة
ذلك الحق في نهاية السطر من التعليمات البرمجية، يمكنك
القيام بشيء من هذا القبيل على الاطلاق.
>> حتى الآن ما إذا كنت تفعل ذلك؟ والا اذا كنت لا تساوي 1.
ذلك الانفجار يساوي -
ومن المعروف تعجب ب "الانفجار".
ذلك الانفجار = 1.
حتى لو كنت لا تساوي 1، ما أريد القيام به بدلا؟
حسنا، الكلمة الأولى أريد أن أكون ماذا؟
لذلك يجب أن تكون سلسلة 1 "زجاجات" لزجاجات الجمع،
وبعد ذلك سوف يكون هذا الجمع "زجاجات" أيضا، في الوقت الراهن.
وسنرى ما إذا كان هذا يحصل فعلا لنا
حيث نريد أن نذهب.
حتى الآن إذا كنت انتقل لأسفل هنا، لاحظ أنني في توصيل
لست أنا فقط، ولكن S1.
أنا في الأول ويسد S1.
ثم إلى هنا، وأنا ناقص 1، والذي هو نفس
من قبل، ولكن S2.
وبعبارة أخرى، أريد أن الكلمة الإنجليزية لتغيير أساس
على هذا المنطق.
الآن، هناك بالفعل بعض المشاكل في هذا القانون.
ما هو كسر بالفعل من بوابة هنا؟
نعم؟
AUDIENCE: [غير مسموع].
>> DAVID J. مالان: بالضبط.
حتى لقد انتهكت بالفعل الدرس النطاق.
حتى لقد أعلن I S1 و S2، ولكن لقد فعلت ذلك من داخل
مجعد الأقواس، وهو ما يعني نعم، هذا الكود والعمل لمدة تصل
حتى خط 42، ولكن سرعان ما ضرب خط 43، تخمين ما لم
يعد موجودا؟
حسنا، تخمين ما لم يعد في نطاق - لا S1 أو S2.
لذلك لدينا لإصلاح هذه.
لذلك اسمحوا لي حذف الإعلانات.
وسأترك أسماء المتغيرات وحذف هذا هنا
وحذف هذا هنا.
وينبغي في ما أعلن حقا خطوط هذه الأشياء؟
AUDIENCE: [غير مسموع].
DAVID J. مالان: نعم، وربما حتى
الحق هنا، 33-ISH.
حتى S1 سلسلة ثم سلسلة S2.
وكما تبين، يمكنني أن أفعل هذا.
إذا كنت معلنا متغيرين من نفس النوع،
يمكنك في الواقع مجرد استخدام فاصلة وذلك في جميع C.
الحق، وحتى الآن لدي اثنين من المتغيرات -
S1 و S2.
أنا تكليفهم القيم الموجودة في هذه
الظروف هنا، أو هنا.
ومن ثم أنا باستخدام عليهم أدناه.
مدى وهذا يحدث الآن للعمل؟
>> حسنا، انها لا تزال عربة صغيرة، ولكن دعونا نرى ما لا يقل عن
إلى أي مدى نحن قد حصلت.
لذلك اسمحوا لي المضي قدما وجعل beer3.
هذا هو beer3؟
نعم، هذا هو beer3.
واسمحوا لي الآن المضي قدما وتشغيل beer3.
399 99.
يمكننا تخطي ربما أكثر منهم.
وهنا إلى أسفل، ننظر في ذلك.
"واحد زجاجة من البيرة على الحائط، زجاجة واحدة من البيرة، واتخاذ
أحدهما أسفل، تمرير حولها، 0 زجاجات من البيرة على الحائط ".
ولكن أنا ألفت انتباه سعادتكم إلى النصف فقط من الحل.
نوع من ثمل هنا.
لذلك يبدو أن الحالات تنشأ الزاوية عندما يساوي ما
قيمتين؟
AUDIENCE: 2، 1.
DAVID J. مالان: 2 و 1.
انها ليست (1) وليس 1.
انها حقا مجرد هذه الماضيين موشحات من هذه الأغنية.
فماذا أريد القيام به بدلا؟
لذلك يبدو لي أن القبض على الحالة التي يكون فيها إذا كنت غير == إلى 1،
ثم الكلمة الأولى هي "زجاجة"، ولكن الكلمة الثانية
هو "زجاجات". ولكن هنا، أريد أن تغيير هذا أن يكون == 2.
وإذا كان هذا هو الحال، ماذا أريد
الكلمة الأولى أن تكون؟
الجمهور: "زجاجات".
DAVID J. مالان: "زجاجات"، وذلك لمدة الزجاجات.
ومن ثم ينبغي أن تكون هذه الكلمة هنا -
الجمهور: "زجاجة".
DAVID J. مالان: "زجاجة"، بصيغة المفرد.
>> حسنا، دعونا تصغير، العودة إلى هنا، وإعادة تشغيل جعل،
إعادة تشغيل beer3، اكتب 99 مرة أخرى.
حسنا، "خطأ الإنقسام (الأساسية ملقاة)."
ما الخطأ الذي قمت به؟
AUDIENCE: ليس لديك قيمة [غير مسموع].
DAVID J. مالان: آه، نقطة ممتازة.
كل الحق، لذلك ما هو الخطأ هنا؟
ذلك خطأ تجزئة، ونحن في طريقنا لرؤية الواقع
هذا مرات قليلة جدا في المستقبل، بشكل متعمد.
لكن في الوقت الراهن، ماذا يعني هذا في الواقع؟
A خطأ تجزئة دائما تقريبا يعني أن لديك
حاول بطريقة أو بأخرى للوصول إلى الذاكرة، ذاكرة الوصول العشوائي في جهاز الكمبيوتر الخاص بك،
ان كنت لا الخاصة، التي لم تكن قد طلبت فعلا
نظام التشغيل ل.
حتى في هذه الحالة، لاحظ ما فعلته، وهو
معيبة في منطق بلدي.
وقد كلفت S1 و S2 قيمة تساوي 1 إذا كنت.
لقد فعلت أيضا أنه إذا كنت يساوي 2.
ولكنني لم تفعل ذلك في عدد لا حصر له من غيرها
الاحتمالات -
على وجه الخصوص، 3 أو 4 أو نقطة، نقطة، نقطة، 99.
لذلك يمكن للمرء أن يكون إصلاح هذه فقط دعونا
لديك حالة آخر.
واسمحوا لي ان اذهب هنا ويقولون S1 يساوي -
وينبغي أن يكون ما هنا؟
AUDIENCE: [غير مسموع].
>> DAVID J. مالان: "زجاجات"، لأنه في الحالة العامة،
انها مجرد الشيء نفسه.
يساوي ذلك الاقتباس، نهاية الاقتباس "زجاجات". ذلك لجمع
زجاجات، وبعد ذلك هنا، لزجاجات الجمع.
حسنا، لذلك اسمحوا لي أن أعود الآن إلى إطار المحطة الطرفية بلدي،
إعادة ترجمة وإعادة تشغيله.
99.
يا للعجب.
ودعونا نفعل شيك التعقل سريعة.
من الناحية الفنية، لكنا تريد أن تقرأ كل هذه للتأكد من
انهم الصحيح، ولكن دعونا ننظر إلى
الأقل الجناة المعروفة.
3 زجاجات، 2 زجاجات، 2 زجاجات، 1
زجاجة، 1 زجاجة، 0 زجاجات.
يبدو أننا على الأقل ثابتة في الوقت الراهن.
لكن الصيد هنا هو أن ما فوضى فظيعة وهذا هو الله
فقط من أجل حل غبي
حرف واحد التفاصيل النحوية.
ولذلك لا يوجد سبب نوع من أنني قطعت هذه الزاوية
في وقت سابق، لأنه مجرد مزعج تماما لدينا ل
اكتب هذا الرمز من ذلك بكثير.
ولكن تبين أن هناك طرق أكثر أناقة قليلا من
معربا عن نفس الشيء بالضبط.
ويمكننا أن نفعل هذا على النحو التالي.
>> اسمحوا لي أن اترك هذا على الشاشة للحظة و
إدخال ما يعرف باسم مشغل الثلاثي.
هذا هو نوع من الخطوط الملاحية المنتظمة واحد وهذا ما يعني فقط لجعل لدينا
يعيش أكثر جنسية قليلا، كما وعدت.
وانا ذاهب الى القيام بذلك على النحو التالي.
أعطني سلسلة دعا S1، واسمحوا لي
تعيينه على النحو التالي.
(ط == 1)؟
"زجاجة"، وإلا "زجاجات". سلسلة S2 يحصل (ط == 2)؟
"زجاجة"، وإلا "زجاجات".
فما هو الفرق ثم هنا؟
هذين الخطين من التعليمات البرمجية، كما أرى، يمكن
استبدال هذه الفوضى كلها.
لذلك أنا أسميها فوضى، فقط لأنها نوع من التدليك لي
الخطأ الطريقة أنه من خطوط الكثير من التعليمات البرمجية.
ليس من الخطأ.
انها ليست سيئة التصميم.
مثل، وهذا هو الصحيح تماما، وغرامة تماما.
ولكن الترميز يحصل مملة إذا كان لديك للتعبير عن نفسك حتى
اللعنة على وجه التحديد مرة أخرى ومرة ​​أخرى ومرة ​​أخرى مع بسيطة
مثل هذا السيناريو.
لذلك لديه بعض اختصارات C، مثل هذا.
لذلك هذا الأساس يقول تعلن سلسلة دعا S1 و
تعيين أنه إما هذه القيمة أو هذه القيمة إذا كنت غير == -
عذرا، يجب أن أقول هذا بشكل أكثر وضوحا.
إعلان متغير S1، تعيين هذه القيمة أنه إذا كان هذا هو الصحيح.
خلاف ذلك، عين له هذه القيمة.
لذلك وبعبارة أخرى، وهذا هو نوع من وسيلة من سطر واحد من
والا اذا قائلا لكنه لا يفعل واجب على طول الطريق.
حتى لو كنت هي 1، ثم المضي قدما ونسمي هذا "زجاجة". و
ثم وهذا آخر، يطلق عليه "زجاجات". وفي الوقت نفسه، S2، في
الكلمة الثانية أننا في حاجة إلى تعريف، إذا كنت يساوي 2، سنقوم
تعيين S2 ب "زجاجة". خلاف ذلك، لأنها مجموعة "زجاجات". وما
يعني الآن أستطيع أن تذهب من خلال ذلك، وحذف كافة
تلك الأسطر من التعليمات البرمجية.
وعندما أقول، يبعث على السخرية إلى حد ما، أن هذا هو الآن
أكثر جنسية، انها أكثر جنسية في نوع من الشعور الأسلوبية.
حقيقة أن وظيفيا، هذا الرمز هو الذهاب فعلا إلى
تفعل الشيء نفسه بالضبط.
وعلى الرغم من أنه قد ننظر قليلا خفي في البداية
وهلة، لأننا لم نر هذا البناء قبل، كنت
يقولون ان انه سيكون في نهاية المطاف إلى أن تكون أكثر من ذلك بكثير
قراءة وأسهل بكثير لأننا بشر لفرز من
فهم، لأنه الآن يمكنك أن تقرأ فقط
رمز كل على سطر واحد.
انها لا تزال مماثلة في الروح إلى الإطار المتكامل، حيث هذا هو
حالة وثم وهذا هو ما هو داخل هذا إذا و
ما هو داخل آخر.
ولكن يمكننا أن نفعل هذا بكثير فقط أكثر أناقة.
>> وإذا ذهبت الآن إلى محطة بلدي، بعد أن حذف جميع
هذه الخطوط وحلت محلها مع اثنين من تلك فقط،
إعادة ترجمة وإعادة تشغيل زجاجات من البيرة مع 99، لاحظ أن بلدي
النحو هو، في الواقع، لا يزال صحيحا.
ذلك مرة أخرى، وهو أمر لبدء.
2 زجاجة من البيرة، 1 زجاجة من البيرة.
يبدو الحق.
نعم.
هناك لذلك لدينا حل مقتضبة أكثر من ذلك بكثير.
لذلك هذا، أيضا، كما تحصل على أكثر راحة مع C، وليس
بالضرورة مع pset الأول أو الثاني حتى، ولكن
ندرك أن هذه التركيبات يمكن أن تسمح لنا أن تفعل أشياء من أي وقت مضى
أكثر أناقة.
الآن دعونا نفعل شيئا واحدا أخرى هنا.
اسمحوا لي أن تمضي قدما وفتح return1.c.
الآن دعونا نبدأ في حل مشكلة أخرى بطريقة
يسمح لنا لكتابة رمز أكثر تطورا.
>> حتى هنا برنامج بسيط قليلا هدفها في الحياة
هو زيادة القيم.
وفعلا، دعونا اتخاذ خطوة إلى الوراء.
اسمحوا لي أن القيام بذلك يدويا.
اسمحوا لي أن تفعل تشمل والباحث الرئيسي (الفراغ).
واسمحوا لي أن أسمي هذا increment.c.
وماذا أريد أن أفعل؟
انا ذاهب الى المضي قدما وتقول شيئا مثل -
وسندعو الأرقام نفسها -
الباحث العاشر.
حتى يحصل الباحث X 2؛ printf X هو د٪، سطر جديد، X.
لذلك أنا كتابة سريعة، ولكن نوع من الاشياء المألوفة الآن.
ثم انا ذاهب الى القيام X + +.
ثم أنا ذاهب لطباعة تلك الجملة نفسها مرة أخرى.
ثم انا ذاهب الى بإرجاع 0 فقط لإنهاء البرنامج.
كل الحق، لذلك هذا هو البرنامج الذي
زيادات رقم.
انه سيكون أول من تهيئة شيء ل2، ومن ثم فإنه من
الذهاب الى زيادة ذلك وطباعته مرة أخرى.
>> لذلك دعونا تشغيل الزيادة، برنامج بسيط بشكل لا يصدق.
ولكن لنفترض الآن أنني أريد أن قيمة مكعب، بذلك
إلى حد ما شيئا التعسفي.
وأريد فعلا أن تفعل X يحصل على المكعب منه.
لذلك يمكن أن تستخدم ما يسمى وظيفة الأسرى، ولكن أنا لا
حيث أن نعرف حقا هو حتى الان.
لذلك أنا ذاهب الى القيام بذلك بالطريقة القديمة الطراز.
X X يساوي أضعاف هذه الأوقات X X مرات.
لذلك أنا التكعيب القيمة، ضرب من قبل نفسه مرة أخرى
ومرة أخرى ومرة ​​أخرى، حتى يتسنى لنا الحصول على الطاقة
من 3 في هذه الحالة.
حتى الآن يجب أن أعداد أود أن تكون طباعة، كما سنرى
هنا - جعل الزيادة، لذلك في الواقع ليس حقا زيادة
بعد الآن، ولكن سوف نترك الاسم وحده -
2 ثم 8.
الآن، لدينا بدايات فرصة لصقل
هنا، حيث هذا الشيء التكعيب من ضرب عدد
قد حد ذاته في حد ذاته في حد ذاته يشعر مثل هذا يكون مجرد
من المفيد الحصول على وظيفة، مثل الكثير شخص قرر
منذ سنوات - كما تعلمون، نوع من المفيد لو واحد منا يجلس
ويكتب ذلك printf أن بقية العالم يمكن استخدامه،
لماذا لا نجلس وكتابة دالة يسمى مكعب
التي لا التكعيب هذا بالنسبة لنا لذلك نحن لا يجب أن يدويا
تنفيذ فكرة التكعيب القيم هنا؟
>> ذلك مثال بسيط، ولكن دعونا نمضي قدما واستخدام هذا بوصفه
فرصة لكتابة وظيفة الخاصة بنا.
لذلك حتى الآن، لقد استخدمنا المعلومات الرئيسية، ونحن قد استخدمت الأخرى
وظائف الناس، لكننا لم يكتب عاداتنا وتقاليدنا.
حتى هنا نذهب.
انا ذاهب الى المضي قدما في الكتابة دالة يسمى المكعب.
وانا ذاهب الى انها قد تأخذ مدخلا.
حتى مدخلاتها سيكون عدد صحيح.
وما هو الذهاب الى القيام به؟
انها سوف تعلن خرج الباحث = المدخلات المدخلات مرات
مرات الإدخال.
وبعد ذلك يحدث أن خرج للعودة.
ومن ثم لا بد لي من أن تكون محددة الآن.
هذه الوظيفة هو الذهاب لإرجاع INT.
ذلك ثم هنا هو كيف كنت اكتب الوظائف الخاصة بك.
عليك أن تقرر أولا ما هو اسم الخاص بك
وظيفة ستكون.
وعموما، شيء تفسيرية جيدة، ولذا فإنني سوف
يطلق عليه مكعب.
ثم لديك لتحديد ما يحدث في العودة، ما هو
انتاجها ستكون.
وليس لدينا خيارات كثيرة أن بعد.
الباحث، شار، تطفو، BOOL، السلسلة.
في الوقت الراهن، أنا ذاهب إلى العصا مع الباحث، لأنني أريد ذلك
لإرجاع عدد صحيح.
ثم لديك لتحديد ما مدخلاته، إن وجدت، هي.
وإذا كان مكعب يأخذ حجة، يأخذ شيئا بين
أقواس، يجب ان تعطي هذه الحجة اسم بحيث
يمكنك يطلق عليه شيء كما كنت تنفيذ أو الكتابة
هذه الوظيفة، وعليك أن تعطيه النوع، وهو في هذه
الحالة ستكون كثافة العمليات.
لذلك باختصار، هي وظيفة المكعب التي تأخذ عدد صحيح
وكمدخل بإرجاع عدد صحيح والإخراج.
>> فماذا تفعل مع هذا المدخل؟
حسنا، في السطر 14، أعلن إخراج متغير يسمى، وأنا
تعيين له قيمة، والمدخلات المدخلات مرات مرات الإدخال.
ثم أعود الإخراج.
فكيف يمكنني استخدام هذا بعد ذلك؟
ما يمكنني تغيير أبرز هذه الشخصيات على الخط
7 إلى أن، هل تعتقد؟
AUDIENCE: [غير مسموع].
DAVID J. مالان: نعم، حتى مكعب العاشر.
حتى X هو متغير، وهذا يعني انها تحمل بعض القيمة.
لحسن الحظ، انها من نوع عدد صحيح.
ولأن X هو الباحث، وهذا يعني أنني يمكن أن تمر عليه في المكعب.
وعلى الرغم من أنني تجاوز قيمة x مع قيمة
العاشر مكعب، كما كان الحال حتى الآن، في أي وقت تقوم
لديك علامة المساواة وسطر من التعليمات البرمجية، والاشياء على الحق
يعدم ومن ثم يحصل المسندة إلى
قيمة على اليمين.
وبالتالي فإن ترتيب العمليات كما كنا نأمل.
فهل هذا العمل؟
حسنا، اسمحوا لي هنا تنخفض.
اسمحوا لي أن فتح نافذتي المحطة الطرفية.
اسمحوا لي أن لا تجعل الزيادة، أدخل.
"إعلان ضمني من" المكعب "وظيفة في غير صالح
C99. "بوصفها جانبا، C99 يشير إلى C اللغة كما كان
وكان الذي حدد في عام 1999، تحديثا على نسخة من
عام 1989، وهو التحديث عبر الأصلي.
ذلك أن كل ما الوسائل.
>> فماذا يعني ذلك أن "إعلان ضمني
"المكعب" وظيفة غير صالح؟ "انها هنا.
فهي موجودة مباشرة في السطر 12.
AUDIENCE: [غير مسموع].
DAVID J. مالان: ما هذا؟
AUDIENCE: أنها ليست من قبل.
DAVID J. مالان: أنها ليست من قبل.
لذلك هذا هو الشيء.
C هو نوع من الغباء، أو المجمعين C هي نوع من الغباء.
انهم حقا إلا ما كنت اقول لهم القيام به.
وأنها، على وجه الخصوص، للقراءة فقط أعلى التعليمات البرمجية إلى أسفل،
من اليسار إلى اليمين.
إذا كان الأمر كذلك المترجم، ضجيج، وقراءة التعليمات البرمجية، خط 1،
الأرقام إلى كيفية القيام بذلك.
أوه، هنا يأتي الرئيسي.
حسنا، اسمحوا لي أن تمضي قدما ويعلن متغير x.
اسمحوا لي طباعة شيء ما.
السطر 7، ما هيك هو المكعب؟
ليست إعلانها في stdio.h.
لا يأتي مع C. ليس لدي فكرة عما يجب القيام به.
وهكذا ضجيج كفالات عادل وإنهاء مع تلك الرسالة الخطأ.
حتى نتمكن من إصلاح هذا في عدة طرق.
يمكننا تعليم ضجيج ما هو مكعب فقط عن طريق تحريك حيث
الإعلان هو.
لذلك أنا قص ولصق من فوق الرئيسي.
ندرك الآن أن مجرد الرئيسي لم يعد الأولى، فإنه من
لا يزال تنفيذها بشكل افتراضي.
الرئيسي هو الرئيسي.
انها اسم الدالة الافتراضية.
لا يهم أين هو في ملف.
ولكن على الأقل الآن شهدت ضجيج مكعب قبل أن استخدامها.
لذلك دعونا نرى ما اذا كان هو ضجيج أكثر سعادة الآن.
جعل الزيادة، فإنه يجمع هذه المرة.
>> اسمحوا لي أن تشغيل الزيادة.
وبالفعل، يبدو أن العمل.
الآن، يمكنك الخروج مع سيناريوهات نهاية المطاف حيث
انها ليست مجدية لوضع كل وظيفة
فوق كل وظيفة أخرى.
سوف واجهتك مشكلة في هذا حلقة لا نهائية في الواقع،
حيث هذا الرجل يريد أن يكون هنا ولكن هذا
الرجل يجب أن يكون هناك.
بحيث لا يعمل دائما.
الحمد لله كان الأمر كذلك، C لها حل أكثر أناقة.
انا ذاهب الى وضع هذا الى حيث كان، فقط لأنني
تفضل، على سبيل المبدأ، أن تكون دائما الرئيسي
في الجزء العلوي، لأنه لطيف فقط لرؤية ما هذا البرنامج
لا بشكل افتراضي.
وما أنا ذاهب الى القيام به هنا هو أن يعلن ما يسمى
نموذج أولي.
أنا ذاهب لإعادة يعلن مهامي مكعب من حرفيا
النسخ واللصق.
في الواقع، هذا ليس حرفيا.
حرفيا حتى نسخ ولصق السطر 15
حتى فوق خط 6.
لا يهم ما هذا الخط ينتهي على.
يحدث أن يكون على خط 4.
ولكنه يجب أن يكون الهدف الرئيسي من قبل.
ولكن لاحظ الفرق.
السطر 4 ينتهي بفاصلة منقوطة، وهو ما يعني مهلا،
رنة، تأخذ في كلمة بلدي لذلك أن هناك وظيفة
دعا المكعب الذي يأخذ الباحث وتقوم بإرجاع عدد صحيح.
ولكن أنا لا ستعمل اقول لكم ما هو عليه حتى الان.
أعرف فقط أن أعدكم أن أقول لك في نهاية المطاف.
وبالفعل، والآن لا بأس أن هذا هو في الأسفل.
>> لذلك هذا هو أفضل بشكل عام، وذلك لأن ثم في الجزء العلوي من
الملف الخاص بك، يمكنك حشرجة الموت قبالة وسريعة لإطلاق النار، سطر واحد
كل ما أسماء الدالات الخاصة بك، ما لهم
المدخلات هي، ما هي نتائجها.
وأن تكون أكثر وضوحا، والمدخلات الوسيطة أو عموما يعني
المعلمة، مترادفين.
خرج يعني قيمة الإرجاع، ماذا
ومن ناحية back to ي.
حتى في هذه الحالة هنا، قد أعلن مكعب في القمة، ولكن
محددة، والمعروف باسم تنفيذها، في الجزء السفلي.
حتى الآن دعونا نعود هنا وإعادة تشغيل هذا.
لذلك اسمحوا لي الآن المضي قدما وإعادة تشغيل جعل، إعادة تشغيل الزيادة.
ويبدو الآن أن تعمل على ما يرام.
حتى الآن لا يمكننا المضي قدما وعامل شيئا مثل
البيرة سبيل المثال في هذا الإصدار الرابع.
لذلك اسمحوا لي انزل هنا.
وتلاحظ أن النوع الأول من هذا الدرس لأخذ القلب للتو.
حقيقة أنني كنت الغناء مقطع نفسه مرة أخرى و
مرارا وتكرارا، خط جوقة نفسه في الأغنية، ورأى
مثل لماذا لا أستطيع أن عامل للخروج الى وظيفة؟
وبالفعل، وهذا ينبغي أن يكون واحدا من الدوافع.
بالإضافة إلى حقيقة أن شخص آخر في العالم قد ترغب
لاستخدام وظيفة المكعب -
وهذا سبب وجيه لعامل شيء والكتابة الخاصة بك
العرف وظيفة الخاصة -
إذا كان هناك جزء من التعليمات البرمجية في البرنامج الذي يجعل فقط
المفاهيمي المعنى، الذي نوع من تريد أن تقدم له
الاسم - مثل جوقة، في هذه الحالة -
ثم يمكنك كتابة بالمثل أن كدالة منفصلة.
لم يكن لديك لكتابة كل شيء في الرئيسية فقط إذا كان
يشعر النظيف لفصل بها وإعطائها اسما.
>> حتى في هذه الحالة هنا، لاحظ أن لدي تعليق على قمة
هذه الوظيفة أن تغني فقط حول
تحديد عدد الزجاجات.
تلاحظ هنا بأني لا تحتاج إلى استدعاء هذه
الأشياء المدخلات والمخرجات.
في الواقع، وهذه المرة أنا فقط ودعا لي ب مدخلات للزجاجة.
وتلاحظ هنا، يشير الفراغ ماذا؟
أن جوقة -
AUDIENCE: لا يرده.
DAVID J. مالان: لا ترجع قيمة.
وبالفعل، لم يكن لديك وظائف لإرجاع القيم.
فإنها يمكن أن تفعل شيئا فقط.
يمكن أن يكون ما يسمى الآثار الجانبية، وهو في هذه
القضية هي مجرد حفنة كاملة من الطباعة على الشاشة.
تلاحظ ذلك أن هذا الرمز هنا، وأنا حرفيا فقط من سرق
المثال السابق.
والفرق الوحيد هو بدلا من استخدام ط كما بلدي
متغير، وأنا الآن باستخدام ب كمتغير بلدي.
ذلك لدي هنا ب أسفل، ولدي هنا ب أسفل، ولدي ب
ناقص 1 إلى هنا.
ولكن رمز هو بالضبط نفس الشيء.
ولكن فقط لتظهر لك الآن كيف يمكننا استخدام هذا، اسمحوا لي ان اذهب
قبل تغيير الواقع وهذا وجود لحلقة.
ل (كثافة العمليات ط = ن؛ ط> ن؛ ط -).
>> حتى لقد سرقت لي ان من المثال السابق.
في السابق، كان ذلك في خط ال 37 التي كنت قد بدأت
الغناء في هذه الاغنية مزعج.
ولكن بدلا من ذلك، أنا مجرد الذهاب الى الكلمة الآن جوقة ط.
القيام به.
حتى الآن في كل من هذه الحلقة التكرار، وأنا أسمي هذا الآخر
وظيفة، جوقة، وأنني حدث في الكتابة.
لم يكتب من قبل شخص آخر منذ سنوات.
ولكن جوقة، وفي الوقت نفسه، يستخدم لطباعة printf
من هذه الخطوط الأربعة.
ولكن الحقيقة أن ادعو جوقة مرارا وتكرارا في
حلقة يعني أنني ذاهب إلى الحصول عليها، في النهاية، على
نفس الأغنية بالضبط كما قلت حتى الآن.
لذلك باختصار، والآن إذا كنت ننظر إلى الوراء في قانون بلدي، على الرغم من
وهذا يعادل وظيفيا، لاحظ أنه من
بدءا من الحصول على أكثر قابلية للقراءة.
أنا لا أعرف بالضبط كيف GetInt
وينفذ.
بصراحة، أنا لا أعرف كيف يتم تطبيق جوقة.
ولكن لا يهم بالنسبة لي.
لا يهمني، لأنه الآن لا أستطيع نوعا ما، كإنسان، وقراءة
هذا من أعلى إلى أسفل.
ولأن تتم تسمية وظائف وفقا لما
القيام به، هو قراءة قانون بلدي على نحو متزايد.
وكما برامجنا الحصول على أكثر تعقيدا -
بحلول نهاية الفصل الدراسي، وعليك أن تكون كتابة مئات الأسطر
من التعليمات البرمجية في لغات مثل PHP وجافا سكريبت وما شابه ذلك -
ستجد أنه من أسهل بكثير من لتتبع
ما قمت به.
وعند بدء التعاون مع الأصدقاء أو
الشركاء أو الزملاء، عليك أن تكون قادرا على كتابة أكثر من ذلك بكثير
برامج ضخمة من خلال البدء في ممارسة هذه الأساسية
بناء كتل.
>> حتى مع أن قال، لماذا لا نسميها في اليوم؟
وسوف نرى لك يوم الاربعاء.
[تصفيق]