إذا / آخر وإذا / السيف
-
10-07-2019 - |
سؤال
إذا كان لدي كتلة بيان مثل هذا:
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);
}
}
}