العوامل المنطقية في 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) إذا أمكن تحديد النتيجة من الطرف الأول.