Relational Operators

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

1. جدول العوامل العلاقية في Dart

العاملالوصفمثالالناتج
==يساوي5 == 5true
!=لا يساوي5 != 3true
>أكبر من10 > 5true
<أصغر من10 < 5false
>=أكبر من أو يساوي10 >= 10true
<=أصغر من أو يساوي5 <= 3false
2. شرح كل عامل مع أمثلة عملية
1. العامل == (يساوي)

يُستخدم لمقارنة إذا ما كان الطرفان متساويين في القيمة.

void main() {
  int a = 10;
  int b = 10;
  int c = 20;

  print(a == b); // true (لأن 10 تساوي 10)
  print(a == c); // false (لأن 10 لا تساوي 20)
}
Dart
2. العامل != (لا يساوي)

يُستخدم لمقارنة إذا ما كان الطرفان غير متساويين.

void main() {
  String name1 = "Ahmed";
  String name2 = "Ali";

  print(name1 != name2); // true (لأن "Ahmed" لا يساوي "Ali")
  print(5 != 5); // false (لأن 5 تساوي 5)
}
Dart
3. العامل > (أكبر من)

يُستخدم لمقارنة إذا ما كان الطرف الأيسر أكبر من الطرف الأيمن.

void main() {
  double x = 15.5;
  double y = 10.3;

  print(x > y); // true (لأن 15.5 أكبر من 10.3)
  print(3 > 5); // false (لأن 3 ليست أكبر من 5)
}
Dart
4. العامل < (أصغر من)

يُستخدم لمقارنة إذا ما كان الطرف الأيسر أصغر من الطرف الأيمن.

void main() {
  int age1 = 25;
  int age2 = 30;

  print(age1 < age2); // true (لأن 25 أصغر من 30)
  print(10 < 5); // false (لأن 10 ليست أصغر من 5)
}
Dart
5. العامل >= (أكبر من أو يساوي)

يُستخدم لمقارنة إذا ما كان الطرف الأيسر أكبر أو يساوي الطرف الأيمن.

void main() {
  int num1 = 10;
  int num2 = 10;
  int num3 = 5;

  print(num1 >= num2); // true (لأن 10 تساوي 10)
  print(num1 >= num3); // true (لأن 10 أكبر من 5)
  print(3 >= 7); // false (لأن 3 ليست أكبر أو تساوي 7)
}
Dart
6. العامل <= (أصغر من أو يساوي)

يُستخدم لمقارنة إذا ما كان الطرف الأيسر أصغر أو يساوي الطرف الأيمن.

void main() {
  double price1 = 99.99;
  double price2 = 100.0;
  double price3 = 99.99;

  print(price1 <= price2); // true (لأن 99.99 أصغر من 100.0)
  print(price1 <= price3); // true (لأن 99.99 تساوي 99.99)
  print(150 <= 100); // false (لأن 150 ليست أصغر أو تساوي 100)
}
Dart
3. استخدام العوامل العلاقية مع الشروط (ifelse)

تُستخدم هذه العوامل بكثرة مع هياكل التحكم مثل if و else.

مثال 1: التحقق من العمر
void main() {
  int age = 18;

  if (age >= 18) {
    print("أنت بالغ"); // سيتم طباعته لأن 18 >= 18
  } else {
    print("أنت قاصر");
  }
}
Dart
مثال 2: مقارنة كلمتي المرور
void main() {
  String savedPassword = "123456";
  String enteredPassword = "123456";

  if (enteredPassword == savedPassword) {
    print("كلمة المرور صحيحة"); // سيتم طباعته
  } else {
    print("كلمة المرور خاطئة");
  }
}
Dart
مثال 3: التحقق من نطاق رقم (Range Check)
void main() {
  int number = 25;

  if (number >= 1 && number <= 100) {
    print("الرقم بين 1 و 100"); // سيتم طباعته
  } else {
    print("الرقم خارج النطاق");
  }
}
Dart
4. أمثلة متقدمة
مثال 1: مقارنة القوائم (Lists)
void main() {
  List<int> list1 = [1, 2, 3];
  List<int> list2 = [1, 2, 3];
  List<int> list3 = [4, 5, 6];

  print(list1 == list2); // false (لأنها كائنات مختلفة في الذاكرة)
  print(list1[0] == list2[0]); // true (لأن القيم متساوية)
}
Dart

ملاحظة: في Dart، مقارنة القوائم باستخدام == تُقارن المراجع (references) وليس المحتوى.
لمقارنة المحتوى، يمكن استخدام list1.equals(list2) من حزمة collection.

مثال 2: مقارنة الكائنات (Objects)
class Person {
  String name;
  int age;

  Person(this.name, this.age);

  @override
  bool operator ==(Object other) {
    if (identical(this, other)) return true;
    return other is Person && 
           other.name == name && 
           other.age == age;
  }
}

void main() {
  Person p1 = Person("Ahmed", 25);
  Person p2 = Person("Ahmed", 25);
  Person p3 = Person("Ali", 30);

  print(p1 == p2); // true (لأن البيانات متطابقة)
  print(p1 == p3); // false
}
Dart
5. الخلاصة
العاملالوصفمثالالناتج
==يساوي"Dart" == "dart"false
!=لا يساوي10 != 5true
>أكبر من7 > 3true
<أصغر من7 < 3false
>=أكبر من أو يساوي5 >= 5true
<=أصغر من أو يساوي4 <= 3false

تُستخدم هذه العوامل في:

  • الشروط (ifelseswitch)
  • الحلقات (whilefor)
  • المقارنات بين المتغيرات والكائنات

نصيحة: عند مقارنة الكائنات المخصصة (Custom Objects)، يجب تجاوز دالة == للحصول على نتائج صحيحة.