أساسيات البرمجةجمل الشرط
- مفهوم جمل الشرط
- جملة الشرط
if
- جملة الشرط
else
- جملة الشرط
else if
مفهوم جمل الشرط
في لغات البرمجة يوجد ثلاث جمل متعارف عليها يمكن إستخدامها لوضع شروط تحدد ما إن كان يجب تنفيذ كود معين أم لا.
الجمل المستخدمة في وضع الشروط هي if
، else if
، else
.
ترتيب جمل الشرط في حال كنت ستستخدمها كلها هو التالي.
{
هنا تضع الأوامر التي تريد
تنفيذها إذا تحقق الشرط
}
else if ( هنا تضع شرط آخر )
{
هنا تضع الأوامر التي تريد
تنفيذها إذا تحقق الشرط
}
else
{
هنا تضع الأوامر التي تريد تنفيذها
في حال لم يتحقق أي شرط سابق
}
لست بحاجة إلى إستخدام الجمل الثلاثة في كل شرط تضعه، و لكنك مجبر على إستخدام جملة الشرط if
في أي سلسلة شروط تكتبها.
جملة الشرط if
if
تعني إذا تحقق الشرط.
و هي تستخدم لتنفيذ كود معين إذا تحقق شرط معين.
في المثال التالي قمنا بوضع شرط مفاده أنه إذا كانت قيمة المتغير s
أكبر من 5
سيتم طباعة جملة "S is bigger than 5"
.
هنا عندما يصل محرر الكود إلى جملة الشرط سيسأل نفسه: هل قيمة s
أكبر من 5
؟
بما أنه سيجد أن الشرط تحقق ( أي جوابه true
) سيتم تنفيذ أمر الطباعة الموضوع فيه.
المثال الأول
var s = 20; if(s > 5) { write("S is bigger than 5."); }
سنحصل على النتيجة التالية عند التشغيل.
هنا قمنا بإعادة المثال السابق و لكننا هذه المرة جعلنا قيمة المتغير s
تساوي 0
.
هنا عند يصل محرر الكود إلى جملة الشرط سيسأل نفسه: هل قيمة s
أكبر من 5
؟
بما أنه سيجد أن الشرط لم يتحقق ( أي جوابه false
) لن يتم تنفيذ أمر الطباعة الموضوع فيه.
المثال الثاني
var s = 0; if(s > 5) { write("s is bigger than 5."); }
سنحصل على النتيجة التالية عند التشغيل.
نستنتج
- إذا تحقق الشرط فهذا يعني أن جواب الشرط هو
true
. - إذا لم يتحقق الشرط فهذا يعني أن جواب الشرط هو
false
. - الكود الموضوع بداخل جملة الشرط يتم تنفيذه في حال تحقق الشرط فقط.
جملة الشرط else
else
تعني إن لم يتحقق أي شرط سابق.
و هي تستخدم لتنفيذ كود معين في حال لم تتنفذ أي جملة شرطية موضوعة قبلها و لهذا السبب توضع في الآخر.
إذاً الكود الذي يوضع في الجملة else
يتنفذ فقط في حال لم يتحقق الشرط الموجود في الجملة if
أو الجمل else if
الموضوعين قبلها.
في المثال التالي وضعنا شرطين كالتالي:
- الجملة
if
وضعناها لطباعة عبارة"This is my name"
في حال كانت قيمة المتغيرname
تساوي"Mhamad"
. - الجملة
else
وضعناها لطباعة عبارة"Not my name!"
في حال كانت قيمة المتغيرname
لا تساوي"Mhamad"
.
هنا بما أن الشرط الموضوع في الجملة if
سيتحقق سيتم تنفيذ أمر الطباعة الموجود فيه.
المثال الأول
var name = "Mhamad"; if(name == "Mhamad") { write("This is my name."); } else { write("Not my name!"); }
سنحصل على النتيجة التالية عند التشغيل.
الآن سنقوم بإعادة المثال السابق و لكننا هذه المرة سنجعل قيمة المتغير name
تساوي "Rami"
.
هنا عندما يصل محرر الكود إلى جملة الشرط if
سيسأل نفسه: هل قيمة name
تساوي "Mhamad"
؟
بما أنه سيجد أن الشرط لم يتحقق ( أي جوابه false
) سينتقل إلى الجملة else
و ينفّذ أمر الطباعة الموضوع فيها.
المثال الثاني
var name = "Rami"; if(name == "Mhamad") { write("This is my name."); } else { write("Not my name!"); }
سنحصل على النتيجة التالية عند التشغيل.
مشكلة قد تقع فيها عند مقارنة القيم
في الأمثلة السابقة لو كتبنا (name = "Mhamad")
بدلاً من (name == "Mhamad")
لأدى ذلك لحدوث مشكلة لأن محرر الكود سيرى أننا نحاول وضع "Mhamad"
كقيمة في المتغير name
بدلاً من مقارنة قيمته معها لأنه يفترض وضع شرط في جملة الشرط و ليس إسناد قيمة.
إذا كنت تريد مقارنة قيمتين مع بعض لمعرفة ما إن كانتا متساويتين أم لا إستخدم ==
و ليس =
.
جملة الشرط else if
جملة else if
تستخدم إذا كنت تريد وضع أكثر من شرط حيث يكون لديك أكثر من إحتمال.
جملة أو جمل الشرط else if
يوضعون في الوسط أي بين الجملتين if
و else
.
عند وضع سلسلة من الشروط فإن محرر الكود سيقوم بالمرور عليهم الواحد تلو الآخر إلى أن يجد شرط واحد منهم قد تحقق.
بمجرد أن يجد شرط واحد من الشروط الموضوعة قد تحقق فإنه يقوم بتنفيذ الكود الموجود في حدوده و عند الإنتهاء يقوم بتجاوز جميع الشروط الموضوعة بعده.
في المثال التالي سيُطلب من المستخدم إدخال رقم شهر من أشهر السنة و على حسب الرقم الذي يدخله سنقوم بطباعة إسم الشهر المرادف له.
رقم الشهر الذي يدخله المستخدم سنقوم بتخزينه في المتغير month
و من بعدها مباشرةً سنقوم بالتشييك على الرقم الذي أدخله و من ثم طباعة إسم الشهر المناسب.
ملاحظة: إن لم يكن رقم الشهر بين 1 و 12 فهذا يعني أن الرقم لا يمكن أن يشير لشهر محدد.
المثال الأول
write("Enter month number: "); var month = read(); if(month == 1) { write("January"); } else if(month == 2) { write("February"); } else if(month == 3) { write("March"); } else if(month == 4) { write("April"); } else if(month == 5) { write("May"); } else if(month == 6) { write("June"); } else if(month == 7) { write("Jul"); } else if(month == 8) { write("August"); } else if(month == 9) { write("September"); } else if(month == 10) { write("October"); } else if(month == 11) { write("November"); } else if(month == 12) { write("December"); } else { write("Cannot be a month!"); }
سنحصل على النتيجة التالية عند التشغيل مع الإشارة إلى أننا قمنا بتلوين القيمة التي أدخلناها عند التشغيل بلون مختلف.
March
الصورة التالية توضّح كيف قام محرر الكود بالمرور على الشروط، و من ثم كيف توقف حين وصل إلى الشرط الثالث و نفّذ الكود الموضوع فيه، ثم كيف تجاوز جميع الشروط الموضوعة بعده.
لو وضعنا if
بدل كل else if
سيؤدي ذلك إلى أخطاء منطقية في الكود بمعنى أنه سيعمل و لكن النتيجة ستكون خاطئة.
المشكلة في هذه الحالة ستحدث لأن محرر الكود سيقوم باختبار جميع الشرط الموضوعة و حين يصل لآخر جملة if
سيرى إن كانت قيمة المتغير month
تساوي 12 أم لا و حين يجدها لا تساوي 12 سيقوم بتنفيذ الجملة else
و بالتالي ستظهر لك نتيجة خاطئة.
هنا قمنا بإعادة المثال السابق و لكننا وضعنا if
بدل كل else if
حتى تلاحظ المشكلة المنطقية التي سيسببها ذلك.
المثال الثاني
write("Enter month number: "); var month = read(); if(month == 1) { write("January"); } if(month == 2) { write("February"); } if(month == 3) { write("March"); } if(month == 4) { write("April"); } if(month == 5) { write("May"); } if(month == 6) { write("June"); } if(month == 7) { write("Jul"); } if(month == 8) { write("August"); } if(month == 9) { write("September"); } if(month == 10) { write("October"); } if(month == 11) { write("November"); } if(month == 12) { write("December"); } else { write("Cannot be a month!"); }
سنحصل على النتيجة التالية عند التشغيل مع الإشارة إلى أننا قمنا بتلوين القيمة التي أدخلناها عند التشغيل بلون مختلف.
MarchCannot be a month!
الصورة التالية توضّح كيف قام محرر الكود بالمرور على جميع الشروط.