الخوارزمياتجمل الشرط
- شكل جمل الشرط بشكل عام
- جملة الشرط
if
- جملة الشرط
else
- جملة الشرط
else if
شكل جمل الشرط بشكل عام
في لغات البرمجة يوجد ثلاث جمل متعارف عليها يمكن إستخدامها لوضع شروط تحدد متى يتم تنفيذ كود معين أم لا.
الجمل المستخدمة في وضع الشروط هي if
, else if
, else
.
طريقة كتابتهم ( Syntax )
if ( condition ) { // إذا كان الشرط صحيحاً نفذ هذا الكود } else if ( condition ) { // إذا كان الشرط صحيحاً نفذ هذا الكود } else { // نفذ هذا الكود في حال لم يتم التعرّف على الكود في أي شرط }
لست بحاجة إلى إستخدام الجمل الثلاثة في كل شرط تضعه في البرنامج, و لكنك مجبر على إستخدام جملة الشرط if
مع أي شرط.
تابع كل الدرس حتى تتعرّف على جميع طرق وضع الشروط.
جملة الشرط if
if
في اللغة العربية تعني "إذا" و هي تستخدم فقط في حال كنت تريد تنفيذ كود معين حسب شرط معين.
المثال الأول
إذا كانت قيمة المتغير S
أكبر من 5 إطبع جملة: "S is bigger than 5"
.
كود الجافا
public class If_Statment { public static void main (String[] args) { int S = 0; if ( S > 5 ) { System.out.print("S is bigger than 5."); } System.out.print("\n"); } }
نتيجة التشغيل
شرح الكود
- في البداية, إشتغل البرنامج بدون أي مشكلة و لكنه لم يظهر أي نتيجة لأن الشرط لم يتحقق.
int S = 0;
- قمنا بتعريف المتغير
S
و أعطيناه 0 كقيمة.
if ( S > 5 ) { System.out.print("S is bigger than 5."); }
- الآن, إنتبه إلى جملة الشرط
if ( S > 5 )
لتعرف كيف سيتعامل الكمبيوتر مع هذا الشرط بدقة. - سيرى أولاً قيمة المتغير
S
و بعد أن يعرف قيمتها سيرى إذا كانت أكبر من 5 أم لا. - في حال وجد أن قيمة المتغير
S
أكبر من 5 سينفذ كل الكود الموجود في حدود جملة الشرطif
. - في حال لم تكن أكبر منها سيتجاهل كل شيء موجود بداخل جملة الشرط.
- هنا قام البرنامج بتجاهل الكود الموجود في حدود جملة الشرط لأن قيمة المتغير
S
ليست أكبر من 5.
المثال الثاني
إذا كانت قيمة المتغير S
أكبر من 5 إطبع جملة: "S is bigger than 5"
.
إنتبه: هذا نفس المثال السابق و لكننا قمنا بتغير قيمة المتغير S
فقط.
كود الجافا
public class If_Statment { public static void main (String[] args) { int S = 20; if ( S > 5 ) { System.out.print("S is bigger than 5."); } System.out.print("\n"); } }
نتيجة التشغيل
شرح الكود
- في البداية, الفرق بين هذا المثال و المثال السابق أن البرنامج قام بتنفيذ دالة الطباعة الموجودة في حدود جملة الشرط
if
.
int S = 20;
- قمنا بتعريف المتغير
S
و أعطيناه قيمة 20.
if ( S > 5 ) { System.out.print("S is bigger than 5."); }
- هنا قام البرنامج بتنفيذ الكود الموجود في حدود جملة الشرط لأن قيمة المتغير
S
أكبر من 5.
جملة الشرط else
else
في اللغة العربية تعني "أي شيء آخر", و هي تستخدم فقط في حال كنت تريد تنفيذ كود معين لا يطابق أي شرط موجود بداخل الجملة if
أو الجمل else if
و يجب وضعها دائماً في الأخير, لأنها تستخدم في حال لم يتم تنفيذ أي جملة شرطية قبلها.
إذاً, إذا نفذ البرنامج الجملة if
فإنه سيتجاهل الجملة else
.
و إذا لم ينفذ أي جملة من الجمل if
و else if
فإنه سينفذ الجملة else
.
مثال
إذا كانت قيمة المتغير name
تساوي "Mhamad"
إطبع جملة: "This is my name"
.
كود الجافا
public class If_Else_Statments { public static void main (String[] args) { String name = "Mhamad"; if ( name == "Mhamad" ) { System.out.print("This is my name."); } else { System.out.print("NOT my name!"); } System.out.print("\n"); } }
نتيجة التشغيل
شرح الكود
- في هذا البرنامج إستخدمنا الجملتين
if
وelse
. - قمنا بتعريف المتغير
name
و أعطيناه قيمة"Mhamad"
.
- ركز جيداً على جملة الشرط التالية.
if ( name == "Mhamad" )
- لاحظ أننا وضعنا إثنتين
=
و ليس واحدة=
. - وضعنا
==
للمقارنة, لنرى هل قيمة المتغيرname
تساوي"Mhamad"
. - بما أن قيمة المتغير
name
تساوي"Mhamad"
فإن الكمبيوتر سينفذ كل الكود الموجود في حدود الجملةif
و سيتجاهل الجملةelse
.
إذا كنت تريد مقارنة متغيرين مع بعضهما لترى إذا كانت قيمهم متساوية, يجب أن تضع بينهما ==
و ليس =
.
لو عدت للمثال السابق و وضعت =
بدلاً من ==
لأدى ذلك إلى خطأ منطقي و ليس برمجي, أي لو كتبت الكود كالتالي:
if ( name = "Mhamad" )
في هذه الحالة الكمبيوتر سيظن أنك تريد وضع القيمة "Mhamad"
كقيمة جديدة للمتغير name
و ليس مقارنة قيمة المتغير name
مع القيمة "Mhamad"
.
كما أنه سيظهر لك خطأ لأنه يجب وضع شرط في الجملة if
و ليس إعطاء قيمة لمتغير فقط.
جملة الشرط else if
جملة else if
تستخدم إذا كنت تريد وضع أكثر من إحتمال ( أي أكثر من شرط ).
جملة أو جمل الشرط else if
يوضعون في الوسط أي بين الجملتين if
و else
.
مثال
فكرة البرنامج التالي طباعة إسم الشهر على حسب رقمه.
أي إذا كانت قيمة المتغير month
تساوي رقم بين 1 و 12 يتم طباعة إسم الشهر.
كود الجافا
public class MonthsOfTheYear { public static void main (String[] args) { int month = 3; if ( month == 1 ) { System.out.print("January"); } else if ( month == 2 ) { System.out.print("February"); } else if ( month == 3 ) { System.out.print("March"); } else if ( month == 4 ) { System.out.print("April"); } else if ( month == 5 ) { System.out.print("May"); } else if ( month == 6 ) { System.out.print("June"); } else if ( month == 7 ) { System.out.print("Jul"); } else if ( month == 8 ) { System.out.print("August"); } else if ( month == 9 ) { System.out.print("September"); } else if ( month == 10 ) { System.out.print("October"); } else if ( month == 11 ) { System.out.print("November"); } else if ( month == 12 ) { System.out.print("December"); } else { System.out.print("NOT a Month!"); } System.out.print("\n"); } }
نتيجة التشغيل
إذا قمت بتغيير قيمة المتغير month
فإن النتيجة ستتغير أيضاً.
شرح الكود
- في هذا البرنامج إستخدمنا الجمل
if
وelse if
وelse
. - قمنا بتعريف المتغير
month
و أعطيناه قيمة 3 لأننا نريد طباعة إسم الشهر الثالث. - بما أنه عندنا 12 شهراً, إذاً عندنا 12 إحتمال.
- 12 إحتمال يعني أنه يوجد جملة
if
واحدة بالإضافة إلى 11 جملةelse if
بعدها. - في النهاية وضعنا الجملة
else
لأنه إن كان الرقم الموضوع في المتغيرmonth
ليس بين 1 و 12 فلا يمكن أن يكون رقم لشهر.
طريقة تعامل البرنامج مع الشروط
لو وضعنا if
بدل كل else if
سيؤدّي ذلك إلى أخطاء عدة في الكود
والسبب أن البرنامج سيقوم باختبار جميع الجمل if
و حين يصل لآخر جملة if
سيرى إن كانت قيمة المتغير month
تساوي 12 أم لا و حين يجدها لا تساوي 12 سيقوم بتنفيذ الجملة else
و بالتالي ستظهر لك نتيجة خاطئة.
ضع if
بدل كل else if
, ثم قم بتشغيل البرنامج و لاحظ كيف أنه سينفذ أيضاً الجملة else
و سيعطيك النتيجة التالية عند تشغيله.