العوامل المنطقية في Dart تُستخدم لدمج أو تعديل التعبيرات الشرطية، وتُرجع قيمة منطقية (true أو false).
هي أدوات أساسية في اتخاذ القرارات البرمجية مثل if، while، وغيرها.
1. جدول العوامل المنطقية في Dart
| العامل | الاسم | الوصف | مثال | الناتج |
|---|---|---|---|---|
&& | AND | يكون true إذا كان كلا الطرفين صحيحين | true && false | false |
|| | OR | يكون true إذا كان أحد الطرفين صحيحًا | true || false | true |
! | NOT | يعكس القيمة المنطقية | !true | false |
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)Dart2. العامل || (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)Dart3. العامل ! (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 يعكسه)Dart3. أمثلة متقدمة
مثال 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)); // يطبع "تم التقييم" مرة واحدة فقط
}Dart4. قواعد الأسبقية (Operator Precedence)
!(NOT)&&(AND)||(OR)
مثال:
void main() {
bool a = true, b = false, c = true;
print(a || b && c); // true (يتم تنفيذ && أولاً)
print((a || b) && c); // true (الأقواس تغير الترتيب)
}Dart| العامل | الاسم | الاستخدام | متى يكون الناتج true؟ | مثال |
|---|---|---|---|---|
&& | AND | condition1 && condition2 | إذا كان كلا الشرطين صحيحين | true && false → false |
|| | OR | condition1 || condition2 | إذا كان أحد الشرطين صحيحًا | true || false → true |
! | NOT | !condition | إذا كان الشرط غير صحيح | !true → false |
مقارنة بين العوامل المنطقية
| الموقف | && | || | ! |
|---|---|---|---|
true, true | ✅ | ✅ | ❌ |
true, false | ❌ | ✅ | ❌ |
false, false | ❌ | ❌ | ✅ |
| التقييم المختصر (Short-circuit) | نعم | نعم | لا |
ملاحظة: في Dart، يتم تقييم العوامل المنطقية من اليسار إلى اليمين، مع توقف مبكر (short-circuit) إذا أمكن تحديد النتيجة من الطرف الأول.