الشروط المتداخلة في البرمجة
المسار: أساسيات البرمجة الوحدة: العوامل والشروط
مدخل إلى الدرس: الشروط المتداخلة في البرمجة
مفهوم الشروط المتداخلة الشروط المتداخلة ( Nested Conditions ) يُقصد بها وضع شرط بداخل شرط. أي وضع جملة شرط بداخل جملة شرط و هذا الأمر نفعله عادةً لجعل...
طريقة الدراسة: اقرأ التعريف، تتبّع المثال في الشرح، نفّذه بنفسك، ثم اختبر النتيجة والحالات الاستثنائية قبل الانتقال.
مفهوم الشروط المتداخلة
الشروط المتداخلة ( Nested Conditions ) يُقصد بها وضع شرط بداخل شرط. أي وضع جملة شرط بداخل جملة شرط و هذا الأمر نفعله عادةً لجعل قراءة الكود أكثر سهولة في حال كنا بحاجة لوضع الكثير من الشروط حتى ننفذ أوامر محددة.
هذا الدرس سيكون عبارة عن أمثلة تتعلم من خلالها طرق مختلفة لوضع شروط منطقية و الحصول على نفس النتيجة.
طريقة وضع شرط بداخل شرط
في حال أردنا بناء برنامج يحسب كم يجب أن يكون مرتب من يتم قبوله في الوظيفة فهنا يمكننا وضع عدة شروط متداخلة على أساسها يتم تحديد المرتب كما في الصورة التالية.

الشروط الموضوعة في الصورة نقرأها على الشكل التالي:
- إن لم يكن عنده خبرة سنة واحدة على الأقل سيتم إعلامه بأنه لا يمكنه التقديم على الوظيفة.
- إن كان عنده خبرة سنة واحدة على الأقل و لكنه غير متزوج، سيكون مرتبه 800$.
- إن كان عنده خبرة سنة واحدة على الأقل و كان متزوجاً، سيكون مرتبه 1000$.
في المثال التالي سيطلب من المستخدم إدخال عدد سنوات خبرته و إن كان متزوجاً أم لا.
بعدها سيتم إعلامه كم سيكون مرتبه إذا تم قبوله في الوظيفة.
ملاحظة: إن لم يجب على سؤال ما إن كان متزوجاً أم لا بواسطة كلمة yes أو no سيتم إعلامه أن جوابه غير مقبول.
الحل الأول
var experience; var is_married; write("Enter years of experience: "); experience = read(); write("Are you married (yes/no): "); is_married = read(); if(experience >= 1) { if (is_married == "yes") { write("Your salary will be 1000$ per month."); } else if (is_married == "no") { write("Your salary will be 800$ per month."); } else { write("Error: your answer can be 'yes' or 'no' only."); } } else { write("Sorry.. The job requires at least one year of experience!"); }
النتيجة: ستكون كما يلي إذا تم إدخال نفس القيم التي تظهر بلون مختلف وقت التشغيل.
Are you married (yes/no): no
Your salary will be 800$ per month.
تمرين: انسخ المثال وجرّبه بنفسك، ثم عدّل القيم ولاحظ النتيجة.
تمرين تطبيقي: أعد كتابة المثال بنفسك، غيّر قيمة واحدة، وتوقع الناتج قبل التنفيذ.
هذه المرة سنجعل الجملة الشرطية الأولى ترى إذا كانت خبرة المستخدم أصغر من 1.
في هذه الحالة لاحظ أننا وضعنا جمل الشرط الداخلية بداخل الجملة else.
الحل الثاني
var experience; var is_married; write("Enter years of experience: "); experience = read(); write("Are you married (yes/no): "); is_married = read(); if(experience < 1) { write("Sorry.. The job requires at least one year of experience!"); } else { if (is_married == "yes") { write("Your salary will be 1000$ per month."); } else if (is_married == "no") { write("Your salary will be 800$ per month."); } else { write("Error: your answer can be 'yes' or 'no' only."); } }
النتيجة: ستكون كما يلي إذا تم إدخال نفس القيم التي تظهر بلون مختلف وقت التشغيل.
Are you married (yes/no): no
Your salary will be 800$ per month.
تمرين: انسخ المثال وجرّبه بنفسك، ثم عدّل القيم ولاحظ النتيجة.
تمرين تطبيقي: أعد كتابة المثال بنفسك، غيّر قيمة واحدة، وتوقع الناتج قبل التنفيذ.
هذه المرة لن نستخدم أسلوب الشروط المتداخلة بل سنعتمد على العامل &&.
الحل الثالث
var experience; var is_married; write("Enter years of experience: "); experience = read(); write("Are you married (yes/no): "); is_married = read(); if(is_married != "yes" && is_married != "no") { write("Error: your answer can be 'yes' or 'no' only."); } else if(experience >= 1 && is_married == "yes") { write("Your salary will be 1000$ per month."); } else if(experience >= 1 && is_married == "no") { write("Your salary will be 800$ per month."); } else if(experience < 1) { write("Sorry.. The job requires at least one year of experience!"); }
Are you married (yes/no): no
Your salary will be 800$ per month.
تمرين: انسخ المثال وجرّبه بنفسك، ثم عدّل القيم ولاحظ النتيجة.
تمرين تطبيقي: أعد كتابة المثال بنفسك، غيّر قيمة واحدة، وتوقع الناتج قبل التنفيذ.
هل استخدام الشروط المتداخلة أمر إجباري؟
كلا طبعاً، فكما لاحظت في الأمثلة السابقة أننا استطعنا كتابة البرنامج الواحد بثلاث طرق مختلفة و حصلنا على النتيجة ذاتها.
و من هذا المنطلق نريدك أن تكون على قناعة تامة بأنك قادرة على كتابة الكود دائماً بطرق مختلفة.
إستخدام أسلوب الشروط المتداخلة أمر يريحك للغاية عند كتابة الكود و عند الحاجة للتعديل عليه مستقبلاً لهذا فإننا نستخدمه كثيراً في مشاريعنا البرمجية عندما نتعامل مع شروط تكون مبنية على بعضها.
في الختام، عليك دائماً أن تحاول فهم الكود الذي أمامك لا أن تحفظه، و لتفهمه جيداً عليك تحليل طريقة عمله سطراً سطراً كما فعلنا.
مراجعة وتمرين تثبيت المهارة
اختبار سريع: اشرح بعبارتك معنى «الشروط المتداخلة في البرمجة»، ثم بيّن أين ستستخدمه داخل برنامج صغير لحل مشكلة يومية مع مدخلات ونتائج يمكن التحقق منها، وما الخطأ الذي يجب اختباره قبل الاعتماد على الحل.
تحدٍّ إضافي: غيّر شرطًا واحدًا في التطبيق، وتوقع النتيجة، ثم نفّذ الاختبار وفسّر الاختلاف.
الدرس التالي: التحقق من أنواع القيم في البرمجة. من الأفضل إنهاء التجربة الحالية قبل متابعة الدرس التالي.