جملة الاختيار الشرطية المركبة if… else… statement
في الدرس السابق تعلمنا تنفيذ مجموعة من الجمل أو جملة واحدة عند صواب الشرط ولكن لم نقم بعمل في حال كان الشرط خاطئًا فمثلًا عند علامة 50 فأكثر تُطبع عبارة Pass ولا يحدث شيء إن كانت العلامة أقل من 50. كذلك عند كتابة البرنامج الخاص بالعدد الموجب وطباعة عبارة Positive إن كان العدد صفرًا أو أكثر ولم يقم البرنامج بأي ردة فعل عندما كان العدد أقل من صفر. في هذا الدرس ستتعرف إلى جملة statement else ...if والتي تستخدم عندما يكون هناك جمل يجب أن تنفذ في حالة صواب قيمة الشرط، وجمل أخرى تنفذ عندما يكون قيمة الشرط خاطئة.
الصيغة العامة لجملة الاختيار الشرطية else...if:
if (condition)
statement1;
else
statement2;
حيث إن:
تعني إذا.C++كلمة محجوزة من كلمات لغة | if |
---|---|
الشرط (تعبير علائقي أو منطقي) قيمته صواب أو خطأ. | condition |
تنفذ إذا كانت قيمة التعبير صائبة. C++:جملة من جمل | statement1; |
تعني إذا لم يتحقق الشرط السابق. C++كلمة محجوزة من كلمات لغة | else |
تنفذ إذا كانت قيمة التعبير المنطقي خاطئة. C++:جملة من جمل | statement2; |
عند تنفيذ جملة if فإنه يتم إيجاد قيمة الشرط(condition)،فإذا كانت قيمته صائبة فسيتم تنفيذ جملة statement1، أما إذا كانت قيمته خاطئة فسيتجاوز البرنامج عن هذه الجزئية ويذهب إلى تنفيذ الجملة التي تلي else وهي جملة statement2،أي أن الحاسوب سينفذ إما statement1 أو statement2. والشكل الآتي يوضح مخطط سير العمليات لجملة الاختيار الشرطية else...if.
لاحظ تفرع مخطط سير العمليات إلى مسارين مختلفين بناءً على الشرط حيث تُنفذ واحدة فقط من هذه الجمل ثم يعود البرنامج إلى التتابع.
البرنامج يقوم بإدخال عددينx, y ، فإذا كان x أكبر من y ، يطبع x ثم يطبع عبارة greater than is ، ثم يطبع y، وإذا كان y أكبر من x يطبع y ثم يطبع عبارة greater than is ، ثم يطبع x .
وناتج تنفيذ البرنامج هو:
عند تنفيذ البرنامج تم إدخال القيمة 76 وخُزنت في المتغير x والقيمة 40 وخزنت في المتغير y. وعند مقارنة x>y كان جواب الشرط true وبالتالي فإن الجملة التي ستنفذ هي الجملة التي تلي if فقام البرنامج بطباعة قيمة x وهي 76 ومن ثم عبارة is greater than وبعدها قيمة y. وتخطى else والعبارة التي تليها.
تنفيذ البرنامج بإدخال قيم مختلفة عن المرة الأولى.
في هذه المرة تم إدخال العددين 50 و 100 فيخزن البرنامج العدد 50 كقيمة للمتغير x والعدد 100 كقيمة للمتغير y ثم يقوم بعملية المقارنة فيكون ناتج عملية المقارنة False فيقفز البرنامج إلى الجملة التي تلي الكلمة المحجوزة else وينفذها ويطبع الناتج الظاهر على شاشة المخرجات.
نشاط (2-22): جملة الاختيار الشرطية المركبة
بالتعاون مع أفراد مجموعتك نفذ الآتي:
- اكتب برنامجا بلغة C++ لإدخال علامة طالب وطباعة كلمة "Pass" إذا كانت العلامة أكبر أو تساوي 50 وغير ذلك يطبع كلمة "Fail".
- قم ببناء البرنامج ونفذه.
- ادخل قيماً مختلفة لعلامة الطالب، ماذا تلاحظ؟
- احفظ البرنامج في ملف المجموعة.
نشاط (2-23): حساب الضريبة السنوية
بالتعاون مع أفراد مجموعتك نفذ الآتي:
- اكتب برنامجا بلغة C++ لحساب وطباعة الضريبة السنوية لموظف يتقاضى راتباً شهرياً، إذا علم أن الشخص الذي يحصل على راتب سنوي أقل من ستة آلاف دينار سنوياً يدفع ضريبة بمقدار 10%، بينما يدفع الموظف الذي يحصل على راتب سنوي ستة آلاف دينار أو أكثر ضريبة بمقدار 15%.
تحليل السؤال:
نرمز للراتب الشهري بالرمز Salary. ويجب إدخال قيمته. مدخلات
الضريبة Tax. تُحسب وتطبع - مخرجات
الضريبة تُحسب على الراتب السنوي Income وليس الشهري لذلك يجب حساب الراتب السنوي بضرب الراتب الشهر ب 12 حيث إنه لدينا 12 شهراً.
Income = 12 * Salary
الشرط على الراتب السنوي
Income > 6000
إذا كان جواب الشرط صائبًا تُحسب الضريبة بهذه المعادلة
Tax = 10 / 100 * Income
وإذا كان جواب الشرط خاطئاً تُحسب بهذه المعادلة
Tax = 15 / 100 * Income
لاحظ أن النسبة المئوية تُحوّل إلى كسر.
حللنا السؤال الآن أصبحت كتابة البرنامج أكثر سهولة.
لاحظ أنّ جملة الطباعة ستُنفذ على جميع الأحوال لأنه لا علاقة لها بالشرط.
- قم ببناء البرنامج ونفذه.
- ادخل قيمة الراتب الشهري، ماذا تلاحظ؟
- كرر الخطوة السابقة، وسجل ملاحظاتك.
احفظ البرنامج في ملف المجموعة.