>> [عزف الموسيقى]
>> ZAMYLA تشان: هل تتلقى بدلا 10000000 $ في الوقت الراهن أو تلقي
البنسات كل يوم من أيام الشهر، حيث كل يوم اللاحقة، تتلقى
مضاعفة كمية من البنسات لك تلقى في اليوم من قبل؟
في بنسات، ونحن في طريقنا لل لماذا يجب أن تثبت
بالتأكيد اتخاذ بنسات.
عملك هو لإرسال pennies.c -
البرنامج الذي يسأل الأول للمستخدم كيف عدة أيام هناك في الشهر و
ثم يسأل كيف العديد من البنسات المستخدم سوف تتلقى في اليوم الأول.
ينبغي للبرنامج حساب ثم يرقى أن المستخدم سوف يكون
المتراكمة في نهاية شهر وعرضه.
>> يمكننا أن كسر هذا البرنامج حتى في بضع المهام.
سنحتاج للمطالبة مدخلات المستخدم متعددة -
الأيام والشهور، والبنسات في اليوم الأول.
نحن بحاجة لتتبع كم من المال المستخدم لديه وتحديثه كل
اليوم، مضاعفة كمية البنسات التي يتلقونها.
وأخيرا، ونحن طباعة بهم المجموع النهائي، بالدولار.
>> دعونا معالجة إدخال المستخدم الأول.
أنا ذاهب لفتح apples.c، هذا البرنامج القصير صفقات
مع المدخلات والمخرجات.
في الجزء العلوي هنا، لقد تضمنت بعض من المكتبات التي أحتاج -
مكتبة CS50 ومعيار I / O المكتبة.
أنا طباعة موجه باستخدام وظيفة printf من
معيار مكتبة I / O.
ولكن الفعلية مما دفع المستخدم يحدث في السطر التالي مع هذا
وظيفة GetInt في المكتبة CS50.
>> GetInt يحصل مدخلات من المستخدم و يضمن أن إدخال عدد صحيح.
لذلك أنا تخزين إدخال المستخدم إلى عدد صحيح ط، طرح 1 من أنا، ثم
طباعة القيمة الجديدة إذا ط.
بعد تجميع apples.c باستخدام الأمر "جعل التفاح،" لدي
التفاح الملف القابل للتنفيذ.
تشغيل ذلك، وسوف أكون مدخلات 1.
البرنامج يقول لي ان لدي 0 التفاح اليسار.
وبحيث عملت كما هو متوقع.
>> لذلك دعونا تشغيل هذا مرة أخرى والمدخلات السلبية 1.
الآن، وجود كمية من التفاح السلبية لا يجعل حقا معنى، ولكن
البرنامج يقبل عليه، لأن السلبية 1، حسنا، هو عدد صحيح.
والآن البرنامج أو الوحش داخل البرنامج يأكل السلبية
التفاح، والآن لدي 2 التفاح سلبية.
جلالة الملك، ذلك أن درس واحد -
على الرغم من أن وظيفة GetInt و وظائف ذات الصلة، مثل GetFlow أو
GetString الحصول على نوع البيانات الصحيحة، ل لديك للتأكد من أن مدخلات يجعل
شعور لهذا البرنامج.
>> في البنسات، فإنه لن يفعل موجه لعدد صحيح، سوف تحتاج إلى إجراء
التأكد من أن مدخلات المستخدم عدد صحيح هذا معقول بالنظر إلى السياق.
الشهر يمكن أن يكون فقط 28، 29، 30، أو 31 يوما.
نحن نريد للمطالبة باستمرار عدد صحيح صالحة.
إذا كانت إدخال عدد صحيح خارج لدينا قبلت ساق، ونحن سوف تدفعهم
مرارا وتكرارا، حتى تقوم تعطينا صحيح صالحة.
>> أذكر "تكرار حتى" منع في خدش؟
يمكنك جعل بناء مماثلة في C باستخدام "في حين أن" حلقة
أو حلقة "افعل حين".
هيكل حلقة في حين لديه حالة التي يجب الوفاء بها ل
الجسم من الحلقة لتنفيذه.
>> هذا يجب أن يتشابه قليلا، لأن الشرط هو تماما مثل
كتل الصفر مع الزوايا ويذهب إلى الأقواس
من "في حين أن" حلقة.
بحيث الشرط سوف تحقق ما إذا كان العدد الصحيح هو داخل
حدود مناسبة.
يمكنك مطالبة عدد صحيح باستخدام GetInt ومن ثم تنفيذ الخاص "، بينما"
حلقة، وتكرار موجه والطباعة تعليمات، في حين أن مدخلات
غير صالح.
>> طريقة أخرى لضمان إدخال المستخدم الصحيح هو باستخدام "افعل في حين أن" حلقة،
والتي هي مشابهة جدا لحلقة في حين.
في "افعل في حين أن" حلقة تنفيذ التعليمات البرمجية داخل الجسم منها ومن ثم الشيكات
سواء تحقق الشرط أم لا.
وهذا مفيد للحصول على إدخال المستخدم، لأنك تعرف أن تحتاج
لتدفعهم مرة واحدة على الأقل.
إذا لم يتم استيفاء الشرط، وبرنامج سيتم تنفيذ السطر بعد
لديك حلقة "افعل حين".
إذا تم استيفاء الشرط الرغم من ذلك، سوف حلقة تكرار
>> حلقة "افعل في حين أن" للتحقق من صحة المستخدم سوف ننظر إدخال شيء من هذا القبيل.
أعلن على ن متغير، GetInt، و ثم كرر حتى n غير صالحة.
وهذه العملية، شرحت، تم استخدام نوع البيانات عدد صحيح، والذي
عليك استخدام لأيام الشهر.
ولكننا نعرف أن عدد من البنسات سوف تتراكم بسرعة، وذلك من أجل
تخزين أعداد أكبر، استخدم نوع البيانات LONGLONG، ولكن تذكر نفس
ينطبق مبدأ التحقق من الصحة.
>> رهيبة، لذلك مرة واحدة لدينا اثنين صالحة مدخلات من المستخدم -
أيام في الشهر والبنسات في اليوم الأول -
اننا يمكن ان تتحرك على القادم جزء من البرنامج.
في اليوم الأول، يبدأ المستخدم مع ولكن العديد من البنسات أنهم محدد
وكمية من البنسات أنهم تلقي في اليوم التالي وتضاعف.
لذلك فمن المنطقي أن تتبع من هذه المبالغ اثنين -
كم من المال المستخدم لديه وكيف العديد من البنسات أنها سوف تعطى.
>> الآن، القيام بشيء لمدة 28 إلى 31 يوما غير المتكررة، لذلك دعونا استخدام "ل"
حلقة تكرار على مدى الأيام في الشهر، وتحديث الكلية وقرش
تصل في كل مرة.
"للحصول على" على بناء جملة حلقة ما يلي -
والتهيئة، وهي حالة، وتحديثا.
سيكون لديك "ل" حلقة تهيئة متغير، عندما
يدخل أول حلقة.
إذا تم استيفاء الشرط، الجسم الحلقة سيتم تنفيذ.
بعد ذلك، سوف التحديث تنفيذه.
إذا كان لا يزال يتم استيفاء الشرط، و سوف حلقة تنفيذ وتحديث، و
أكرر، طالما حالتك يقيم إلى true.
>> وهنا "ل" حلقة التي تقسم على صحيح ع بنسبة 2 ما مجموعه 10 مرة.
نلاحظ كيف أنا أعلن ع عدد صحيح خارج بلدي "ل" حلقة، بحيث
صحيح يمكن أن تكون في متناول خارج "ل" حلقة.
بعد مرور شهر، وحان الوقت لنقول للمستخدم كم من المال
أنها قد حصلت.
في المواصفات، تحتاج إلى إعلام المستخدم كم من الدولارات، وليس كم عدد
البنسات، لديهم.
ولكن حتى الآن، وكنت قد أبقى المسار من ومجموع البنسات باستخدام LongLongs،
التي هي الأعداد الصحيحة.
>> هناك 100 بنسات 1 دولار، وذلك ما لم عدد البنسات هو
متعددة من 100، ستحتاج إلى تمثل المنازل العشرية.
يسمح مطابق للمواصفات الضعف لك أن تفعل هذا.
لذلك كيف يمكننا تحويل من تمثيل البنسات إلى دولارات؟
>> دعونا نلقي نظرة pi.c.
يأخذ هذا البرنامج big_pi LONGLONG و يقسم من قبل 100،000، ويطبع
نتيجة لخمسة منازل عشرية.
إذا أردنا لعرض أربعة العشرية الأماكن، فإننا يمكن أن يحل محل هذا فقط
عدد هنا.
لذلك دعونا حفظ وتجميع بي، و ثم نرى النتيجة، ونحن
نتوقع أن يكون 3.1415 -
الأرقام الخمسة الأولى من بي.
>> على الرغم من أنها ليست.
ولماذا؟
حسنا، لأن big_pi هو LONGLONG، وهو عدد صحيح، والتي لن
تتبع عشرية.
التعديل أحتاج ل جعل هو في الانقسام.
ولست بحاجة إلى تحويل إلى مزدوج هنا قبل تقسيم، لأن زوجي لا يستطيع ان يحافظ
المسار المنازل العشرية.
وانا ذاهب لإضافة سطر جديد هنا لتنسيق أفضل.
>> وهنا لدينا ذلك -
3.1416.
قد تلاحظ أنه يطبع 3.1416 بدلا من 3.1415 كما هو متوقع.
هذا لأنه تقريب خلال عملية الانقسام، بدلا من مجرد
اقتطاع قيمة.
الآن يجب أن تكون قادرة على طباعة العدد النهائي بشكل صحيح، والذي ينتهي
البرنامج.
>> التهاني.
اسمي Zamyla.
وكان هذا بنسات.
>> [عزف الموسيقى]