>> DAVID J مالان: جميع الحق، لذلك هذا هو CS50.
وهذا هو واضح الجمعة.
وهذه هي نهاية أسبوع واحد.
حتى علكم تذكرون أن توقفنا، آخر مرة، مع التشويق من نوع ما.
حيث اننا فضح هذه الكذبة، أنه لا يوجد مهما كنت قد علمت متزايد
يصل، 1 مقسوما على 10 ليست، في الواقع، 0.1 أو 0.100 أو 0.10000.
في الواقع، إذا كنا تجميع هذه البرنامج، كما فعلنا بالأمس، مع،
جعل عدم الدقة، ومن ثم تفعل نقطة، مائل، عدم الدقة،
علمنا أن هذا هو ما 1 مقسوما على 10 هو في الواقع.
لذلك هذا ليس حقا الى حد بعيد في القضية.
ولكن هذا لا تلميح في بعض الحد الأساسي من أجهزة الكمبيوتر.
والواقع، بين أشياء نحن في طريقنا للقيام
اليوم نلقي نظرة على لماذا هذا له حدث، ما آثار هذا الأمر،
كيف فشلت الإنسانية لفهم هذا في بعض جدا
situations-- خطيرة نتيجة التي
وقد مأساوية جدا وexpensive-- وأيضا
نلقي نظرة على كيفية يمكن الدفاع عن الواقع
ضد هذه الأنواع من القيود.
ذلك بشكل حدسي، ربما، لماذا هو 1 مقسوما على 10،
وفقا لجهاز الكمبيوتر الخاص بي هنا، وليس فقط 1/10، 0.10؟
نعم.
ما رأيك؟
>> أحد أعضاء جمهور الحاضرين: إن الأصل هو مختلف؟
>> DAVID J مالان: إن ما هو؟
أوه، والأصل هو مختلف؟
لذلك ليس تماما.
انها في الواقع أكثر أساسي إلى الأجهزة.
أفكار أخرى؟
نعم.
أحد أعضاء جمهور الحاضرين: إنهم تمثل الأرقام بشكل مختلف؟
DAVID J مالان: حتى they-- الحق.
وهي تمثل الأرقام بشكل مختلف.
غير دقيق، على ما يبدو.
بحيث is-- حسنا، بشكل مختلف من ماذا؟
أو ممن؟
منا؟
أحد أعضاء جمهور الحاضرين: نعم.
أنها لا تستخدم العلامة العشرية نظام ل(غير مسموع).
DAVID J مالان: OK.
حتى في المعنى، لم يفعلوا ذلك استخدام النظام العشري.
تحت غطاء محرك السيارة، كل شيء، في الواقع، ثنائي،
وهذا هو ذات الصلة، في الواقع.
لكنه حتى أبسط تفسير من ذلك.
نعم.
>> أحد أعضاء جمهور الحاضرين: إنهم لديهم الكثير من بت فقط.
ويمكن أن تخزن فقط ما يصل الى يقين ما، كما هو الحال مع العشرية.
>> DAVID J مالان: نعم.
هذا هو ما حقا الحصول على ذلك.
اتضح أن أجهزة الكمبيوتر عادة، سوف أكون دائما فقط
استخدام كمية محدودة من المعلومات لتمثيل شيء.
الصحيح؟
بعد كل شيء، ليس لدينا سوى ثابت مقدار مساحة القرص الثابت.
ليس لدينا سوى مبلغ ثابت من ذاكرة الوصول العشوائي، أو ذاكرة الكمبيوتر.
وإذا كان لديك فقط مبلغ ثابت في شيء،
بالتأكيد لا يمكن الاعتماد فعليا إلى ما لا نهاية أو أي عدد تريده.
كنت، نوع من، أن انتقاء واختيار ما مجموعة
من القيم التي ذاهبون الى دعم.
>> وذلك على سبيل المثال، بعد اسبوع او اثنين مضت، عندما تحدثنا عن ASCII،
وتحدثنا عن 8 بت، أو بايت، إذا جاز التعبير،
أكبر عدد استطعنا تمثل مع 8 بت كان ماذا؟
255.
ونحن يمكن أن تمثل 256 مجموع القيم ولكن ليس إذا كنا ننفق واحد منهم
على 0-- حسنا، ولكن إذا كنا قضاء واحد منهم على 0،
ثم أكبر عدد هو، بطبيعة الحال، 255.
>> هكذا اتضح، أن هذا هو في الحالة أيضا، في هذا السياق.
بدأنا الحديث، آخر مرة، حول أرقام الفاصلة العائمة، التي
تختلف عن الأعداد الصحيحة، في أن لديهم العشرية
ونأمل، بعض الأرقام بعد ذلك، ولكنها أيضا.
A الكمبيوتر فقط وعادة ما يذهب لاستخدام 32 بت، وربما 64 بت
تمثل قيمة النقطة العائمة.
حتى على الرغم من أننا قد كبروا تعلم الرياضيات ومعرفة
أنه يمكن أن يكون على الاطلاق عدد لانهائي من الأرقام
بعد العلامة العشرية، وليس إذا كان لديك ذاكرة محدودة.
كنت، نوع من، أن جولة، أو انتقاء واختيار أي
أرقام وأنت تسير لتمثيل.
وهكذا يمكن ان يخطر لك، بمعنى من المعاني، هذا يجري للكمبيوتر الأقرب
التقريب إلى القيمة التي 1/10 فإنه يمكن الحصول على، وفقط 32 أو نحو ذلك بت.
وانها ليست مجرد 10/01.
>> على سبيل المثال، إذا قمت بتغيير هذا ل 1/3، والذي نعتقد أنه حتى أبسط.
حتى 1 مقسوما على 3.
اسمحوا لي أن حفظ الملف.
اسمحوا لي أن المضي قدما في إعادة ترجمة عليه.
واسمحوا لي أن إعادة تشغيل عليه.
هنا أيضا، على ما يبدو، 1/3 ليس 0.3 ثم عدد لا حصر له من 3 ليالي
بعد ذلك.
لديك هذه الدقة في نهاية المطاف.
لذلك نحن البشر الصحيح، وما علمت لكم هو، في الواقع، الصحيح،
لكننا الاهتزاز حتى ضد بعض القيود.
>> وعلى ما اعتقد كنا نفعل اليوم، وتبدأ
من خلال النظر في وبصراحة، فإن العواقب المأساوية لهذا
في بعض الأحيان، عندما البشرية لا تنفذ تماما
لهذا الواقع وهذه القيود.
وسنرى سلسلة من المقالات القصيرة من قناة التاريخ أن يأخذ
نظرة على كيف تسير الامور قد ذهبت خطأ.
انها حوالي 8 دقائق طويلة، وسوف نعود بعد هذا
ونلقي نظرة على بالضبط ماذا يمكن أن تخطئ.
لو استطعنا تعتيم lights--
>> [تشغيل الفيديو]
>> -Computers، قمنا جميعا لقبول المشاكل في كثير من الأحيان محبطة
الذهاب معهم.
البق، والفيروسات، والبرمجيات مواطن الخلل هي أسعار صغيرة
لدفع ثمن الراحة.
لكن التكنولوجيا الفائقة فى وعالية السرعة تطبيقات برنامج الفضاء العسكرية و،
أصغر مشكلة يمكن يتعظم إلى كارثة.
في 4 يونيو 1996، أعد العلماء شن بدون طيار آريان 5 صواريخ.
وكانت تحمل العلمي الأقمار الصناعية المصممة
لإنشاء بالضبط كيف يتفاعل الحقل المغناطيسي للأرض
مع الرياح الشمسية.
بنيت الصاروخ ل وكالة الفضاء الأوروبية
وانطلق من منشأتها على ساحل غويانا الفرنسية.
>> -and حوالي 30 ثانية إلى الرحلة، لأول مرة
شيء لاحظت وتسير بشكل خاطئ.
أن الفتحات والدوران في الطريقة التي حقا لا ينبغي.
حوالي 40 ثانية فقط من بداية الرحلة، ومن الواضح ان السيارة في ورطة،
وذلك عندما جعلوا قرار تدميره.
موظف السلامة المدى مع الشجاعة الهائلة الضغط على الزر،
فجرت الصواريخ قبل أن تصبح خطرا على السلامة العامة.
>> كان، هذا قبل الزواج رحلة آريان 5،
واستغرق تدميرها ضع نظرا لوجود خطأ
جزءا لا يتجزأ من البرنامج الصاروخ.
-THE المشكلة على وكان آريان أن هناك
كان الرقم الذي المطلوبة 64 بت للتعبير،
وانه يريد تحويل لعدد 16 بت.
ويبدو أنهم افترضوا أن عدد كان لن تكون كبيرة جدا،
أن معظم تلك الأرقام في عدد 64 بت كانت 0 و.
لقد كانوا مخطئين.
>> -THE عدم قدرة احد برنامج حاسوبي لقبول
هذا النوع من رقم تم إنشاؤه من قبل وكان آخر في جذر الفشل.
وقد تطوير البرمجيات تصبح جزء مكلفة جدا من التكنولوجيا الجديدة.
وكان الصاروخ أريان 4 كانت جدا نجحت الكثير من البرامج
خلقت لكنه كان أيضا تستخدم على اريان 5.
>> وكانت -THE المشكلة الأساسية التي آريان كان 5 أسرع، وتسارع أسرع.
وكان البرنامج لا وشكلت لذلك.
>> -THE تدمير الصاروخ كانت كارثة مالية ضخمة،
جميع بسبب خطأ في برنامج دقيقة.
ولكن هذا لم يكن أول الوقت مشاكل تحويل البيانات
قد تعاني تكنولوجيا الصواريخ الحديثة.
>> -في عام 1991، مع بدء حرب الخليج الأولى،
وصواريخ باتريوت شهدت نوع مماثل
من مشكلة تحويل الرقم.
ونتيجة لذلك، 28 شخصا، 28 جنود أمريكيين
قتل وحوالي جرح 100 آخرين،
عندما باتريوت، والتي كان من المفترض للحماية من صواريخ سكود واردة،
فشل إطلاق صاروخ.
>> غزت العراق الكويت، وعندما وأمريكا أطلقت عاصفة الصحراء في أوائل عام 1991،
تم نشر بطاريات صواريخ باتريوت لحماية المملكة العربية السعودية وإسرائيل
من هجمات صواريخ سكود العراقية.
باتريوت هو الولايات المتحدة، متوسطة المدى سطح-جو النظام
المصنعة من قبل شركة رايثيون.
>> -THE حجم اعتراضية باتريوت، نفسه، هو حول، ما يقرب من 20 أقدام طويلة.
ويزن حوالي 2000 جنيه.
ويحمل رأسا حربية من about-- أعتقد أنه من نحو 150 جنيه.
والرؤوس الحربية، في حد ذاته، هي شديدة الانفجار،
التي لديها شظايا من حوله.
غلاف الرأس الحربي هو مصممة للعمل مثل رصاص.
>> -THE الصواريخ نفذت، 4 في الحاويات،
ويتم نقلها بواسطة العربات نصف المقطورة.
>> -THE نظام باتريوت المضاد للصواريخ يعود لا يقل عن 20 سنوات حتى الآن.
صمم أصلا كما صاروخ الدفاع الجوي
لاسقاط طائرات العدو.
في حرب الخليج الأولى، عندما جاءت تلك الحرب جنبا إلى جنب،
الجيش يريد استخدامه ل اسقاط صواريخ سكود، وليس الطائرات.
كانت القوات العراقية لا كثيرا من مشكلة،
ولكن الجيش كان قلقا حول صواريخ سكود.
وهكذا حاولوا ترقية باتريوت.
>> -Intercepting عدو صاروخ السفر في ماخ خمسة
كان على وشك أن يتحدى بما فيه الكفاية.
ولكن عندما باتريوت وتم نقله إلى الخدمة،
وكان الجيش لا علم ل تعديل العراقي التي جعلت
صواريخ سكود من المستحيل تقريبا للضرب.
>> وماذا حدث، هو أن صواريخ سكود قادمون في، كانت غير مستقرة،
كانوا متذبذب.
والسبب في ذلك، كان العراقيون، من أجل
للحصول على 600 كيلومترا من صاروخ 300 كيلو متر،
أخذ الوزن من الرؤوس الحربية الأمامي وجعل الرؤوس الحربية أخف وزنا.
وحتى الآن، في محاولة لباتريوت القادمة في سكود، وأكثر من مرة،
الأغلبية الساحقة من الوقت، فإنه يطير فقط عن طريق سكود.
>> وبمجرد مشغلي نظام باتريوت أدرك باتريوت أخطأ هدفه،
فجروا رأس حربي لصواريخ باتريوت، لتجنب سقوط ضحايا محتملة اذا
وسمح ليسقط على الأرض.
>> كان -من ما اعتبره معظم الناس، تلك نارية كبيرة في السماء،
ويساء فهمه على اعتراض الرؤوس الحربية من طراز سكود.
على الرغم من أن في الليل السماء، بدا وطنيات
أن يكون بنجاح تدمير صواريخ سكود، في الظهران،
يمكن أن يكون هناك خطأ حول أدائها.
هناك، ونظام رادار باتريوت فقدت المسار من صواريخ سكود واردة،
وأطلقت أبدا، بسبب خلل البرمجيات.
وكان الاسرائيليين الذين اكتشفت لأول مرة أن يعد النظام كان على،
وكلما زاد التباين الوقت أصبح، بسبب ساعة جزءا لا يتجزأ من
في الكمبيوتر للنظام.
>> قبل نبذة عن 2 أسابيع المأساة في الظهران،
ذكرت والإسرائيليين ل وزارة الدفاع،
أن النظام بدأ يفقد الوقت، أنه بعد حوالي 8 ساعات من التشغيل،
لاحظوا أن هذا النظام أصبحت بشكل ملحوظ أقل دقة.
وردت وزارة الدفاع من قبل يقول كل من بطاريات باتريوت
لعدم ترك نظم لفترة طويلة.
هم لم يقل ما كان لفترة طويلة.
8 ساعات؟
10 ساعة؟
1000 ساعة؟
لا أحد يعرف.
-THE بطارية باتريوت المتمركزة في ثكنة
في الظهران، ومعيبة الداخلية لها على مدار الساعة، كان على أكثر من 100 ساعة
في ليلة 25 فبراير.
>> -من الوقت مجنزرة الى دقة حوالي 1/10 من الثانية.
الآن 1/10 من الثانية هو عدد مثيرة للاهتمام
لأنه لا يمكن أن يكون وأعرب في ثنائي، بالضبط.
وهو ما يعني، أنه لا يمكن يمكن التعبير عنها، بالضبط،
في أي جهاز كمبيوتر الرقمية الحديثة.
من الصعب الاعتقاد، ولكن استخدام هذا كمثال.
دعونا نلقي الرقم، 1/3.
1/3 لا يمكن التعبير عنها في العشرية بالضبط.
1/3 0،333 مستمرة منذ ما لا نهاية.
ليس هناك طريقة للقيام بذلك، مع دقة مطلقة، في العشرية.
هذا هو بالضبط نفس النوع من المشكلة التي وقعت في باتريوت.
ركض أطول النظام، أسوأ أصبح خطأ وقت.
>> ، وبعد 100 ساعة من العملية، والخطأ في الوقت الذي كان فقط حوالي 1/3 من الثانية.
ولكن من حيث استهداف صاروخ السفر في ماخ 5،
ذلك أدى إلى تتبع الخطأ أكثر من 600 متر.
سيكون من خطأ فادح للجنود في الظهران.
>> وماذا حدث، هو إطلاق سكود كان الكشف عن طريق الأقمار الصناعية للإنذار المبكر،
وعلموا سكود كان قادمة في الاتجاه العام لها.
انهم لا يعرفون أين كانت قادمة.
>> كان -من الآن ما يصل إلى الرادار مكونات نظام باتريوت،
الدفاع الظهران، لتحديد والحفاظ على مسار الصاروخ العدو واردة.
>> كان -THE رادار ذكية جدا.
فإنه في الواقع تتبع موقف سكود
ومن ثم التنبؤ أين وربما سيكون،
في المرة القادمة، و أرسل رادار نبضة بها.
التي كانت تسمى بوابة النطاق.
>> -Then، وبمجرد أن باتريوت يقرر ما يكفي من الوقت لديها
تمريرها إلى العودة وتحقق المقبل الموقع لهذا الكائن المكتشف،
انه يعود.
لذلك عندما عاد إلى الخطأ المكان، ثم لا يرى وجوه
وتقرر أنه لا يوجد كائن، كان كشف كاذبة،
ويسقط المسار.
اختفى سكود واردة من شاشة الرادار،
وبعد ثوان، فإنه انتقد إلى الثكنات.
سكود مقتل 28 وكان آخر واحد اطلق خلال حرب الخليج الأولى.
بشكل مأساوي، البرنامج المحدث وصل في الظهران في اليوم التالي.
كان الخلل البرمجيات كانت ثابتة، وإغلاق
فصل واحد في المضطربة تاريخ صواريخ باتريوت.
>> [END قراءة]
>> DAVID J مالان: لذلك نحن سوف نلقي نظرة على بعض قيود مشابهة في قليلا.
ولكن أولا، دعنا الانتقال إلى قليل من معلوماتك.
حتى احدا-- في نهاية هذا الاسبوع، هناك سيكون أقسام عظمى،
والتي تهدف إلى أن تحل محلها أقسام مواعيد منتظمة، والتي
وبدء أسبوع من الآن.
نلقي نظرة على الموقع الإلكتروني للCS50 ل لمزيد من المعلومات حول تلك.
كما سيتم تصويره والمتدفقة العيش لغير القادرين على الحضور.
مجموعة مشكلة 1 هو على الموقع بطبيعة الحال بالفعل،
وسوف نلقي نظرة على أن في قليلا.
وساعات العمل جدا، وسوف تتخذ وضع هذا الاثنين حتى الخميس.
>> لذلك كان هذا أكثر الكنسي برنامج نظرنا في آخر مرة.
انها مثل أبسط البرنامج الذي يمكن أن يكتب في C،
وحتى أن قليلا من ادعاء جريء.
الصحيح؟
لأن هناك الكثير من يبدو التعقيد إلى ذلك.
لذلك دعونا نلقي نظرة سريعة على ما بعض هذه العناصر
كانت ثم محاولة تقديم نموذج العقلي لكيفية
هذه أبسط برامج العمل، ومن ثم سنبدأ
النظر إلى الأمور أكثر من أي وقت مضى تعقيدا.
حتى هذا الخط هنا، سلط الضوء الآن، باللون الأصفر، ماذا نقول، آخر مرة،
أن هذا لا بالنسبة لنا؟
ما هو الغرض الذي تخدمه؟
أي شخص من أبعد مرة أخرى؟
نعم.
>> أحد أعضاء جمهور الحاضرين: (غير مسموع)
DAVID J مالان: جيد.
لذلك يتيح لك الوصول للأوامر، أو دعنا
ندعو لهم وظائف، أن شخصا كتب آخر، التي تم تعريفها،
إذا جاز التعبير، في بعض الملفات الأخرى.
ولذا فإننا سوف نرى بالضبط ما ملف .H غير مقابل ملف .C، في نهاية المطاف.
ولكن الآن، ونعرف تماما أن printf، على سبيل المثال،
من بين المهام التي كانت أعلن في بعض الملفات الأخرى، في مكان ما
آخر على القرص الصلب السحابة التي يسمح لنا للوصول إلى printf واستخدامه
دون الحاجة إلى إعادة اختراع أن عجلة أنفسنا.
وفي الوقت نفسه، الرئيسية.
ما هو التناظرية من الرئيسي، في الأسبوع الماضي؟
نعم.
>> أحد أعضاء جمهور الحاضرين: النقر العلم الأخضر.
>> DAVID J مالان: نعم.
الصفر، وعند النقر عليها العلم الأخضر.
انها مثل قطعة اللغز جزاء أمور قبالة.
وذلك على نحو مماثل، بدأ العالم قرر قبل عدة سنوات أن في C،
وحفنة من لغات أخرى، إذا كنت ترغب في كتابة برنامج،
الوظيفة الأولى الخاص بك وقد ليتم استدعاؤها، الرئيسية.
وعليها أن تبدو مثل هذا.
ولكننا سوف نعود، وقت آخر، لماذا، الباحث،
و، الفراغ، يعني في هذا السياق.
أما الآن، فإن الأقواس المعقوفة هي نوع من مثل قطعة اللغز شكل خدش ل
التي بتغليف بعض عدد من الخطوط.
وبين في الخطوط هنا، وهذا هو واحد هنا.
printf هي وظيفة هدفها في الحياة لطباعة سلسلة منسقة.
ومنسق، أعني لك يمكن سد العجز في القيم نائبا،
ويمكنك تحديد كم عدد عشري نقطة عدد الأرقام لطباعة
بعد الفاصلة العشرية وما شابه ذلك.
وprintf، بالطبع، يأخذ واحدة أو أكثر الحجج أو المعلمات،
والمعروف، ببساطة أكثر، كمدخلات.
>> printf لذلك، مثل الكثير من وظائف، ويأخذ المدخلات.
وتبنت تلك المدخلات بواسطة الأقواس اثنين هنا.
وداخل تلك هو مدخل واحد.
انها سلسلة، ونحن قد يطلق عليه، الذي هو مجرد سلسلة من الأحرف،
مثل كلمة، أو عبارة، أو ككل مقال حتى في بين علامات اقتباس مزدوجة.
وهذا هو ما يحدث للتأثير على سلوك printf لأنه، بطبيعة الحال،
انها مجرد وظيفة الطباعة العامة.
انها لن تعرف ما للطباعة، إلا إذا كنت أقول ذلك.
وبعد ذلك، بعض تفصيلات.
ماذا نقول هذا غريب تسلسل الرموز هو؟
نعم.
>> أحد أعضاء جمهور الحاضرين: خط جديد.
>> DAVID J مالان: خط جديد.
هكذا اتضح، لا يمكن أن تصل فقط، أدخل، عندما كنت تكتب البرنامج.
عموما، المترجم هو الذهاب الى الحصول الخلط قليلا لما تعنيه.
بدلا من ذلك، عليك أن حرفيا أقول، أعطني خط جديد هنا.
وحتى / n هو ما نحن عموما استدعاء حرف هروب.
هكذا ن، لسطر جديد.
ويعرف المترجم أنه عندما ترى / ن،
ينبغي تحفيزه الكمبيوتر، في نهاية المطاف، أو printf، في هذه الحالة،
لطباعة وجديدة الفعلي الخط، مثل ضرب، أدخل،
مفتاح على لوحة المفاتيح.
وأخيرا، ماذا نقول هذه القطعة من بناء الجملة عنه؟
ماذا تمثل؟
نعم.
>> أحد أعضاء جمهور الحاضرين: (غير مسموع)
>> DAVID J مالان: انها مجرد في نهاية السطر.
انها نهاية البيان.
وندرك أننا لا وضعها في كل مكان.
نحن بالتأكيد لا وضعها في نهايات كل سطر.
على سبيل المثال، هناك لا شيء على السطر الأول، وهناك لا شيء على الخط
مع والرئيسية، وهناك لا شيء بعد الأقواس المعقوفة،
ولكن عليك أن تبدأ في رؤية والحصول على دراية حيث انه دعا ل.
وانها دائما تقريبا بعد وظيفة دعوة أو بيان بعض الإجراءات
انك تأخذ الواقع.
>> ونعرف الآن، وخاصة إذا بين هؤلاء أقل راحة،
هذه هي أنواع الأشياء الغبية أنك سوف ينتهي ضجيجا عن طريق الخطأ
رأسك بالحائط أكثر.
لأنك سوف تكون منطقيا واثق في بعض المشاكل
كنت قد حل لمشكلة مجموعة، والشيء اللعين فقط
لن تجميع أو حتى تشغيل.
وكثير من الأحيان، في وقت مبكر، انه سيكون ل يكون ذلك بسبب فاتك قوس،
أو فاتك فاصلة منقوطة.
وحتى مجرد أن تضع في اعتبارها هذه الأنواع من الأشياء،
وليس محاولة للحصول أحبطت لهم بسبب بسرعة كبيرة يفعل ذلك
أصبح موضة قديمة.
ولكن من السهل جدا الحصول على أحبطت في وقت مبكر، نتيجة لذلك.
>> وحتى الآن، دعونا نلقي نظرة على كيفية هذا الخط يعمل فعلا
وبعد ذلك ننظر في قليلا واحد أكثر تعقيدا.
لذلك لدينا أكثر من هنا، و القدرة على الاستفادة من هذه الشاشة.
ودعونا نفترض أن هذا هو بلدي شاشة الكمبيوتر،
ولكن أنا أكتب ل، مرحبا البرنامج، وأنا لم تنفذ، printf.
نفذت شخص آخر، printf.
ان الذين يحبون أن تدعي نفذت، printf؟
إذا كنا قد؟
كل الحق، ما هو اسمك؟
>> الطالب 1: [؟ كابال. ؟]
>> DAVID J مالان: كوبال، وتأتي على ما يصل.
تأتي على ما يصل.
حسنا.
لذلك لدينا، هنا، بعض علامات الأسماء، لأننا سوف تجعل لعبة صغيرة من هذا.
ونحن سوف ندعو لكم، printf.
وإذا كنت تريد أن تأتي إلى هنا، ما رسمتها فقط على الشاشة،
انها بكل بساطة، لا يوجد لي، هذا.
>> كل الحق، لذلك، مرحبا اسمي، printf، إذا كنت ترغب في وضع هذا على.
حسنا.
وإذا كان يمكن أن تذهب موقف عن طريق شاشة الكمبيوتر
كما لو كنت الدالة التي جاء مع هذا النظام جهاز الكمبيوتر.
وغرضك في الحياة في الواقع لطباعة شيء.
ولكن مثل الكثير من برنامج نحن كان فقط على الشاشة، هنا،
ونحن في طريقنا لدينا ل في الواقع أقدم لكم بعض المدخلات.
>> وهكذا، إذا مدخلات بلدي، هنا، هو على ما يبدو، ما يتم تمريرها إلى printf،
دعونا نوع من سخرية عنه مثل هذا.
أنا أريد أن أكتب حرفيا على قطعة من الورق، "مرحبا، العالم"
مائل N. وأن يكون واضحا، ما لقد رسمها فقط على هذه القطعة من الورق،
يشبه هذا.
لذلك عند تشغيل هذا البرنامج، وهذا يعدم الخط الأصفر من التعليمات البرمجية،
انها كما لو كنت، وبرنامج مرحبا، أنا تسليم بعض المدخلات من لوظيفة
أن شخصا ما كتب آخر.
>> وإذا كنت، مع إصبعك، يمكن في الواقع، مع إصبعك،
رسم على الشاشة مهما كان فمن كنت قد سلمت،
في الواقع، في نهاية المطاف، هو نرى ذلك تماما، على الشاشة.
وقضية زاوية صغيرة هنا.
وجيدة، ونحن لا يرى و، خط جديد، عند هذه النقطة.
سيكون من الخطأ بالنسبة لك لرسم السطر صراحة.
ولكن إذا حافظنا على كتابة الكلمات على الشاشة، فإنها في نهاية المطاف أقل من ذلك.
>> لذلك شكرا جزيلا لك، ولكن عصا هنا لحظة واحدة فقط.
نحن الآن بحاجة الآخر متطوع، إذا استطعنا،
هذا سوف تحتاج للعب دور of-- انه شخص فقط في الأوركسترا
الآن.
كيف about-- موافق.
هنا.
تأتي على ما يصل.
ما اسمك؟
>> الطالب 2: [؟ Ivay. ؟]
DAVID J مالان: عذرا؟
الطالب 2: [؟ Ivay. ؟]
DAVID J مالان: إيثان، وتأتي على ما يصل.
لا؟
لم أحصل على هذا الخطأ، حتى بعد ان قال لكم انه مرتين؟
تأتي على ما يصل.
من الصعب أن نسمع هنا.
حسنا.
وأنا آسف، ما هو اسمك؟
>> الطالب 2: [؟ Ivay. ؟]
>> [؟ DAVID J مالان: Ivay. ؟] حسنا.
الآن، إذا كنت لا العقل، كنت GetString.
>> الطالب 2: موافق.
رائع.
DAVID J مالان: حتى إذا كنت ترغب لنقف هنا لمجرد لحظة،
دعونا نلقي نظرة على بعض الشيء أكثر برنامج معقد، التي
لديها الآن ثلاثة أسطر من التعليمات البرمجية.
لذلك لدينا، واحد، أذكر اسمك باستخدام printf. اثنين، دعوة إلى GetString،
تليها مهمة ل متغير يسمى، سلسلة الصورة، أو دعا الصورة.
وبعد ذلك مكالمة أخرى ل، printf، ولكن هذه المرة مع اثنين من المدخلات.
>> الدولة لذلك قمنا به بالفعل اسمك، أو بالأحرى، لدينا
فعلت مكالمة printf.
لذلك أنا أريد أن أكتب، ولاية اسمك.
وهكذا، ما أنا ذاهب ل تمر، printf، في لحظة فقط،
هو بكل بساطة، هذا.
لذلك إذا كنت ترغب في المضي قدما في رسم هذه على الشاشة، وهذا الإدخال الآن.
حسنا.
وننسى سلسلة، لدينا الآن خط منطقتنا من التعليمات البرمجية هنا.
حتى في، GetString، نحتاج للاتصال في الواقع، GetString.
حتى غرضك في الحياة هو أن مجرد المشي للخروج الى الأوركسترا، إذا كنت تستطيع،
والحصول على اسم شخص ما.
ولكن دعونا نعطيكم شيء لوضعها على.
إذا كنت تريد، اذهب قدما والحصول على سلسلة،
الحصول على اسم شخص ما على ذلك قطعة من الورق، إذا كنت تستطيع.
>> حسنا.
وسنرى، في لحظة فقط، اسمه نحن نحصل على.
وفي الوقت نفسه، ما أنا ذاهب ل لديهم استعداد، هو قطعة فارغة
من الورق، والتي، وانا ذاهب لتخزين كل ما القيمة التي
هو أن GetString يعود لي، I، كونه متغير سلسلة دعا، ق.
حسنا.
فماذا لديك هنا؟
نيك.
حسنا.
لذلك لدينا اسم نيك هنا.
لذلك هذا هو ما حرفيا لقد تم إرجاع
بالنسبة لي، إذا جاز التعبير، من خلال GetString.
>> I، الآن، انا ذاهب الى تنفيذ الجانب الأيسر
من هذا التعبير، حيث كنت ببساطة نسخ إلى أسفل، لأغراض اليوم، نيك.
وحتى الآن، ولدي متغير ودعا، ق، تخزين اسم نيك ل.
لقد سلمت بالفعل ل printf، حجة السابقة.
ولكن في خطنا الثالث والأخير من رمز، أنا فعلا لجهة printf
شيئا قليلا different-- "مرحبا،٪ ق"، مائل ن.
>> وحتى السطر الأخير أنا ذاهب لsend-- آخر شيء أنا
الذهاب لأكتب الآن، هو هذا.
لذلك السطرين من التعليمات البرمجية، أو بدلا السطر الأخير من التعليمات البرمجية،
دعوات لمدة inputs-- واحد، وهذا، واثنين، وهذا.
إذا كان الأمر كذلك وظيفة printf لدينا ويمكن الآن أن تأخذ هذه كمدخل،
اسمحوا لي أن مسح الشاشة بالنسبة لك.
في الواقع لا، يمكنك ان تمضي قدما.
سنترك الامر، منذ انها في نفس البرنامج.
يجب أن نرى، مرحبا، نيك.
حسنا.
لذلك كان هذا عدد غير قليل الأطواق من خلال القفز، فقط
في الكتابة، ولايتك اسم، و، مرحبا، نيك.
لكن هذه الفكرة البسيطة من رسالة عابرة، من مرور المدخلات والمخرجات المستقبلة،
هو بالضبط نموذج ونحن في طريقنا ل حتى بالنسبة لمهام الأكثر تعقيدا.
لذا شكرا جزيلا لكم على حد سواء.
لدينا الإجهاد جميل الكرة هنا من أجلك.
وشكرا لGetString لدينا والمتطوعين printf على حد سواء.
شكرا.
حسنا.
شكرا لكم على حد سواء.
>> لذلك كنا نتحدث عن حتى الآن، في معظمها حول السلاسل.
واتضح أن C يمكن في الواقع فهم بعض أنواع البيانات المختلفة.
في الواقع، دعونا نلقي نظرة على هذه هنا.
حتى C، والكثير من اللغات، فهم الأشياء تسمى حرف.
وشار عموما هو بايت واحد، أو ثمانية بت.
ويمثل حرف واحد، مثل حرف A، أو العاصمة
حرف A، أو حرف صغير A، أو تعجب،
أو أي الحرف الذي يمكنك كتابة على لوحة المفاتيح، وأحيانا أكثر من ذلك.
نحن يحدث أيضا أن نرى يطفو.
A تعويم هو، عموما، ل 32-بت قيمة، أو أربعة بايت
لمرة أخرى، بايت واحد هو ثمانية بت.
>> لذلك تعويم قيمة النقطة العائمة، شيء مع العلامة العشرية.
والواقع، وهذا ما الفيلم كان يتحدث
حول عندما تحدث عن العائمة قيم النقطة، بعض عدد محدد من البتات
تستخدم لتمثيل العدد الحقيقي.
ولكن هناك أيضا أشياء دعا الزوجي.
هذه موجودة في جاوة، إذا كنت قد اتخذت APCS،
ومزدوجة، مثل اسم ولله الحمد وتقترح، هو ضعف كبير مثل تعويم.
انها لا تزال العدد الحقيقي، كان لديه فقط أكثر من بت
التي لنكون أكثر دقة من أي وقت مضى، أو لتخزين أرقام أكبر من ذلك.
الباحث أمرا سهلا.
تحدثنا عن ذلك آخر مرة.
انها مجرد صحيح.
وانها عموما 32 بت، أو أربعة بايت.
>> وهكذا، إذا كان لديك، دعونا نرى الآن، 32 bits-- وفعلنا هذا في الأسبوع 0،
أي وقت مضى حتى briefly-- إذا كان لديك 32 بت، ما هو أكبر
الرقم الذي يمكن أن تمثل كعدد؟
اعط او خذ؟
انها مثل 4000000000، وهذا فقط إذا نحن
تمثل الأرقام الإيجابية فقط.
إذا كان لديك 32 بت، وتريد تمثل الأرقام السلبية كذلك،
النطاق الخاص بك هو، أساسا، سلبية 2 مليار دولار لمليار إيجابية 2.
ولكن عموما، سنبدأ في 0 يرتفع إلى 4 مليارات.
>> لم يكن لديك لنعرف على وجه الدقة، ولكن يمكننا أن نرى هذا، في الواقع، إذا أنا فقط
فتح قليلا حاسبة، هنا.
أستطيع أن أفعل 2 32، و هذا هو بالضبط كيف كبيرة،
كم من القيم التي يمكن تمثل، مع 32 بت.
وانها ما يقرب من 4 مليارات.
ولذا فإننا سوف تبقي رؤية هذا العدد في عدد قليل من أماكن مختلفة.
لكن اذا كنت بحاجة أطول أرقام من ذلك،
اتضح هناك ل شيء يسمى طويل طويل.
ومنذ فترة طويلة طويلة هو عموما 64 بت، والتي
يعني انها أمر من حجم حتى أكبر من عدد صحيح.
>> لذلك لا أستطيع حتى نطق أكبر الرقم الذي يمكن أن تمثل،
لكنه أكبر بشكل ملحوظ.
الآن بوصفها جانبا، من الناحية التاريخية، إذا كان الباحث هو 32 بت،
ومنذ فترة طويلة طويلة هو 64 بت، كيف كبير هو عملية طويلة، وليس لفترة طويلة طويلة؟
كنت أعتقد أنها أطول من عدد صحيح ولكن منذ فترة طويلة ربما أقل وقت طويل من فترة طويلة،
ولكن ذلك يعتمد في الواقع.
>> وهكذا اتضح واحد من الإحباطات جدا،
مع كتابة التعليمات البرمجية على بعض الأنظمة، غير أنه ليس كل من هذه الأنواع من البيانات
لها قيمة محددة مسبقا.
في بعض الأحيان انها العديد من هذه البتات.
في بعض الأحيان فهو أن بت عديدة.
ولذلك عليك فعلا أن تعرف، في بعض الأحيان، ما هي الأجهزة
كنت تقوم بتشغيل البرنامج على.
الحمد لله، واللغات الأخرى، و أنواع البيانات الأخرى الموجودة الآن،
تسمح لك أن تكون أكثر دقة.
حسنا، رأينا سلسلة، ورأينا منطقي أيضا،
ولكن تبين هذه تأتي فقط مع مكتبة CS50.
حتى تلك التي لم تبن إلى C. هؤلاء بدلا من ذلك،
تأتي في هذا الملف يسمى CS50.h، التي سنقوم في نهاية المطاف
قشر العودة طبقات.
ولكن الآن، وانهم فقط أنواع البيانات الإضافية.
A منطقي هو صحيحة أو خاطئة، و السلسلة عبارة عن سلسلة من الأحرف،
مثل كلمة واحدة.
الآن printf، رأيناه، لديها النائبة،٪ s غير واحد.
وكنت قد تكون قادرة، إلى الآن، نستنتج من هذه الأمثلة الأخرى، كيف
هل يمكن أن يكون نائبا لأنواع البيانات المختلفة.
على سبيل المثال، واتخاذ تخمين، إذا كنت أراد لطباعة حرف واحد باستخدام
printf، والنائب هو على الارجح٪ ج.
وإذا كنت ترغب في طباعة ل صحيح مع النائب، ط٪.
٪ بكالوريوس في القانون هو قيمة عشرية طويلة جدا، ولكن منذ فترة طويلة طويلة، بحيث يعين ذلك.
ثم و٪ العائمة قيمة النقطة أو مزدوج،
حتى في بعض الأحيان أنهم إعادة استخدامها في سياقات مختلفة.
لذلك سنرى واستخدام بعض من هؤلاء مع مرور الوقت.
وprintf وغيرها من المهام أيضا تسلسل الهروب دعم الآخرين،
وأحيانا، وهذه هي ضرورية.
هكذا ن مائل هو خط جديد.
مائل ر، لا أحد تريد أن تأخذ طعنة؟
أحد أعضاء جمهور الحاضرين: تبويب.
DAVID J مالان: تبويب.
حتى إذا كنت تريد فعلا لطباعة علامة تبويب، وليس
عدد ثابت من مسافات ولكن فعلي حرف جدولة، فإنك لم تصل بك،
علامة التبويب، مفتاح على لوحة المفاتيح، عموما، كنت فعلا مائل ر.
اقتباس مزدوجة مائل، لماذا أنا في أي وقت تريد ذلك؟
الصحيح؟
لماذا لا أستطيع أنا اكتب اقتباس مزدوجة على لوحة المفاتيح؟
أحد أعضاء جمهور الحاضرين: لأنه، على خلاف ذلك، انها
الذهاب الى اعتقد انها نهاية من مثل الطباعة [؟ النص. ؟]
>> DAVID J مالان: بالضبط.
تذكر، مع شركائنا أمثلة printf، عندما كنا
كانت تمر إلى printf في المدخلات، على الجانب الأيسر من أن سلسلة الإدخال
وعلى يمين هذا الإدخال الربيع، بطبيعة الحال، كان اقتباس مزدوجة.
إذا الإدخال الخاص بك لديه ضعف الاقتباس في منتصف ذلك،
قد الكمبيوتر يحتمل يحصل الخلط، ل،
هل هذا الاقتباس مزدوج تنتمي في الوسط؟
هل تنتمي مع واحد اليسار؟
هل تنتمي مع الحق واحد؟
وهكذا، إذا كنت تريد أن تجعل من السوبر واضح، يمكنك القيام مائل اقتباس مزدوجة،
بحيث انه هرب منه، إذا جاز التعبير، و انها ليست الخلط عن شيء آخر.
وهناك عدد قليل من الآخرين هنا، ص مائل، ونقلت واحدة، 0،
لنرى على مر الزمن، كذلك.
والآن، ماذا عن الوظائف؟
>> حتى الإجراءات التي يمكننا اتخاذها حتى الآن في هذه اللغة، C، حسنا، رأيناه،
printf، بالطبع، وجميع من الآخرين على الشاشة،
هنا، أننا سوف تستخدم ل الأسابيع القليلة الأولى بالطبع الوحيد،
عندما تأتي المكتبة CS50.
وأنها تجعل من الاسهل بكثير، في C، لفي الواقع الحصول على مدخلات المستخدم.
اتضح أنه في C، و بصراحة في بعض اللغات،
انها الألم الحقيقي في الرقبة للقيام شيء بسيط، مثل مطالبة المستخدم
لوحة المفاتيح، لله أو لها دخل.
وحتى هذه الوظائف تجعل من الأسهل.
>> وكما أن لديها خطأ التحقق من جميع أنحاء،
بحيث، عند أذكر يوم الاربعاء، ونحن
رأيت، إعادة المحاولة، والإنذار، عندما لم تتعاون،
وأنا كتبته كلمة واحدة، بدلا من العدد؟
فعلناه في رفع الأحمال الثقيلة في وقت مبكر إلى التأكد من يتعاون المستخدم.
ولكن هذه هي مجرد التدريب عجلات أننا في نهاية المطاف،
وبسرعة، وخلع.
>> لذلك باختصار، ثم، دعونا نلقي نظرة سريعة،
مثل الكثير فعلنا مع الصفر، في بعض بنيات الكنسي في C.
هذا هو المقصود ل، النوع من، يكون بجولة مكوكية،
فقط بحيث يكون لديك مرجع والتي كنت قد رأيت أشياء في البداية.
ولكن بعد ذلك سوف نبحث في الترميز الفعلي استخدام بعض من هذه اللبنات.
مثل ذلك كثيرا في خدش، عندما كنا عبارات مثل،
أقول، أو الانتظار، في C، لدينا وظائف أيضا، مثل printf.
>> إذا كنا نريد أن نعبر عن حالة في C، انها مماثل، في الروح،
إلى أن قطعة اللغز الذي يشبه هذا في خدش.
ولكن بدلا من ذلك، نحن حرفيا الكتابة فقط، إذا.
وبعد ذلك، بين قوسين، وضعنا شرطا،
حيث أن الشرط هو ما سنقوم ندعو، مرة أخرى، تعبير منطقي.
ومرة أخرى، وهذا هو النوع من شبة الكود.
و، في الواقع، و// تعليق.
انها مجرد كلمات إنجليزية إلى نفسي.
ولكن هذا هو العام بنية، إذا، شرط.
ولكن سنرى الخرسانة الأمثلة في مجرد لحظة.
>> إذا كنت تريد أن يكون لها شوكة في اتجاهين في الطريق،
مثل الكثير فعلنا مع المتطوعين لدينا على الاربعاء، هل يمكن أن يكون، إلا إذا.
وإذا كنت تريد أن يكون ثلث و حالة نهائية، أو الوضع الافتراضي،
هل يمكن أن يكون مجرد كتلة آخر، هناك.
وعلى نحو مماثل، مع تعبيرات منطقية، يمكنك، ولهم معا.
وشاهدنا يوم الأربعاء، أن انها ليست العطف واحد،
انها اثنين، لأسباب المستوى الأدنى الذي سنرى في نهاية المطاف ولعب مع.
أشياء أو جي معا هو 2 أشرطة عمودية.
على لوحة مفاتيح الولايات المتحدة، وهذا عموما هو المفتاح
مع مفتاح Shift فوق لديك مفتاح Enter أو مفتاح العودة.
>> ثم هناك هذه الأشياء التي سنستخدم ربما مرة أو مرتين.
هم ما يعادل وظيفيا ل ما يمكنك القيام به مع ذلك، إذا، آخر إذا،
آخر عدا ذلك، بناء، لكنهم يسمى التبديل.
أنها تبدو مختلفة جدا، ولكن سنقوم نرى في بعض من التعليمات البرمجية التوزيع لدينا،
لمجموعة مشكلة في المستقبل، على الأرجح، أنه في بعض الأحيان مجرد أجمل
طريقة للتعبير ككل مجموعة من الشروط،
دون وجود الكثير من الأقواس المعقوفة و الكثير من الأقواس والمسافة البادئة.
ولكنها تعطي لنا لا أكثر قوة من لدينا بالفعل.
وحلقات الآن.
وهذا واحد، ونحن سوف ننظر في أكثر من ذلك بقليل ببطء.
ولكن بعد ذلك، ونحن سوف تبدأ في استخدام هذه، خصوصا بالنسبة لأولئك دراية بالفعل.
هذه هي الطريقة المتعارف عليها، إذا لا يصدق طريقة غامضة، لكتابة حلقة في C.
>> الآن كانت حلقة في سكراتش جميلة واضحة.
لديك، وإلى الأبد، وكتلة.
لديك، تكرار، مع كتلة مجرد رقم لديك لكتابة.
ومع، لحلقة، يمكنك تنفيذ كل تلك الأفكار،
لكنه أكثر من ذلك بقليل التقني.
ولكن بصراحة، انها أيضا بسيطة نسبيا.
بمجرد أن تعرف ترتيب العمليات، لكم حرفيا
مجرد الذهاب إلى سد العجز في القيم ونقول للكمبيوتر ما يجب القيام به.
حتى هنا مثال على ذلك.
هذا هو حلقة، تماما ببساطة، يهم من رقم واحد حتى
من خلال آخر.
وفقط من خلال نظرة عابرة في ذلك، حتى إذا كان لديك
أي خبرة سابقة مع هذه اللغة، ما عدد
فهل من المحتمل بدء العد في؟
OK، 0.
وانا التخمين هذا لأنك نرى أن هناك عدد صحيح وط،
وهو متغير.
هو تهيئة إلى 0.
>> ثم في وقت لاحق، يبدو نحن تمرير printf، قيمة.
و، في الواقع، لقد تقدمت قليلا الخطأ المطبعي هنا.
ولكن هذا ثابتة بسهولة.
اسمحوا لي أن أضيف في، أنا هنا.
لدينا الآن printf الوجود مرت تلك القيمة نائبا.
وما يحدث في العد حتى عن طريق؟
الحضور: 50.
50.
49.
DAVID J مالان: 49.
حتى 50، للوهلة الأولى، يبدو من الصواب.
ولكن، كما تبين، سيكون شرطنا أن نحفظ والتحقق.
ونحن في طريقنا لوقف مرة واحدة أنا لم يعد هو أقل من 50.
حتى هذه الحلقة، على العكس، ينبغي تنفيذ، طالما أنا أقل من 50.
ولكن بمجرد أن يصبح 50، أو 51، أو ما هو أسوأ، فإنه ينبغي أن تتوقف تلقائيا.
حسنا.
>> فما يحدث في الواقع هنا؟
لذلك هذا هو ترتيب عمليات حلقة.
واحد، لديك ما يسمى التهيئة.
هذا جزء أبرز الصفراء من التعليمات البرمجية يتم تنفيذه لأول مرة،
ولها تأثير ذلك في الأربعاء، وربما كنت تتخيل.
أنه يخلق متغير يسمى الأول وذلك مخازن في هذا المتغير القيمة 0.
لذلك أنا غير 0 في هذه المرحلة من القصة.
>> والشيء التالي الذي يحدث في هذا البناء،
غير أن الشرط يحصل على التحقق.
لذلك أنا التحقق على الفور، هو أنا أقل من 50؟
وبطبيعة الحال، فإن الجواب الآن هو، بالتأكيد، نعم.
نعم، لأنني 0، و هذا هو بالتأكيد أقل من 50.
ثم ما يحدث، هو أن هذا يحصل تنفيذ سطر من التعليمات البرمجية.
وفي الواقع، إذا كان هناك مضاعفات الأسطر من التعليمات البرمجية في تلك الأقواس المعقوفة،
أنهم جميعا الحصول على تنفيذها واحدا تلو الآخر.
>> وفي الواقع هنا، هو على ما يبدو، لطباعة
ط العدد، وهو ذاهب الى تكون 0 ثم 1 ثم 2.
ولكن لماذا؟
لماذا لا تحصل على يتزايد ذلك؟
حسنا، والشيء الرابع الذي يحدث هو أن هذه الجملة
يعدم، بعد الفاصلة المنقوطة.
ط ++ هو وسيلة مختصرة للقول؛ تأخذ قيمة ط، وإضافة 1 إليه؛
ثم في المرة القادمة، إضافة 1 إليه؛ والمرة القادمة،
إضافة 1 إلى ذلك.
>> لذلك إذا أردنا الاستمرار، ماذا سيحدث
بعد ذلك هو أنني لن تهيئة مضى مرة أخرى.
إذا ظللت تهيئة ط 0، هذا المثال
لن تنتهي بسبب وأود أن يكون عالقا في 0.
ولكن ما الذي سيحدث هو أن الشرط وسيتم فحص،
سوف تحصل على تنفيذ سطر من التعليمات البرمجية، ويمكن زيادة ط،
وسيتم فحص حالة، سوف تحصل على تنفيذ التعليمات البرمجية.
واحتفظ الدراجات مرة أخرى، ومرة أخرى، ومرة ​​أخرى،
حتى أنا ++ يدفع قيمة 50.
>> ثم يقول الشرط، 50 أقل من 50؟
الجواب، بالطبع، هو لا، و حتى يتوقف رمز كله المنفذة.
وإذا كان لديك مزيد من رموز على الشاشة الأسفل، وهذا ما سيحدث لاحقا.
الملوثات العضوية الثابتة للخروج من هذه الأقواس المجعدة و وتواصل لطباعة أكثر بعد ذلك.
>> لذلك نكتة الآن، من فوكستروت، أن عليك ربما نفهم الآن.
انها دائما مضحك.
انها مثل ضحكة مكتومة نوع من ترشح،
ثم أدركت أنك لا ينبغي تكون يضحك على النكتة من هذا القبيل.
ولكن هناك بعض الوجبات الجاهزة هنا، تربويا أيضا.
هكذا اتضح أن أنا في عداد المفقودين قطعة من بناء الجملة،
أو في فوكستروت في عداد المفقودين قطعة من جملة هنا.
ما هو مفقود، التي كانت لدينا في كل مثال آخر، حتى الآن؟
بالمقابل، هناك، لذلك هذا شيء آخر،
أننا سوف يعود إلى ما قبل فترة طويلة.
ما هو مفقود، على الرغم من؟
نعم.
>> أحد أعضاء جمهور الحاضرين: إن تهيئة (غير مسموع).
>> DAVID J مالان: OK.
لذلك نعم.
لذلك الواقع، وهذا is-- حسنا، وتتم تهيئة العد
حتى أعلاه، أو بدلا من ذلك، أعلن حتى أعلاه.
لذلك هذا هو طريقة أخرى للقيام بذلك.
ولكن ليس في سطر واحد انها لصالح بالرغم من ذلك.
ماذا عن هنا؟
>> أحد أعضاء جمهور الحاضرين: هل الأقواس المعقوفة؟
>> DAVID J مالان: نعم.
وبالتالي فإن الأقواس المعقوفة في عداد المفقودين.
ولكن هذا الرمز، أعني، لالائتمان الخاصة بهم، في الواقع، صالحة التركيب.
كما تبين، لم تقم بذلك تحتاج الأقواس المعقوفة
إذا كان لديك فقط سطر واحد من التعليمات البرمجية التي الذي تريد تنفيذه داخل الحلقة.
الآن ونحن دائما في الصف وفي كل من التعليمات البرمجية التوزيع لدينا،
تشمل الأقواس المعقوفة على أي حال، فقط من أجل الوضوح.
ولكن ندرك أن في الكتب والأمثلة على الإنترنت،
قد ترى بشكل جيد للغاية مجعد تستعد المفقودين في وقت ما.
وهذا موافق، إذا ما وقد بادئة والمقصود
هو مجرد سطر واحد من التعليمات البرمجية، وليس عدة أسطر من التعليمات البرمجية، يحتمل.
حسنا.
حتى يتصل بمسألة عدم الدقة، هو مسألة الفائض،
بمعنى أن، وبالمثل، لا الأعداد الصحيحة لها حدود لها
تماما مثل القيم النقطة العائمة؟
في العالم نقطة عائمة القيم، فإننا يمكن أن يكون إلا دقيق جدا،
وبعد ذلك، في بعض الأحيان الأشياء السيئة يمكن أن يحدث،
وبرامجنا يمكن أن يكون عربات التي تجرها الدواب والخطأ.
حتى الآن مع الأعداد الصحيحة، يمكنك تشغيل في مشاكل.
الآن ليس لديها عدد صحيح ل النقطة العشرية أو الأرقام بعد ذلك.
انها مجرد رقم الطبيعي، وعادة.
ذلك ما يمكن ان تذهب الخطأ مع الباحث؟
إذا أنا باستخدام الباحث ل العد، ما يمكن ان تذهب الخطأ؟
يبدو أبسط كثيرا.
نعم.
>> أحد أعضاء جمهور الحاضرين: إذا كان عدد يحصل (غير مسموع)
>> DAVID J مالان: نعم.
ماذا لو كنت تعول عالية جدا، وأنك لا يمكن التعبير عن هذا العدد الكبير حقا.
الصحيح؟
في مرحلة ما، وأنت تسير تتجاوز حدود
من قيمة 32 بت أو قيمة 64 بت.
الآن مرة أخرى، وأنا لست متأكدا كيف تنطق قيمة 64 بت،
لكنني أعرف مع عدد صحيح 32-بت، أكبر قيمة يمكن أن يكون،
إذا كان إيجابي فقط القيم، هو ما يقرب من 4 مليارات.
إذا كان الأمر كذلك وأنا أحاول أن العد إلى 5 مليار دولار، شيئا ما سيحدث.
ولكن دعونا نرى ما، في الواقع، يمكن أن يحدث.
في عالم صحيح تجاوز، حيث كنت، بمعنى من المعاني،
تجاوز قدرة ل صحيح، ماذا يمكن أن يحدث؟
>> حتى هنا عدد ثنائي، انها ردة إلى 0.
انها كل 1، والنائبة هناك، هي صلاحيات 2،
لذلك هذا هو ثنائي.
لذلك هذه هي 8، 1 بت على الشاشة.
وإذا كنت تذكر أو لديك بسرعة الرياضيات،
يتم تمثيل ما قيمة هنا مع هؤلاء الثمانية 1 بت؟
255.
وحتى إذا لم تكن متأكدا تماما من الرياضيات، هل يمكن أن تفعل ذلك.
أو هل يمكن أن مجرد نوع العقل من خلال ذلك،
انتظر لحظة، إذا أنا وهو ما يمثل قيمة 8 بت،
ولقد حصلت على 256 القيم الممكنة، ولكن أولها هي 0،
وأنا أعلم تماما أن أكبر سيكون 255،
وهذا ما قد يكون هذا واحد.
>> لذلك افترض محاولة إضافة 1 إلى هذه القيمة.
ماذا ستفعل في الصف المدرسة عند إضافة 1، وذلك
لا تناسب حقا ل لديك لتحمل 1؟
ما هو هذا العدد الذهاب لتصبح عند إضافة 1؟
انها سوف تصبح 0.
الصحيح؟
لأنه إذا كان لديك أكثر bits-- وسوف أكون محاولة، من نوع، اكتب بها here--
لو كان لدينا أكثر من بت، ما كنا يمكن القيام به هنا هو إضافة 1،
ثم كنا الحصول على هذا.
يصيح.
سيكون لدينا ل1 بت على طول الطريق أكثر من هنا.
>> لكن إذا كان هذا هو محدود القيمة، انها 8 بت فقط،
وهذا هو محدد مسبقا بواسطة الكمبيوتر،
أن 1 غير فعال ليس هناك.
انها مجرد نوع من السقوط في الهاوية.
وحتى إذا قمت بإضافة 1-255، ما قيمة هل يبدو عليه؟
0.
والأرقام غير قصد لذلك، وربما عن غير قصد،
ينتهي التفاف حول مثل هذا.
ذلك ما يمكن أن تكون الآثار المترتبة على ذلك؟
حسنا، هناك بضعة أشياء مختلفة.
حتى واحد، فإنه ينتهي النظر مثل 0، عن غير قصد،
لكن يمكنك أن ترى نوع من، حتى في العالم الحقيقي،
للأفضل أو للأسوأ، مظاهر هذه الفكرة من حد.
على سبيل المثال، كل واحد منكم من أي وقت مضى لعبت ليغو حرب النجوم،
لا أحد أعلم عدد ممكن من القطع النقدية
يمكنك جمع في ليغو حرب النجوم؟
اتخاذ تخمين على أساس أسئلة اليوم الرائدة.
انها اكبر من 256 أو 255.
انها 4000000000.
لذلك تبين، و هناك بعض people--
بعض غوغلينغ أكد night-- آخر وقد حصلت 4000000000 العملات الذهبية،
أو هتنوت، في ليغو حرب النجوم.
على الرغم من ما يبدو، هناك وسيلة لخداع اللعبة،
هناك خلل أو ميزة، الذي يتيح لك فقط تتراكم الكثير والكثير من النقاط.
ولكن أكبر عدد ممكن القيمة، وفقا
في هذا قطة شاشة من شخص ما وجدت على الانترنت، هو في الواقع، 4000000000.
>> الآن لماذا هذا؟
انها بالضبط 4000000000، ربما لأن أحدا قرر،
الذي كان يكتب هذه اللعبة، أنها يمكن أن تفعل 4000000000،
شيء ما، شيء ما، شيء، مثل قيمة أضع
مع آلة حاسبة في وقت سابق، ولكن انها مجرد مكنسة صغيرة للبشر
القول العدد الأقصى من coins-- أو الأزرار،
كما يسمونه them-- أنك يمكن جمع هو 4000000000.
وهكذا، لماذا هذا؟
كيف هي لعبة LEGO تنفيذ العداد
هذا ما تتبع لل عدد من القطع النقدية لديك؟
انهم يستخدمون ماذا؟
أحد أعضاء جمهور الحاضرين: إنه يتوقف عد بعد 4 مليارات.
DAVID J مالان: فإنه يتوقف عد بعد 4000000000،
مما يعني أنه يمكنك نستنتج، كمبرمج،
انهم ربما باستخدام عدد صحيح 32 بت.
مثل مبرمج حرفيا فقط المكتوب، الباحث، في ظروفه أو رمز،
وهذا هو نوع من متغير يستخدمونه لتخزين رمز لشخص ما.
لذلك هناك مظاهر أخرى هذه الأنواع من الحدود.
>> لذلك أنا لم ألعب هذه game-- وكنت أقرأ حتى على التاريخ
لتأكيد كما much-- ولكن في النسخة الأصلية من الحضارة، حيث
أنت تتفاعل مع بعضها على ما يبدو البعض ويمكن شن حرب أو لديك سلام،
وكان من المفترض غاندي لتكون واحدة من أكثر الشخصيات السلمية، وأنا
أفهم ذلك، في الأول نسخة من الحضارة.
في واقع الأمر، على مقياس من 1 إلى 10، وكانت عدوانية له مجرد 1.
من أي وقت مضى لذلك أقل ما يقال عدوانية، على ما يبدو.
>> ولكن في مرحلة ما، يمكنك على ما يبدو تثبيت الديمقراطية في الجغرافيا بك.
وإذا قمت بتثبيت الديمقراطية إلى نسختك من اللعبة،
ثم مستوى العدوان وتنخفض.
انه شيء جيد.
الناس أكثر هدوءا على ما يبدو، في هذه الحالة.
ولكن على ما يبدو، لم شخص يكن لديك، إذا، حالة
في النسخة الأصلية من التعليمات البرمجية.
>> فذهب مستوى العدوان غاندي من إيجابية 1، ناقص 2، إلى سلبية 1،
ولكن اللعبة لا فهم الأرقام السالبة.
فما حدث هو عدوان غاندي ذهب المستوى من 1، 0، 1 إلى سلبية،
التي كان لها تأثير التفاف حولها لكونها
الطابع الأكثر عدوانية في اللعبة، بقيمة 255،
على مقياس من 1-10.
ومنذ ذلك الحين، كان هناك المزيد من تجسيد هذه اللعبة،
ولقد أبقى على أنها نوع من بيضة عيد الفصح،
أن غاندي على ما يبدو حتى عدوانية بشكل رهيب.
ولكنه كان نتيجة ل خطأ في البرمجة بسيط جدا
في هذا الإصدار في وقت مبكر جدا من المباراة.
>> الآن بصورة مزعجة، وأكثر في الآونة الأخيرة، من طراز بوينغ 787
وقد تم توثيق وجود ل علة، وليس هذا النوع من الجهاز
تريد ولا سيما أن يكون علة.
والأعراض، والتي سوف قراءة هنا، من مقال على الانترنت،
كان هذا، نموذج 787 طائرة تم تعمل بشكل مستمر
ل248 يوما يمكن تفقد كل التيار المتردد، AC،
الطاقة الكهربائية، وذلك بسبب وحدات التحكم مولد،
GCUs، في وقت واحد الانتقال إلى وضع آمنة من الفشل.
لذلك كان هذا تحذيرا صدر عندما تم اكتشاف هذه المشكلة.
ويتسبب هذا الشرط بواسطة عداد البرامج،
الداخلية إلى GCUs، لذلك عدد صحيح أو متغير،
أن الإرادة تجاوز بعد 248 أيام المستمرة على السلطة.
بوينغ في عملية تطوير تطوير البرمجيات GCU أن
وتدارك حالة غير آمنة.
>> كثيرا مثل الصاروخ السيناريو، حيث
كان لديهم نوع من متغير الذي تم الفرز والعد،
والعد، ولكن تفيض تدريجيا حدود قدرتها،
فعلت بالمثل الطائرة لعنة لديها تجاوز متغير
بعد ما يكفي من الوقت للتشغيل.
وبالتالي فإن الطريقة اللسان في خده العمل حول هذه المسألة
هو حقا، تمهيد، الطائرة الخاصة بك كل 247 يوما، بحيث يحصل على محو الذاكرة
ومتغير يعود إلى 0.
ولكن ندرك، وهذا هو غاية التجسد كبيرة من البرامج،
ولكن لا سيما ونحن نسمع عن أبل أنظمة التشغيل الخوض في السيارات،
والسيارات الذاتية القيادة-من جوجل، و أي عدد من التجسيد البرمجيات
في حياتنا اليومية، وأجهزة التلفاز والساعات، وأكثر من ذلك،
ندرك كانت محاطة البرمجيات، وكلها من تأليف بشر لنا.
>> وكما سنكتشف كل وقت، فإنه من السهل جدا ونموذجي جدا
لارتكاب الأخطاء عند كتابة البرامج.
وإذا لم يكن لإلقاء القبض عليهم، بعض الأشياء السيئة يمكن أن يحدث.
الآن في بعض الأحيان، بعض أشياء مضحكة يمكن أن يحدث،
أو على الأقل في بعض الأحيان نحن أعرف أن نتوقع بعض السوء.
لذلك 0 مقسوما 0، من الصف المدرسة، عموما هو شيء سيء.
انها غير معرف.
ويتحول out-- ودعونا نرى ما اذا كان هيئة التصنيع العسكري بلدي أن تأخذ هذا up-- أن أبل
كان بعض المتعة مع هذا مؤخرا.
لذلك ليس لدي اي فون هنا.
انا ذاهب لاجراء محادثات مع سيري وأسألها أن تعطيني الجواب ل0 مقسوما 0.
ما هو 0 مقسوما 0؟
>> سيري: تخيل أن لديك 0 ملفات تعريف الارتباط، ويمكنك تقسيمها بالتساوي
بين 0 الأصدقاء.
كم عدد الكوكيز لا كل شخص؟
ترى؟
فإنه لا معنى له.
وكوكي مونستر أمر محزن أنه لا توجد ملفات تعريف الارتباط.
وكنت حزينا ذلك لا يوجد لديك أصدقاء.
DAVID J مالان: انه نوع من البغيض.
لذلك هذا هو ما كان مجرد ذكر هناك.
انها غير محدد، ليست تعريفه، وبالفعل، فإن العديد من لغات البرمجة
أو، حقا، سوف المجمعين كشف عند، في أحد البرامج،
محاولة لتقسيم 0 بواسطة 0.
أكثر متعة من هذا رغم ذلك، هو على ما يبدو، كوكي مونستر
على تويتر هذه الأيام.
وأجاب على ذلك، مع هذا، وهو رائعتين على الاطلاق.
ولكن دعونا نلقي نظرة سريعة على اثنين من بنيات أخرى،
ثم وضعت بعض من هذه كود للاستخدام، بطرق جيدة.
هكذا اتضح، إلى جانب لالحلقات، هناك
شيء يسمى حلقة في حين أن تبدو مختلفة ويتم تنفيذه
قليلا differently-- و سنرى في نهاية المطاف examples--
ولكن في بعض المعنى، انها أسهل لأنه
لا يسمح لك لتهيئة و تحديث داخل حدود الحلقة.
لا يزال بإمكانك تنفيذ ذلك.
حتى تتمكن من القيام بالضبط نفس الأشياء مع حلقة في حين، كما هو الحال مع لحلقة،
لكن جملة بك، ultimately-- كما سنقوم في نهاية المطاف
see-- ستكون مختلفة.
هناك حتى افعل حين حلقة، التي هو في الواقع مختلفة قليلا،
في حين أن لحلقة وحلقة في حين دائما
تحقق حالتهم أولا، إذا هل قرأت هذا أعلى شيء إلى أسفل،
انها نوع من يبدو أنه سيكون ل التحقق من ذلك في حالة الأخير لأنه
حقا السطر الأخير من التعليمات البرمجية.
والواقع، وهذا سيكون مفيدا في بعض البرامج التي نكتب،
إذا كنت تريد أن تفعل شيئا فقط عمياء وتحقق في نهاية المطاف الشرط.
هذا ليس بالضرورة أمرا سيئا.
إذا كنا نريد المتغيرات، يمكننا أن نفعل في عدة طرق مختلفة.
ورأينا في فوكستروت الرسوم المتحركة، طريقة واحدة للقيام بذلك،
حيث تقوم بتعريف المتغير الخاص بك، مثل الباحث مكافحة منقوطة،
ثم later-- ربما القادم الخط، ربما 10 خطوط later--
كنت في الواقع تهيئة عليه.
لذلك فان هذه خطوط 2 من التعليمات البرمجية تعريف متغير من نوع int
ويطلق عليه صفة طبية، لذلك يعطي لي بت يكفي لعقد صحيح.
ثم في النهاية، فإنه يضع القيمة 0 إلى هذا المتغير.
فإنه يرتب ل0 و1 في النمط، الذي نعرفه من الأسبوع الماضي،
يمثل عدد نعرفه 0.
أو بصراحة، يمكنك أن تفعل هذا بكثير أكثر وضوحا، تماما مثل هذا.
>> الآن لدينا أيضا القدرة على استدعاء وظائف.
في واقع الأمر، وهنا خط 2 برنامج، أو مقتطفات منها،
أن يسمح لنا في الواقع كتابة بعض التعليمات البرمجية التي
يحصل على سلسلة من user-- بكثير لدينا مثل المتطوعين لحظة ago--
تخزين النتيجة في متغير يسمى الاسم،
ومثل then-- بكثير مع المتطوعين لدينا مع مطبوعات printf-- من تلك القيم
عن طريق تمرير في حجتين، و سلسلة، تليها متغير
ودعا، اسم، في حد ذاته.
لذلك دعونا نلقي نظرة، قبل نعود إلى ماريو هناك،
في اثنين من الآن، والأمثلة على ذلك.
>> انا ذاهب الى المضي قدما وفتح حتى، دعنا نقول، الوظائف 0.c.
وكما هو الحال دائما، هذا الرمز متوفرة على الموقع الإلكتروني للدورة، و
حتى تتمكن من اللعب جنبا إلى جنب في المنزل وننظر في الأمر في وقت لاحق.
ولكن هنا البرنامج في انها جوهر، من سطر 17-22.
البرنامج الرئيسي هو فيها البرنامج هو دائما ما تبدأ.
هذا البرنامج، على ما يبدو، هو الذهاب لطباعة اسمك والقولون.
انها ثم الذهاب الى استدعاء GetString، مثلما فعلنا مع متطوعينا.
ومن ثم، وهذا هو المثير للاهتمام، انها سوف ندعو PrintName.
كما تبين، كل هذا الوقت، هناك ويبدو أن وظيفة تسمى PrintName.
الذي يطبع اسم شخص ما.
لم نكن بحاجة إلى استخدام printf من الأمس، هناك PrintName.
>> ولكن هذا مضلل لأن PrintName لا
تأتي مع فعل C. الناس لا اختراعها قبل 40 أو 50 عاما،
وفعلت ذلك، بدلا من ذلك.
في واقع الأمر، إذا كنت انتقل إلى مزيد من الانخفاض، لاحظ
كيف أستطيع أن أكتب بلدي وظائف في C. سنقوم في نهاية المطاف
شرح لماذا نبقى قائلا: الفراغ، في عدد قليل من الأماكن،
ولكن لهذا اليوم، دعونا مجرد إلقاء نظرة على الاسم.
>> على خط 24، إذا كنت ترغب في إنشاء وظيفة الخاصة بك،
تكتب حرفيا اسم الوظيفة.
اخترت PrintName.
بين قوسين، ل ثم تحديد ما هي أنواع
المدخلات، وكم كنت تريد هذه الوظيفة لاتخاذ.
في هذه الحالة، وأود أن أغتنم 1 متغير يسمى، اسم،
وسيكون من نوع، سلسلة، لذلك يجري
أن تكون بعض تسلسل الأحرف.
وبعد ذلك، هذا program-- مثل الكثير في خدش،
هل يمكن أن يكون اللغز مخصصة pieces-- وستكون لدينا هذا السلوك حسب الطلب.
انها سوف استدعاء printf يمر في، مرحبا، نائبا،
وبعد ذلك سيكون للسد أيا كان المستخدم يسمى.
>> لذلك هذا هو مثال على ما عالم الكمبيوتر سوف
التجريد مكالمة أو وظيفية التحلل، التي ليست سوى
طرق يتوهم من saying-- هل إذا تريد هذه الفكرة على مستوى عال،
وكأنني أريد أن الوظائف يطبع اسم شخص ما، تماما لك
يمكن أن يكتب حرفيا printf ثم تمر في الحجج التي تريدها،
وسيعمل البرنامج، كما كان الحال منذ الاربعاء.
ولكن يمكنك البدء في مجردة بعيدا فكرة طباعة الاسم.
يمكنك إعطائها اسما، مثل PrintName، وهذا
هو هذه الفكرة من طبقات من الأسبوع 0.
>> من الآن فصاعدا، أنا وأنت ليس من الضروري أن تعرف أو يهمني كيف يتم تنفيذ PrintName.
نعم أنه يستخدم printf، وربما لا، من يدري ماذا يستخدم؟
من يهتم؟
الآن أنا أتحدث هنا، بدلا من أسفل هنا.
والواقع، كما يحصل برامجنا أكثر تقدما وتطورا،
ونحن في طريقنا للحفاظ على أخذ أمرا مفروغا منه أن انخفاض مستوى قطع اللغز موجودة.
لأننا كتب لهم أو أي شخص آخر فعل، لذلك
ثم أننا يمكن أن نبني على رأسها.
دعونا نلقي نظرة على هذا البديل، وظيفة واحدة.
>> لذلك هذا واحد هو أكثر من ذلك بقليل متقدمة، ولكن اتضح
أن في مكتبة CS50، و هناك سوى وظيفة GetInt.
لم نكن نعتقد، منذ سنوات، ل تنفيذ وظيفة GetPositiveInt.
وهذا مزعج قليلا لأنه إذا يا رفاق كتابة برنامج فيها
كنت ترغب في الحصول على إيجابية صحيح من المستخدم،
يمكنك استخدام الاطلاق GetInt.
ويمكنك التحقق تماما مع الشرط وربما حلقة
إذا كان هذا الباحث أكبر من 0 والصراخ المستخدم
إذا كان الشخص لا يعطي كنت رقما موجبا.
ولكن دعونا نبني هذا بناء كتلة أنفسنا، لذلك،
قطعة خدش العرف، اذا صح التعبير.
انا ذاهب الى لديها برنامج هنا أنه في نهاية المطاف، وأنا
تريد أن تكون قادرة على الاتصال GetPositiveInt، وأريد أن أكون
قادرة على طباعة أيا كان هذا الباحث هو.
ولكن هذا وتستخرج بعيدا الآن.
مجرد أعطيت أنه على مستوى عال الاسم الذي يقول ما يفعل،
وهو رائع لأنه بديهية جدا الآن للقراءة.
وإذا كنت تفعل يهمني ما تحتها غطاء محرك السيارة، اسمحوا لي أن انتقل لأسفل.
وانها قليلا ترهيب في البداية، خصوصا
إذا كان هذا هو البرنامج الأول الخاص بك، ولكن دعونا نلقي نظرة.
>> أنا لم يعد قائلا الفراغ، لأنه اتضح وظائف،
مثل الكثير من GetString، يمكن إرجاع قيمة بالنسبة لي.
لم يكن لديهم فقط الطباعة إلى الشاشة،
يمكنهم تسليم الواقع لي شيئا في المقابل.
وحين قبل PrintName، لم أكن بحاجة إلى أي شيء يعود.
أنا في حاجة الى الآثار الجانبية ل شيء يظهر على الشاشة،
ولكن لم أكن في حاجة الإنسان على تسليم لي شيئا في المقابل.
هنا، مع GetPositiveInt، كما هو الحال مع GetInt،
أريد أن أكون سلم شيئا في المقابل.
لذلك أنا أقول لا، باطل، على خط 23، ولكن كثافة العمليات،
الذي يقول: هذه الوظيفة أنني أكتب،
دعا GetPositiveInt هو الذهاب الى تسليم بي مرة أخرى عددا صحيحا، وليس أي شيء،
لا باطلة.
>> وفي الوقت نفسه، انه سيكون على عدم اتخاذ أي المدخلات، حتى لقد، نوع من، عكس ذلك.
أنا لا يعطي أي GetPositiveInt المدخلات، وأريد أن تعطيني انتاجها.
ثم ماذا يحدث الآن؟
حتى هنا كيف يمكن تعريف متغير.
لقد فعلت ذلك خارج الحلقة، لأسباب سنرى في نهاية المطاف،
ولكن هذا يعطي فقط لي 32 بت دعا، ن،
ولقد قمت قبل تحديد لهم لتخزين عدد صحيح.
وهنا أن تفعل حين بناء، وهذا هو السبب في أنه من المفيد.
القيام بذلك حرفيا، في حين ن هو أقل من 1.
لذلك دعونا نرى ما سيحدث.
I طباعة، يرجى أعطني الباحث إيجابي.
وبعد ذلك الحصول على الباحث، وذلك باستخدام CS50 ل تعمل وتخزينها في ن.
>> وبعد ذلك، ما سطر من التعليمات البرمجية على الأرجح يعدم المقبل، منطقيا؟
الذي خط الأعداد؟
نعم، لذلك 31.
كنت لا تعرف هذا حتى كنت قد قيل أو نوع من الاستدلال عليه،
ولكن هذا صحيح.
وغني عن أعلى إلى أسفل ثم يحتفظ تكرار.
لذلك إذا كنت قد كتبته في القول، وعدد 1 سلبية، غير ن أقل من 1 سلبي؟
نعم.
لأن أحفور سلبي 1 هو أقل من 1.
وذلك ما يجب أن يحدث؟
انا ذاهب الى القيام بذلك في حين n هو أقل من 1،
لذلك أنا ذاهب إلى العودة إلى خط 28.
>> وكل time-- ودعونا تشغيل this-- جعل وظيفة 1 إلى ترجمة عليه،
وتنتشر الآن خفض وظيفة 1.
إذا كنت اكتب سلبي 1، انها ذاهب للحفاظ على يصرخ في وجهي
حتى أتعاون لأن كل المدخلات بلدي هو أقل من 1
وإذا كان في حين أن أقل من 1، انا ذاهب للحفاظ على القيام بذلك.
إذا كنت في النهاية إعطائها رقم مثل 50، الحمد لله، وتقول، وذلك بفضل ل50.
لماذا؟
لأنه بمجرد ن لا يقل عن 1، أتوقف عن أن يعلقوا في هذه الحلقة،
وهذه الكلمة الجديدة اليوم، عودة حرفيا يفعل ذلك.
حتى لقد نفذت فقط، في بمعنى، أي ما يعادل GetString،
أين أنا تسليم إلى أيا كان يستخدم لي، بعض القيمة.
فإنه ليس من الضروري أن يكون سلسلة، انها كثافة العمليات.
لذلك بسيطة وسريعة سبيل المثال، ولكن سنقوم قريبا
نرى بعض أكثر تطورا إصدارات يزال.
في الواقع، دعونا نلقي نظرة على واحد رقمي، وهو ما يسمى return.c.
وهذا واحد هو في الواقع أبسط قليلا.
لذلك الغرض هذا البرنامج في life-- دعونا تجميع وتشغيله،
لذلك جعل العودة، نقطة مائل، لاحظ return--
البرنامج ببساطة مكعبات قيمة 2.
انها غبية جدا، فإنه من الصعب رمز، لأنها لا تأخذ أي المدخلات،
لكنه يظهر آخر وظيفة أنني قد كتبت نفسي.
حتى هنا، لقد أعلن متغير، ودعا العاشر، من نوع int،
مساو لعدد 2، تعسفية تماما.
هذا هو مجرد بعض الطباعة رقيق.
تقول x هو الآن، مثل و من هذا القبيل، التكعيب نقطة نقطة نقطة.
والسحر هو على ما يبدو في خط 21.
أنا استدعاء دالة دعا، المكعب، أنا تسليمه ورقة من الورق
مع عدد 2 مكتوب عليها، وما قيمة، رياضيا،
لا أريد أن الخروج منه؟
كما شيك التعقل؟
8.
الصحيح؟
اريد 2 مكعبة الظهر، 2 ل قوة 3، لذلك 8 الظهر.
>> ذلك الذي يتم فيه تنفيذ المكعب؟
حسنا، لاحظ انها تنفذ إلى هنا.
وتماما مثل قبل، منطقيا، على الرغم من بناء الجملة هو على الارجح
جديد جدا للكثيرين منكم، أريد هذه الوظيفة
لتسليم بي مرة أخرى ورقة ورقة مع الباحث على ذلك.
لذلك ليس لدي عدد صحيح، و الاسم هو تعسفي،
لكنه دعا مريح مكعب.
مدخل إلى ذلك، هو ن من اكتب صحيح، حتى أن
كيف يمكن أن تمر في عدد 2 على ورقة من الورق.
ثم اتضح الدعم C الرياضيات، لذلك لم يكن لديك لالعاشر لمرات،
لك فقط استخدام علامة النجمة لإكثار.
وهذا يعود مرات ن ن مرات ن، والتي هي ببساطة قيمة مكعبة.
>> فأين نحن ذاهبون مع كل هذا؟
هذا هو بالتأكيد جولة مكوكية، تطمئن،
أنه في أقسام السوبر والمشكلة مجموعة 1،
عليك أن تكون سار كل هذا عن أكثر من ذلك.
والمشكلة مجموعة 1، سنقوم الانتقال من العالم رسومي للخدش
إلى شيء سطر الأوامر أكثر في C. ولكننا سوف تستلهم
من هذه اللعبة هنا من الأمس، حيث
باستخدام C والطبعة القياسية لل ص مجموعة سوف تنفذ الهرم ماريو.
وفي طبعة القراصنة لل ص مجموعة، إذا اخترت ذلك لانتخاب،
سوف تنفيذ أكثر قليلا تحدي الهرم مع اثنين من القمم.
عليك أيضا تنفيذ الخوارزمية، خوارزمية الجشع.
اتضح هناك ل بعض المنطق مثيرة للاهتمام
وراء عملية تشغيل محطة الصراف
وتسليم الواقع شخص ما تغير الخلفي.
هناك خوارزمية هذا إلى حد ما مباشرة، التي قد حتى
فهم حدسي عند أول قراءة it-- أن يدركوا أن ما كنت دائما
فعلت أي وقت اعطيت شخص بعض back-- المال الذي يسمح لك دائما
تقليل عدد ورقة الملاحظات أو العملات المعدنية
ان كنت تسليم إلى المستخدم.
وهذا، بطبيعة الحال، غير مقنعة لأنه إذا ذهبت إلى CVS أو هتنوت،
كنت لا تريد أن تكون اليد مجموعة كاملة من تلك
أو في مجمله مجموعة من البنسات.
تريد أقل عدد القطع النقدية، وربما، ممكن.
>> وأخيرا، عليك أيضا أن تحدى اشتغل في عالم المياه
وفعلا الحصول على التقدير لتعيين بين معدلات التدفق،
من أحب، والماء في الحمام، فقط كمية المياه المستخدمة.
وإشارة فيه، سيكون هذا الكليب هنا،
ونحن سوف تنتهي في ل 60 ثانية فقط، أن
يرسم صورة ل انخفاض تدفق رؤوس الدش.
>> [تشغيل الفيديو]
-حسنا.
حصلت كل شيء هنا.
حصلت على الإعصار F سلسلة، هيدرا، Jetflow، ستوكهولم
Supersteam، سمها ما شئت.
>> -و ماذا تنصحني؟
>> -عن ماذا تبحث؟
>> رجل باور.
السلطة.
تشبه سيلكوود.
-من هو للإشعاع.
-هذا صحيح.
-Now ما هذا؟
-من هو المغوار 450.
أنا لا أبيع أن واحدا.
>> -ولكن هذا ما نريد.
انها الكوماندوز 450.
>> -لا صدقوني.
انها تستخدم فقط في السيرك.
انها لالفيلة.
>> -I'll دفع أي شيء.
>> وماذا عن جيري؟
>> -He لا يمكن التعامل مع ذلك.
انه دقيق.
نعم.
[END قراءة]
DAVID J مالان: حسنا.
هذا إذا لCS50.
سنرى في الأسبوع القادم.
>> رئيس 1: [؟ سكالي؟] [؟ إيان،؟] بقدر هذا المشروع OUTRO،
ما يا رفاق الخروج؟
>> المتحدث 2: حسنا، لقد أعطيت انها مجموعة متنوعة من الفكر،
ونعتقد أن أفضل طريقة to--
>> SPEAKER 3: اسمحوا لي؟
>> المتحدث 2: نعم.
بكل الوسائل، في الواقع.
>> SPEAKER 3: لذلك اعتقد يمكننا أن نلخص فكرتنا
لoutros مع شيء واحد word--.
>> DAVID J مالان: لا شيء؟
SPEAKER 3: لا شيء.
DAVID J مالان: ماذا يعني ذلك؟
SPEAKER 3: outros هي عن .. لاشيء.
المتحدث 2: حسنا، أعني، في الفلسفة، أعني، ليس هناك ما هو دائما شيء.
رئيس 1: حتى what's-- ما هي الفرضية؟
SPEAKER 3: لذلك مثل الحياة.
حسنا.
ماذا فعلت اليوم؟
>> DAVID J مالان: استيقظت، كان وجبة الإفطار، وجاء للعمل.
>> SPEAKER 3: وهذا OUTRO.
المتحدث 2: ولكن، أعني، لا ينبغي شيء يحدث له على the--
SPEAKER 3: لا، لا، لا، لا.
لاشيء يحدث.
>> رئيس 1: إذن لماذا نحن نراقب؟
>> SPEAKER 3: لأن انها OUTRO لCS50.
>> DAVID J مالان: ليس بعد.