Programming Basics SQL HTML CSS JavaScript Python C++ Java JavaFX Swing Problem Solving English English Conversations Computer Fundamentals Learn Typing

أساسيات البرمجةالشروط المتداخلة

  • مفهوم الشروط المتداخلة
  • طريقة وضع شرط بداخل شرط
  • هل استخدام الشروط المتداخلة أمر إجباري؟

مفهوم الشروط المتداخلة

شروط متداخلة ( 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 experience!");
}
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 experience!"); }

سنحصل على النتيجة التالية عند التشغيل مع الإشارة إلى أننا قمنا بتلوين القيمة التي أدخلناها عند التشغيل بلون مختلف.

Enter years of experience: 3
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 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.");
}
}
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 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."); } }

سنحصل على النتيجة التالية عند التشغيل مع الإشارة إلى أننا قمنا بتلوين القيمة التي أدخلناها عند التشغيل بلون مختلف.

Enter years of experience: 3
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 experience!");
}
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 experience!"); }

سنحصل على النتيجة التالية عند التشغيل مع الإشارة إلى أننا قمنا بتلوين القيمة التي أدخلناها عند التشغيل بلون مختلف.

Enter years of experience: 3
Are you married (yes/no): no
Your salary will be 800$ per month.

جرب الكود

الصورة التالية توضّح كيف قام محرر الكود بالمرور على الشروط.

هل استخدام الشروط المتداخلة أمر إجباري؟

كلا طبعاً، فكما لاحظت في الأمثلة السابقة أننا استطعنا كتابة البرنامج الواحد بثلاث طرق مختلفة و حصلنا على النتيجة ذاتها.
و من هذا المنطلق نريدك أن تكون على قناعة تامة بأنك قادرة على كتابة الكود دائماً بطرق مختلفة.

إستخدام أسلوب الشروط المتداخلة أمر يريحك للغاية عند كتابة الكود و عند الحاجة للتعديل عليه مستقبلاً لهذا فإننا نستخدمه كثيراً في مشاريعنا البرمجية عندما نتعامل مع شروط تكون مبنية على بعضها.

في الختام، عليك دائماً أن تحاول فهم الكود الذي أمامك لا أن تحفظه، و لتفهمه جيداً عليك تحليل طريقة عمله سطراً سطراً كما فعلنا.