سرور 1: دعونا نتحدث عن المياه.
في هذه المشكلة، ونحن نطلب من المستخدم أن أقول لنا متى في دقائق كان الاستحمام بها
ثم نحسب ما يعادل عدد من زجاجات المياه
أن الاستحمام من استخدامها.
>> فما هي جهدنا لتأليف ل لهذه المشكلة؟
أولا، نحن ذاهبون إلى الرغبة للمطالبة ومن ثم التحقق من صحة
المدخلات أن المستخدم يعطي لنا.
مرة واحدة علينا أن نضمن أن لدينا على مدخلات مستخدم صالح،
ونحن في طريقنا لحساب عدد مماثل من زجاجات المياه
أن المستخدم زيارتها خلال دش بهم، ومن ثم نحن
أريد أن أقول لهم من قبل طبع هذا العدد.
>> لذلك دعونا معالجة لدينا لأول مرة المهمة، مما دفع والتحقق من صحتها
إدخال المستخدم.
لهذا كتبنا وظيفة لأنك يسمى
get_int الموجودة في مكتبة CS50.
get_int يضمن أن مدخلات المستخدم عدد صحيح، لذلك أي أرقام إيجابية،
الأرقام السالبة، أو وتقبل جميع الصفر.
ولكن إذا كانت مدخلات المستخدم أي شيء آخر، لذلك أي تركيبة من الحروف أو الأرقام
أو الأرقام العشرية، ثم وسيتم دفع المستخدم لإعادة المحاولة
وسوف ظيفة لا يقبل أي شيء حتى المستخدم يعطيهم عدد صحيح.
>> كيف لنا إذن أن استخدام get_int؟
إذا قمت بفتح مساحة العمل الخاصة بك و إنشاء ملف يسمى integer.c دعونا
اكتب ما يلي.
الهاشتاج تشمل cs50.h.
وهذا ضروري لأن get_int هي وظيفة مكتبة cs50،
لذلك يجب علينا HASHTAG تشمل إعلانها من أجل
لاستخدام وظيفة.
ثم في بلدي الرئيسية تعمل انا فقط
لمجرد استدعاء get_int وظيفة.
>> لذلك دعونا تشغيل هذا ونرى كيف يعمل.
لقد قمت بتجميع بالفعل، لذلك دعونا فقط على المضي قدما وتشغيل هذا البرنامج،
./عدد صحيح.
هنا لدي موجه و هنا حيث أنا إدخال قيمة.
يقول أنا وضعت فقط في بعض صحيحا، 50، وتستثني برنامج وإنهاء
وهذا هو ذلك.
>> ولكن أقول تشغيله مرة أخرى و أنا إدخال شيء آخر.
ربما، مرحبا العالم.
هذا ليس عدد صحيح لذلك والبرنامج موجه لي لإعادة المحاولة.
دعونا نحاول مرة أخرى مع ربما عشري هذا الوقت.
0.5، مرة أخرى، ليس صحيحا ذلك البرنامج لن يقبل ذلك
وانها سوف تقول لي لإعادة المحاولة.
لذلك دعونا تعطيه رقم آخر.
البرنامج يقبل عليه، إنهاء، وننتهي.
>> حتى الآن لدينا وظيفة تسمح لنا ويضمن
أن مدخلات المستخدم ل صحيح، ولكن كيف يمكن لنا
في الواقع تتبع إدخالها صحيح من قبل المستخدم؟
حسنا، كل ما عليك القيام به هو مخزن هذه القيمة في متغير، ويقول ن.
حتى لو كنت تعلن ن عدد صحيح، وأنا وضعت هذه القيمة إلى get_int،
ثم n سيتم تخزين ثم أيا كان قيمة المستخدم إدخالها.
>> كل الحق، لذلك نحن الآن تأكدت أن المستخدم سوف تعطينا عدد صحيح
ونحن نعرف كيفية الحفاظ على المسار عدد صحيح، ولكن تذكر،
الأعداد الصحيحة على حد سواء الإيجابية والسلبية.
لذلك لا يجعل حقا معنى في سياق هذه المشكلة
أن المستخدم يأخذ دش من يقول السلبية 12 دقيقة.
لذلك نحن بحاجة للتأكد من أن المستخدم الواقع يعطي لنا عدد صحيح موجب.
الآن ليس لدينا فقط وظيفة واحدة لذلك،
لذلك نحن ذاهبون لدينا لإنشاء هذا أنفسنا.
>> لذلك نحن نريد لباستمرار مطالبة المستخدم
حتى أنها تعطينا صحيح موجب.
إذا أنا أفعل شيئا باستمرار ثم هذا أقرب إلى حلقة تكرار.
حتى واحد من بنيات التي نستخدمها في ج لتنفيذ التكرار والتكرار
هي حلقة من الوقت.
لذلك حلقة في حين، كما كما هو موضح هنا، سيتم تنفيذ
ما في الجسم من الحلقة كما طالما أن يقيم شرط معين
إلى true.
في أقرب وقت كما أن حالة تقييم إلى false، ثم
ستسير البرنامج إلى ما يأتي بعد الجسم من الحلقة.
>> وذلك في حين حلقات تسير ل أن تكون مفيدة حقا في CS50.
ولكن في هذا الخصوص حالة، ونحن نعلم أننا
الذهاب إلى مطالبة المستخدم على الأقل مرة واحدة ثم حلقة فقط إذا لزم الأمر.
حتى هنا نأتي ل بناء خاص وهذا
تشبه الى حد بعيد في حين دعا حلقة حلقة افعل حين.
>> حتى ينفذ حلقة افعل في حين أن الجسم من الحلقة مرة واحدة على الأقل
وبعد ذلك بالتحقق مما ما إذا كان ينبغي تنفيذ،
بدلا من حلقة في حين، والتي سوف تحقق الشرط
ومن ثم تنفيذ الجسم.
وذلك في حلقة افعل في حين أننا قد القيام به هو مطالبة المستخدم عددا صحيحا،
ومن ثم معرفة ما اذا كان هو صالح أم لا.
إذا كان غير صالح، ثم سنقوم كرر العملية يطلب من المستخدم
أن يقدم لنا عدد صحيح آخر، ومن ثم فقط عندما يكون هذا صحيحا صالحا،
سوف نستمر في كل ما يأتي بعد ذلك.
>> الآن عليك أن تلاحظ أن الإعلان عن عدد صحيح ن
يختلف قليلا إلى ما نحن فعلت من قبل في المثال السابق
وذلك لأن النطاق.
وإذا كنا قد أعلن عدد صحيح ن داخل من الجسم من الحلقة افعل حين،
ثم أننا لن نكون قادرين على الوصول إلى أن قيمة ن خارج تلك مجعد
تستعد تشير إلى الجسم من الحلقة.
لكننا في الواقع تريد الوصول إلى قيمة ن في وقت لاحق في برنامجنا.
>> حسنا، الآن دعونا نتحدث عن ما ينبغي أن يكون هذا الشرط.
نريد أن reprompt فقط المستخدم طالما ن غير صالح.
لذلك اعتقد لنفسك ما غير صالح أن قيمة عددية تبدو
ثم قم بإنشاء منطقية التعبير للتعبير عن ذلك.
>> نحن تقريبا الانتهاء مع فرعية لدينا من دفع والتحقق من صحة إدخال المستخدم.
لذلك دعونا جعل هذا قليلا قليلا أكثر ملاءمة للمستخدمين
وإعطاء المستخدم قليلا قليلا مزيد من المعلومات
ما نحن دفعهم ل.
لذلك دعونا مطالبة المستخدم، طبقا ل المواصفات، مع سلسلة دقائق.
وذلك باستخدام البيانات printf، وجعل تأكد من أنك تطابق هذا بالضبط.
>> حسنا.
حتى الآن لدينا مستخدم صالح المدخلات، وعدد صحيح موجب
قيمة لعدد الدقائق قضوا في الحمام.
ذلك ما هي الخطوة التالية هي لحساب وعدد مماثل من الزجاجات.
ما نحن في طريقنا للقيام هنا قد يكون واضحا جدا لك في البداية،
وهذا موافق.
ما نريد أن نفعله هو تريد أن تبدأ ممارسة
فكرة الكشف عن أنماط و تطوير الصيغ لهذه المشكلة.
>> لذلك يقال لنا في المواصفات أن دقيقة واحدة في الحمام
ما يعادل حوالي 12 زجاجة من المياه.
حتى ذلك الحين سوف دقيقتين ما يعادل 24،
وسوف خمس دقائق ما يعادل 60.
حتى الآن إذا كنت تعتقد أن كنت قد حصلت عليه، ثم دعونا
نرى ما اذا كان يمكنك الخروج مع وجود نمط أو صيغة
للتعبير عن إذا كنا قد أقول، ن دقائق، كم عدد من زجاجات المياه
فإن ذلك يمكن التعبير عنها من حيث ن؟
>> مرة أخرى، على الرغم من أن هذه قد تكون بسيطة في البداية،
في وقت لاحق عندما نصل الى مشاكل أكثر تعقيدا
ونحن في طريقنا إلى نريد ان نصل الى ممارسة تحديد
أنماط وصيغ تطوير لمعرفة هذه الامور.
>> في ج لديك حق الوصول إلى العمليات الحسابية القياسية،
بالإضافة إلى ذلك، الطرح، الضرب والقسمة.
ولذا فإنني سوف أترك الأمر لل أنت الآن لمعرفة
كيفية التعبير عن عدد مماثل من زجاجات
أن المستخدم تستهلك أثناء الاستحمام بها.
>> كل الحق، ونحن على وشك الانتهاء.
لقد مطالبة المستخدم لمدخلاتها، نحن تأكدت أنه من مدخلات صحيحة،
وبعد ذلك قمنا ترد على كيفية لحساب ما يعادل
عدد من الزجاجات التي كانت تستهلك.
ولذلك فإن آخر شيء فعله هو إخراج وعدد مماثل من زجاجات
وتشجيع أمل منهم للحفاظ على بعض الماء.
>> إخراج القيمة سوف يكون بيان printf.
إذا كنت أريد أن أقول لكم بأنني لدينا ثلاثة حيوانات أليفة، على سبيل المثال،
وأود أن استخدام عبارة printf ويبدو أن شيئا من هذا القبيل.
لدي ثلاثة حيوانات أليفة، وجديدة خط للتنسيق لطيف.
>> الآن نحن لا نريد ل ببساطة الأشياء رمز القرص الثابت.
ويقول عدد من بلدي الحيوانات الأليفة يتغير مع مرور الوقت.
ثم انا ذاهب الى الاستفادة من النائبة في بيان printf بلدي.
حتى هنا رقم هاتفي هو عدد صحيح.
لذلك أنا ذاهب لجعل نائبا لعدد صحيح باستخدام٪ ط.
أنا أريد أن أكتب سلسلة، ثم بعد سلسلة
أنا أكتب فاصلة ثم المتغير الذي أريد للطباعة.
لذلك سيتم طبع هذه القيمة بدلا من أن نائبا،٪ ط.
>> يمكنك استخدام العناصر النائبة، كما حسنا، ليطفو مع٪ لو.
هل يمكن أن يكون أيضا متعددة النائبة في سلسلة.
على سبيل المثال، إذا كان لدي بعض رقم الكلاب وبعض عدد من القطط،
أنا وضعت اثنين من العناصر النائبة هنا ثم بلدي اثنين من المتغيرات من أجل المعنيين.
>> حتى الآن أن نعرف كيفية طباعة القيم المخزنة في المتغيرات،
آخر شيء جدا ل القيام به هو التأكد من أننا
طباعة القيمة في شكل دقيق ورد في المواصفات.
مع ذلك، لقد دفعت التحقق من صحة المستخدم ومدخلاتها.
لقد ثم يحسب ما يعادل عدد من زجاجات المياه
أنها تستهلك أثناء الاستحمام، و ولقد أنتج تلك القيمة لهم.
وهكذا، فإننا قد أكملت المياه.
>> اسمي هو [؟ Zamila،؟] وهذا هو CS50.