جمل الشرط if و الجملة switch في جافا

 الشروط في جافا

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

يمكنك وضع العدد الذي تريده من الشروط في البرنامج الواحد, و تستطيع وضع الشروط بداخل بعضها البعض أيضاً.

أنواع جمل الشرط في جافا

إسم الجملة دواعي الإستخدام
if - else - else if statements نستخدمهم إذا كنا نريد تنفيذ كود معين في حال تحقق الشرط أو مجموعة من الشروط التي وضعناها.
شرح جملة الشرط if في جافا
switch statement نستخدمها إذا كنا نريد إختبار قيمة متغير معين مع لائحة من الإحتمالات نقوم نحن بوضعها, و إذا تساوت هذه القيمة مع أي إحتمال وضعناه ستتنفذ الأوامر التي وضعناها في هذا الإحتمال فقط.
شرح الجملة switch في جافا

أفكار و أساليب أخرى لوضع الشروط في جافا

طرق وضع الشروط عديدة و متنوعة, و يمكننا وضع شروط بداخل بعضها و يسمى ذلك Nested Conditional.
كما يمكننا وضع أكثر من شرط بداخل جمل الشرط if أو else if باستخدام العوامل المنطقية.


هنا وضعنا أمثلة تعلمك طريقة وضع أكثر من شرط في الجملة if أو else if باستخدام الـ Relational Operators.

طريقة وضع أكثر من شرط في الجملة if أو else if في جافا


هنا وضعنا مثال يعلمك طريقة وضع الشروط بداخل بعضها.

طريقة وضع الشروط بداخل بعضها في جافا

 جمل الشرط في جافا

جمل الشرط بشكل عام

طريقة كتابتهم Syntax :

if ( condition )
{
    // إذا كان الشرط صحيحاً نفذ هذا الكود
}

else if ( condition )
{
    // إذا كان الشرط صحيحاً نفذ هذا الكود
}

else
{
    // نفذ هذا الكود في حال لم يتم التعرف على الكود في أي شرط
}

ملاحظة على استخدام جمل الشرط في جافا

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

جملة الشرط if في جافا

if في اللغة العربية تعني " إذا ". و هي تستخدم فقط في حال كنت تريد تنفيذ كود معين حسب شرط معين.


المثال الأول على أستخدام جمله الشرط if في جافا

إذا كانت قيمة المتغير S أكبر من 5 سيتم طباعة الجملة:   S is bigger than 5.

Main.java
                    public class Main {

                    public static void main(String[] args) {

                    int S = 0;

                    if( S > 5 )
                    {
                    System.out.print("S is bigger than 5");
                    }

                    }

                    }
                  

سنحصل على النتيجة التالية عند التشغيل.

                  

هنا سأل نفسه التالي: هل قيمة المتغير S أكبر من 5؟
فكان جواب الشرط كلا ( false ) , لذلك لم ينفذ أمر الطباعة الموجود في جملة الشرط.


المثال الثاني على استخدام الجملة if  في جافا

إذا كانت قيمة المتغير S أكبر من 5 سيتم طباعة الجملة:   S is bigger than 5.

Main.java
                    public class Main {

                    public static void main(String[] args) {

                    int S = 30;

                    if( S > 5 ) {
                    System.out.print("S is bigger than 5");
                    }

                    }

                    }
                  

سنحصل على النتيجة التالية عند التشغيل.

                    S is bigger than 5
                  

هنا سأل نفسه التالي: هل قيمة المتغير S أكبر من 5؟
فكان جواب الشرط نعم (true), لذلك نفذ أمر الطباعة الموجود في جملة الشرط.

جملة الشرط else في جافا

else في اللغة العربية تعني " أي شيء آخر ". و هي تستخدم فقط في حال كنا نريد تنفيذ كود معين في حال كانت نتيجة جميع الشروط التي قبلها تساوي false.

يجب وضعها دائماً في الأخير, لأنها تستخدم في حال لم يتم تنفيذ أي جملة شرطية قبلها.

إذاً, إذا نفذ البرنامج الجملة if أو else if فإنه سيتجاهل الجملة else.
و إذا لم ينفذ أي جملة من الجمل if و else if فإنه سينفذ الجملة else.


المثال الأول على أستخدام جمله الشرط else في جافا

إذا كانت قيمة المتغير S تساوي 5 سيتم طباعة الجملة:   S is equal 5.

إذا كانت قيمة المتغير S لا تساوي 5 سيتم طباعة الجملة:   S is not equal 5.

Main.java
                    public class Main {

                    public static void main(String[] args) {

                    int S = 5;

                    if( S == 5 ) {
                    System.out.print("S is equal 5");
                    }

                    else {
                    System.out.print("S is not equal 5");
                    }

                    }

                    }
                  

سنحصل على النتيجة التالية عند التشغيل.

                    S is equal 5
                  

هنا سأل نفسه التالي: هل قيمة المتغير S تساوي 5؟
فكان جواب الشرط نعم ( true ) , لذلك نفذ أمر الطباعة الموجود في الجملة if.


المثال الثاني على أستخدام جمله الشرط else في جافا

إذا كانت قيمة المتغير S تساوي 5 سيتم طباعة الجملة:   S is equal 5.

إذا كانت قيمة المتغير S لا تساوي 5 سيتم طباعة الجملة:   S is not equal 5.

Main.java
                    public class Main {

                    public static void main(String[] args) {

                    int S = 20;

                    if( S == 5 ) {
                    System.out.print("S is equal 5");
                    }

                    else {
                    System.out.print("S is not equal 5");
                    }

                    }

                    }
                  

سنحصل على النتيجة التالية عند التشغيل.

                    S is not equal 5
                  

هنا سأل نفسه التالي: هل قيمة المتغير S تساوي 5؟
فكان جواب الشرط كلا ( false ) , لذلك نفذ أمر الطباعة الموجود في الجملة else.

جملة الشرط else if في جافا

جملة else if تستخدم إذا كنت تريد وضع أكثر من إحتمال ( أي أكثر من شرط ).

جملة أو جمل الـ else if يوضعون في الوسط, أي بين الجملتين if و else.


مثال على أستخدام جمله الشرط else if في جافا

إذا كانت قيمة المتغير number تساوي 1 سيتم طباعة الكلمة:   one.
إذا كانت قيمة المتغير number تساوي 2 سيتم طباعة الكلمة:   two.
إذا كانت قيمة المتغير number تساوي 3 سيتم طباعة الكلمة:   three.
إذا كانت قيمة المتغير number أكبر أو تساوي 4 سيتم طباعة الجملة:   four or greater.
إذا كانت قيمة المتغير number أصغر من 0 سيتم طباعة الجملة:   negative number.

Main.java
                    public class Main {

                    public static void main(String[] args) {

                    int number = 3;

                    if( number == 1 ) {
                    System.out.print("one");
                    }

                    else if( number == 2 ) {
                    System.out.print("two");
                    }

                    else if( number == 3 ) {
                    System.out.print("three");
                    }

                    else if( number >= 4 ) {
                    System.out.print("four or greater");
                    }

                    else {
                    System.out.print("negative number");
                    }

                    }

                    }
                  

سنحصل على النتيجة التالية عند التشغيل.

                    three
                  

هنا سأل نفسه التالي: هل قيمة المتغير number تساوي 1؟
فكان جواب الشرط كلا ( false ) , فانتقل إلى الشرط الذي يليه.

ثم سأل نفسه التالي: هل قيمة المتغير number تساوي 2؟
فكان جواب الشرط كلا ( false ) , فانتقل إلى الشرط الذي يليه.

ثم سأل نفسه التالي: هل قيمة المتغير number تساوي 3؟
فكان جواب الشرط هذه المرة نعم ( true ) , فقام بتنفيذ أمر الطباعة الموجود في جملة الشرط الثالثة, ثم تجاوز جميع جمل الشرط التي أتت بعده.

 الجملة switch في جافا

تعريف الجملة switch في جافا

switch نستخدمها إذا كنا نريد إختبار قيمة متغير معين مع لائحة من الإحتمالات نقوم نحن بوضعها, و إذا تساوت هذه القيمة مع أي إحتمال وضعناه ستتنفذ الأوامر التي وضعناها في هذا الإحتمال فقط.

كل إحتمال نضعه يسمى case.

أنواع المتغيرات التي يمكن إختبار قيمتها باستخدام هذه الجملة هي:
int - byte - short - char - enum.


طريقة تعريف الجملة switch في جافا

يمكننا تعريفها بعدة أشكال, الشكل الأساسي هو التالي:

switch(expression) {

    case value:
        // Statements
        break;

    case value:
        // Statements
        break;

    default:
        // Statements
        break;

}

  • switch تعني إختبر قيمة المتغير الموضوع بين قوسين.


  • expression هنا يقصد بها المتغير الذي نريد إختبار قيمته.
    نوع المتغير الذي يسمح لنا بإختباره: int - byte - short - char - enum.


  • case تعني حالة, value تعني قيمة, و Statements تعني أوامر.
    و يقصد من هذا كله, أنه في حال كانت قيمة الـ expression تساوي هذه القيمة سيقوم بتنفيذ الأوامر الموضوعة بعد النقطتين :.
    الآن بعد تنفيذ جميع الأوامر الموضوعة بعد النقطتين, يجب وضع break لكي يخرج من الجملة switch مباشرةً بدل أن ينتقل للـ case التالية الموجودة في الجملة switch.
    نستطيع وضع العدد الذي نريده من الـ case بداخل الجملة switch.
    إنتبه: الـ expression و الـ value يجب أن يكونا من نفس النوع.


  • default تعني إفتراضياً و هي نفس فكرة الجملة else, و يمكننا أن لا نضعها أيضاً.
    هذه الجملة تنفذ فقط في حال لم تنفذ أي case موجودة في الجملة switch و لذلك نضعها بالآخر.



ملاحظة على استخدام الجملة switch في جافا 

لا حاجة لوضع break للحالة الأخيرة لأن البرنامج سيخرج من الجملة switch في جميع الأحوال.


ستفهم فكرة الجملة switch من خلال الأمثلة و سنريك كيف يمكنك أن تنفذ نفس الأوامر لأكثر من حالة, من خلال الأمثلة.


المثال الأول على أستخدام الجمله switch  في جافا

سنقوم باختبار قيمة المتغير x و الذي نوعه int.

سنضع عدة حالات و كل حالة تطبع شيء معين.

Main.java
                    public class Main {

                    public static void main(String[] args) {

                    int x = 2;

                    switch( x ) {   // x إختبر قيمة المتغير

                    case 1:   // في حال كانت تساوي 1 سيتم تنفيذ أمر الطباعة الموضوع فيها
                    System.out.println("x contain 1");
                    break;

                    case 2:   // في حال كانت تساوي 2 سيتم تنفيذ أمر الطباعة الموضوع فيها
                    System.out.println("x contain 2");
                    break;

                    case 3:   // في حال كانت تساوي 3 سيتم تنفيذ أمر الطباعة الموضوع فيها
                    System.out.println("x contain 3");
                    break;

                    default:   // في حال كانت لا تساوي أي قيمة من القيم الموضوعة سيتم تنفيذ أمر الطباعة الموضوع فيها
                    System.out.println("x contain a different value");

                    }

                    }

                    }
                  

سنحصل على النتيجة التالية عند التشغيل.

                    x contain 2
                  

نلاحظ أنه تم تنفيذ أمر الطباعة الموجود في الحالة الثانية لأن قيمة المتغير x تساوي 2.

هنا سأل نفسه التالي: هل قيمة المتغير x تساوي 1؟
فكان جواب الشرط كلا ( false ) , فانتقل إلى الحالة التي تليه.

ثم سأل نفسه التالي: هل قيمة المتغير x تساوي 2؟
فكان جواب الشرط نعم ( true ) , فقام بتنفيذ أمر الطباعة الموجود في هذه الحالة, و بعدها خرج من جملة الـ switch بأكملها بسبب الجملة break.



المثال الثاني على استخدام الجملة switch في جافا 

سنقوم باختبار قيمة المتغير x و الذي نوعه int.

سنضع عدة حالات و كل حالة تطبع شيء معين.

Main.java
                    public class Main {

                    public static void main(String[] args) {

                    int x = 5;

                    switch( x ) {   // x إختبر قيمة المتغير

                    case 1:   // في حال كانت تساوي 1 سيتم تنفيذ أمر الطباعة الموضوع فيها
                    System.out.println("x contain 1");
                    break;

                    case 2:   // في حال كانت تساوي 2 سيتم تنفيذ أمر الطباعة الموضوع فيها
                    System.out.println("x contain 2");
                    break;

                    case 3:   // في حال كانت تساوي 3 سيتم تنفيذ أمر الطباعة الموضوع فيها
                    System.out.println("x contain 3");
                    break;

                    default:   // في حال كانت لا تساوي أي قيمة من القيم الموضوعة سيتم تنفيذ أمر الطباعة الموضوع فيها
                    System.out.println("x contain a different value");

                    }

                    }

                    }
                  

سنحصل على النتيجة التالية عند التشغيل.

                    x contain a different value
                  

نلاحظ أن تم تنفيذ أمر الطباعة الموجود في الحالة الإفتراضية لأن قيمة المتغير x لا تساوي أي قيمة من القيم الموضوعة في الحالات.

هنا سأل نفسه التالي: هل قيمة المتغير x تساوي 1؟
فكان جواب الشرط كلا ( false ) , فانتقل إلى الحالة التي تليه.

ثم سأل نفسه التالي: هل قيمة المتغير x تساوي 2؟
فكان جواب الشرط كلا ( false ) , فانتقل إلى الحالة التي تليه.

ثم سأل نفسه التالي: هل قيمة المتغير x تساوي 3؟
فكان جواب الشرط كلا ( false ) , فانتقل إلى الحالة التي تليه.

بما أنه لم يجد أي حالة تساوت فيها القيمة مع قيمة المتغير الذي يتم اختباره, قام بتنفيذ الأوامر الموجودة في الحالة الإفتراضية default, وعندما إنتهى من تنفيذ الأوامر خرج من جملة الـ switch بأكملها.

وضع نفس الأوامر لأكثر من حالة

إذا أردت وضع نفس الأوامر لأكثر من حالة, عليك وضع الحالات تحت بعضها, ثم كتابة الأوامر, ثم وضع break.


مثال

سنقوم باختبار قيمة المتغير x و الذي نوعه int.

سنضع ثلاث حالات ينفذون نفس الأوامر.

Main.java
                    public class Main {

                    public static void main(String[] args) {

                    int x = 3;

                    switch( x ) {   // x إختبر قيمة المتغير

                    case 1:     // في حال كانت تساوي 1 أو 2 أو 3 سيتم تنفيذ أمر الطباعة
                    case 2:
                    case 3:
                    System.out.println("x contain 1 or 2 or 3");
                    break;

                    default:   // في حال كانت لا تساوي أي قيمة من القيم الموضوعة سيتم تنفيذ أمر الطباعة الموضوع فيها
                    System.out.println("x contain a different value");

                    }

                    }

                    }
                  

سنحصل على النتيجة التالية عند التشغيل.

                    x contain 1 or 2 or 3
                  

نلاحظ أنه تم تنفيذ أمر الطباعة الموضوع للحالات الثلاث الأولى لأن قيمة x تساوي 3.

هنا سأل نفسه التالي: هل قيمة المتغير x تساوي 1 أو 2 أو 3؟
فكان جواب الشرط نعم ( true ) , فقام بتنفيذ أمر الطباعة الموضوع لهذه الحالات الثلاث, و بعدها خرج من جملة الـ switch بأكملها بسبب الجملة break.

 وضع أكثر من شرط في الجملة if في جافا

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


المثال الأول على أستخدام اكثر من شرط في الجملة if في جافا

إذا كانت قيمة المتغير a بين 0 و 20 إطبع الجملة:   acceptable number.

Main.java
                    public class Main {

                    public static void main(String[] args) {

                    int a = 14;

                    if( a >= 0 && a <=20 ) {
                    System.out.println("acceptable number");
                    }

                    }

                    }
                  

سنحصل على النتيجة التالية عند التشغيل.

                    acceptable number
                  

نلاحظ أنه قد تم تنفيذ أمر الطباعة لأن قيمة المتغير a بين 0 و 20

هنا سأل نفسه سؤالين.

السؤال الأول: هل قيمة المتغير a أكبر أو تساوي 0؟
فكان جواب الشرط الأول true.

السؤال الثاني: هل قيمة المتغير a أصغر أو تساوي 20؟
فكان جواب الشرط الثاني أيضاً true.

بما أن كلا الجوابين كانا true قام بتنفيذ أمر الطباعة.



المثال الثاني

إذا كانت قيمة المتغير a بين 0 و 20 إطبع الجملة:   acceptable number.

Main.java
                    public class Main {

                    public static void main(String[] args) {

                    int a = 26;

                    if( a >= 0 && a <=20 ) {
                    System.out.println("acceptable number");
                    }

                    }

                    }
                  

سنحصل على النتيجة التالية عند التشغيل.

                  

نلاحظ أنه لم يتم تنفيذ أمر الطباعة لأن قيمة المتغير a ليست بين 0 و 20

هنا سأل نفسه سؤالين.

السؤال الأول: هل قيمة المتغير a أكبر أو تساوي 0؟
فكان جواب الشرط الأول true.

السؤال الثاني: هل قيمة المتغير a أصغر أو تساوي 20؟
فكان جواب الشرط الثاني false.

بما أن واحداً من الجوابين لم يكن true لم ينفذ دالة الطباعة.



المثال الثالث

إذا كانت قيمة المتغير a تساوي 1 أو 2 أو 3 إطبع الجملة:   you choose a valid number.

Main.java
                    public class Main {

                    public static void main(String[] args) {

                    int a = 2;

                    if( a == 1 || a == 2 || a == 3 ) {
                    System.out.println("'a' is a valid number");
                    }

                    }

                    }
                  

سنحصل على النتيجة التالية عند التشغيل.

                    'a' is a valid number
                  

نلاحظ أنه قام بتنفيذ أمر الطباعة لأن قيمة المتغير a تساوي 2

هنا كان سيسأسل نفسه ثلاثة أسئلة لأنه يوجد ثلاث شروط, لكنه سأل نفسه سؤالين فقط.

السؤال الأول: هل قيمة المتغير a تساوي 1؟
فكان جواب الشرط الأول false فانتقل للشرط الذي يليه.

السؤال الثاني: هل قيمة المتغير a تساوي 2؟
فكان جواب الشرط الثاني true.

بما أن واحداً من الأجوبة كان true نفذ مباشرةً أمر الطباعة و لم ينظر حتى للشرط الأخير.

 

وضع شرط بداخل شرط في جافا

نستطيع وضع الشروط بداخل بعضها, و يمكننا وضع العدد الذي نريده من الشروط.
في البرامج الفعلية يقوم المبرمج بوضع العديد من الشروط بداخل بعضها, و ذلك حسب الفكرة التي يريد تنفيذها في برنامجه.

كمثال بسيط, لنفترض أننا نريد تحويل هذه الصورة إلى برنامج.


مثال على وضع شرط بداخل شرط في جافا

هنا قمنا بتجهيز متغير يمثل نوع الجنس إسمه isMale و قلنا إذا كانت قيمته true فهذا يعني أن الشخص هو ذكر.
و إذا كانت تساوي false فهذا يعني أن الشخص هو أنثى.

بالإضافة لمتغير يمثل العمر إسمه age.

Main.java
                    public class Main {

                    public static void main(String[] args) {

                    boolean isMale = false;
                    int age = 14;

                    if(isMale == true)
                    {
                    System.out.println("Gender: male");

                    if( age <= 21 )
                    {
                    System.out.println("He is a young boy");
                    }
                    }

                    else
                    {
                    System.out.println("Gender: female");

                    if (age <= 21)
                    {
                    System.out.println("She is a young girl");
                    }
                    }

                    }

                    }
                  

سنحصل على النتيجة التالية عند التشغيل.

                    Gender: female
                    She is a young girl
                  

هنا سأل نفسه التالي: هل قيمة المتغير isMale تساوي true؟
فكان جواب الشرط false , فانتقل إلى جملة الشرط الإفتراضية else لينفذ ما بداخلها.

أولاً, قام بتنفيذ دالة الطباعة الموجودة فيها, فطبع الجملة   Gender: female.

ثم وجد شرطاً آخر بداخل الشرط الإفتراضي, فسأل نفسه التالي: هل قيمة المتغير age أصغر أو تساوي 21؟
فكان جواب الشرط true , فقام بتنفيذ دالة الطباعة الموجودة فيها, فطبع الجملة   She is a young girl.