Logical Operators

العوامل المنطقية في Dart تُستخدم لدمج أو تعديل التعبيرات الشرطية، وتُرجع قيمة منطقية (true أو false).
هي أدوات أساسية في اتخاذ القرارات البرمجية مثل if، while، وغيرها.

1. جدول العوامل المنطقية في Dart
العاملالاسمالوصفمثالالناتج
&&ANDيكون true إذا كان كلا الطرفين صحيحينtrue && falsefalse
||ORيكون true إذا كان أحد الطرفين صحيحًاtrue || falsetrue
!NOTيعكس القيمة المنطقية!truefalse

2. شرح كل عامل مع أمثلة عملية

1. العامل && (AND – و)
  • يكون الناتج true فقط إذا كان كلا الطرفين صحيحين.
  • إذا كان الطرف الأول false، لا يتم تقييم الطرف الثاني (Short-circuit evaluation).
  • الاستخدام: لدمج شرطين معًا
  • يعطي true فقط إذا: كان الشرطان صحيحين معًا
void main() {
  int age = 25;
  bool hasLicense = true;

  print(age >= 18 && hasLicense); // true (لأن كلا الشرطين صحيح)
  print(age > 30 && hasLicense);  // false (لأن الأول false)
}

///////////////////////////
print(5 > 3 && 2 < 4);  // true (لأن كلا الشرطين صحيح)
print(5 > 3 && 2 > 4);  // false (لأن الشرط الثاني false)
Dart
2. العامل || (OR – أو)
  • يكون الناتج true إذا كان أحد الطرفين صحيحًا على الأقل.
  • إذا كان الطرف الأول true، لا يتم تقييم الطرف الثاني.
  • الاستخدام: عندما يكفي تحقق أحد الشرطين
  • يعطي true إذا: كان أحد الشرطين صحيحًا (أو كلاهما)
void main() {
  bool isStudent = true;
  bool isEmployee = false;

  print(isStudent || isEmployee); // true (لأن الأول true)
  print(5 > 10 || 3 == 3);       // true (لأن الثاني true)
}
///////////////////////////////////////////////
print(5 > 3 || 2 > 4);  // true (لأن الشرط الأول صحيح)
print(5 < 3 || 2 > 4);  // false (لأن كلا الشرطين false)
Dart
3. العامل ! (NOT – ليس)
  • يُعكس القيمة المنطقية (true يصبح false والعكس).
  • الاستخدام: لعكس القيمة المنطقية
  • يعطي true إذا: كان الشرط الأصلي غير صحيح
void main() {
  bool isRaining = true;

  print(!isRaining); // false
  print(!(10 < 5));  // true (لأن 10 < 5 هو false، وNOT يعكسه)
}
////////////////////////////////
bool isRaining = true;
print(!isRaining);      // false
print(!(10 == 5));      // true (لأن 10 == 5 هو false، وNOT يعكسه)
Dart
3. أمثلة متقدمة
مثال 1: التحقق من اسم مستخدم وكلمة مرور
void main() {
  String username = "admin";
  String password = "12345";

  bool isAuthenticated = (username == "admin") && (password == "12345");
  print(isAuthenticated); // true
}
Dart

مثال 2: التحقق من فئة عمرية

void main() {
  int age = 15;

  bool isChild = age >= 5 && age <= 12;
  bool isTeen = age >= 13 && age <= 19;
  
  print("Is child? $isChild"); // false
  print("Is teen? $isTeen");   // true
}
Dart

مثال 3: اختصار تقييم (Short-circuit Evaluation)

void main() {
  bool test(bool value) {
    print("تم التقييم");
    return value;
  }

  print(test(false) && test(true)); // يطبع "تم التقييم" مرة واحدة فقط
  print(test(true) || test(false)); // يطبع "تم التقييم" مرة واحدة فقط
}
Dart
4. قواعد الأسبقية (Operator Precedence)
  1. ! (NOT)
  2. && (AND)
  3. || (OR)

مثال:

void main() {
  bool a = true, b = false, c = true;

  print(a || b && c); // true (يتم تنفيذ && أولاً)
  print((a || b) && c); // true (الأقواس تغير الترتيب)
}
Dart
العاملالاسمالاستخداممتى يكون الناتج true؟مثال
&&ANDcondition1 && condition2إذا كان كلا الشرطين صحيحينtrue && false → false
||ORcondition1 || condition2إذا كان أحد الشرطين صحيحًاtrue || false → true
!NOT!conditionإذا كان الشرط غير صحيح!true → false

مقارنة بين العوامل المنطقية

الموقف&&||!
true, true
true, false
false, false
التقييم المختصر (Short-circuit)نعمنعملا

ملاحظة: في Dart، يتم تقييم العوامل المنطقية من اليسار إلى اليمين، مع توقف مبكر (short-circuit) إذا أمكن تحديد النتيجة من الطرف الأول.