Relational Operators

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


1. العامل == (التساوي)

يُتحقق إذا كانت القيمتان متساويتين.
مثال:

dart

Copy

int a = 5;
int b = 3;
print(a == b); // الناتج: false
print(5 == 5); // الناتج: true

String s1 = "Dart";
String s2 = "dart";
print(s1 == s2); // الناتج: false (الحروف الكبيرة/الصغيرة مؤثرة)

2. العامل != (عدم التساوي)

يُتحقق إذا كانت القيمتان غير متساويتين.
مثال:

dart

Copy

print(a != b); // الناتج: true
print(5 != 5); // الناتج: false

print("Apple" != "Orange"); // الناتج: true

3. العامل > (أكبر من)

يُتحقق إذا كانت القيمة اليسرى أكبر من اليمنى.
مثال:

dart

Copy

print(a > b); // الناتج: true (لأن 5 > 3)
print(2 > 5); // الناتج: false

print("Cat" > "Dog"); // الناتج: false (المقارنة حسب الترتيب الأبجدي)

4. العامل < (أصغر من)

يُتحقق إذا كانت القيمة اليسرى أصغر من اليمنى.
مثال:

dart

Copy

print(a < b); // الناتج: false
print(3 < 5); // الناتج: true

print("Apple" < "Banana"); // الناتج: true

5. العامل >= (أكبر من أو يساوي)

يُتحقق إذا كانت القيمة اليسرى أكبر أو تساوي اليمنى.
مثال:

dart

Copy

print(5 >= 5); // الناتج: true
print(4 >= 5); // الناتج: false

print("Dart" >= "Dart"); // الناتج: true

6. العامل <= (أصغر من أو يساوي)

يُتحقق إذا كانت القيمة اليسرى أصغر أو تساوي اليمنى.
مثال:

dart

Copy

print(3 <= 5); // الناتج: true
print(5 <= 3); // الناتج: false

print("A" <= "B"); // الناتج: true

أمثلة متقدمة مع الشروط (if):

dart

Copy

int age = 18;
if (age >= 18) {
  print("You are an adult.");
} else {
  print("You are a minor.");
}
// الناتج: You are an adult.

استخدام العوامل مع أنواع مختلفة:

  • الأرقام: تُقارن حسب القيمة العددية.
  • النصوص (String): تُقارن حسب الترتيب الأبجدي (Unicode).
  • الأنواع الأخرى (مثل bool):dartCopybool isTrue = true; bool isFalse = false; print(isTrue == isFalse); // الناتج: false

ملاحظات مهمة:

  1. الفرق بين == و =:
    • = يُستخدم لتعيين قيمة (Assignment).
    • == يُستخدم للمقارنة (Comparison).
    مثال خاطئ:dartCopyif (a = 5) { … } // خطأ! لأن `=` يُعيّن القيمة 5 لـ a ولا يُقارن.
  2. المقارنة بين أنواع مختلفة:dartCopyprint(5 == “5”); // الناتج: false (int vs String) print(5 == 5.0); // الناتج: true (int vs double)
  3. المقارنة مع null:dartCopyint? x = null; print(x == null); // الناتج: true

تطبيقات عملية:

  • التحقق من شروط المستخدم (مثل كلمة المرور).
  • ترتيب البيانات (في الحلقات أو الخوارزميات).
  • التحكم في تدفق البرنامج (عبر if، switch).