سؤال

إذا كان لدي كتلة بيان مثل هذا:

if (/*condition here*/){ }
else{ }

او مثل هذا:

if (/*condition here*/)
else if (/*condition here*/) {}
else if (/*condition here*/) {}

ماهو الفرق؟

يبدو أنه مع if/else، إذا كان الجزء مخصصًا للحالة الحقيقية والجزء الآخر مخصص لجميع الخيارات الممكنة الأخرى (خطأ).آخر إذا سيكون مفيدًا لعدد من الشروط.هذا هو ما أفهمه، هل هناك أي شيء آخر يجب أن أكون على علم به؟

هل كانت مفيدة؟

المحلول

والوضع على:

if( condition )
{
}
else
{
}

عند الشرط في العبارة أعلاه غير صحيحة، ثم سوف يكون دائما تنفيذ البيانات في كتلة آخر.

والحالة ب:

if( condition )
{
}
else if( condition2 )
{
}
else
{
}

عند 'حالة' غير صحيحة، ثم ما ورد في آخر إذا لن يتم تنفيذها كتلة عندما CONDITION2 هو الصحيح. وسيتم تنفيذ ما ورد في كتلة آخر عندما CONDITION2 غير صحيح.

نصائح أخرى

وبدون "ELSEIF" جملة عملتم لكتابة سلسلة إذا، البيانات لمعالجة واحدة من عدة نتائج محتملة بهذه الطريقة:

if( str == "string1" ) {
   //handle first case
} else {
    if( str == "string2" ) {
       //handle second case
    } else {
       if( str == "string3" ) {
           //handle third case
       } else {
          //default case
       }
    }
 }

وبدلا من ذلك يمكنك كتابة

if( str == "string1" ) {
   //handle first case
} else if( str == "string2" ) {
   //handle second case
} else if( str == "string3" ) {
   //handle third case
} else {
   //default case
}

والذي هو تماما نفس سابقتها، ولكن يبدو أجمل بكثير وأسهل بكثير للقراءة.

العديد من اللغات لديها قواعد نحوية مثل هذا (هنا: مواصفات لغة ECMAScript, ، إذن جافا سكريبت):

ifStatement :
    if ( تعبير ) إفادة else إفادة
    if ( تعبير ) إفادة

إفادة :
    حاجز
    VariableStatement
    بيان فارغ
    ExpressionStatement
    ifStatement
    IterationStatement
    متابعة البيان
    BreakStatement
    بيان الإرجاع
    مع بيان
    LabelledStatement
    SwitchStatement
    ThrowStatement
    TryStatement

حاجز :
    { قائمة البيانيختار، يقرر }

قائمة البيان :
    إفادة
    قائمة البيان إفادة

لذلك فروع ان ifStatement قد تحتوي على كتلة من البيانات (حاجز) أو أحد العبارات الأخرى (بخلاف حاجز).يعني هذا صحيح:

if (expr)
    someStatement;
else
    otherStatement;

و كما قائمة البيان قد تحتوي على عبارة واحدة فقط، هذه الأمثلة تعادل السابقة:

if (expr) {
    someStatement;
} else {
    otherStatement;
}

if (expr)
    someStatement;
else {
    otherStatement;
}

if (expr) {
    someStatement;
} else
    otherStatement;

وعندما نستبدل otherStatement بواسطة اضافية ifStatement, ، نحصل على هذا:

if (expr) {
    someStatement;
} else
    if (expr) {
        someOtherStatement;
    }

والباقي هو مجرد تنسيق التعليمات البرمجية:

if (expr) {
    someStatement;
} else if (expr) {
    someOtherStatement;
}

مؤكدا على ما قاله جامبو.

أيضًا، إذا كانت اللغة تحتوي على elif / elsif / elseif حقيقي (على سبيل المثال، تعليمات "حقيقية" else-if، بدلاً من نوع من التسلسل المتداخل المخفي بعيدًا عن طريق التنسيق)، فيمكن للمترجم بسهولة إصدار عقدة واحدة في الملخص شجرة بناء الجملة (أو ما شابه ذلك، انظر http://en.wikipedia.org/wiki/Abstract_syntax_tree) بدلاً من تداخلها.

لإعطاء مثال:

لنفترض في C/C++ أن لديك:

if (a) {
    X
} else if (b) {
    Y
} else if (c) {
    Z
} else {
    0
}

ثم سيقوم المترجم ببناء عقدة AST مثل هذا:

   a
  / \
 X   b
    / \
   Y   c
      / \
     Z   0

ولكن إذا كانت لغة الاختيار تحتوي على حالة حقيقية:

if (a) {
    X
} elif (b) {
    Y
} elif (c) {
    Z
} else {
    0
}

ومن ثم يمكن أن يبدو AST بسهولة أكبر كما يلي:

   (a--b--c)
   /  /  /  \
  X  Y  Z    0

في مثل هذه اللغة، سيكون استخدام "إذا كان غير ذلك" ممكنًا فقط إذا لم تكن الأقواس إلزامية:

if (a) {
    X
} elif (b) {
    Y
} else if (c) {  // syntax error "missing braces" if braces mandatory
    Z
} else {
    0
}

المقابلة AST (إذا كانت الأقواس ليست إلزامية):

   (a--b)
   /  /  \
  X  Y    c
         / \
        Z   0

هذا يمكن أن يجعل تحليل CFG (http://en.wikipedia.org/wiki/Control_flow_graph) أسهل ينفذ (على الرغم من أنه قد لا تكون هناك فائدة فعلية للتحسين؛لذلك إيمهو سيفيد فقط المبرمج الكسول :D).

وelse if يعني في الأساس جزء من else if هو بيان if آخر.

**if/else**
if(condition)
  statement;
else
   statement;

إذا / وإلا إذا / آخر

if(condition)
 {
   if(condition)
      statement;
   else 
     statement;
  }   
else if(condition)
{
    if(condition)
     statement;
    else
     statement;
}
else
    statement;

إذا / آخر وإذا / آخر إذا تم استخدامه أيضًا بهذه الطريقة

ونظرا متغير واحد، سوف تستخدم بنية if-else بسيط. عندما تكون هناك متغيرات متعددة وكان لديك مسارا مختلفا لتنفيذ لمختلف الاحتمالات، سوف تستخدم if-else if-...-else. ملاحظة، أن هذا الأخير ينتهي أيضا مع بيان else.

ولقد قدمت بالفعل الإجابة بنفسك. إذا / آخر هو لنتيجة صح / خطأ، مثل هو عدد صحيح = 2 أو أي قيمة كثافة العمليات المحتملة الأخرى، وإذا / ELSEIF هو أكثر من 2 النتائج، مثل عدد صحيح = 2، وكثافة العمليات = 3 وهلم جرا.

وكما أنه مجموعة سياق متغير. هل يمكن أن تحقق كل نتيجة واحدة مثل

if (a == 2) { do one thing };
if (a == 3) { do another thing };
...
if (a != 2 && a != 3 ...) { do something else };

وإذا و/ آخر / ELSEIF انها أفضل قابل للقراءة.

إذا كنت تريد التحقق من المزيد من الحالة يمكننا استخدام if..elseif.شرط واحد ثم يمكننا استخدام إذا أو إذا ... آخر.

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

إذا .. تفاصيل البيان آخر
http://allinworld99.blogspot.in/2016/02/ifelse-flow-chart-with-easy-example.html
إذا...تفاصيل أخرى
http://allinworld99.blogspot.in/2016/02/flow-chart-with-example-for-if-then.html

import java.util.*;

public class JavaApplication21 {
    public static void main(String[] args) {

        Scanner obj = new Scanner(System.in);
        System.out.println("You are watching an example of if & else if statements");

        int choice, a, b, c, d;
        System.out.println(" Enter 1-Addition & 2-Substraction");

        int option = obj.nextInt();
        switch (option) {
            case (1):
                System.out.println("how many numbers you want to add.... it can add up to 3 numbers only");
                choice = obj.nextInt();
                if (choice == 2) {
                    System.out.println("Enter 1st number");
                    a = obj.nextInt();

                    System.out.println("Enter 2nd number");
                    b = obj.nextInt();

                    c = a + b;

                    System.out.println("Answer of adding " + a + " & " + b + " is= " + c);
                } else if (choice == 3) {
                    System.out.println("Enter 1st number");
                    a = obj.nextInt();

                    System.out.println("Enter 2nd number");
                    b = obj.nextInt();

                    System.out.println("Enter 3rd number");
                    c = obj.nextInt();

                    d = a + b + c;

                    System.out.println("Answer of adding " + a + " , " + b + " & " + c + "  is= " + d);
                }
            case (2):
                System.out.println("how many numbers you want to substract.... it can substract up to 3 numbers only");
                choice = obj.nextInt();
                if (choice == 2) {
                    System.out.println("Enter 1st number");
                    a = obj.nextInt();

                    System.out.println("Enter 2nd number");
                    b = obj.nextInt();

                    c = a - b;
                    System.out.println("Answer of substracting " + a + " & " + b + " is= " + c);
                } else if (choice == 3) {
                    System.out.println("Enter 1st number");
                    a = obj.nextInt();

                    System.out.println("Enter 2nd number");
                    b = obj.nextInt();

                    System.out.println("Enter 3rd number");
                    c = obj.nextInt();

                    d = a - b - c;
                    System.out.println("Answer of substracting " + a + " , " + b + " & " + c + "  is= " + d);
                }
            default:
                System.out.println("no option you have chosen" + option);
        }
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top